diff --git a/index.html b/index.html index 7ce0ce903..f67cb8604 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -STAC Browser
\ No newline at end of file +STAC Browser
\ No newline at end of file diff --git a/js/app.36bc6ffe.js b/js/app.36bc6ffe.js deleted file mode 100644 index 3da2b1a41..000000000 --- a/js/app.36bc6ffe.js +++ /dev/null @@ -1,2 +0,0 @@ -(function(){var t={61629:function(t,e,a){"use strict";a.d(e,{A:function(){return m}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],class:t.classes,attrs:{"no-body":"","img-right":t.isList}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.catalog]}})],1),t.data&&(t.fileFormats.length>0||t.data.description||t.data.deprecated)?e("b-card-text",{staticClass:"intro"},[t.data.deprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t._v(" "+t._s(t._f("summarize")(t.data.description))+" ")],2):t._e(),t.showKeywordsInCatalogCards&&t.keywords.length>0?e("Keywords",{attrs:{keywords:t.keywords,variant:"primary",center:!t.isList}}):t._e(),t.temporalExtent?e("b-card-text",{staticClass:"datetime"},[e("small",{domProps:{innerHTML:t._s(t.temporalExtent)}})]):t._e()],1),e("b-card-footer",[t._t("footer",null,{data:t.data})],2)],1)},i=[],r=(a(44114),a(95353)),n=a(67467),o=a(97685),l=a(58581),c=a(31831),u=a(50735),d=a(2566),h={name:"Catalog",components:{StacLink:l["default"],Keywords:()=>a.e(8499).then(a.bind(a,28499))},filters:{summarize:t=>d.Ay.summarizeMd(t,300),formatMediaType:t=>(0,u.formatMediaType)(t,null,{shorten:!0})},mixins:[o.A,(0,n.A)({formatTemporalExtent:u.formatTemporalExtent})],props:{catalog:{type:Object,required:!0}},computed:{...(0,r.aH)(["showKeywordsInCatalogCards"]),...(0,r.L8)(["getStac"]),classes(){let t=["catalog-card"];return this.data||t.push("queued"),this.data&&this.data.deprecated&&t.push("deprecated"),this.hasImage&&t.push("has-thumbnail"),this.temporalExtent&&t.push("has-extent"),t},data(){return this.getStac(this.catalog)},temporalExtent(){var t,e,a;if(null!==(t=this.data)&&void 0!==t&&t.isCollection()&&(null===(e=this.data.extent)||void 0===e||null===(a=e.temporal)||void 0===a?void 0:a.interval.length)>0){let t=this.data.extent.temporal.interval[0];if(Array.isArray(t)&&("string"===typeof t[0]||"string"===typeof t[1]))return this.formatTemporalExtent(this.data.extent.temporal.interval[0],!0)}return null},fileFormats(){return this.data?this.data.getFileFormats():[]},keywords(){return this.data&&this.data.getMetadata("keywords")||[]}},methods:{load(t){this.catalog instanceof c.A||this.$store.commit(t?"queue":"unqueue",this.catalog.href)}}},p=h,f=a(81656),g=(0,f.A)(p,s,i,!1,null,null,null),m=g.exports},32398:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return C}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"catalogs mb-4"},[e("header",[e("h2",{staticClass:"title mr-2"},[t._v(t._s(t.title))]),null!==t.catalogCount?e("b-badge",{staticClass:"mr-4",attrs:{pill:"",variant:"secondary"}},[t._v(t._s(t.catalogCount))]):t._e(),e("ViewButtons",{staticClass:"mr-2",model:{value:t.view,callback:function(e){t.view=e},expression:"view"}}),t.isComplete&&t.catalogs.length>1?e("SortButtons",{model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.isComplete&&t.catalogs.length>1?e("section",{staticClass:"catalog-filter mb-2"},[e("SearchBox",{attrs:{placeholder:t.filterPlaceholder},model:{value:t.searchTerm,callback:function(e){t.searchTerm=e},expression:"searchTerm"}}),t.allKeywords.length>0?e("multiselect",{attrs:{multiple:"",options:t.allKeywords,placeholder:t.$t("multiselect.keywordsPlaceholder"),selectLabel:t.$t("multiselect.selectLabel"),selectedLabel:t.$t("multiselect.selectedLabel"),deselectLabel:t.$t("multiselect.deselectLabel"),limitText:t.limitText},model:{value:t.selectedKeywords,callback:function(e){t.selectedKeywords=e},expression:"selectedKeywords"}}):t._e()],1):t._e(),t.showPagination?e("Pagination",{ref:"topPagination",attrs:{pagination:t.pagination,placement:"top"},on:{paginate:t.paginate}}):t._e(),t.hasSearchCritera&&0===t.catalogView.length?e("b-alert",{staticClass:"mt-2",attrs:{variant:"warning",show:""}},[t._v(t._s(t.$t("catalogs.noMatches")))]):t._e(),e("section",{staticClass:"list"},[t.loading?e("Loading",{attrs:{fill:"",top:""}}):t._e(),e(t.cardsComponent,t._b({tag:"component"},"component",t.cardsComponentProps,!1),t._l(t.catalogView,(function(a){return e("Catalog",{key:a.href,attrs:{catalog:a},scopedSlots:t._u([{key:"footer",fn:function({data:e}){return[t._t("catalogFooter",null,{data:e})]}}],null,!0)})})),1)],1),t.showPagination?e("Pagination",{attrs:{pagination:t.pagination},on:{paginate:t.paginate}}):t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.loadMore,expression:"loadMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.loadMore}},[t._v(t._s(t.$t("catalogs.loadMore")))]):t._e()],1)},i=[],r=(a(44114),a(95353)),n=a(61629),o=a(39773),l=a(31831),c=function(){var t=this,e=t._self._c;return e("b-button-group",{attrs:{title:t.$t("view.title"),size:"sm"}},[e("b-button",{attrs:{title:t.$t("view.tiles.title"),variant:"outline-primary",pressed:"cards"===t.value},on:{click:function(e){return t.toggle("cards")}}},[e("b-icon-bricks"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.tiles.label")))])],1),e("b-button",{attrs:{title:t.$t("view.list.title"),variant:"outline-primary",pressed:"list"===t.value},on:{click:function(e){return t.toggle("list")}}},[e("b-icon-list-task"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.list.label")))])],1)],1)},u=[],d=a(82948),h={id:"SortButtons",components:{BIconBricks:d.Muv,BIconListTask:d.Xjw},props:{value:{type:String,default:"cards"}},methods:{toggle(t){this.value!==t&&this.$emit("input",t)}}},p=h,f=a(81656),g=(0,f.A)(p,c,u,!1,null,null,null),m=g.exports,b={components:{ViewButtons:m},computed:{cardsComponent(){return"list"===this.view?"div":"b-card-group"},cardsComponentProps(){return"list"===this.view?{class:["card-list"]}:{columns:!0}},view:{get(){return this.$store.state.cardViewMode},async set(t){await this.$store.dispatch("config",{cardViewMode:t})}}}},y=a(2566),A={name:"Catalogs",components:{Catalog:n.A,Loading:o.A,Pagination:()=>Promise.resolve().then(a.bind(a,70678)),SearchBox:()=>a.e(4748).then(a.bind(a,74748)),SortButtons:()=>a.e(771).then(a.bind(a,40771)),Multiselect:()=>a.e(5262).then(a.t.bind(a,75262,23))},mixins:[b],props:{catalogs:{type:Array,required:!0},collectionsOnly:{type:Boolean,required:!1},loading:{type:Boolean,default:!1},hasMore:{type:Boolean,default:!1},pagination:{type:Object,default:()=>({})},count:{type:Number,default:null}},data(){return{searchTerm:"",sort:0,selectedKeywords:[]}},computed:{...(0,r.aH)(["cardViewSort","uiLanguage"]),...(0,r.L8)(["getStac"]),catalogCount(){return this.catalogs.length!==this.catalogView.length?this.catalogView.length+"/"+this.catalogs.length:null!==this.count?this.count:this.isComplete?this.catalogs.length:null},title(){return this.collectionsOnly?this.$tc("stacCollection",this.catalogs.length):this.$tc("stacCatalog",this.catalogs.length)},isComplete(){return!this.hasMore&&!this.showPagination},filterPlaceholder(){return this.isComplete?this.$t("catalogs.filterByTitleAndMore"):this.$t("catalogs.filterByTitle")},showPagination(){return Object.values(this.pagination).some((t=>!!t))},allCatalogs(){return this.catalogs.map((t=>{let e=this.getStac(t);return e||t}))},hasSearchCritera(){return this.searchTerm||this.selectedKeywords.length>0},catalogView(){if(this.hasMore)return this.catalogs;let t=this.allCatalogs;if(this.hasSearchCritera&&(t=t.filter((t=>{if(this.selectedKeywords.length>0&&t instanceof l.A&&Array.isArray(t.keywords)){let e=this.selectedKeywords.every((e=>t.keywords.includes(e)));if(!e)return!1}if(this.searchTerm){let e=[t.title];return t instanceof l.A&&this.isComplete&&(e.push(t.id),Array.isArray(t.keywords)&&(e=e.concat(t.keywords))),y.Ay.search(this.searchTerm,e)}return!0}))),!this.hasMore&&0!==this.sort){const e=new Intl.Collator(this.uiLanguage);t=t.slice(0).sort(((t,a)=>e.compare(l.A.getDisplayTitle(t),l.A.getDisplayTitle(a)))),-1===this.sort&&(t=t.reverse())}return t},allKeywords(){if(!this.isComplete)return[];let t=[];for(let e of this.allCatalogs)if(e instanceof l.A&&Array.isArray(e.keywords))for(let a of e.keywords)t.includes(a)||t.push(a);return t.sort()}},created(){this.sort=this.cardViewSort},methods:{loadMore(t=!0){t&&(this.sort=0,this.$emit("loadMore"))},paginate(t,e){"bottom"===e&&this.$refs.topPagination&&y.Ay.scrollTo(this.$refs.topPagination.$el),this.$emit("paginate",t)},limitText(t){return this.$t("multiselect.andMore",{count:t})}}},v=A,w=(0,f.A)(v,s,i,!1,null,"3b49c796",null),C=w.exports},99975:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return d}});var s=function(){var t=this,e=t._self._c;return e("b-button",t._b({staticClass:"copy-button",attrs:{variant:t.copyColor,title:t.$t("copy")},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.copy.apply(null,arguments)}}},"b-button",t.buttonProps,!1),[e(t.copyIcon,{tag:"component"}),t._t("default")],2)},i=[],r=a(82948),n=a(14405),o={name:"CopyButton",components:{BIconClipboard:r.ceV,BIconClipboardCheck:r.mD4,BIconClipboardX:r.A6N},props:{copyText:{type:String,required:!0},variant:{type:String,default:"primary"},buttonProps:{type:Object,default:()=>({})}},data(){return{status:null}},computed:{copyColor(){let t=this.variant;return!0===this.status?t="success":!1===this.status&&(t="danger"),this.variant.startsWith("outline-")&&(t="outline-"+t),t},copyIcon(){return!0===this.status?"b-icon-clipboard-check":!1===this.status?"b-icon-clipboard-x":"b-icon-clipboard"}},methods:{async copy(){try{let t=document.activeElement;await n.B.copy(this.copyText),t.focus(),this.status=!0}catch(t){console.error(t),this.status=!1}setTimeout((()=>this.status=null),2500)}}},l=o,c=a(81656),u=(0,c.A)(l,s,i,!1,null,null,null),d=u.exports},41526:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"styled-description",class:{compact:t.compact,inline:t.inline},domProps:{innerHTML:t._s(t.markup(t.description))}})},i=[],r=a(30855),n={name:"Description",props:{description:{type:String,default:""},compact:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},allowHTML:{type:Boolean,default:!1}},methods:{markup(t){if("string"!==typeof t)return"";var e=new r.iX,a=new r.j6({safe:!this.allowHTML,smart:!0}),s=e.parse(t);return a.render(s)}}},o=n,l=a(81656),c=(0,l.A)(o,s,i,!1,null,null,null),u=c.exports},85952:function(t,e,a){"use strict";a.d(e,{A:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("b-alert",{attrs:{variant:"danger",show:"",dismissible:t.dismissible},on:{dismissed:function(e){return t.$emit("close")}}},[e("p",{staticClass:"message"},[t._v(t._s(t.message||t.$t("errors.default")))]),t.error&&t.error.message?e("dl",{staticClass:"error"},[e("dt",[t._v(t._s(t.$t("errors.labels.cause")))]),e("dd",[t._v(t._s(t.error.message))])]):t._e(),t.description?e("dl",{staticClass:"description"},[e("dt",[t._v(t._s(t.$t("errors.labels.reason")))]),e("dd",[t._v(t._s(t.description))])]):t._e(),t.id?e("dl",{staticClass:"id"},[e("dt",[t._v(t._s(t.$t("errors.labels.code")))]),e("dd",[e("code",[t._v(t._s(t.id))])])]):t._e(),t.url?e("dl",{staticClass:"url"},[e("dt",[t._v(t._s(t.$t("errors.labels.requestURL")))]),e("dd",[e("code",[t._v(t._s(t.url))])])]):t._e()])},i=[],r={name:"ErrorAlert",props:{message:{type:String,default:null},description:{type:String,default:""},error:{type:[Object,Error],default:null},id:{type:[String,Number],default:null},url:{type:String,default:""},dismissible:{type:Boolean,default:!1}}},n=r,o=a(81656),l=(0,o.A)(n,s,i,!1,null,"7a9d646a",null),c=l.exports},77455:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return b}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],staticClass:"item-card",class:{queued:!t.data,deprecated:t.isDeprecated,description:t.hasDescription},attrs:{"no-body":""}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.item]}})],1),t.fileFormats.length>0||t.hasDescription||t.isDeprecated?e("b-card-text",{staticClass:"intro"},[t.isDeprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t.hasDescription?[t._v(t._s(t._f("summarize")(t.data.properties.description)))]:t._e()],2):t._e(),t.showKeywordsInItemCards&&t.keywords.length>0?e("Keywords",{attrs:{keywords:t.keywords,variant:"primary",center:""}}):t._e(),e("b-card-text",[e("small",{staticClass:"text-muted"},[t.extent?[t._v(t._s(t._f("formatTemporalExtent")(t.extent)))]:t.data&&t.data.properties.datetime?[t._v(t._s(t._f("formatTimestamp")(t.data.properties.datetime)))]:[t._v(t._s(t.$t("items.noTime")))]],2)])],1)],1)},i=[],r=a(95353),n=a(97685),o=a(58581),l=a(31831),c=a(50735),u=a(19087),d=a.n(u),h=a(2566);d().addDependency("content-type",a(58597));var p={name:"Item",components:{StacLink:o["default"],Keywords:()=>a.e(8499).then(a.bind(a,28499))},filters:{summarize:t=>h.Ay.summarizeMd(t,150),formatMediaType:t=>(0,c.formatMediaType)(t,null,{shorten:!0}),formatTemporalExtent:c.formatTemporalExtent,formatTimestamp:c.formatTimestamp},mixins:[n.A],props:{item:{type:Object,required:!0}},computed:{...(0,r.aH)(["showKeywordsInItemCards"]),...(0,r.L8)(["getStac"]),data(){return this.getStac(this.item)},extent(){return this.data&&(this.data.properties.start_datetime||this.data.properties.end_datetime)?[this.data.properties.start_datetime,this.data.properties.end_datetime]:null},fileFormats(){return this.data?this.data.getFileFormats():[]},keywords(){return this.data&&this.data.getMetadata("keywords")||[]},isDeprecated(){return this.data instanceof l.A&&Boolean(this.data.properties.deprecated)},hasDescription(){return this.data instanceof l.A&&h.Ay.hasText(this.data.properties.description)}},methods:{load(t){this.item instanceof l.A||this.$store.commit(t?"queue":"unqueue",this.item.href)}}},f=p,g=a(81656),m=(0,g.A)(f,s,i,!1,null,null,null),b=m.exports},82239:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return b}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"items mb-4"},[e("header",[e("h2",{staticClass:"title mr-2"},[t._v(t._s(t.$tc("stacItem",t.items.length)))]),null!==t.itemCount?e("b-badge",{staticClass:"mr-4",attrs:{pill:"",variant:"secondary"}},[t._v(t._s(t.itemCount))]):t._e(),!t.api&&t.items.length>1?e("SortButtons",{model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.showPagination?e("Pagination",{ref:"topPagination",attrs:{pagination:t.pagination,placement:"top"},on:{paginate:t.paginate}}):t._e(),t.allowFilter?[t.api?e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.itemFilter",modifiers:{itemFilter:!0}}],staticClass:"mb-4 mt-2",class:{"ml-3":t.showPagination},attrs:{variant:t.hasFilters&&!t.filtersOpen?"primary":"outline-primary"}},[e("b-icon-search"),t._v(" "+t._s(t.filtersOpen?t.$t("items.hideFilter"):t.$t("items.showFilter"))+" "),t.hasFilters&&!t.filtersOpen?e("b-badge",{attrs:{variant:"dark"}},[t._v(t._s(t.filterCount))]):t._e()],1):t._e(),e("b-collapse",{attrs:{id:"itemFilter"},model:{value:t.filtersOpen,callback:function(e){t.filtersOpen=e},expression:"filtersOpen"}},[e("SearchFilter",{attrs:{type:"Items",title:t.$t("items.filter"),parent:t.stac,value:t.apiFilters},on:{input:t.emitFilter}})],1)]:t._e(),e("section",{staticClass:"list"},[t.loading?e("Loading",{attrs:{fill:"",top:""}}):t._e(),t.chunkedItems.length>0?e("b-card-group",{attrs:{columns:""}},t._l(t.chunkedItems,(function(t){return e("Item",{key:t.href,attrs:{item:t}})})),1):e("b-alert",{attrs:{variant:t.hasFilters?"warning":"info",show:""}},[t.hasFilters?[t._v(t._s(t.$t("search.noItemsFound")))]:[t._v(t._s(t.$t("items.noneAvailableForCollection")))]],2)],1),t.showPagination?e("Pagination",{attrs:{pagination:t.pagination},on:{paginate:t.paginate}}):t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.showMore,expression:"showMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.showMore}},[t._v(t._s(t.$t("showMore")))]):t._e()],2)},i=[],r=a(77455),n=a(39773),o=a(70678),l=a(48883),c=a(82948),u=a(2566),d=a(31831),h=a(95353),p={name:"Items",components:{BCollapse:l.K,BIconSearch:c.S8S,Item:r["default"],SearchFilter:()=>Promise.all([a.e(537),a.e(5262),a.e(2904),a.e(453)]).then(a.bind(a,22904)),Loading:n.A,Pagination:o["default"],SortButtons:()=>a.e(771).then(a.bind(a,40771))},props:{items:{type:Array,required:!0},loading:{type:Boolean,default:!1},stac:{type:Object,required:!0},api:{type:Boolean,default:!1},allowFilter:{type:Boolean,default:!0},showFilters:{type:Boolean,default:!1},apiFilters:{type:Object,default:()=>({})},pagination:{type:Object,default:()=>({})},chunkSize:{type:Number,default:90},count:{type:Number,default:null}},data(){return{shownItems:this.chunkSize,filtersOpen:this.showFilters,sort:0}},computed:{...(0,h.aH)(["cardViewSort","uiLanguage"]),itemCount(){return null!==this.count?this.count:!this.api&&this.items.length>0?this.items.length:null},hasMore(){return this.items.length>this.shownItems},filterCount(){return Object.values(this.apiFilters).filter((t=>!(null===t||0===u.Ay.size(t)))).length},hasFilters(){return this.filterCount>0},chunkedItems(){let t=this.items;if(0!==this.sort){const e=new Intl.Collator(this.uiLanguage);t=t.slice(0).sort(((t,a)=>e.compare(d.A.getDisplayTitle(t),d.A.getDisplayTitle(a)))),-1===this.sort&&(t=t.reverse())}return!this.api&&this.items.length>this.chunkSize?t.slice(0,this.shownItems):t},showPagination(){if(this.api){if(this.hasFilters)return!0;if(this.items.length>0)return Object.values(this.pagination).some((t=>!!t))}return!1}},watch:{showFilters(){this.filter=this.showFilters},filtersOpen(){this.$emit("filtersShown",this.filtersOpen)}},created(){this.sort=this.cardViewSort},mounted(){this.showFilters&&setTimeout((()=>u.Ay.scrollTo(this.$el)),250)},methods:{emitFilter(t,e){this.$emit("filterItems",t,e)},showMore(){this.shownItems+=this.chunkSize},paginate(t,e){"bottom"===e&&this.$refs.topPagination&&u.Ay.scrollTo(this.$refs.topPagination.$el),this.$emit("paginate",t)}}},f=p,g=a(81656),m=(0,g.A)(f,s,i,!1,null,null,null),b=m.exports},39773:function(t,e,a){"use strict";a.d(e,{A:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("div",{class:t.classes},[e("b-spinner",{attrs:{label:t.$t("loading"),small:t.small}})],1)},i=[],r=(a(44114),{name:"Loading",props:{fill:{type:Boolean,default:!1},stretch:{type:Boolean,default:!1},small:{type:Boolean,default:!1},top:{type:Boolean,default:!1}},computed:{classes(){let t=["loading"];return this.fill?t.push("loading-fill"):this.stretch&&t.push("loading-stretch"),this.top&&t.push("top"),t}}}),n=r,o=a(81656),l=(0,o.A)(n,s,i,!1,null,"67931bb8",null),c=l.exports},70678:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("b-button-group",{class:t.classes},[e("b-button",{attrs:{disabled:!t.pagination.first,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.first)}}},[t._v(t._s(t.$t("pagination.first")))]),e("b-button",{attrs:{disabled:!t.pagination.prev,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.prev)}}},[t._v(t._s(t.$t("pagination.previous")))]),e("b-button",{attrs:{disabled:!t.pagination.next,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.next)}}},[t._v(t._s(t.$t("pagination.next")))]),t.pagination.last?e("b-button",{attrs:{variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.last)}}},[t._v(t._s(t.$t("pagination.last")))]):t._e()],1)},i=[],r={name:"Pagination",props:{pagination:{type:Object,default:()=>({})},placement:{type:String,default:"bottom"}},computed:{classes(){return"top"===this.placement?"mb-4 mt-2":"mb-2 mt-2"}},methods:{paginate(t){this.$emit("paginate",t,this.placement)}}},n=r,o=a(81656),l=(0,o.A)(n,s,i,!1,null,null,null),c=l.exports},58581:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return g}});var s=function(){var t=this,e=t._self._c;return e(t.component,t._b({tag:"component",staticClass:"stac-link",attrs:{title:t.tooltip}},"component",t.attributes,!1),[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.displayTitle))])],2)},i=[],r=a(95353),n=a(59203),o=a(2566),l=a(31831),c=a(84193),u=a.n(c),d={name:"StacLink",props:{data:{type:[Object,Array],default:null},title:{type:String,default:null},fallbackTitle:{type:[String,Function],default:null},tooltip:{type:String,default:null},button:{type:[Boolean,Object],default:!1},state:{type:Object,default:null}},computed:{...(0,r.aH)(["allowExternalAccess","privateQueryParameters"]),...(0,r.L8)(["toBrowserPath","getRequestUrl","isExternalUrl"]),icon(){if(this.stac){let t=this.stac.getIcons();if(t.length>0)return t[0]}return null},stac(){return this.data instanceof l.A?this.data:Array.isArray(this.data)?this.data.find((t=>t instanceof l.A)):null},link(){return this.isLink(this.data)?this.data:Array.isArray(this.data)&&this.data.find((t=>this.isLink(t)))||{}},isStacBrowserLink(){return!!this.stac||!!o.Ay.isStacMediaType(this.link.type,!0)&&(!(!this.allowExternalAccess&&this.isExternalUrl(this.link.href))&&n.Bv.includes(this.link.rel))},attributes(){if(this.isStacBrowserLink||this.button){let t={to:this.href,rel:this.rel};return o.Ay.isObject(this.button)&&Object.assign(t,this.button),t}return{href:this.href,target:"_blank",rel:this.rel}},component(){return this.button?"b-button":this.isStacBrowserLink?"router-link":"a"},href(){if(this.stac||this.isStacBrowserLink){let t;if(t=this.stac?this.stac.getBrowserPath():this.toBrowserPath(this.link.href),t.startsWith("/")||(t="/"+t),o.Ay.size(this.privateQueryParameters)>0||o.Ay.size(this.state)>0){let e=u()(t),a=(t,a)=>{for(let s in t){let i=`${a}${s}`;e.hasQuery(i)||e.addQuery(i,t[s])}};a(this.privateQueryParameters,"~"),a(this.state,"."),t=e.toString()}return t}return this.getRequestUrl(this.link.href)},displayTitle(){if(this.title)return this.title;let t="function"===typeof this.fallbackTitle?this.fallbackTitle():this.fallbackTitle;return l.A.getDisplayTitle(this.data,t)}},methods:{isLink(t){return o.Ay.isObject(t)&&!(t instanceof l.A)}}},h=d,p=a(81656),f=(0,p.A)(h,s,i,!1,null,null,null),g=f.exports},19306:function(t){t.exports={catalogUrl:null,catalogTitle:"STAC Browser",allowExternalAccess:!0,allowedDomains:[],detectLocaleFromBrowser:!0,storeLocale:!0,locale:"en",fallbackLocale:"en",supportedLocales:["de","es","en","fr","it","ro","ja","pt"],apiCatalogPriority:null,useTileLayerAsFallback:!0,displayGeoTiffByDefault:!1,buildTileUrlTemplate:({href:t,asset:e})=>"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url="+encodeURIComponent(e.href.startsWith("/vsi")?e.href:t),stacProxyUrl:null,pathPrefix:"/",historyMode:"history",cardViewMode:"cards",cardViewSort:"asc",showKeywordsInItemCards:!1,showKeywordsInCatalogCards:!1,showThumbnailsAsAssets:!1,geoTiffResolution:128,redirectLegacyUrls:!1,itemsPerPage:12,defaultThumbnailSize:null,maxPreviewsOnMap:50,crossOriginMedia:null,requestHeaders:{},requestQueryParameters:{},preprocessSTAC:null,authConfig:null}},44426:function(t,e,a){"use strict";a.d(e,{A:function(){return r}});var s=a(48907),i=a(2566);class r{constructor(t={},e=null,a=null){this.options=t,this.changeListener=e,this.router=a}getButtonTitle(){return null}getLoginLabel(){return s.Ay.t("authentication.button.login")}getLogoutLabel(){return s.Ay.t("authentication.button.logout")}getComponent(){return null}getComponentProps(){return{}}async init(){}async login(){}async confirmLogin(t){this.changeListener&&await this.changeListener(!0,t)}async logout(){}async confirmLogout(){this.changeListener&&await this.changeListener(!1)}async close(){}updateStore(){return{}}_updateStore(t,e=null,a=null,s=null){const r=this.options.formatter||s,n=this.options.name||e,o=this.options.in||a;return t&&("Bearer"===r?t=`Bearer ${t}`:"function"===typeof r&&(t=r(t))),i.Ay.hasText(t)||(t=void 0),"query"===o?{query:{type:"private",key:n,value:t}}:"cookie"===o?{cookie:{key:n,value:t}}:"header"===o?{header:{key:n,value:t}}:{}}static async create(t,e,s){let n=new r;if(i.Ay.isObject(t))if("http"===t.type&&"basic"===t.scheme){const i=(await a.e(4648).then(a.bind(a,34648))).default;n=new i(t,e,s)}else if("apiKey"===t.type){const i=(await a.e(6935).then(a.bind(a,46935))).default;n=new i(t,e,s)}else if("openIdConnect"===t.type){const i=(await a.e(3621).then(a.bind(a,93621))).default;n=new i(t,e,s)}return await n.init(),n}static equals(t,e){return JSON.stringify(t.options)===JSON.stringify(e)}}},45311:function(t,e,a){"use strict";a.d(e,{A:function(){return r},W:function(){return n}});var s=a(42473),i=a(2566);class r{static enabled(t){if(!i.Ay.isObject(t))return!1;try{if(t.setItem("test","yes"),"yes"===t.getItem("test"))return t.removeItem("test"),!0}catch(e){console.error(e)}return!1}constructor(t=!1){t?r.enabled(window.sessionStorage)?this.engine=window.sessionStorage:navigator.cookieEnabled?this.engine=new n(!0):this.engine=new o:r.enabled(window.localStorage)?this.engine=window.localStorage:navigator.cookieEnabled?this.engine=new n:this.engine=new o}get(t){try{let e=this.engine.getItem(t);return"string"===typeof e&&e.startsWith(r.JSON_INDICATOR)&&(e=JSON.parse(e.slice(r.JSON_INDICATOR.length))),e}catch(e){return console.error(e),null}}set(t,e){try{"string"!==typeof e&&(e=r.JSON_INDICATOR+JSON.stringify(e)),this.engine.setItem(t,e)}catch(a){console.error(a)}}remove(t){try{this.engine.removeItem(t)}catch(e){console.error(e)}}clear(){this.engine.clear()}}(0,s.A)(r,"JSON_INDICATOR","\n\r");class n{constructor(t=!1){this.session=t}getExpiry(t=null){null===t&&(t=this.session?60:144e4);const e=new Date;e.setTime(e.getTime()+60*t*1e3),this.epires=e.toGMTString()}setItem(t,e,a=null){const s=this.getExpiry(a);e=encodeURIComponent(e),document.cookie=`${t}=${e}; expires=${s}; path=/`}getItem(t){const e=t+"=",a=document.cookie.split(";");for(let s of a)if(s=s.trim(),s.startsWith(e)){const t=s.substring(e.length,s.length);return decodeURIComponent(t)}return null}removeItem(t){this.set(t,"",-1)}clear(){document.cookie=""}}class o{constructor(t=!1){this.session=t}setItem(t){console.warn(`Browser storage disabled, can't store ${t}`)}getItem(){return null}removeItem(){}clear(){}}},78561:function(t,e,a){"use strict";a.d(e,{Q:function(){return o}});var s=a(95353);const i=["https://api.stacspec.org/v1.*/item-search#filter:cql-text","http://www.opengis.net/spec/cql2/1.*/conf/cql2-text"],r=["https://api.stacspec.org/v1.*/item-search#filter:cql-json","http://www.opengis.net/spec/cql2/1.*/conf/cql2-json"],n=["http://www.opengis.net/spec/cql2/1.*/req/advanced-comparison-operators"],o={Items:{BasicFilters:["https://api.stacspec.org/v1.*/ogcapi-features","http://www.opengis.net/spec/ogcapi-features-1/1.*/conf/core"],CollectionIdFilter:!1,ItemIdFilter:!1,CqlFilters:["http://www.opengis.net/spec/ogcapi-features-3/1.*/*/features-filter"],Sort:["https://api.stacspec.org/v1.*/ogcapi-features#sort","http://www.opengis.net/spec/ogcapi-records-1/1.*/conf/sorting"],FreeText:["https://api.stacspec.org/v1.*/ogcapi-features#free-text"]},Global:{BasicFilters:!0,CollectionIdFilter:!0,ItemIdFilter:!0,CqlFilters:["https://api.stacspec.org/v1.*/item-search#filter"],Sort:["https://api.stacspec.org/v1.*/item-search#sort"],FreeText:["https://api.stacspec.org/v1.*/item-search#free-text"]},Collections:{BasicFilters:["https://api.stacspec.org/v1.*/collection-search"],CollectionIdFilter:!1,ItemIdFilter:!1,CqlFilters:["https://api.stacspec.org/v1.*/collection-search#filter"],Sort:["https://api.stacspec.org/v1.*/collection-search#sort"],FreeText:["https://api.stacspec.org/v1.*/collection-search#free-text"]}};e.A={props:{type:{type:String,required:!0}},computed:{...(0,s.L8)(["supportsConformance"]),conformances(){return o[this.type]},canSort(){return this.supportsConformance(this.conformances.Sort)},canFilterExtents(){return this.supportsConformance(this.conformances.BasicFilters)},canFilterFreeText(){return this.supportsConformance(this.conformances.FreeText)},cql(){if(!this.supportsConformance(this.conformances.CqlFilters))return null;let t=this.supportsConformance(i),e=this.supportsConformance(r);return t||e?{textMode:t,jsonMode:e,advancedComparison:this.supportsConformance(n)}:null}}}},67467:function(t,e,a){"use strict";var s=a(95353);e.A=t=>{let e={computed:{...(0,s.aH)(["uiLanguage"])},methods:{}};for(let a in t){let s=t[a];e.methods[a]=function(){return this.uiLanguage,s(...arguments)}}return e}},97685:function(t,e,a){"use strict";var s=a(95353);e.A={props:{showThumbnail:{type:Boolean,default:!0}},computed:{...(0,s.aH)(["cardViewMode","crossOriginMedia","defaultThumbnailSize"]),isList(){return this.data&&!this.data.isItem()&&"list"===this.cardViewMode},hasImage(){return this.showThumbnail&&this.thumbnail},thumbnail(){if(this.data){let t=this.data.getThumbnails(!0,"thumbnail");if(t.length>0){let e,a,s=t[0];return Array.isArray(s["proj:shape"])&&2===s["proj:shape"].length?[a,e]=s["proj:shape"]:Array.isArray(this.defaultThumbnailSize)&&2===this.defaultThumbnailSize.length&&([a,e]=this.defaultThumbnailSize),{src:s.href,alt:s.title,crossorigin:this.crossOriginMedia,right:this.isList,blankColor:"rgba(0, 0, 0, 0.125)",width:e,height:a,"blank-width":e,"blank-height":a}}}return null}}}},24274:function(t,e,a){"use strict";a.d(e,{A:function(){return n}});var s=a(2566),i=a(31831),r=a(44426);class n{static resolveAuth(t,e){if(e instanceof i.A&&s.Ay.size(t["auth:refs"])>0){const a=e.getMetadata("auth:schemes");if(s.Ay.size(a)>0)return t["auth:refs"].map((t=>a[t])).filter((t=>s.Ay.isObject(t)))}return[]}static isSupported(t,e){switch(t instanceof r.A&&(t=t.options),t.type){case"http":return"basic"===t.schema;case"apiKey":return"header"===t.in||"query"===t.in;case"openIdConnect":return"history"===e.historyMode;default:return!1}}static convertLegacyAuthConfig(t){return s.Ay.isObject(t)&&null!==t.type?"query"===t.type||"header"===t.type?{type:"apiKey",in:t.type,name:t.key,description:t.description,formatter:t.formatter}:t:null}}},50737:function(t,e,a){"use strict";let s;s=a(19306),e.A=Object.assign(s,{pathPrefix:"/stac-browser",historyMode:"hash"},window.STAC_BROWSER_CONFIG)},48907:function(t,e,a){"use strict";a.d(e,{Aj:function(){return c},Qm:function(){return p},SM:function(){return g},_:function(){return m},fH:function(){return f}});var s=a(85471),i=a(64765),r=a(50737),n=a(14540),o=a.n(n),l=a(2566);s.Ay.use(i.A);const c=["https://api.stacspec.org/v1.*/language"],u={};function d(){for(let e of r.A.supportedLocales)u[e]=a(97991)(`./${e}/config.json`);const t={};for(let e in u)t[e]={languages:u};return t}const h=new i.A({locale:r.A.locale,fallbackLocale:r.A.fallbackLocale,messages:d(),postTranslation:(t,e)=>{if(""===t){const a=e.split(".");let s=h.messages[r.A.fallbackLocale];for(const e of a){if(!(e in s))return t;s=s[e]}return s}return t}});function p(){return Promise.all([f(r.A.locale),f(r.A.fallbackLocale)])}async function f(t){if(l.Ay.size(h.messages[t])>1)return;const e=(await a(33545)(`./${t}/default.js`)).default;h.mergeLocaleMessage(t,e)}async function g(t){const e=u[t].customize;if(0===l.Ay.size(u[t].customize))return;const s=e.map((async e=>{const s=(await a(93731)(`./${t}/${e}`)).default;return await s(t)}));return Promise.all(s)}function m(t,e=null){if("string"!==typeof t||0===t.length)return t;let a=`fields.${t}`;return h.te(a)?h.t(a,null,e):o().format(t,e)}e.Ay=h},39071:function(t,e,a){"use strict";a.d(e,{E0:function(){return i},f5:function(){return r}});a(44114);function s(t){if(!t)return;const e=String(t),a=e.indexOf("@"),s=-1!==a?e.substr(a+1):void 0,i=-1!==a?e.substr(0,a):e,r=String(i).replace(/-/g,"_").split("_");if(!r.length||r.length>4)return;const n=r.shift();if(!n)return;const o={keyword:s,language:n.toLowerCase()};if(!r.length)return o;if(3===r.length){const t=r.pop();t&&(o.variant=t.toUpperCase())}let l=r.pop();if(l.length>3&&(o.keyword=l,l=r.pop()),l&&(o.country=l.toUpperCase()),!r.length)return o;const c=r.pop();return"string"===typeof c&&c.length>=1&&(o.script=c[0].toUpperCase()+c.substring(1).toLowerCase()),o}function i(t){const e={};return t.forEach((t=>{const{language:a,country:i}=s(t);if(!a)throw new Error(`Locale ${t} is not parsable`);e[a]||(e[a]={countries:{},firstCountry:void 0,main:void 0});const r=e[a];i?(r.countries[i]=t,r.firstCountry||(r.firstCountry=t)):r.main=t})),e}function r(t,e,a,n){const o=Array.isArray(t)?i(t):t;if(!e&&a)return r(t,a,void 0,n);if(!e)return;const{language:l,country:c}=s(e);if(!l)return a;if(!o[l]){if(e===a)return;return r(t,a,null,n)}const{countries:u,main:d=a,firstCountry:h}=o[l];return u&&c?n&&h?u[c]?u[c]:h:u[c]?u[c]:d:n&&h?h:d}},22117:function(t,e,a){"use strict";var s=a(85471),i=function(){var t=this,e=t._self._c;return e("b-container",{attrs:{id:"stac-browser"}},[t.showLogin?e("Authentication"):t._e(),t.globalError?e("ErrorAlert",t._b({staticClass:"global-error",attrs:{dismissible:""},on:{close:t.hideError}},"ErrorAlert",t.globalError,!1)):t._e(),t.sidebar?e("Sidebar"):t._e(),e("header",[e("div",{staticClass:"logo"},[t._v(t._s(t.displayCatalogTitle))]),e("StacHeader",{on:{enableSidebar:function(e){t.sidebar=!0}}})],1),e("router-view"),e("footer",[e("i18n",{staticClass:"poweredby text-muted",attrs:{tag:"small",path:"poweredBy"},scopedSlots:t._u([{key:"link",fn:function(){return[e("a",{attrs:{href:"https://github.com/radiantearth/stac-browser",target:"_blank"}},[t._v("STAC Browser")]),t._v(" "+t._s(t.browserVersion)+" ")]},proxy:!0}])})],1)],1)},r=[],n=(a(44114),a(40173)),o=a(95353),l=a(50737),c=function(){var t=this,e=t._self._c;return e("main",{staticClass:"browse d-flex flex-column"},[!t.allowExternalAccess&&t.isExternal?e("b-alert",{attrs:{show:""}},[t._v(t._s(t.$t("errors.noExternalAccess")))]):t.error?e("ErrorAlert",{attrs:{url:t.url,description:t.errorDescription,id:t.errorId}}):t.loading?e("Loading",{attrs:{stretch:""}}):e(t.component,{tag:"component"})],1)},u=[],d=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,staticClass:"item"},[e("b-row",[e("b-col",{staticClass:"left"},[e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{card:"",pills:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.selectedAsset,scrollWheelZoom:""},on:{dataChanged:t.dataChanged}})],1),t.thumbnails.length>0?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.additionalLinks.length>0?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks,context:t.data}}):t._e()],1),e("b-col",{staticClass:"right"},[e("section",{staticClass:"intro"},[t.data.properties.description?e("h2",[t._v(t._s(t.$t("description")))]):t._e(),t.data.properties.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data.properties["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data.properties["anon:warning"]}}):t._e(),t.data.properties.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.properties.description}})],1):t._e(),Array.isArray(t.data.properties.keywords)&&t.data.properties.keywords.length>0?e("Keywords",{staticClass:"mb-3",attrs:{keywords:t.data.properties.keywords}}):t._e()],1),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),t.data.properties.providers?e("Providers",{attrs:{providers:t.data.properties.providers}}):t._e(),e("Metadata",{attrs:{data:t.data,type:"Item",ignoreFields:t.ignoredMetadataFields}})],1)],1)],1)},h=[],p=a(41526),f=a(6841),g=a.n(f),m=a(2566),b={data(){return{shownAssetsOnMap:[],shownBandsOnMap:[],tab:null,selectedAsset:null,selectedAssetKey:null}},computed:{...(0,o.L8)(["thumbnails","hasAssets","assets"]),shownAssets(){if(0===this.tab)return this.shownAssetsOnMap;if(1===this.tab||null===this.tab&&this.thumbnails.length>0){let t=[],e=this.thumbnails.map((t=>t.href));for(let a in this.assets){let s=this.assets[a];e.includes(s.href)&&t.push(a)}return t}return[]}},methods:{showAsset(t,e,a){a?this.tab=1:(this.tab=0,this.selectedAsset=t,this.selectedAssetKey=e),this.$refs.tabs&&m.Ay.scrollTo(this.$refs.tabs.$el)},dataChanged(t){m.Ay.isObject(t)?t.assets||t.bands?(m.Ay.size(t.assets)>0&&(this.selectedAssetKey?this.shownAssetsOnMap=[this.selectedAssetKey]:this.shownAssetsOnMap=t.assets.map((t=>t.key))),m.Ay.size(t.bands)>0&&(this.shownBandsOnMap=t.bands)):this.selectedAssetKey&&(this.shownAssetsOnMap=[this.selectedAssetKey]):(this.shownBandsOnMap=[],this.shownAssetsOnMap=[])}}},y=a(95050),A=a(63405),v=a(31831),w=a(84193),C=a.n(w),k=a(48907);function _(t,e){let a=e.getters.toBrowserPath(t),s=C()(window.location.origin.toString());return"hash"===e.state.historyMode?(s.path(e.state.pathPrefix),s.fragment(a)):s.path(m.Ay.removeTrailingSlash(e.state.pathPrefix)+a),s.toString()}function L(t,e){Array.isArray(e)&&e.length>=4&&(t.spatialCoverage={"@type":"Place",geo:{"@type":"GeoShape",box:(e||[]).join(" ")}})}function j(t){return!Array.isArray(t)||2!==t.length||"string"!==typeof t[0]&&"string"!==typeof t[1]?null:t.map((t=>t||"..")).join("/")}function x(t){return m.Ay.size(t.assets)>0?Object.values(t.assets).map((e=>({"@type":"DataDownload",contentUrl:m.Ay.toAbsolute(e.href,t.getAbsoluteUrl()),encodingFormat:e.type,name:e.title}))):[]}function S(t,e,a,s="DataCatalog"){return t.map((t=>{let i,r;t instanceof v.A?(i=v.A.getDisplayTitle(t),r=t.getAbsoluteUrl()):(i=t.title,r=m.Ay.toAbsolute(t.href,e.getAbsoluteUrl()));let n={"@type":s,name:i,url:_(r,a),isBasedOn:r};return"Dataset"===s&&(n.description=I(t,a)),n}))}function T(t,e){return t.filter((t=>m.Ay.isObject(t)&&Array.isArray(t.roles)&&t.roles.includes(e))).map((t=>({"@type":"Organization",name:t.name,description:t.description,url:t.url,email:t.email||t.mail})))}function I(t,e){let a,s;if(t instanceof v.A?(a=t.isItem()?"Item":t.type,s=t.collection):m.Ay.isObject(t)&&"item"===t.rel&&(a="Item"),a){let i=k.Ay.tc(`stac${a}`),r=k.Ay.t("in",{catalog:s||e.catalogTitle});return`SpatioTemporal Asset Catalog (STAC)\n${i} - ${t.id} ${r}`}}function O(t,e,a){var s;let i,r=v.A.getDisplayTitle(t),n=t.getAbsoluteUrl(),o=_(n,a),l=null===(s=t.getMetadata("language"))||void 0===s?void 0:s.code,c=t.getThumbnails(!0);c.length>0&&(i=m.Ay.toAbsolute(c[0].href,t.getAbsoluteUrl()));let u=t.getMetadata("license");var d;u&&"proprietary"!==u&&"various"!==u&&"other"!==u?u=`https://spdx.org/licenses/${u}.html`:u=null===(d=t.getLinkWithRel("license"))||void 0===d?void 0:d.href;u&&(u=m.Ay.toAbsolute(u,t.getAbsoluteUrl()));let h,p,f,g,b=t.getMetadata("providers");return m.Ay.size(b)>0&&(h=T(b,"licensor"),p=T(b,"producer"),f=T(b,"host"),g=T(b,"processor")),{"@context":"https://schema.org/","@type":e,name:r,description:t.getMetadata("description")||I(t,a),citation:t.getMetadata("sci:citation"),identifier:t.getMetadata("sci:doi")||t.id,keywords:t.getMetadata("keywords"),license:u,url:o,isBasedOn:n,dateCreated:t.getMetadata("created"),dateModified:t.getMetadata("updated"),datePublished:t.getMetadata("published"),expires:t.getMetadata("expires"),inLanguage:l,thumbnailUrl:i,version:t.getMetadata("version"),image:i,copyrightHolder:h,producer:p,provider:f,creator:g}}function $(t,e,a){if(!(t instanceof v.A))return null;e=e.filter((t=>m.Ay.isObject(t))),e.length>1&&(e=e.filter(((t,a)=>e.findIndex((e=>e.isBasedOn===t.isBasedOn))!==a)));let s=O(t,"DataCatalog",a);var i,r,n,o;t.isCollection()&&((null===(i=t.extent)||void 0===i||null===(r=i.temporal)||void 0===r?void 0:r.interval.length)>0&&(s.temporalCoverage=j(t.extent.temporal.interval[0])),(null===(n=t.extent)||void 0===n||null===(o=n.spatial)||void 0===o?void 0:o.bbox.length)>0&&L(s,t.extent.spatial.bbox[0]),s.associatedMedia=x(t));return s.hasPart=S(a.getters.catalogs,t,a),s.dataset=S(a.getters.items,t,a,"Dataset"),s.isPartOf=S(e,t,a),s}function P(t,e,a){if(!(t instanceof v.A))return null;e=e.filter((t=>m.Ay.isObject(t)));let s=O(t,"Dataset",a);s.includedInDataCatalog=S(e,t,a);let i=t.getMetadata("start_datetime"),r=t.getMetadata("end_datetime");return s.temporalCoverage=i||r?j([i,r]):t.getMetadata("datetime"),L(s,t.bbox),s.distribution=x(t),s}function B(t,e){let a="schema-org",s=t.getElementById(a);s||(s=t.createElement("script"),s.type="application/ld+json",s.id=a,t.head.appendChild(s)),s.innerText=JSON.stringify(e)}var M={name:"Item",components:{AnonymizedNotice:()=>a.e(7457).then(a.bind(a,47457)),Assets:()=>Promise.all([a.e(7719),a.e(513)]).then(a.bind(a,33231)),BTabs:y.r,BTab:A.a,CollectionLink:()=>a.e(9891).then(a.bind(a,89891)),Description:p["default"],DeprecationNotice:()=>a.e(7341).then(a.bind(a,57341)),Keywords:()=>a.e(8499).then(a.bind(a,28499)),Links:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(7719),a.e(9813)]).then(a.bind(a,73931)),Map:()=>a.e(1940).then(a.bind(a,81940)),Metadata:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(3147)]).then(a.bind(a,73147)),Providers:()=>a.e(635).then(a.bind(a,80635)),ReadMore:g(),Thumbnails:()=>a.e(8648).then(a.bind(a,48648))},mixins:[b],data(){return{ignoredMetadataFields:["description","keywords","providers","title","deprecated","proj:bbox","proj:geometry","auth:schemes","anon:warning"]}},computed:{...(0,o.aH)(["data","url"]),...(0,o.L8)(["additionalLinks","collectionLink","parentLink"])},watch:{data:{immediate:!0,handler(t){try{let e=P(t,[this.collectionLink,this.parentLink],this.$store);B(document,e)}catch(e){console.error(e)}}}}},F=M,E=a(81656),U=(0,E.A)(F,d,h,!1,null,null,null),R=U.exports,q=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,class:{cc:!0,[t.data.type.toLowerCase()]:!0,mixed:t.hasCatalogs&&t.hasItems,empty:!t.hasCatalogs&&!t.hasItems}},[e("b-row",[e("b-col",{staticClass:"meta"},[e("section",{staticClass:"intro"},[e("h2",[t._v(t._s(t.$t("description")))]),t.data.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data["anon:warning"]}}):t._e(),t.data.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.description}})],1):t._e(),Array.isArray(t.data.keywords)&&t.data.keywords.length>0?e("Keywords",{staticClass:"mb-3",attrs:{keywords:t.data.keywords}}):t._e(),t.isCollection?e("section",{staticClass:"metadata mb-4"},[t.licenses?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.license")))]),e("b-col",{staticClass:"value",attrs:{md:"8"}},[e("span",{domProps:{innerHTML:t._s(t.licenses)}})])],1):t._e(),t.temporalExtents?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.temporalExtent")))]),e("b-col",{staticClass:"value",attrs:{md:"8"}},[e("span",{domProps:{innerHTML:t._s(t.temporalExtents)}})])],1):t._e()],1):t._e(),"left"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks,context:t.data}}):t._e()],1),t.isCollection||t.hasThumbnails?e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{pills:"",card:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[t.isCollection?e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.mapData,fitBoundsOnce:"",popover:""},on:{dataChanged:t.dataChanged}})],1):t._e(),t.hasThumbnails?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1):t._e(),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.hasItemAssets&&!t.hasItems?e("Assets",{attrs:{assets:t.data.item_assets,context:t.data,definition:!0}}):t._e(),t.providers?e("Providers",{attrs:{providers:t.providers}}):t._e(),e("Metadata",{staticClass:"mb-4",attrs:{type:t.data.type,data:t.data,ignoreFields:t.ignoredMetadataFields}}),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),"right"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks,context:t.data}}):t._e()],1),t.hasCatalogs?e("b-col",{staticClass:"catalogs-container"},[e("Catalogs",{attrs:{catalogs:t.catalogs,hasMore:!!t.nextCollectionsLink},on:{loadMore:t.loadMoreCollections}})],1):t._e(),t.hasItems?e("b-col",{staticClass:"items-container"},[e("Items",{attrs:{stac:t.data,items:t.items,api:t.isApi,showFilters:t.showFilters,apiFilters:t.filters,pagination:t.itemPages,loading:t.apiItemsLoading},on:{paginate:t.paginateItems,filterItems:t.filterItems,filtersShown:t.filtersShown}}),t.hasItemAssets?e("Assets",{attrs:{assets:t.data.item_assets,context:t.data,definition:!0}}):t._e()],1):t._e()],1)],1)},D=[],z=a(32398),H=a(82239),N=a(67467),W=a(50735),Q={name:"Catalog",components:{AnonymizedNotice:()=>a.e(7457).then(a.bind(a,47457)),Assets:()=>Promise.all([a.e(7719),a.e(513)]).then(a.bind(a,33231)),BTabs:y.r,BTab:A.a,Catalogs:z["default"],CollectionLink:()=>a.e(9891).then(a.bind(a,89891)),DeprecationNotice:()=>a.e(7341).then(a.bind(a,57341)),Description:p["default"],Items:H["default"],Keywords:()=>a.e(8499).then(a.bind(a,28499)),Links:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(7719),a.e(9813)]).then(a.bind(a,73931)),Map:()=>a.e(1940).then(a.bind(a,81940)),Metadata:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(3147)]).then(a.bind(a,73147)),Providers:()=>a.e(635).then(a.bind(a,80635)),ReadMore:g(),Thumbnails:()=>a.e(8648).then(a.bind(a,48648))},mixins:[b,(0,N.A)({formatLicense:W.formatLicense,formatTemporalExtents:W.formatTemporalExtents})],data(){return{filters:{},ignoredMetadataFields:["stac_version","stac_extensions","id","type","title","description","keywords","providers","license","extent","summaries","links","assets","item_assets","proj:bbox","proj:geometry","conformsTo","deprecated","anon:warning","stats:catalogs","stats:collections","stats:items","auth:schemes","stac_browser"]}},computed:{...(0,o.aH)(["data","url","apiItems","apiItemsLink","apiItemsPagination","nextCollectionsLink","stateQueryParameters"]),...(0,o.L8)(["additionalLinks","catalogs","collectionLink","isCollection","items","getApiItemsLoading","parentLink","rootLink"]),showFilters(){return Boolean(this.stateQueryParameters["itemFilterOpen"])},hasThumbnails(){return this.thumbnails.length>0},linkPosition(){return 0===this.additionalLinks.length?null:this.isCollection||!this.hasThumbnails?"right":"left"},apiItemsLoading(){return this.getApiItemsLoading(this.data)},licenses(){return this.isCollection&&this.data.license?this.formatLicense(this.data.license,null,null,this.data):null},providers(){let t=[];return Array.isArray(this.data.providers)&&this.data.providers.length>0?t=this.data.providers:this.isCollection&&m.Ay.isObject(this.data.summaries)&&Array.isArray(this.data.summaries.providers)&&(t=this.data.summaries.providers),t.length>0?t:null},temporalExtents(){if(this.isCollection&&this.data.extent.temporal.interval.length>0){let t=this.data.extent.temporal.interval;return t.length>1&&(t=t.slice(1)),this.formatTemporalExtents(t)}return null},hasItemAssets(){var t;return m.Ay.size(null===(t=this.data)||void 0===t?void 0:t.item_assets)>0},itemPages(){let t=Object.assign({},this.apiItemsPagination);return!t.first&&this.data&&this.apiItemsLink&&"items"!==this.apiItemsLink.rel&&(t.first=m.Ay.addFiltersToLink(this.data.getApiItemsLink(),this.filters)),t},isApi(){return Boolean(this.apiItemsLink)},hasItems(){return this.items.length>0||this.isApi},hasCatalogs(){return this.catalogs.length>0},mapData(){return this.selectedAsset?this.selectedAsset:{type:"FeatureCollection",features:this.items}}},watch:{data:{immediate:!0,handler(t){try{let e=$(t,[this.parentLink,this.rootLink],this.$store);B(document,e)}catch(e){console.error(e)}}}},methods:{filtersShown(t){this.$store.commit("updateState",{type:"itemFilterOpen",value:t?1:null})},loadMoreCollections(){this.$store.dispatch("loadNextApiCollections",{show:!0})},async paginateItems(t){try{await this.$store.dispatch("loadApiItems",{link:t,show:!0,filters:this.filters})}catch(e){this.$root.$emit("error",e,this.$t("errors.loadItems"))}},async filterItems(t,e){this.filters=t,e&&this.$store.commit("resetApiItems",this.data.getApiItemsLink());try{await this.$store.dispatch("loadApiItems",{link:this.apiItemsLink,show:!0,filters:t})}catch(a){let t=e?this.$t("errors.loadItems"):this.$t("errors.loadFilteredItems");this.$root.$emit("error",a,t)}}}},V=Q,G=(0,E.A)(V,q,D,!1,null,null,null),K=G.exports,J=a(79873),X={name:"Browse",components:{Catalog:K,Item:R},mixins:[J.A],computed:{...(0,o.L8)(["isItem"]),component(){return this.isItem?"Item":"Catalog"}}},Y=X,Z=(0,E.A)(Y,c,u,!1,null,null,null),tt=Z.exports;function et(t,e){let a=t.params.pathMatch;return e.allowExternalAccess&&a.startsWith("external/")&&(a="/"+a),{path:a}}function at(t){let e=[];return t.catalogUrl?e.push({path:"/search",name:"search",component:()=>Promise.all([a.e(537),a.e(5262),a.e(2904),a.e(3611)]).then(a.bind(a,33855))}):(e.push({path:"/",name:"select",component:()=>a.e(967).then(a.bind(a,60967))}),e.push({path:"/search/external/(.*)",name:"search",component:()=>Promise.all([a.e(537),a.e(5262),a.e(2904),a.e(3611)]).then(a.bind(a,33855)),props:t=>({loadParent:`/external/${t.params.pathMatch}`})})),e.push({path:"/auth/logout",name:"logout",component:()=>a.e(7130).then(a.bind(a,77130))}),e.push({path:"/auth",component:()=>a.e(7659).then(a.bind(a,17659))}),e.push({path:"/validation/(.*)",name:"validation",component:()=>Promise.all([a.e(537),a.e(287),a.e(3545)]).then(a.bind(a,93545)),props:e=>et(e,t)}),e.push({path:"/(.*)",name:"browse",component:tt,props:e=>et(e,t)}),e}var st=at,it=a(59203),rt=a(44426),nt=a(24274),ot=a(45311);const lt=async(t,e)=>{t.commit("showGlobalError",{error:e,message:k.Ay.t("errors.authFailed")},{root:!0}),await t.dispatch("updateCredentials")};function ct(t){return{namespaced:!0,state:{method:()=>new rt.A,actions:[],credentials:null,inProgress:!1},getters:{method(t){return t.method()},canAuthenticate(t,e,a){return nt.A.isSupported(e.method,a)},isLoggedIn(t){return null!==t.credentials},showLogin(t,e){return!e.isLoggedIn&&t.inProgress}},mutations:{setCredentials(t,e){t.credentials=e},setMethod(t,e){t.method=()=>e},addAction(t,e){t.actions.push(e)},resetActions(t){t.actions=[]},setInProgress(t,e=!0){t.inProgress=e}},actions:{async waitForAuth(t){rt.A.equals(t.getters.method,t.rootState.authConfig)||await t.dispatch("updateMethod",t.rootState.authConfig)},async updateMethod(e,a){a=nt.A.convertLegacyAuthConfig(a),await e.getters.method.close();const s=async(t,a)=>{t||(a=null),await e.dispatch("updateCredentials",a),t?await e.dispatch("executeActions"):e.commit("resetActions")},i=new ot.A(!0);i.set("authConfig",a);const r=await rt.A.create(a,s,t);e.commit("setMethod",r)},async requestLogin(t){if(!t.getters.isLoggedIn){t.commit("setInProgress");try{await t.getters.method.login()}catch(e){lt(t,e)}}},async finalizeLogin(t,e=null){t.commit("setInProgress",!1);try{await t.getters.method.confirmLogin(e)}catch(a){lt(t,a)}},async abortLogin(t){t.commit("setInProgress",!1)},async requestLogout(t){t.getters.isLoggedIn&&(t.commit("setInProgress"),await t.getters.method.logout())},async finalizeLogout(t){t.commit("setInProgress",!1);try{await t.getters.method.confirmLogout()}catch(e){lt(t,e)}},async updateCredentials(t,e=null){t.commit("setCredentials",e);const a=t.getters.method.updateStore(e);if(a.query)t.commit("setQueryParameter",a.query,{root:!0});else if(a.header)t.commit("setRequestHeader",a.header,{root:!0});else if(a.cookie){const t=new ot.W(!0);t.setItem(a.cookie.key,a.cookie.value)}},async executeActions(t){for(let a of t.state.actions)try{const e=a();e instanceof Promise&&e.catch((e=>lt(t,e)))}catch(e){lt(t,e)}t.commit("resetActions")}}}}var ut=a(33484),dt=a(39071),ht=a(14540),pt=a.n(ht),ft=a(78561);function gt(t,e){const a=()=>({url:"",title:t.catalogTitle,description:null,data:null,parents:null,globalError:null,localRequestQueryParameters:{},stateQueryParameters:{language:null,asset:[],itemdef:[]},apiItems:[],apiItemsLink:null,apiItemsPagination:{}}),i=()=>({queue:[],privateQueryParameters:{},authActions:[],conformsTo:[],dataLanguage:null,dataLanguages:[],apiCollections:[],apiItemsLoading:{},nextCollectionsLink:null});return new o.Ay.Store({strict:!1,modules:{auth:ct(e)},state:Object.assign({},t,a(),i(),{database:{},allowSelectCatalog:!t.catalogUrl,globalRequestQueryParameters:t.requestQueryParameters,uiLanguage:t.locale}),getters:{loading:t=>!t.url||!t.data||t.database[t.url]instanceof ut.Rh,getApiItemsLoading:t=>e=>{let a="";return e instanceof ut.Rh||(e instanceof v.A?a=e.id:"string"===typeof e&&(a=e),t.apiItemsLoading[a]||!1)},error:t=>t.database[t.url]instanceof Error?t.database[t.url]:null,getStac:t=>(e,a=!1)=>{if(e instanceof v.A)return e;if(m.Ay.isObject(e)&&m.Ay.hasText(e.href)&&(e=e.href),!m.Ay.hasText(e))return null;let s=m.Ay.toAbsolute(e,t.url),i=t.database[s];return i instanceof v.A||a&&i instanceof Error?i:null},displayCatalogTitle:(t,e)=>v.A.getDisplayTitle(e.root,t.catalogTitle),isCollection:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCollection())||!1},isCatalog:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalog())||!1},isCatalogLike:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalogLike())||!1},isItem:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isItem())||!1},root:(t,e)=>e.getStac(e.rootLink),rootLink:t=>{var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("root");if(a)return a;if(t.catalogUrl)return m.Ay.createLink(t.catalogUrl,"root");if(t.url&&t.data instanceof v.A&&t.data.getLinksWithRels(["conformance","service-desc","service-doc","data","search"]).length>0)return m.Ay.createLink(t.url,"root");if(t.url){let e=C()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),"items"===a&&(e.segment(-1,""),e.segment(-1,"")),m.Ay.createLink(e.toString(),"root")}return null},parentLink:t=>{if(t.data instanceof v.A){let e=t.data.getStacLinkWithRel("parent");if(e)return e}if(t.url){let e=C()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),m.Ay.createLink(e.toString(),"parent")}return null},collectionLink:t=>{if(t.data instanceof v.A){var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("collection");if(a)return a}if(t.url){let e=C()(t.url),a=e.segment(-2);if("items"==a)return e.segment(-1,""),e.segment(-1,""),m.Ay.createLink(e.toString(),"collection")}return null},supportsConformance:t=>e=>{if(!Array.isArray(e))return e;let a=e.map((t=>t.replaceAll("*","[^/]+").replace(/\/?#/,"/?#"))).join("|"),s=new RegExp("^("+a+")$");return Boolean(t.conformsTo.find((t=>t.match(s))))},supportsExtension:t=>e=>m.Ay.supportsExtension(t.data,e),canSearch:(t,e)=>e.canSearchCollections||e.canSearchItems,canSearchItems:(t,e)=>e.supportsConformance(ft.Q.Items.BasicFilters),canSearchCollections:(t,e)=>e.supportsConformance(ft.Q.Collections.BasicFilters),items:t=>t.apiItems.length>0?t.apiItems:t.data?t.data.getStacLinksWithRel("item"):[],catalogs:t=>{let e=Boolean(t.data instanceof v.A&&t.data.getApiCollectionsLink()&&t.apiCollections.length>0),a=Boolean(t.data instanceof v.A),s=!t.apiCatalogPriority||"collections"===t.apiCatalogPriority,i=!t.apiCatalogPriority||"childs"===t.apiCatalogPriority,r=[];return e&&s&&(r=r.concat(t.apiCollections)),a&&i&&(r=v.A.addMissingChildren(r,t.data)),r},hasAssets:(t,e)=>Boolean(Object.values(e.assets).find((t=>m.Ay.isObject(t)&&"string"===typeof t.href))),assets:(t,e)=>{var a;if(m.Ay.isObject(null===(a=t.data)||void 0===a?void 0:a.assets)){if(t.showThumbnailsAsAssets)return t.data.assets;{let a={},s=e.thumbnails;for(let e in t.data.assets){let i=t.data.assets[e];s.includes(i)||(a[e]=i)}return a}}return{}},thumbnails:t=>t.data?t.data.getThumbnails(!0):[],additionalLinks:t=>t.data?t.data.getLinksWithOtherRels(it.ol).filter((t=>"preview"!==t.rel||!m.Ay.canBrowserDisplayImage(t))):[],toBrowserPath:(t,e)=>a=>{m.Ay.hasText(a)||(a="/");let s,i=m.Ay.toAbsolute((0,ut.rM)(a,t.stacProxyUrl),t.url,!1);if(!t.allowSelectCatalog&&t.catalogUrl&&(s=i.relativeTo(t.catalogUrl)),"undefined"===typeof s||e.isExternalUrl(i,!1)){if(!t.allowExternalAccess)return i.toString();let e=["/external"],a=i.protocol();"https"!==a&&e.push(a+":"),e.push(i.authority()),e.push(i.path().replace(/^\//,""));let s=e.join("/"),r=i.query();return r&&(s+=`?${r}`),s}return"/"+s.toString()},fromBrowserPath:(t,e)=>a=>{const s=/^\/(search\/)?external\//;if(m.Ay.hasText(a)&&"/"!==a)if(a.match(s)){let t,e=a.replace(s,"").split("/");t=e[0].endsWith(":")?e.shift():"https:",a=`${t}//${e.join("/")}`}else!t.allowSelectCatalog&&t.catalogUrl&&(a=m.Ay.toAbsolute(a,t.catalogUrl,!1));else a=t.catalogUrl;return e.getRequestUrl(a,null,!0)},isExternalUrl:t=>(e,a=!0)=>{if(!t.catalogUrl)return!1;if(e instanceof C()||(e=C()(e)),a&&Array.isArray(t.allowedDomains)&&t.allowedDomains.includes(e.domain()))return!1;let s;if(e.is("relative"))s=e;else if(s=e.relativeTo(t.catalogUrl),s.equals(e))return!0;let i=s.toString();return i.startsWith("//")||i.startsWith("../")},getRequestUrl:(t,e)=>(a,s=null,i=!1)=>{let r=m.Ay.toAbsolute((0,ut.sd)(a,t.stacProxyUrl),s||t.url,!1);return e.isExternalUrl(r)||((0,ut.mA)(r,t.privateQueryParameters),(0,ut.mA)(r,t.globalRequestQueryParameters),i&&(0,ut.mA)(r,t.localRequestQueryParameters)),r.toString()},acceptedLanguages:t=>{const e={en:.1};return Array.isArray(t.supportedLocales)&&t.supportedLocales.forEach((t=>e[t]=.2)),m.Ay.hasText(t.fallbackLocale)&&(e[t.fallbackLocale]=.5),Array.isArray(navigator.languages)&&navigator.languages.forEach((t=>e[t]=.7)),m.Ay.hasText(t.locale)&&(e[t.locale]=1),Object.entries(e).sort(((t,e)=>t[1]>e[1]?-1:t[1]e>=1?t:`${t};q=${e}`)).join(",")}},mutations:{config(t,e){for(let a in e){let s=e[a];switch(a){case"catalogTitle":t.catalogTitle=s;break;case"catalogUrl":"function"===typeof s?t.catalogUrl=s():"string"===typeof s&&(t.catalogUrl=s);break;case"crossOriginMedia":t.crossOriginMedia=["anonymous","use-credentials"].includes(s)?s:null;break;case"cardViewSort":switch(s){case"asc":t.cardViewSort=1;break;case"desc":t.cardViewSort=-1;break;default:t.cardViewSort=0}break;default:t[a]=s}}},languages(t,{uiLanguage:e,dataLanguage:a}){t.dataLanguage=a||null,t.uiLanguage=e||null},setQueryParameter(t,{type:e,key:a,value:i}){e=`${e}QueryParameters`,"undefined"===typeof i?s.Ay.delete(t[e],a):s.Ay.set(t[e],a,i)},setRequestHeader(t,{key:e,value:a}){"undefined"===typeof a?s.Ay.delete(t.requestHeaders,e):s.Ay.set(t.requestHeaders,e,a)},requestAuth(t,e){"function"===typeof e?t.doAuth.push(e):t.doAuth=[]},setAuthData(t,e){t.authData=e},state(t,e){t.stateQueryParameters=e},updateState(t,{type:e,value:a}){null===a||"undefined"===typeof a?s.Ay.delete(t.stateQueryParameters,e):s.Ay.set(t.stateQueryParameters,e,a)},openCollapsible(t,{type:e,uid:a}){const s=t.stateQueryParameters[e].indexOf(a);-1===s&&t.stateQueryParameters[e].push(a)},closeCollapsible(t,{type:e,uid:a}){const i=t.stateQueryParameters[e].indexOf(a);i>-1&&s.Ay.delete(t.stateQueryParameters[e],i)},updateLoading(t,{url:e,show:a,loadApi:i}){let r=t.database[e];s.Ay.set(r,"show",a||r.show),s.Ay.set(r,"loadApi",i||r.loadApi)},loading(t,{url:e,loading:a}){s.Ay.set(t.database,e,a),a.show&&(t.url=e)},loaded(t,{url:e,data:a}){s.Ay.set(t.database,e,(0,ut.Pj)(t,a))},clear(t,e){s.Ay.delete(t.database,e)},resetCatalog(e,s){Object.assign(e,i()),Object.assign(e,a()),e.supportedLocales.includes(e.locale)||(e.locale=t.locale),s&&(e.catalogUrl=t.catalogUrl,e.catalogTitle=t.catalogTitle,e.database={})},resetPage(t){Object.assign(t,a())},setPageMetadata(t,{title:e,description:a}){t.title=e,"undefined"!==typeof a&&(t.description=a)},showPage(t,{url:e,title:a,description:s,stac:i}){if(i||(i=t.database[e]||null),t.url=e||null,t.data=i instanceof v.A?i:null,t.description=s,a)t.title=a;else if(t.title=v.A.getDisplayTitle(t.data,t.catalogTitle),t.data){let e=t.data.getMetadata("description");m.Ay.hasText(e)&&(t.description=e)}if(t.data){let e=t.data.isItem()?t.data.properties:t.data,a=Array.isArray(e.languages)?e.languages.slice():[];m.Ay.isObject(e.language)&&a.unshift(e.language),t.dataLanguages=a.filter((t=>m.Ay.isObject(t)&&"string"===typeof t.code))}},errored(t,{url:e,error:a}){a instanceof Error||(a=new Error(a)),s.Ay.set(t.database,e,a)},queue(t,e){t.queue.push(e)},unqueue(t,e){let a=t.queue.indexOf(e);-1!==a&&t.queue.splice(a,1)},removeFromQueue(t,e){t.queue.splice(0,e)},setConformanceClasses(t,e){Array.isArray(e)&&(t.conformsTo=e)},setApiItemsLink(t,e){t.apiItemsLink=e},toggleApiItemsLoading(t,e=""){t.apiItemsLoading[e]?s.Ay.delete(t.apiItemsLoading,e):s.Ay.set(t.apiItemsLoading,e,!0)},setApiItems(t,{data:e,stac:a,show:s}){if(!m.Ay.isObject(e)||!Array.isArray(e.features))return;let i=e.features.map((e=>(0,ut.Pj)(t,e)));s&&(t.apiItems=i);let r=m.Ay.getPaginationLinks(e);s&&(t.apiItemsPagination=r),a instanceof v.A&&a.setApiData(i,r.next,r.prev)},addApiCollections(t,{data:e,stac:a,show:s}){if(!m.Ay.isObject(e)||!Array.isArray(e.collections))return;let i=e.collections.map((e=>(0,ut.Pj)(t,e))),r=m.Ay.getLinkWithRel(e.links,"next");s&&(t.nextCollectionsLink=r,t.apiCollections=t.apiCollections.concat(i)),a instanceof v.A&&a.setApiData(i,r)},resetApiItems(t,e){t.apiItems=[],t.apiItemsLink=e,t.apiItemsPagination={}},parents(t,e){t.parents=e},showGlobalError(t,e){e&&console.trace(e),t.globalError=e}},actions:{async config(t,e){t.commit("config",e);for(let a in e){let e=t.state[a];switch(a){case"catalogUrl":e&&await t.dispatch("load",{url:e,loadApi:!0});break;case"authConfig":await t.dispatch("auth/updateMethod",e);break}}},async switchLocale(t,{locale:e,userSelected:a}){if(await t.dispatch("config",{locale:e}),t.state.storeLocale&&a){const t=new ot.A;t.set("locale",e)}let s=(0,dt.f5)(t.state.supportedLocales,e,t.state.fallbackLocale),i=t.state.dataLanguages.map((t=>t.code)),r=t.state.dataLanguages.length>0?t.state.dataLanguages[0].code:s,n=(0,dt.f5)(i,e,r);await(0,k.fH)(s),pt().setLocales([s,t.state.fallbackLocale]),pt().setTranslator(k._),await(0,k.SM)(s),t.commit("languages",{dataLanguage:n,uiLanguage:s}),t.commit("setQueryParameter",{type:"state",key:"language",value:e})},async loadBackground(t,e){let a=t.state.queue.slice(0,e);if(a.length>0){let s=[];for(let e of a)s.push(t.dispatch("load",{url:e}));return t.commit("removeFromQueue",e),await Promise.all(s)}},async loadParents(t){if(!(t.state.data instanceof v.A))return void t.commit("parents",[]);let e=[],a=t.state.data;while(a){let s=a.getLinkWithRel("parent")||a.getLinkWithRel("root");if(!s)break;let i=m.Ay.toAbsolute(s.href,a.getAbsoluteUrl());await t.dispatch("load",{url:i,loadApi:!0});let r=t.getters.getStac(i,!0);if(r instanceof Error)return void t.commit("parents",r);if(r===a)break;e.push(r),a=r}t.commit("parents",e)},async tryLogin(t,{url:e,action:a}){t.commit("clear",e),t.commit("errored",{url:e,error:new m.fe(k.Ay.t("authentication.unauthorized"))}),a&&t.commit("auth/addAction",a),await t.dispatch("auth/requestLogin")},async load(t,a){let{url:s,show:i,loadApi:r,loadRoot:n,force:o,noRetry:l}=a,c=t.getters.toBrowserPath(s);s=m.Ay.toAbsolute(s,t.state.url),await t.dispatch("auth/waitForAuth"),n||"/"===c||!t.state.catalogUrl||t.getters.getStac(t.state.catalogUrl)||await t.dispatch("load",{url:t.state.catalogUrl,loadApi:!0,loadRoot:!0}),o&&t.commit("clear",s);let u=new ut.Rh(i,r),d=t.state.database[s];if(d instanceof ut.Rh)t.commit("updateLoading",{url:s,show:i,loadApi:r});else{if(!d||d instanceof Error||d instanceof v.A&&d.isPotentiallyIncomplete()){t.commit("loading",{url:s,loading:u});try{let a=await(0,ut.FF)(t,s);if(!m.Ay.isObject(a.data))throw new m.fe(k.Ay.t("errors.invalidJsonObject"));if(d=new v.A(a.data,s,c),t.commit("loaded",{url:s,data:d}),i){let a=d.getLocaleLink(t.state.dataLanguage);if(a)return void e.replace(t.getters.toBrowserPath(a.href))}if(!t.getters.root){let e=d.getLinkWithRel("root");e&&await t.dispatch("config",{catalogUrl:m.Ay.toAbsolute(e.href,s)})}let r=d.getStacLinkWithRel("conformance");Array.isArray(d.conformsTo)&&d.conformsTo.length>0?t.commit("setConformanceClasses",d.conformsTo):r&&await t.dispatch("loadOgcApiConformance",r)}catch(h){if(!l&&t.state.authConfig&&(0,ut.HD)(h))return void await t.dispatch("tryLogin",{url:s,action:()=>t.dispatch("load",Object.assign({noRetry:!0,force:!0,show:!0},a))});console.error(h),t.commit("errored",{url:s,error:h})}}if(u.loadApi&&d instanceof v.A){if(d.getApiCollectionsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadNextApiCollections",e)}catch(h){t.commit("showGlobalError",{message:k.Ay.t("errors.loadApiCollectionsFailed"),error:h})}}if(d.getApiItemsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadApiItems",e)}catch(h){t.commit("showGlobalError",{message:k.Ay.t("errors.loadApiItemsFailed"),error:h})}}}u.show&&t.commit("showPage",{url:s})}},async loadApiItems(t,e){let{link:a,stac:s,show:i,filters:r,noRetry:n}=e,o=s instanceof v.A?s.id:"";t.commit("toggleApiItemsLoading",o);try{let e=t.state.url;s instanceof v.A&&(a=s.getApiItemsLink(),e=s.getAbsoluteUrl()),a=m.Ay.addFiltersToLink(a,r,t.state.itemsPerPage);let n=await(0,ut.FF)(t,a);if(m.Ay.isObject(n.data)&&Array.isArray(n.data.features))return n.data.features=n.data.features.map((a=>{try{if(!m.Ay.isObject(a)||"Feature"!==a.type)return null;let i,r=m.Ay.getLinkWithRel(a.links,"self");if(null!==r&&void 0!==r&&r.href)i=m.Ay.toAbsolute(r.href,e);else{if("undefined"===typeof a.id)return null;{var s;let r=null===(s=t.getters.root)||void 0===s?void 0:s.getApiCollectionsLink();if(e)i=m.Ay.toAbsolute(`items/${a.id}`,e);else if(r)i=m.Ay.toAbsolute(`${o}/items/${a.id}`,r.href);else{if(!t.state.catalogUrl)return null;i=m.Ay.toAbsolute(`collections/${o}/items/${a.id}`,t.state.catalogUrl)}}}let n=t.getters.getStac(i);return n||(n=new v.A(a,i,t.getters.toBrowserPath(i)),n.markPotentiallyIncomplete(),t.commit("loaded",{data:n,url:i}),n)}catch(i){return console.error(i),null}})).filter((t=>t instanceof v.A)),i&&t.commit("setApiItemsLink",a),t.commit("setApiItems",{data:n.data,stac:s,show:i}),t.commit("toggleApiItemsLoading",o),n;throw new m.fe(k.Ay.t("errors.invalidStacItems"))}catch(l){if(t.commit("toggleApiItemsLoading",o),!n&&t.state.authConfig&&(0,ut.HD)(l))return void await t.dispatch("tryLogin",{url:a.href,action:()=>t.dispatch("loadApiItems",Object.assign({noRetry:!0,force:!0},e))});throw l}},async loadNextApiCollections(t,e){let a,{stac:s,show:i,noRetry:r}=e;if(s){if(t.state.apiCollections.length>0)return;a=s.getLinkWithRel("data")}else s=t.state.data,a=t.state.nextCollectionsLink;if(a)try{let e=await(0,ut.FF)(t,a);if(!m.Ay.isObject(e.data)||!Array.isArray(e.data.collections))throw new m.fe(k.Ay.t("errors.invalidStacCollections"));e.data.collections=e.data.collections.map((e=>{let a,i=m.Ay.getLinkWithRel(e.links,"self");a=null!==i&&void 0!==i&&i.href?m.Ay.toAbsolute(i.href,t.state.url||s.getAbsoluteUrl()):m.Ay.toAbsolute(`collections/${e.id}`,t.state.catalogUrl||s.getAbsoluteUrl());let r=t.getters.getStac(a);return r||(r=new v.A(e,a,t.getters.toBrowserPath(a)),r.markPotentiallyIncomplete(),t.commit("loaded",{data:r,url:a}),r)})),t.commit("addApiCollections",{data:e.data,stac:s,show:i})}catch(n){if(!r&&t.state.authConfig&&(0,ut.HD)(n))return void await t.dispatch("tryLogin",{url:a.href,action:()=>t.dispatch("loadNextApiCollections",Object.assign({noRetry:!0,force:!0},e))});throw n}},async loadOgcApiConformance(t,e){let a=await(0,ut.FF)(t,e);m.Ay.isObject(a.data)&&Array.isArray(a.data.conformsTo)&&t.commit("setConformanceClasses",a.data.conformsTo)},async loadGeoJson(t,e){try{let a=await(0,ut.FF)(t,e);return a.data}catch(a){return null}},async retryAfterAuth(t){let e=e=>t.commit("showGlobalError",{error:e,message:k.Ay.t("errors.authFailed")});for(let s of t.state.doAuth)try{let t=s();t instanceof Promise&&t.catch(e)}catch(a){e(a)}}}})}var mt=gt,bt=a(78933),yt=a(92999),At=a(12670),vt=a(1169),wt=a(19680),Ct=a(35915),kt=a(56967),_t=a(80262),Lt=a(93444),jt=(a(59313),a(85952)),xt=function(){var t=this,e=t._self._c;return e("b-row",[e("b-col",{attrs:{md:"12"}},[e("Source",{staticClass:"float-right",attrs:{title:t.title,stacUrl:t.url,stac:t.data}}),e("h1",[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.title))])],2),t.isStacChooser()?t._e():e("p",{staticClass:"lead"},[t.containerLink?e("i18n",{staticClass:"in mr-3",attrs:{tag:"span",path:"in"},scopedSlots:t._u([{key:"catalog",fn:function(){return[e("StacLink",{attrs:{data:t.containerLink}})]},proxy:!0}],null,!1,1458487365)}):t._e(),e("b-button-group",[t.back?e("b-button",{attrs:{to:t.selfBrowserLink,title:t.$t("goBack.description",{type:t.type}),variant:"outline-primary",size:"sm"}},[e("b-icon-arrow-left"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goBack.label")))])],1):t._e(),t.parentLink?e("b-button",{attrs:{to:t.toBrowserPath(t.parentLink.href),title:t.parentLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-arrow-90deg-up"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToParent.label")))])],1):t._e(),t.collectionLink?e("b-button",{attrs:{to:t.toBrowserPath(t.collectionLink.href),title:t.collectionLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-folder-symlink"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToCollection.label")))])],1):t._e(),e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.sidebar",modifiers:{sidebar:!0}}],attrs:{variant:"outline-primary",size:"sm",title:t.$t("browse")},on:{click:function(e){return t.$emit("enableSidebar")}}},[e("b-icon-book"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("browse")))])],1),t.canSearch?e("b-button",{attrs:{variant:"outline-primary",size:"sm",to:t.searchBrowserLink,title:t.$t("search.title"),pressed:t.isSearchPage()}},[e("b-icon-search"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("search.title")))])],1):t._e(),t.canAuthenticate?e("b-button",{attrs:{variant:"outline-primary",size:"sm",title:t.authTitle},on:{click:t.logInOut}},[e(t.authIcon,{tag:"component"}),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.authLabel))])],1):t._e()],1)],1)],1)],1)},St=[],Tt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"share mt-1"},[e("b-button-group",[t.showRoot?e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-root-btn"}},[e("b-icon-box"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.rootTitle))])],1):t._e(),t.stacUrl?e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-link-btn",title:t.$t("source.detailsAboutSource")}},[e("b-icon-link"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.label")))])],1):t._e(),e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-share-btn",title:t.$t("source.share.withOthers")}},[e("b-icon-share"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.share.label")))])],1),e("b-dropdown",{attrs:{size:"sm",variant:"outline-primary",right:"",title:t.$t("source.language.switch")},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon-flag"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.language.label",{currentLanguage:t.currentLanguage})))])]},proxy:!0}])},t._l(t.languages,(function(a){return e("b-dropdown-item",{key:a.code,staticClass:"lang-item",on:{click:function(e){return t.switchLocale({locale:a.code,userSelected:!0})}}},[t.locale===a.code?e("b-icon-check"):e("b-icon-blank"),e("span",{staticClass:"title"},[e("span",{attrs:{lang:a.code}},[t._v(t._s(a.native))]),a.global&&a.global!==a.native?[t._v(" / "),e("span",{attrs:{lang:"en"}},[t._v(t._s(a.global))])]:t._e()],2),!t.supportsLanguageExt||a.ui&&a.data?t._e():e("b-icon-exclamation-triangle",{staticClass:"ml-2",attrs:{title:a.ui?t.$t("source.language.onlyUI"):t.$t("source.language.onlyData")}})],1)})),1)],1),t.showRoot?e("b-popover",{attrs:{id:"popover-root",target:"popover-root-btn",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.rootTitle}},[e("RootStats")],1):t._e(),t.stacUrl?e("b-popover",{attrs:{id:"popover-link",target:"popover-link-btn",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.title")}},[t.stac?[t.stacId?e("b-row",{staticClass:"stac-id"},[e("b-col",{attrs:{cols:"4"}},[t._v(t._s(t.$t("source.id")))]),e("b-col",[e("code",[t._v(t._s(t.stacId))]),e("CopyButton",{staticClass:"ml-2",attrs:{copyText:t.stacId,"button-props":{size:"sm"},variant:"primary"}})],1)],1):t._e(),t.stacVersion?e("b-row",{staticClass:"stac-version"},[e("b-col",{attrs:{cols:"4"}},[t._v(t._s(t.$t("source.stacVersion")))]),e("b-col",[t._v(t._s(t.stacVersion))])],1):t._e(),e("b-row",{staticClass:"stac-valid"},[e("b-col",{attrs:{cols:"4"}},[t._v(t._s(t.$t("source.valid")))]),e("b-col",[e("Validation",{attrs:{data:t.stac}})],1)],1),e("hr")]:t._e(),e("Url",{attrs:{id:"stacUrl",url:t.stacUrl,label:t.$t("source.locatedAt")}})],2):t._e(),e("b-popover",{attrs:{id:"popover-share",target:"popover-share-btn",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.share.title")}},[e("Url",{attrs:{id:"browserUrl",url:t.browserUrl(),label:t.$t("source.share.sharePageWithOthers"),open:!1}}),e("hr"),e("b-button",{staticClass:"twitter mr-1",attrs:{href:t.twitterUrl}},[e("b-icon-twitter"),t._v(" "+t._s(t.$t("source.share.twitter")))],1),e("b-button",{attrs:{variant:"dark",href:t.mailTo}},[e("b-icon-envelope"),t._v(" "+t._s(t.$t("source.share.email")))],1)],1)],1)},It=[],Ot=a(15378),$t=a(9656),Pt=a(82948),Bt=a(30278),Mt=function(){var t=this,e=t._self._c;return e("b-form-group",{attrs:{label:t.label,"label-for":t.id}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{ref:"input",attrs:{id:t.id,value:t.url,readonly:""}}),e("b-input-group-append",[e("CopyButton",{attrs:{copyText:t.url,variant:"primary"}}),t.open?e("b-button",{attrs:{href:t.url,target:"_blank",variant:"primary",title:t.$t("open")}},[e("b-icon-arrow-up-right-square")],1):t._e()],1)],1)],1)},Ft=[],Et=a(69771),Ut=a(19115),Rt=a(89576),qt=a(16167),Dt={name:"Share",components:{BFormGroup:Et.a,BFormInput:Ut.b,BIconArrowUpRightSquare:Pt.xur,BInputGroup:Rt.Y,BInputGroupAppend:qt.G,CopyButton:()=>Promise.resolve().then(a.bind(a,99975))},props:{id:{type:String,required:!0},url:{type:String,required:!0},label:{type:String,required:!0},open:{type:Boolean,default:!0}}},zt=Dt,Ht=(0,E.A)(zt,Mt,Ft,!1,null,"74684ede",null),Nt=Ht.exports,Wt=a(99975);const Qt="https://stac-extensions.github.io/language/v1.*/schema.json";var Vt={name:"Source",components:{BDropdown:Ot.U,BDropdownItem:$t.H,BIconBlank:Pt.ufk,BIconBox:Pt.H$j,BIconCheck:Pt.GSz,BIconEnvelope:Pt.EXn,BIconExclamationTriangle:Pt.T12,BIconFlag:Pt.c_U,BIconLink:Pt.IfX,BIconShare:Pt.v6r,BIconTwitter:Pt.FrH,BPopover:Bt.u,RootStats:()=>a.e(143).then(a.bind(a,40143)),Url:Nt,CopyButton:Wt["default"],Validation:()=>Promise.all([a.e(537),a.e(287),a.e(9099)]).then(a.bind(a,49099))},props:{title:{type:String,required:!0},stacUrl:{type:String,default:null},stac:{type:Object,default:null}},computed:{...(0,o.aH)(["conformsTo","dataLanguages","locale","supportedLocales","uiLanguage","valid"]),...(0,o.L8)(["supportsExtension","root"]),stacVersion(){var t;return null===(t=this.stac)||void 0===t?void 0:t.stac_version},stacId(){var t;return null===(t=this.stac)||void 0===t?void 0:t.id},showRoot(){return!!this.root&&(Array.isArray(this.conformsTo)&&this.conformsTo.length>0||m.Ay.isObject(this.root["stats:collections"])||m.Ay.isObject(this.root["stats:catalogs"])||m.Ay.isObject(this.root["stats:items"]))},rootTitle(){return Array.isArray(this.conformsTo)&&this.conformsTo.length>0?this.$t("index.api"):this.$t("index.catalog")},currentLanguage(){let t=this.languages.find((t=>t.code===this.locale));return t?t.native:"-"},message(){return this.$t("source.share.message",{title:this.title,url:this.browserUrl()})},twitterUrl(){let t=encodeURIComponent(this.message);return`https://twitter.com/intent/tweet?text=${t}`},mailTo(){let t=encodeURIComponent(this.title),e=encodeURIComponent(this.message);return`mailto:?subject=${t}&body=${e}`},supportsLanguageExt(){return this.supportsExtension(Qt)},languages(){let t=[];for(let a of this.supportedLocales)t.push({code:a,native:this.$t(`languages.${a}.native`),global:this.$t(`languages.${a}.global`),ui:!0});for(let a of this.dataLanguages){if(!m.Ay.isObject(a)||!a.code||this.supportedLocales.includes(a.code))continue;let e={code:a.code};e.native=a.name||a.alternate||a.code,e.global=a.alternate||a.name||a.code,e.data=!0,t.push(e)}if(this.supportsExtension(Qt)){const e=(0,dt.E0)(this.supportedLocales),a=(0,dt.E0)(this.dataLanguages.map((t=>t.code)));for(let s of t)s.ui||(s.ui=Boolean((0,dt.f5)(e,s.code,null))),s.data||(s.data=Boolean((0,dt.f5)(a,s.code,null)))}const e=new Intl.Collator(this.uiLanguage);return t.sort(((t,a)=>e.compare(t.global,a.global)))}},methods:{...(0,o.i0)(["switchLocale"]),browserUrl(){return window.location.toString()}}},Gt=Vt,Kt=(0,E.A)(Gt,Tt,It,!1,null,"93db7fbc",null),Jt=Kt.exports,Xt=a(58581),Yt={name:"StacHeader",components:{BIconArrow90degUp:Pt.JK4,BIconArrowLeft:Pt.sV1,BIconBook:Pt.VOl,BIconFolderSymlink:Pt.P_X,BIconSearch:Pt.S8S,BIconLock:Pt.D8r,BIconUnlock:Pt.a_V,StacLink:Xt["default"],Source:Jt},computed:{...(0,o.aH)(["allowSelectCatalog","catalogUrl","data","url","title"]),...(0,o.L8)(["canSearch","root","parentLink","collectionLink","toBrowserPath"]),...(0,o.L8)("auth",{authMethod:"method"}),...(0,o.L8)("auth",["canAuthenticate","isLoggedIn"]),authIcon(){return this.isLoggedIn?"b-icon-unlock":"b-icon-lock"},authTitle(){return this.authMethod.getButtonTitle()},authLabel(){return this.isLoggedIn?this.authMethod.getLogoutLabel():this.authMethod.getLoginLabel()},back(){return"validation"===this.$route.name},selfBrowserLink(){return this.toBrowserPath(this.url)},type(){return this.data instanceof v.A?this.data.isItem()?this.$tc("stacItem"):this.data.isCollection()?this.$tc("stacCollection"):this.data.isCatalog()?this.$tc("stacCatalog"):this.data.type:null},collectionLinkTitle(){return this.collectionLink&&m.Ay.hasText(this.collectionLink.title)?this.$t("goToCollection.descriptionWithTitle",this.collectionLink):this.$t("goToCollection.description")},parentLinkTitle(){return this.parentLink&&m.Ay.hasText(this.parentLink.title)?this.$t("goToParent.descriptionWithTitle",this.parentLink):this.$t("goToParent.description")},icon(){if(this.data instanceof v.A){let t=this.data.getIcons();if(t.length>0)return t[0]}return null},searchBrowserLink(){if(!this.canSearch)return null;let t;return this.data instanceof v.A&&!this.data.equals(this.root)&&(t=this.data.getSearchLink()),t?`/search${this.data.getBrowserPath()}`:this.root&&this.allowSelectCatalog?`/search${this.root.getBrowserPath()}`:"/search"},containerLink(){return this.catalogUrl&&this.url===this.catalogUrl?null:this.root?m.Ay.equalUrl(this.root.getAbsoluteUrl(),this.url)?null:{href:this.root.getAbsoluteUrl(),rel:"root",title:v.A.getDisplayTitle(this.root)}:this.collectionLink||this.parentLink}},methods:{...(0,o.PY)("auth",["addAction"]),...(0,o.i0)("auth",["requestLogin","requestLogout"]),isSearchPage(){return"search"===this.$router.currentRoute.name},isStacChooser(){return"choose"===this.$router.currentRoute.name},async logInOut(){this.url&&this.addAction((()=>this.$store.dispatch("load",{url:this.url,loadApi:!0,show:!0,force:!0,noRetry:!0}))),this.isLoggedIn?await this.requestLogout():await this.requestLogin()}}},Zt=Yt,te=(0,E.A)(Zt,xt,St,!1,null,"6f700824",null),ee=te.exports,ae=function(){var t=this,e=t._self._c;return e(t.authComponent,{tag:"component",on:{submit:t.submit,reset:t.reset}})},se=[],ie={name:"Authentication",components:{ApiKey:()=>a.e(7197).then(a.bind(a,87197)),Basic:()=>a.e(7820).then(a.bind(a,47820))},computed:{...(0,o.L8)("auth",["method","isLoggedIn"]),authComponent(){return this.method.getComponent()},authComponentProps(){return this.method.getComponentProps()}},beforeCreate(){this.isLoggedIn&&this.$store.dispatch("auth/finalizeLogout")},methods:{async reset(){await this.$store.dispatch("auth/abortLogin")},async submit(t){await this.$store.dispatch("auth/finalizeLogin",t)}}},re=ie,ne=(0,E.A)(re,ae,se,!1,null,null,null),oe=ne.exports;s.Ay.use(bt.q),s.Ay.use(yt.p),s.Ay.use(At.sG),s.Ay.use(vt.z),s.Ay.use(wt.qc),s.Ay.use(Ct.CG),s.Ay.use(kt.z),s.Ay.directive("b-toggle",_t.z),s.Ay.directive("b-visible",Lt.p),s.Ay.use(n.Ay);const le=new n.Ay({mode:l.A.historyMode,base:l.A.pathPrefix,routes:st(l.A)});s.Ay.use(o.Ay);const ce=mt(l.A,le);let ue={},de={};for(let be in l.A)ue[be]={default:["object","function"].includes(typeof l.A[be])?()=>l.A[be]:l.A[be]},de[be]={immediate:!0,handler:async function(t){await this.$store.dispatch("config",{[be]:t})}};var he={name:"StacBrowser",router:le,store:ce,components:{Authentication:oe,ErrorAlert:jt.A,Sidebar:()=>a.e(8940).then(a.bind(a,38940)),StacHeader:ee},props:{...ue},data(){return{sidebar:!1,error:null,onDataLoaded:null}},computed:{...(0,o.aH)(["allowSelectCatalog","data","dataLanguage","description","globalError","stateQueryParameters","title","uiLanguage","url"]),...(0,o.aH)({detectLocaleFromBrowserFromVueX:"detectLocaleFromBrowser",supportedLocalesFromVueX:"supportedLocales",storeLocaleFromVueX:"storeLocale"}),...(0,o.L8)(["displayCatalogTitle","fromBrowserPath","isExternalUrl","root","supportsConformance","toBrowserPath"]),...(0,o.L8)("auth",["showLogin"]),browserVersion(){return"3.2.0"}},watch:{...de,title(t){document.title=t},description(t){let e=document.getElementById("meta-description");e&&e.setAttribute("content",m.Ay.summarizeMd(t,200))},uiLanguage:{immediate:!0,async handler(t){t&&(this.$root.$i18n.locale=t,document.documentElement.setAttribute("lang",t),this.$root.$emit("uiLanguageChanged",t))}},dataLanguage:{immediate:!0,async handler(t){if(t&&this.data instanceof v.A){let e=this.data.getLocaleLink(t);if(e){let t=Object.assign({},this.stateQueryParameters);this.$router.push(this.toBrowserPath(e.href)),this.$store.commit("state",t)}else if(this.supportsConformance(k.Aj)){let t=this.url;this.$store.commit("resetCatalog",!0),await this.$store.dispatch("load",{url:t,loadApi:!0,show:!0})}}}},stateQueryParameters:{deep:!0,handler(){let t={};for(const[e,a]of Object.entries(this.$route.query))e.startsWith(".")||(t[e]=a);for(const[e,a]of Object.entries(this.stateQueryParameters)){let s=`.${e}`;Array.isArray(a)?a.length>0&&(t[s]=a.join(",")):null!==a&&(t[s]=a)}this.$router.replace({query:t}).catch((t=>{if(!n.Ay.isNavigationFailure(t,n.Ay.NavigationFailureType.duplicated))throw Error(t)}))}},root(t,e){const a=["apiCatalogPriority","authConfig","cardViewMode","cardViewSort","crossOriginMedia","defaultThumbnailSize","displayGeoTiffByDefault","showThumbnailsAsAssets"];let s=!t||e&&m.Ay.isObject(e["stac_browser"]),i=t&&m.Ay.isObject(t["stac_browser"]);for(let r of a){let e;s&&(e=l.A[r]),i&&"undefined"!==typeof t["stac_browser"][r]&&(e=t["stac_browser"][r]),"undefined"!==typeof e&&this.$store.dispatch("config",{[r]:e}).catch((t=>console.error(t)))}},data(t){this.onDataLoaded&&t instanceof v.A&&this.onDataLoaded()}},async created(){this.$router.onReady((()=>{this.detectLocale(),this.parseQuery(this.$route)})),this.$router.afterEach(((t,e)=>{if(t.path===e.path)return;let a="resetPage";if(this.allowSelectCatalog&&t.path){let e=this.fromBrowserPath(t.path);this.isExternalUrl(e)&&(a="resetCatalog")}this.$store.commit(a),this.parseQuery(t)}));const t=new ot.A(!0),e=t.get("authConfig");e&&(t.remove("authConfig"),await this.$store.dispatch("config",{authConfig:e}))},mounted(){this.$root.$on("error",this.showError),setInterval((()=>this.$store.dispatch("loadBackground",3)),200)},methods:{...(0,o.i0)(["switchLocale"]),detectLocale(){let t;if(this.storeLocaleFromVueX){const e=new ot.A;t=e.get("locale")}if(!t&&this.detectLocaleFromBrowserFromVueX&&Array.isArray(navigator.languages)){const e=(0,dt.E0)(this.supportedLocalesFromVueX);for(let a of navigator.languages){const s=(0,dt.f5)(e,a,null);if(s){t=s;break}}}t&&this.supportedLocalesFromVueX.includes(t)&&(this.switchLocale({locale:t}),this.data||(this.onDataLoaded=()=>{this.switchLocale({locale:t}),this.onDataLoaded=null}))},parseQuery(t){var e;let a={};if("history"===this.historyMode){let e=C()(t.hash.replace(/^#/,""));a=e.query(!0)}let s=Object.assign({},t.query,a),i={};for(let r in s){let t=s[r];if(r.startsWith("~"))i.private=m.Ay.isObject(i.private)?i.private:{},i.private[r.substr(1)]=t,delete s[r];else if(r.startsWith(".")){let e=r.substr(1);i.state=m.Ay.isObject(i.state)?i.state:{},Array.isArray(this.stateQueryParameters[e])&&!Array.isArray(t)&&(t=t.split(",")),i.state[e]=t}else m.Ay.isObject(i.localRequest)||(i.localRequest={}),i.localRequest[r]=t}if(m.Ay.size(i)>0)for(let r in i)for(let t in i[r])this.$store.commit("setQueryParameter",{type:r,key:t,value:i[r][t]});null!==i&&void 0!==i&&null!==(e=i.state)&&void 0!==e&&e.language&&this.switchLocale({locale:i.state.language}),m.Ay.size(i.private)>0&&this.$router.replace({query:s})},showError(t,e){this.$store.commit("showGlobalError",{error:t,message:e})},hideError(){this.$store.commit("showGlobalError",null)}}},pe=he,fe=(0,E.A)(pe,i,r,!1,null,null,null),ge=fe.exports;function me(){return(0,k.Qm)().then((()=>new s.Ay({i18n:k.Ay,render:t=>t(ge)}).$mount("#stac-browser")))}s.Ay.config.productionTip=!1,me()},31831:function(t,e,a){"use strict";a(44114);var s=a(2566),i=a(71321),r=a.n(i),n=a(39071);let o=0;class l{constructor(t,e,a,s=!0){this._id=o++,this._url=e,this._path=a,this._apiChildrenListeners={},this._incomplete=!1,this._apiChildren={list:[],prev:!1,next:!1},s&&("FeatureCollection"===t.type?t.features=t.features.map((t=>r().item(t,!1))):t=r().stac(t,!1));for(let i in t)"undefined"===typeof this[i]&&(this[i]=t[i])}isPotentiallyIncomplete(){return this._incomplete}markPotentiallyIncomplete(){this._incomplete=!0}isItem(){return"Feature"===this.type}isCatalog(){return"Catalog"===this.type}isCatalogLike(){return this.isCatalog()||this.isCollection()}isCollection(){return"Collection"===this.type}isItemCollection(){return"FeatureCollection"===this.type}hasApiData(){return this._apiChildren.list.length>0}setApiDataListener(t,e=null){"function"===typeof e?this._apiChildrenListeners[t]=e:delete this._apiChildrenListeners[t]}setApiData(t,e=null,a=null){a&&(this._apiChildren.prev=a),e&&(this._apiChildren.next=e),this._apiChildren.list=t;for(let i in this._apiChildrenListeners)try{this._apiChildrenListeners[i](this._apiChildren)}catch(s){console.error(s)}}getFileFormats(){let t=[];return(this.isItem()||this.isCollection())&&s.Ay.isObject(this.assets)&&(t=t.concat(Object.values(this.assets))),this.isCollection()&&s.Ay.isObject(this.item_assets)&&(t=t.concat(Object.values(this.item_assets))),t.filter((t=>Array.isArray(t.roles)&&t.roles.includes("data")&&"string"===typeof t.type)).map((t=>t.type)).filter(((t,e,a)=>a.indexOf(t)===e))}getChildren(t=null){if(!this.isCatalogLike())return[];let e=!t||"collections"===t,a=!t||"childs"===t,s=[];return e&&this._apiChildren.prev&&s.push(this._apiChildren.prev),e&&this._apiChildren.list.length>0&&(s=this._apiChildren.list.slice(0)),a&&(s=l.addMissingChildren(s,this).concat(this.getLinksWithRels(["item"]))),e&&this._apiChildren.next&&s.push(this._apiChildren.next),s}static addMissingChildren(t,e){let a=e.getStacLinksWithRel("child").filter((a=>{let i=s.Ay.toAbsolute(a.href,e.getAbsoluteUrl());return!t.find((t=>t.getAbsoluteUrl()===i))}));return a.concat(t)}getSearchLink(){let t=s.Ay.getLinksWithRels(this.links,["search"]).filter((t=>s.Ay.isMediaType(t.type,s.oV))).map((t=>Object.assign({},t,{href:s.Ay.toAbsolute(t.href,this._url)}))),e=t.find((t=>s.Ay.hasText(t.method)&&"POST"===t.method.toUpperCase()));return e||t[0]||null}getApiCollectionsLink(){return this.getStacLinkWithRel("data")}getApiItemsLink(){return this.getStacLinkWithRel("items")}getMetadata(t){return this.isItem()?this.properties[t]:this.isCatalogLike()?this[t]:null}getBrowserPath(){return this._path}getAbsoluteUrl(){return this._url}getLocaleLink(t,e=null){let a,i=this.getStacLinksWithRel("alternate").filter((t=>s.Ay.hasText(t.hreflang)));a=Array.isArray(this.languages)?this.languages.map((t=>t.code)):i.map((t=>t.hreflang));let r=(0,n.f5)(a,t,e);return i.find((t=>t.hreflang===r))||null}getStacLinksWithRel(t,e=!0){return s.Ay.getLinksWithRels(this.links,[t]).filter((t=>s.Ay.isStacMediaType(t.type,e)))}getStacLinkWithRel(t,e=!0){const a=this.getStacLinksWithRel(t,e);return a.length>0?a[0]:null}getLinkWithRel(t){return s.Ay.getLinkWithRel(this.links,t)}getLinksWithRels(t){return s.Ay.getLinksWithRels(this.links,t)}getLinksWithOtherRels(t){return s.Ay.getLinksWithOtherRels(this.links,t)}getAssetsWithRoles(t){let e=[];if(s.Ay.isObject(this.assets))for(let a in this.assets){let i=this.assets[a];s.Ay.isObject(i)&&"string"===typeof i.href&&Array.isArray(i.roles)&&i.roles.find((e=>t.includes(e)))&&e.push(i)}return e}static getDisplayTitle(t,e=null){Array.isArray(t)||(t=[t]);let a=t.find((t=>t instanceof l)),i=t.find((t=>s.Ay.isObject(t)&&!(t instanceof l)));return a&&s.Ay.hasText(a.getTitle())?a.getTitle():i&&s.Ay.hasText(i.title)?i.title:a&&s.Ay.hasText(a.id)?a.id:s.Ay.hasText(e)?e:a?s.Ay.titleForHref(a.getAbsoluteUrl(),!0):i&&s.Ay.hasText(i.href)?s.Ay.titleForHref(i.href,!0):"Untitled"}getTitle(){return this.getMetadata("title")}_linkToAbsolute(t){return Object.assign({},t,{href:s.Ay.toAbsolute(t.href,this.getAbsoluteUrl())})}getIcons(){return this.getLinksWithRels(["icon"]).filter((t=>s.Ay.canBrowserDisplayImage(t))).map((t=>this._linkToAbsolute(t)))}getThumbnails(t=!1,e=null){let a=this.getAssetsWithRoles(["thumbnail","overview"]);if(0===a.length&&(a=this.getLinksWithRels(["preview"])),0===a.length&&s.Ay.isObject(this.assets)&&s.Ay.isObject(this.assets.thumbnail)&&(a=[this.assets.thumbnail]),t&&(a=a.filter((t=>s.Ay.canBrowserDisplayImage(t)))),e&&a.length>1){let t=t=>t.roles.includes(e);a=a.filter(t).concat(a.filter((e=>!t(e))))}return a.map((t=>this._linkToAbsolute(t)))}equals(t){return!!s.Ay.isObject(t)&&(this===t||this.id===t.id&&this.type==t.type)}}e.A=l},59203:function(t,e,a){"use strict";a.d(e,{Bv:function(){return n},Eg:function(){return i},ZQ:function(){return r},dL:function(){return l},ol:function(){return o}});const s=["child","collection","item","parent","root","self"],i=["first","last","next","prev","previous"],r=["queryables","http://www.opengis.net/def/rel/ogc/1.0/queryables","ogc-rel:queryables"],n=["canonical","related","derived_from","latest-version","predecessor-version","successor-version","source","alternate"].concat(s).concat(i),o=["conformance","data","items","search","icon","license"].concat(s).concat(i).concat(r),l="http://www.opengis.net/def/rel/ogc/1.0/"},33484:function(t,e,a){"use strict";a.d(e,{FF:function(){return c},HD:function(){return p},Pj:function(){return h},Rh:function(){return o},lx:function(){return l},mA:function(){return f},rM:function(){return u},sd:function(){return d}});var s=a(94335),i=a(84193),r=a.n(i),n=a(2566);class o{constructor(t=!1,e=!1){this.show=Boolean(t),this.loadApi=Boolean(e)}}function l(t,e){if("string"===typeof e&&(e={href:e}),!n.Ay.isObject(e)||"string"!==typeof e.href)return{};const a=t.getters.getRequestUrl(e.href);let s={"Accept-Language":t.getters.acceptedLanguages};return n.Ay.hasText(e.type)&&(s.Accept=e.type),t.getters.isExternalUrl(a)||Object.assign(s,t.state.requestHeaders),n.Ay.isObject(e.headers)&&Object.assign(s,e.headers),{method:"string"===typeof e.method?e.method.toLowerCase():"get",url:a,headers:s,data:e.body}}async function c(t,e,a={}){const i=l(t,e);return await(0,s.A)(Object.assign(i,a))}function u(t,e){return t instanceof r()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[1],e[0]):t}function d(t,e){return t instanceof r()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[0],e[1]):t}function h(t,e){return"function"===typeof t.preprocessSTAC&&(e=t.preprocessSTAC(e,t)),Object.freeze(e)}function p(t){var e;return[401,403].includes(null===t||void 0===t||null===(e=t.response)||void 0===e?void 0:e.status)}function f(t,e){if(0==n.Ay.size(e))return t;for(let a in e)t.hasQuery(a)||t.addQuery(a,e[a]);return t}},2566:function(t,e,a){"use strict";a.d(e,{Ay:function(){return A},C8:function(){return b},I5:function(){return g},Yq:function(){return u},df:function(){return m},fe:function(){return y},oV:function(){return c}});var s=a(84193),i=a.n(s),r=a(58481),n=a.n(r),o=a(59203);const l=["catalog","collection","item"],c="application/geo+json",u="application/schema+json",d=["application/json",c,"text/json"],h=["image/gif","image/jpg","image/jpeg","image/apng","image/png","image/webp"],p=["image/tiff; application=geotiff; profile=cloud-optimized","image/vnd.stac.geotiff; cloud-optimized=true"],f=["application/geotiff","image/tiff; application=geotiff","image/vnd.stac.geotiff"].concat(p),g=["http","https"],m=h.concat(f),b=m.concat([c]);class y extends Error{constructor(t){super(t)}}class A{static isObject(t){return"object"===typeof t&&t===Object(t)&&!Array.isArray(t)}static size(t){return"object"===typeof t&&null!==t?Array.isArray(t)?t.length:Object.keys(t).length:0}static isStacMediaType(t,e=!1){return A.isMediaType(t,d,e)}static isMediaType(t,e,a=!1){return Array.isArray(e)||(e=[e]),!(!a||t)||"string"===typeof t&&e.includes(t.toLowerCase())}static hasText(t){return"string"===typeof t&&t.length>0}static shortenTitle(t,e,a="…"){if(t.length<=e)return t;let s=a.length,i=e-s,r=Math.ceil(i/2),n=Math.floor(i/2);return t.substr(0,r)+a+t.substr(t.length-n)}static isGdalVfsUri(t){return"string"===typeof t&&t.startsWith("/vsi")&&!t.startsWith("/vsicurl/")}static toAbsolute(t,e,a=!0){return A.normalizeUri(t,e,!1,a)}static normalizeUri(t,e=null,a=!1,s=!0){"string"===typeof t&&t.startsWith("/vsicurl/")&&(t=t.replace(/^\/vsicurl\//,""));let r=i()(t);return e&&r.is("relative")&&!A.isGdalVfsUri(t)&&(r=r.absoluteTo(e)),r.normalize(),a&&(r.query(""),r.fragment("")),s?r.toString():r}static getLinkWithRel(t,e){return Array.isArray(t)?t.find((t=>A.isObject(t)&&A.hasText(t.href)&&t.rel===e)):null}static getLinksWithRels(t,e){return Array.isArray(t)?t.filter((t=>A.isObject(t)&&A.hasText(t.href)&&e.includes(t.rel))):[]}static getLinksWithOtherRels(t,e){return Array.isArray(t)?t.filter((t=>A.isObject(t)&&A.hasText(t.href)&&!e.includes(t.rel))):[]}static removeTrailingSlash(t){return t.replace(/\/$/,"")}static equalUrl(t,e){try{let a=i()(t),s=i()(e);return a.path(A.removeTrailingSlash(a.path())),s.path(A.removeTrailingSlash(s.path())),a.equals(s)}catch(a){return!1}}static summarizeMd(t,e=null){return A.hasText(t)?(t=n()(t).replaceAll(/[\r\n]+/g," "),e>0&&t.length>e&&(t=t.substr(0,e)+"…"),t):""}static scrollTo(t){if(t){var e=t.getBoundingClientRect(),a=e.top=0;a||t.scrollIntoView({behavior:"smooth",block:"start"})}}static dateFromUTC(t){if(t instanceof Date){const e=new Date(t),a=e.getTimezoneOffset();t=new Date(e.getTime()+60*a*1e3)}return t}static dateToUTC(t){if(t instanceof Date){const e=(new Date).getTimezoneOffset();return new Date(t.getTime()-60*e*1e3)}return t}static formatDatetimeQuery(t){return t.map((t=>t instanceof Date?t.toISOString():t||"..")).join("/")}static formatSortbyForPOST(t){const e={field:"",direction:"asc"};return t.startsWith("-")?(e.field=t.substring(1),e.direction="desc"):e.field=t,[e]}static getPaginationLinks(t){let e={};if(A.isObject(t)){let a=A.getLinksWithRels(t.links,o.Eg);for(let t of a){let a="previous"===t.rel?"prev":t.rel;e[a]=t}}return e}static addFiltersToLink(t,e={},a=null){let s=t=>null===t||"number"===typeof t&&!Number.isFinite(t)||"string"===typeof t&&0===t.length||"object"===typeof t&&0===A.size(t);if(e=A.isObject(e)?Object.assign({},e):{},"number"!==typeof e.limit&&"number"===typeof a&&(e.limit=a),A.hasText(t.method)&&"POST"===t.method.toUpperCase()){let a=Object.assign({},t.body);for(let t in e){let i=e[t];if(s(i))delete a[t];else{if("sortby"===t)i=A.formatSortbyForPOST(i);else if("datetime"===t)i=A.formatDatetimeQuery(i);else if("filters"===t){Object.assign(a,i.toJSON());continue}a[t]=i}}return Object.assign({},t,{body:a})}{let a=i()(t.href);for(let t in e){let i=e[t];if(s(i))a.removeQuery(t);else{if("datetime"===t)i=A.formatDatetimeQuery(i);else if("bbox"===t)i=i.join(",");else if("collections"===t||"ids"===t||"q"===t)i=i.join(",");else if("filters"===t){let t=i.toText();a.setQuery(t);continue}a.setQuery(t,i)}}return Object.assign({},t,{href:a.toString()})}}static titleForHref(t,e=!1){let a=i()(t),s=a.authority(),r=a.filename().replace(/^(.{1,})\.\w+$/,"$1"),n=a.directory().replace(/^\//,"");if(s&&r&&!e){let t=a.path().replace(/^\//,"");return"doi.org"===s&&t.startsWith("10.")?`DOI ${t}`:`${r} (${s})`}return r&&!l.includes(r)?r:s||(n||t)}static canBrowserDisplayImage(t){if("string"!==typeof t.href)return!1;let e=i()(t.href),a=e.protocol().toLowerCase();return!(a&&!g.includes(a))&&(!!h.includes(t.type)||(!!h.includes("image/"+e.suffix().toLowerCase())||!t.type))}static getValueFromObjectUsingPath(t,e){if(null!==t&&"object"===typeof t)return t=t[e[0]],"undefined"!==typeof t&&e.length>1?this.getValueFromObjectUsingPath(t,e.slice(1)):t}static search(t,e,a=!0){if("string"!==typeof t||0===t.length)return!1;if(A.isObject(e)?e=Object.values(e):"string"===typeof e&&(e=[e]),!Array.isArray(e))return!1;let s=/[\s.,;!&({[)}]]+/g;t=t.toLowerCase().split(s),e=e.filter((t=>"string"===typeof t)).join(" ").replace(s," ").toLowerCase();let i=a?"every":"some";return t[i]((t=>e.includes(t)))}static createLink(t,e){return{href:t,rel:e}}static supportsExtension(t,e){if(!A.isObject(t)||!Array.isArray(t["stac_extensions"]))return!1;let a=new RegExp("^"+e.replaceAll("*","[^/]+")+"$");return Boolean(t["stac_extensions"].find((t=>a.test(t))))}static mergeDeep(t,...e){if(!e.length)return t;const a=e.shift();if(A.isObject(t)&&A.isObject(a))for(const s in a)A.isObject(a[s])?(t[s]||Object.assign(t,{[s]:{}}),A.mergeDeep(t[s],a[s])):Object.assign(t,{[s]:a[s]});return A.mergeDeep(t,...e)}}},79873:function(t,e,a){"use strict";var s=a(85952),i=a(39773),r=a(2566),n=a(84193),o=a.n(n),l=a(95353);e.A={components:{ErrorAlert:s.A,Loading:i.A},props:{path:{type:String,required:!0}},computed:{...(0,l.aH)(["allowExternalAccess","url","redirectLegacyUrls"]),...(0,l.L8)(["fromBrowserPath","error","loading"]),errorId(){if(this.error instanceof Error&&this.error.isAxiosError&&r.Ay.isObject(this.error.response)){let t=this.error.response;return r.Ay.isObject(t.data)&&t.data.code?t.data.code:t.status}return null},errorDescription(){if(this.error instanceof Error&&this.error.isAxiosError&&r.Ay.isObject(this.error.response)){let t=this.error.response;if(r.Ay.isObject(t.data)&&"string"===typeof t.data.description)return t.data.description;if(401===t.status)return this.$t("errors.unauthorized");if(403===t.status)return this.$t("errors.forbidden");if(404===t.status)return this.$t("errors.notFound");if(t.status>500)return this.$t("errors.serverError");if(t.status>400)return this.$t("errors.badRequest")}else if(this.error instanceof r.fe)return this.error.message;return this.$t("errors.networkError")},isExternal(){return o()(this.path).is("absolute")}},watch:{path:{immediate:!0,async handler(t,e){if(t===e)return;if(!this.allowExternalAccess&&this.isExternal)return;if(this.redirectLegacyUrls&&await this.redirectLegacyUrl(t))return;let a=this.fromBrowserPath(t||"/");this.$store.dispatch("load",{url:a,show:!0,loadApi:!0})}}},methods:{async redirectLegacyUrl(t){if(!t||"/"===t)return!1;let e=t.split("/").filter((t=>t.length>0&&"item"!==t&&"collection"!==t));if(e.length>0&&e.every((t=>t.match(/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]+$/)))){const{decode:t}=await a.e(6763).then(a.t.bind(a,16763,23));let s=t(e[e.length-1]).toString();if(s){let t=o()(s);return this.$router.replace({path:"/"+t.path().replace(/(collections|items)\/?$/,""),query:t.query(!0)}),!0}}return!1}}}},93731:function(t,e,a){var s={"./de-CH/config":[79933,3],"./de-CH/config.json":[79933,3],"./de-CH/datepicker":[40895,9,895],"./de-CH/datepicker.js":[40895,9,895],"./de-CH/default":[968,9,4490,968],"./de-CH/default.js":[968,9,4490,968],"./de-CH/duration":[49637,9,9710,9637],"./de-CH/duration.js":[49637,9,9710,9637],"./de-CH/validation":[75270,9,5270],"./de-CH/validation.js":[75270,9,5270],"./de/config":[28417,3],"./de/config.json":[28417,3],"./de/custom":[45692,3,5692],"./de/custom.json":[45692,3,5692],"./de/datepicker":[74801,9,4801],"./de/datepicker.js":[74801,9,4801],"./de/default":[62862,9,4490,2862],"./de/default.js":[62862,9,4490,2862],"./de/duration":[54511,9,9710,4511],"./de/duration.js":[54511,9,9710,4511],"./de/fields":[14490,3,4490],"./de/fields.json":[14490,3,4490],"./de/texts":[99581,3,9581],"./de/texts.json":[99581,3,9581],"./de/validation":[62816,9,2816],"./de/validation.js":[62816,9,2816],"./en-GB/config":[23667,3],"./en-GB/config.json":[23667,3],"./en-GB/custom":[78798,3,8798],"./en-GB/custom.json":[78798,3,8798],"./en-GB/datepicker":[22605,9,2605],"./en-GB/datepicker.js":[22605,9,2605],"./en-GB/default":[63170,9,3170],"./en-GB/default.js":[63170,9,3170],"./en-GB/duration":[47843,9,9710,7843],"./en-GB/duration.js":[47843,9,9710,7843],"./en-GB/fields":[87400,3,7400],"./en-GB/fields.json":[87400,3,7400],"./en-GB/texts":[62963,3,2963],"./en-GB/texts.json":[62963,3,2963],"./en-GB/validation":[6492,9,6492],"./en-GB/validation.js":[6492,9,6492],"./en-US/config":[92444,3],"./en-US/config.json":[92444,3],"./en-US/datepicker":[95558,9,5558],"./en-US/datepicker.js":[95558,9,5558],"./en-US/default":[15691,9,5691],"./en-US/default.js":[15691,9,5691],"./en-US/duration":[49684,9,9710,9684],"./en-US/duration.js":[49684,9,9710,9684],"./en-US/validation":[3155,9,3155],"./en-US/validation.js":[3155,9,3155],"./en/config":[11401,3],"./en/config.json":[11401,3],"./en/custom":[85300,3,5300],"./en/custom.json":[85300,3,5300],"./en/datepicker":[71865,9,1865],"./en/datepicker.js":[71865,9,1865],"./en/default":[56886,9,6886],"./en/default.js":[56886,9,6886],"./en/duration":[86855,9,9710,6855],"./en/duration.js":[86855,9,9710,6855],"./en/fields":[87090,3,7090],"./en/fields.json":[87090,3,7090],"./en/stac-fields":[98236,9,8236],"./en/stac-fields.js":[98236,9,8236],"./en/texts":[33301,3,3301],"./en/texts.json":[33301,3,3301],"./en/validation":[98552,9,8552],"./en/validation.js":[98552,9,8552],"./es/config":[17212,3],"./es/config.json":[17212,3],"./es/custom":[14581,3,4581],"./es/custom.json":[14581,3,4581],"./es/datepicker":[54312,9,4312],"./es/datepicker.js":[54312,9,4312],"./es/default":[89113,9,9113],"./es/default.js":[89113,9,9113],"./es/duration":[46046,9,9710,6046],"./es/duration.js":[46046,9,9710,6046],"./es/fields":[11295,3,1295],"./es/fields.json":[11295,3,1295],"./es/texts":[90674,3,674],"./es/texts.json":[90674,3,674],"./es/validation":[35893,9,5893],"./es/validation.js":[35893,9,5893],"./fr-CA/config":[20995,3],"./fr-CA/config.json":[20995,3],"./fr-CA/datepicker":[6997,9,6997],"./fr-CA/datepicker.js":[6997,9,6997],"./fr-CA/default":[71082,9,5767,1082],"./fr-CA/default.js":[71082,9,5767,1082],"./fr-CA/duration":[27003,9,9710,7003],"./fr-CA/duration.js":[27003,9,9710,7003],"./fr-CA/validation":[38228,9,8228],"./fr-CA/validation.js":[38228,9,8228],"./fr-CH/config":[1738,3],"./fr-CH/config.json":[1738,3],"./fr-CH/datepicker":[81456,9,1456],"./fr-CH/datepicker.js":[81456,9,1456],"./fr-CH/default":[44545,9,5767,4545],"./fr-CH/default.js":[44545,9,5767,4545],"./fr-CH/duration":[67286,9,9710,7286],"./fr-CH/duration.js":[67286,9,9710,7286],"./fr-CH/validation":[82605,9,4986],"./fr-CH/validation.js":[82605,9,4986],"./fr/config":[37748,3],"./fr/config.json":[37748,3],"./fr/custom":[75197,3,5197],"./fr/custom.json":[75197,3,5197],"./fr/datepicker":[37036,9,7036],"./fr/datepicker.js":[37036,9,7036],"./fr/default":[1589,9,5767,1589],"./fr/default.js":[1589,9,5767,1589],"./fr/duration":[93658,9,9710,3658],"./fr/duration.js":[93658,9,9710,3658],"./fr/fields":[48148,3,5767],"./fr/fields.json":[48148,3,5767],"./fr/texts":[23418,3,3418],"./fr/texts.json":[23418,3,3418],"./fr/validation":[33129,9,3129],"./fr/validation.js":[33129,9,3129],"./it-CH/config":[16835,3],"./it-CH/config.json":[16835,3],"./it-CH/datepicker":[75862,9,3481],"./it-CH/datepicker.js":[75862,9,3481],"./it-CH/default":[77638,9,9476,7638],"./it-CH/default.js":[77638,9,9476,7638],"./it-CH/duration":[44567,9,9710,4567],"./it-CH/duration.js":[44567,9,9710,4567],"./it-CH/validation":[63048,9,3048],"./it-CH/validation.js":[63048,9,3048],"./it/config":[37295,3],"./it/config.json":[37295,3],"./it/custom":[5290,3,5290],"./it/custom.json":[5290,3,5290],"./it/datepicker":[36147,9,6147],"./it/datepicker.js":[36147,9,6147],"./it/default":[23108,9,9476,3108],"./it/default.js":[23108,9,9476,3108],"./it/duration":[67905,9,9710,7905],"./it/duration.js":[67905,9,9710,7905],"./it/fields":[39476,3,9476],"./it/fields.json":[39476,3,9476],"./it/texts":[27519,3,7519],"./it/texts.json":[27519,3,7519],"./it/validation":[66346,9,6346],"./it/validation.js":[66346,9,6346],"./ja/config":[15203,3],"./ja/config.json":[15203,3],"./ja/custom":[79870,3,9870],"./ja/custom.json":[79870,3,9870],"./ja/datepicker":[70675,9,675],"./ja/datepicker.js":[70675,9,675],"./ja/default":[4964,9,4964],"./ja/default.js":[4964,9,4964],"./ja/duration":[87905,9,9710,2667],"./ja/duration.js":[87905,9,9710,2667],"./ja/fields":[68376,3,8376],"./ja/fields.json":[68376,3,8376],"./ja/texts":[30883,3,883],"./ja/texts.json":[30883,3,883],"./ja/validation":[14826,9,4826],"./ja/validation.js":[14826,9,4826],"./pt-BR/config":[87503,3],"./pt-BR/config.json":[87503,3],"./pt-BR/custom":[54794,3,4794],"./pt-BR/custom.json":[54794,3,4794],"./pt-BR/datepicker":[20105,9,105],"./pt-BR/datepicker.js":[20105,9,105],"./pt-BR/default":[92294,9,2294],"./pt-BR/default.js":[92294,9,2294],"./pt-BR/duration":[44631,9,9710,4631],"./pt-BR/duration.js":[44631,9,9710,4631],"./pt-BR/fields":[1524,3,1524],"./pt-BR/fields.json":[1524,3,1524],"./pt-BR/texts":[69311,3,9311],"./pt-BR/texts.json":[69311,3,9311],"./pt-BR/validation":[70536,9,536],"./pt-BR/validation.js":[70536,9,536],"./pt/config":[22356,3],"./pt/config.json":[22356,3],"./pt/custom":[2653,3,2653],"./pt/custom.json":[2653,3,2653],"./pt/datepicker":[59856,9,9856],"./pt/datepicker.js":[59856,9,9856],"./pt/default":[56513,9,6513],"./pt/default.js":[56513,9,6513],"./pt/duration":[32438,9,9710,2438],"./pt/duration.js":[32438,9,9710,2438],"./pt/fields":[44455,3,4455],"./pt/fields.json":[44455,3,4455],"./pt/texts":[29946,3,9946],"./pt/texts.json":[29946,3,9946],"./pt/validation":[12685,9,2685],"./pt/validation.js":[12685,9,2685],"./ro/config":[99069,3],"./ro/config.json":[99069,3],"./ro/custom":[5160,3,5160],"./ro/custom.json":[5160,3,5160],"./ro/datepicker":[2929,9,2929],"./ro/datepicker.js":[2929,9,2929],"./ro/default":[63022,9,3022],"./ro/default.js":[63022,9,3022],"./ro/duration":[65583,9,9710,5583],"./ro/duration.js":[65583,9,9710,5583],"./ro/fields":[14758,3,4758],"./ro/fields.json":[14758,3,4758],"./ro/texts":[55577,3,5577],"./ro/texts.json":[55577,3,5577],"./ro/validation":[90944,9,944],"./ro/validation.js":[90944,9,944]};function i(t){if(!a.o(s,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=s[t],i=e[0];return Promise.all(e.slice(2).map(a.e)).then((function(){return a.t(i,16|e[1])}))}i.keys=function(){return Object.keys(s)},i.id=93731,t.exports=i},33545:function(t,e,a){var s={"./de-CH/default.js":[968,4490,968],"./de/default.js":[62862,4490,2862],"./en-GB/default.js":[63170,3170],"./en-US/default.js":[15691,5691],"./en/default.js":[56886,6886],"./es/default.js":[89113,9113],"./fr-CA/default.js":[71082,5767,1082],"./fr-CH/default.js":[44545,5767,4545],"./fr/default.js":[1589,5767,1589],"./it-CH/default.js":[77638,9476,7638],"./it/default.js":[23108,9476,3108],"./ja/default.js":[4964,4964],"./pt-BR/default.js":[92294,2294],"./pt/default.js":[56513,6513],"./ro/default.js":[63022,3022]};function i(t){if(!a.o(s,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=s[t],i=e[0];return Promise.all(e.slice(1).map(a.e)).then((function(){return a(i)}))}i.keys=function(){return Object.keys(s)},i.id=33545,t.exports=i},97991:function(t,e,a){var s={"./de-CH/config.json":79933,"./de/config.json":28417,"./en-GB/config.json":23667,"./en-US/config.json":92444,"./en/config.json":11401,"./es/config.json":17212,"./fr-CA/config.json":20995,"./fr-CH/config.json":1738,"./fr/config.json":37748,"./it-CH/config.json":16835,"./it/config.json":37295,"./ja/config.json":15203,"./pt-BR/config.json":87503,"./pt/config.json":22356,"./ro/config.json":99069};function i(t){var e=r(t);return a(e)}function r(t){if(!a.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}i.keys=function(){return Object.keys(s)},i.resolve=r,t.exports=i,i.id=97991},79933:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch (Schweiz)","global":"German (Switzerland)"}')},28417:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch","global":"German"}')},23667:function(t){"use strict";t.exports=JSON.parse('{"native":"English (UK)","global":"English (UK)"}')},92444:function(t){"use strict";t.exports=JSON.parse('{"native":"English (US)","global":"English (US)"}')},11401:function(t){"use strict";t.exports=JSON.parse('{"native":"English","global":"English","customize":["stac-fields.js"]}')},17212:function(t){"use strict";t.exports=JSON.parse('{"native":"Español","global":"Spanish"}')},20995:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Canada)","global":"French (Canada)"}')},1738:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Suisse)","global":"French (Switzerland)"}')},37748:function(t){"use strict";t.exports=JSON.parse('{"native":"Français","global":"French"}')},16835:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano (Svizzera)","global":"Italian (Switzerland)"}')},37295:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano","global":"Italian"}')},15203:function(t){"use strict";t.exports=JSON.parse('{"native":"日本語","global":"Japanese"}')},87503:function(t){"use strict";t.exports=JSON.parse('{"native":"Português (Brasil)","global":"Portuguese (Brazil)"}')},22356:function(t){"use strict";t.exports=JSON.parse('{"native":"Português","global":"Portuguese"}')},99069:function(t){"use strict";t.exports=JSON.parse('{"native":"Română","global":"Romanian"}')}},e={};function a(s){var i=e[s];if(void 0!==i)return i.exports;var r=e[s]={id:s,loaded:!1,exports:{}};return t[s].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=t,function(){var t="function"===typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",e="function"===typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",s="function"===typeof Symbol?Symbol("webpack error"):"__webpack_error__",i=function(t){t&&t.d<1&&(t.d=1,t.forEach((function(t){t.r--})),t.forEach((function(t){t.r--?t.r++:t()})))},r=function(a){return a.map((function(a){if(null!==a&&"object"===typeof a){if(a[t])return a;if(a.then){var r=[];r.d=0,a.then((function(t){n[e]=t,i(r)}),(function(t){n[s]=t,i(r)}));var n={};return n[t]=function(t){t(r)},n}}var o={};return o[t]=function(){},o[e]=a,o}))};a.a=function(a,n,o){var l;o&&((l=[]).d=-1);var c,u,d,h=new Set,p=a.exports,f=new Promise((function(t,e){d=e,u=t}));f[e]=p,f[t]=function(t){l&&t(l),h.forEach(t),f["catch"]((function(){}))},a.exports=f,n((function(a){var i;c=r(a);var n=function(){return c.map((function(t){if(t[s])throw t[s];return t[e]}))},o=new Promise((function(e){i=function(){e(n)},i.r=0;var a=function(t){t!==l&&!h.has(t)&&(h.add(t),t&&!t.d&&(i.r++,t.push(i)))};c.map((function(e){e[t](a)}))}));return i.r?o:n()}),(function(t){t?d(f[s]=t):u(p),i(l)})),l&&l.d<0&&(l.d=0)}}(),function(){var t=[];a.O=function(e,s,i,r){if(!s){var n=1/0;for(u=0;u=r)&&Object.keys(a.O).every((function(t){return a.O[t](s[l])}))?s.splice(l--,1):(o=!1,r0&&t[u-1][2]>r;u--)t[u]=t[u-1];t[u]=[s,i,r]}}(),function(){a.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return a.d(e,{a:e}),e}}(),function(){var t,e=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__};a.t=function(s,i){if(1&i&&(s=this(s)),8&i)return s;if("object"===typeof s&&s){if(4&i&&s.__esModule)return s;if(16&i&&"function"===typeof s.then)return s}var r=Object.create(null);a.r(r);var n={};t=t||[null,e({}),e([]),e(e)];for(var o=2&i&&s;"object"==typeof o&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach((function(t){n[t]=function(){return s[t]}}));return n["default"]=function(){return s},a.d(r,n),r}}(),function(){a.d=function(t,e){for(var s in e)a.o(e,s)&&!a.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})}}(),function(){a.f={},a.e=function(t){return Promise.all(Object.keys(a.f).reduce((function(e,s){return a.f[s](t,e),e}),[]))}}(),function(){a.u=function(t){return"js/"+t+"."+{57:"5be4327a",105:"e2583608",143:"17c32b12",224:"73380e95",259:"5d9423a7",286:"9968152f",287:"de8bc964",453:"cdf3dcef",513:"cdf66342",536:"1a6dbc5d",537:"1e693d0f",572:"e8726472",635:"3fc71e47",674:"628dacf0",675:"18ffac5f",771:"71d0273d",883:"04936a46",895:"8187e671",944:"52479ee6",967:"aedc4196",968:"e992ebff",1082:"bc8d3aaa",1277:"7d6a095f",1295:"27f043b7",1456:"d1b42447",1524:"98e4593a",1589:"a8e28692",1802:"e793d255",1865:"a9fa055a",1935:"049809bf",1940:"d3c49361",2018:"ce075d9e",2294:"936b4a9d",2438:"9de74d16",2605:"1c2993cd",2618:"11733eb3",2653:"a4273a9b",2667:"854d158f",2685:"93067bb8",2816:"45937916",2862:"6af34fc2",2904:"e9e7058d",2929:"329a3419",2963:"2d6fae39",2986:"087cf117",3022:"f05af57b",3048:"24de37f6",3108:"2381da32",3129:"5db71fda",3147:"8c62f1a6",3155:"bfefc377",3170:"1f0bbce4",3301:"a6b90c8a",3418:"1583461d",3481:"94bedc54",3545:"4729f6d7",3611:"9beecf13",3621:"33cab0e1",3627:"35a62045",3658:"b69417b4",3665:"8d915206",4312:"a55046c8",4455:"20b19c75",4490:"ba7247be",4511:"814216f9",4527:"9945a88b",4545:"12d31611",4567:"fd438142",4581:"ab8bb64d",4631:"3fda2a6b",4648:"d62412bc",4748:"9cad5d00",4758:"81bfed10",4794:"be71e110",4801:"3edc3a39",4826:"14dec5b7",4870:"d5037fd1",4905:"c253340a",4964:"aabf058f",4986:"43315b9e",5048:"73e94787",5160:"0199c3c7",5197:"e5331eb8",5262:"043c45ae",5270:"955a079f",5290:"11b823e6",5300:"04767d9e",5500:"a4789aa8",5528:"5cf36dce",5558:"1b7ea293",5577:"77c30967",5583:"a2d41d1b",5691:"f24e25d4",5692:"e7ac3b0d",5767:"72834f18",5833:"8137a15b",5876:"4dd7f581",5893:"6f7d75b8",6046:"c4a8b81f",6147:"1c9b2abd",6247:"acea7c1f",6340:"18158e76",6346:"dbc5bcff",6492:"8dedde79",6513:"e0ea7017",6750:"7aedfad0",6763:"8e2843dd",6780:"f53800c2",6855:"192625a7",6866:"6a34f86e",6886:"72674174",6892:"e419da08",6935:"2ff826c6",6948:"0f0902d7",6997:"a28a1e59",7003:"ca61e641",7012:"55ebfa96",7036:"af262471",7090:"0eb933be",7130:"880efce9",7197:"f0bb6068",7286:"347cbbbe",7303:"e09f204d",7312:"54428d50",7341:"e7260174",7400:"1d37f795",7457:"db6d398a",7519:"2d2eb579",7638:"51f8c29a",7659:"e86bd86e",7719:"749c5ec0",7820:"0ee35023",7843:"814dcd79",7905:"d12be83f",7964:"ff8cbcd1",8228:"efd83c38",8236:"8111695f",8376:"d2c8723f",8499:"ebf4ff10",8552:"d4b5fff9",8648:"72d749a6",8775:"a495f41e",8798:"67d14058",8940:"92678f29",9099:"2ed3cba3",9113:"bbb25f06",9236:"a8d872bf",9311:"4911b00a",9384:"3cccf96f",9476:"20e3397d",9581:"692a0ccc",9637:"618f0cfe",9684:"31bdfb18",9710:"f06fdbe3",9738:"a53cd36a",9813:"0e3b02b4",9856:"8de9e0e6",9870:"7449c477",9891:"3c48937a",9946:"f6bd18dd"}[t]+".js"}}(),function(){a.miniCssF=function(t){return"css/"+t+"."+{143:"ac728857",453:"f55423e0",513:"1c24940f",635:"f849b3f1",967:"72c8c98f",1802:"32ec082e",1940:"4149415b",2618:"6fac7cd8",3147:"45781634",3545:"2412eeb4",3611:"c6830b09",4748:"fc757a13",5528:"45781634",6780:"0780c10b",6866:"081b4583",7130:"c4ced7cf",7312:"81053aa2",7341:"c9b64985",8648:"4b50bc38",8775:"bbca74ef",8940:"f418fe25",9813:"63e96376"}[t]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){a.hmd=function(t){return t=Object.create(t),t.children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t}}(),function(){a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="@radiantearth/stac-browser:";a.l=function(s,i,r,n){if(t[s])t[s].push(i);else{var o,l;if(void 0!==r)for(var c=document.getElementsByTagName("script"),u=0;u 0 || _vm.data.description || _vm.data.deprecated))?_c('b-card-text',{staticClass:\"intro\"},[(_vm.data.deprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),_vm._v(\" \"+_vm._s(_vm._f(\"summarize\")(_vm.data.description))+\" \")],2):_vm._e(),(_vm.showKeywordsInCatalogCards && _vm.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.keywords,\"variant\":\"primary\",\"center\":!_vm.isList}}):_vm._e(),(_vm.temporalExtent)?_c('b-card-text',{staticClass:\"datetime\"},[_c('small',{domProps:{\"innerHTML\":_vm._s(_vm.temporalExtent)}})]):_vm._e()],1),_c('b-card-footer',[_vm._t(\"footer\",null,{\"data\":_vm.data})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=50eb59b2\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=50eb59b2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"catalogs mb-4\"},[_c('header',[_c('h2',{staticClass:\"title mr-2\"},[_vm._v(_vm._s(_vm.title))]),(_vm.catalogCount !== null)?_c('b-badge',{staticClass:\"mr-4\",attrs:{\"pill\":\"\",\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.catalogCount))]):_vm._e(),_c('ViewButtons',{staticClass:\"mr-2\",model:{value:(_vm.view),callback:function ($$v) {_vm.view=$$v},expression:\"view\"}}),(_vm.isComplete && _vm.catalogs.length > 1)?_c('SortButtons',{model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.isComplete && _vm.catalogs.length > 1)?_c('section',{staticClass:\"catalog-filter mb-2\"},[_c('SearchBox',{attrs:{\"placeholder\":_vm.filterPlaceholder},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}}),(_vm.allKeywords.length > 0)?_c('multiselect',{attrs:{\"multiple\":\"\",\"options\":_vm.allKeywords,\"placeholder\":_vm.$t('multiselect.keywordsPlaceholder'),\"selectLabel\":_vm.$t('multiselect.selectLabel'),\"selectedLabel\":_vm.$t('multiselect.selectedLabel'),\"deselectLabel\":_vm.$t('multiselect.deselectLabel'),\"limitText\":_vm.limitText},model:{value:(_vm.selectedKeywords),callback:function ($$v) {_vm.selectedKeywords=$$v},expression:\"selectedKeywords\"}}):_vm._e()],1):_vm._e(),(_vm.showPagination)?_c('Pagination',{ref:\"topPagination\",attrs:{\"pagination\":_vm.pagination,\"placement\":\"top\"},on:{\"paginate\":_vm.paginate}}):_vm._e(),(_vm.hasSearchCritera && _vm.catalogView.length === 0)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"variant\":\"warning\",\"show\":\"\"}},[_vm._v(_vm._s(_vm.$t('catalogs.noMatches')))]):_vm._e(),_c('section',{staticClass:\"list\"},[(_vm.loading)?_c('Loading',{attrs:{\"fill\":\"\",\"top\":\"\"}}):_vm._e(),_c(_vm.cardsComponent,_vm._b({tag:\"component\"},'component',_vm.cardsComponentProps,false),_vm._l((_vm.catalogView),function(catalog){return _c('Catalog',{key:catalog.href,attrs:{\"catalog\":catalog},scopedSlots:_vm._u([{key:\"footer\",fn:function({data}){return [_vm._t(\"catalogFooter\",null,{\"data\":data})]}}],null,true)})}),1)],1),(_vm.showPagination)?_c('Pagination',{attrs:{\"pagination\":_vm.pagination},on:{\"paginate\":_vm.paginate}}):(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.loadMore),expression:\"loadMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.loadMore}},[_vm._v(_vm._s(_vm.$t('catalogs.loadMore')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{attrs:{\"title\":_vm.$t('view.title'),\"size\":\"sm\"}},[_c('b-button',{attrs:{\"title\":_vm.$t('view.tiles.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'cards'},on:{\"click\":function($event){return _vm.toggle('cards')}}},[_c('b-icon-bricks'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.tiles.label')))])],1),_c('b-button',{attrs:{\"title\":_vm.$t('view.list.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'list'},on:{\"click\":function($event){return _vm.toggle('list')}}},[_c('b-icon-list-task'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.list.label')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ViewButtons.vue?vue&type=template&id=6a51668d\"\nimport script from \"./ViewButtons.vue?vue&type=script&lang=js\"\nexport * from \"./ViewButtons.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","import ViewButtons from './ViewButtons.vue';\n\nexport default {\n components: {\n ViewButtons\n },\n computed: {\n cardsComponent() {\n return (this.view === 'list') ? 'div' : 'b-card-group';\n },\n cardsComponentProps() {\n if (this.view === 'list') {\n return {\n class: [\n 'card-list'\n ]\n };\n }\n else {\n return {\n columns: true\n };\n }\n },\n view: {\n get() {\n return this.$store.state.cardViewMode;\n },\n async set(cardViewMode) {\n await this.$store.dispatch('config', { cardViewMode });\n }\n }\n }\n};\n","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalogs.vue?vue&type=template&id=3b49c796&scoped=true\"\nimport script from \"./Catalogs.vue?vue&type=script&lang=js\"\nexport * from \"./Catalogs.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalogs.vue?vue&type=style&index=0&id=3b49c796&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b49c796\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button',_vm._b({staticClass:\"copy-button\",attrs:{\"variant\":_vm.copyColor,\"title\":_vm.$t('copy')},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.copy.apply(null, arguments)}}},'b-button',_vm.buttonProps,false),[_c(_vm.copyIcon,{tag:\"component\"}),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CopyButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CopyButton.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CopyButton.vue?vue&type=template&id=033681c8\"\nimport script from \"./CopyButton.vue?vue&type=script&lang=js\"\nexport * from \"./CopyButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"styled-description\",class:{compact: _vm.compact, inline: _vm.inline},domProps:{\"innerHTML\":_vm._s(_vm.markup(_vm.description))}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Description.vue?vue&type=template&id=77c4c56a\"\nimport script from \"./Description.vue?vue&type=script&lang=js\"\nexport * from \"./Description.vue?vue&type=script&lang=js\"\nimport style0 from \"./Description.vue?vue&type=style&index=0&id=77c4c56a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":\"\",\"dismissible\":_vm.dismissible},on:{\"dismissed\":function($event){return _vm.$emit('close')}}},[_c('p',{staticClass:\"message\"},[_vm._v(_vm._s(_vm.message || _vm.$t('errors.default')))]),(_vm.error && _vm.error.message)?_c('dl',{staticClass:\"error\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.cause')))]),_c('dd',[_vm._v(_vm._s(_vm.error.message))])]):_vm._e(),(_vm.description)?_c('dl',{staticClass:\"description\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.reason')))]),_c('dd',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.id)?_c('dl',{staticClass:\"id\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.code')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.id))])])]):_vm._e(),(_vm.url)?_c('dl',{staticClass:\"url\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.requestURL')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.url))])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ErrorAlert.vue?vue&type=template&id=7a9d646a&scoped=true\"\nimport script from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./ErrorAlert.vue?vue&type=style&index=0&id=7a9d646a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a9d646a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.400\",value:(_vm.load),expression:\"load\",modifiers:{\"400\":true}}],staticClass:\"item-card\",class:{queued: !_vm.data, deprecated: _vm.isDeprecated, description: _vm.hasDescription},attrs:{\"no-body\":\"\"}},[(_vm.hasImage)?_c('b-card-img-lazy',_vm._b({staticClass:\"thumbnail\",attrs:{\"offset\":\"200\"}},'b-card-img-lazy',_vm.thumbnail,false)):_vm._e(),_c('b-card-body',[_c('b-card-title',[_c('StacLink',{staticClass:\"stretched-link\",attrs:{\"data\":[_vm.data, _vm.item]}})],1),(_vm.fileFormats.length > 0 || _vm.hasDescription || _vm.isDeprecated)?_c('b-card-text',{staticClass:\"intro\"},[(_vm.isDeprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),(_vm.hasDescription)?[_vm._v(_vm._s(_vm._f(\"summarize\")(_vm.data.properties.description)))]:_vm._e()],2):_vm._e(),(_vm.showKeywordsInItemCards && _vm.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.keywords,\"variant\":\"primary\",\"center\":\"\"}}):_vm._e(),_c('b-card-text',[_c('small',{staticClass:\"text-muted\"},[(_vm.extent)?[_vm._v(_vm._s(_vm._f(\"formatTemporalExtent\")(_vm.extent)))]:(_vm.data && _vm.data.properties.datetime)?[_vm._v(_vm._s(_vm._f(\"formatTimestamp\")(_vm.data.properties.datetime)))]:[_vm._v(_vm._s(_vm.$t('items.noTime')))]],2)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=7144a4b0\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=7144a4b0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"items mb-4\"},[_c('header',[_c('h2',{staticClass:\"title mr-2\"},[_vm._v(_vm._s(_vm.$tc('stacItem', _vm.items.length )))]),(_vm.itemCount !== null)?_c('b-badge',{staticClass:\"mr-4\",attrs:{\"pill\":\"\",\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.itemCount))]):_vm._e(),(!_vm.api && _vm.items.length > 1)?_c('SortButtons',{model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.showPagination)?_c('Pagination',{ref:\"topPagination\",attrs:{\"pagination\":_vm.pagination,\"placement\":\"top\"},on:{\"paginate\":_vm.paginate}}):_vm._e(),(_vm.allowFilter)?[(_vm.api)?_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.itemFilter\",modifiers:{\"itemFilter\":true}}],staticClass:\"mb-4 mt-2\",class:{'ml-3': _vm.showPagination},attrs:{\"variant\":_vm.hasFilters && !_vm.filtersOpen ? 'primary' : 'outline-primary'}},[_c('b-icon-search'),_vm._v(\" \"+_vm._s(_vm.filtersOpen ? _vm.$t('items.hideFilter') : _vm.$t('items.showFilter'))+\" \"),(_vm.hasFilters && !_vm.filtersOpen)?_c('b-badge',{attrs:{\"variant\":\"dark\"}},[_vm._v(_vm._s(_vm.filterCount))]):_vm._e()],1):_vm._e(),_c('b-collapse',{attrs:{\"id\":\"itemFilter\"},model:{value:(_vm.filtersOpen),callback:function ($$v) {_vm.filtersOpen=$$v},expression:\"filtersOpen\"}},[_c('SearchFilter',{attrs:{\"type\":\"Items\",\"title\":_vm.$t('items.filter'),\"parent\":_vm.stac,\"value\":_vm.apiFilters},on:{\"input\":_vm.emitFilter}})],1)]:_vm._e(),_c('section',{staticClass:\"list\"},[(_vm.loading)?_c('Loading',{attrs:{\"fill\":\"\",\"top\":\"\"}}):_vm._e(),(_vm.chunkedItems.length > 0)?_c('b-card-group',{attrs:{\"columns\":\"\"}},_vm._l((_vm.chunkedItems),function(item){return _c('Item',{key:item.href,attrs:{\"item\":item}})}),1):_c('b-alert',{attrs:{\"variant\":_vm.hasFilters ? 'warning' : 'info',\"show\":\"\"}},[(_vm.hasFilters)?[_vm._v(_vm._s(_vm.$t('search.noItemsFound')))]:[_vm._v(_vm._s(_vm.$t('items.noneAvailableForCollection')))]],2)],1),(_vm.showPagination)?_c('Pagination',{attrs:{\"pagination\":_vm.pagination},on:{\"paginate\":_vm.paginate}}):(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.showMore),expression:\"showMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.showMore}},[_vm._v(_vm._s(_vm.$t('showMore')))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Items.vue?vue&type=template&id=1de617f0\"\nimport script from \"./Items.vue?vue&type=script&lang=js\"\nexport * from \"./Items.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classes},[_c('b-spinner',{attrs:{\"label\":_vm.$t('loading'),\"small\":_vm.small}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=67931bb8&scoped=true\"\nimport script from \"./Loading.vue?vue&type=script&lang=js\"\nexport * from \"./Loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=67931bb8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67931bb8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{class:_vm.classes},[_c('b-button',{attrs:{\"disabled\":!_vm.pagination.first,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.first)}}},[_vm._v(_vm._s(_vm.$t('pagination.first')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.prev,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.prev)}}},[_vm._v(_vm._s(_vm.$t('pagination.previous')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.next,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.next)}}},[_vm._v(_vm._s(_vm.$t('pagination.next')))]),(_vm.pagination.last)?_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.last)}}},[_vm._v(_vm._s(_vm.$t('pagination.last')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Pagination.vue?vue&type=template&id=56aa2ed6\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.component,_vm._b({tag:\"component\",staticClass:\"stac-link\",attrs:{\"title\":_vm.tooltip}},'component',_vm.attributes,false),[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.displayTitle))])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacLink.vue?vue&type=template&id=935ce1da\"\nimport script from \"./StacLink.vue?vue&type=script&lang=js\"\nexport * from \"./StacLink.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","module.exports = {\n catalogUrl: null,\n catalogTitle: \"STAC Browser\",\n allowExternalAccess: true, // Must be true if catalogUrl is not given\n allowedDomains: [],\n detectLocaleFromBrowser: true,\n storeLocale: true,\n locale: \"en\",\n fallbackLocale: \"en\",\n supportedLocales: [\n \"de\",\n// \"de-CH\",\n \"es\",\n \"en\",\n// \"en-GB\",\n// \"en-US\",\n \"fr\",\n// \"fr-CA\",\n// \"fr-CH\",\n \"it\",\n// \"it-CH\",\n \"ro\",\n \"ja\",\n \"pt\",\n// \"pt-BR\"\n ],\n apiCatalogPriority: null,\n useTileLayerAsFallback: true,\n displayGeoTiffByDefault: false,\n buildTileUrlTemplate: ({href, asset}) => \"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url=\" + encodeURIComponent(asset.href.startsWith(\"/vsi\") ? asset.href : href),\n stacProxyUrl: null,\n pathPrefix: \"/\",\n historyMode: \"history\",\n cardViewMode: \"cards\",\n cardViewSort: \"asc\",\n showKeywordsInItemCards: false,\n showKeywordsInCatalogCards: false,\n showThumbnailsAsAssets: false,\n geoTiffResolution: 128,\n redirectLegacyUrls: false,\n itemsPerPage: 12,\n defaultThumbnailSize: null,\n maxPreviewsOnMap: 50,\n crossOriginMedia: null,\n requestHeaders: {},\n requestQueryParameters: {},\n preprocessSTAC: null,\n authConfig: null\n};\n","import i18n from '../i18n';\nimport Utils from '../utils';\n\nexport default class Auth {\n\n /**\n * Constructs the authentication method.\n * \n * @param {Object.} options Any potential options the authentication method needs\n * @param {Function} changeListener A change listener with two parameters: loggedIn (boolean) and credentials (string|null)\n * @param {Router} router The Vue router instance\n */\n constructor(options = {}, changeListener = null, router = null) {\n this.options = options;\n this.changeListener = changeListener;\n this.router = router;\n }\n\n /**\n * A tooltip title for the authentication button.\n * \n * @returns {string}\n */\n getButtonTitle() {\n return null;\n }\n\n /**\n * A label for the button that is shown when unauthorized (logged out).\n * \n * @returns {string}\n */\n getLoginLabel() {\n return i18n.t('authentication.button.login');\n }\n\n /**\n * A label for the button that is shown when authorized (logged in).\n * \n * @returns {string}\n */\n getLogoutLabel() {\n return i18n.t('authentication.button.logout');\n }\n\n getComponent() {\n return null;\n }\n\n getComponentProps() {\n return {};\n }\n\n async init() {\n return;\n }\n\n async login() {\n }\n\n async confirmLogin(credentials) {\n if (this.changeListener) {\n await this.changeListener(true, credentials);\n }\n }\n\n async logout(/*credentials*/) {\n }\n\n async confirmLogout() {\n if (this.changeListener) {\n await this.changeListener(false);\n }\n }\n\n async close() {\n return;\n }\n\n updateStore(/*value*/) {\n return {};\n }\n\n _updateStore(value, defaultName = null, defaultIn = null, defaultFormatter = null) {\n const formatter = this.options.formatter || defaultFormatter;\n const key = this.options.name || defaultName;\n const in_ = this.options.in || defaultIn;\n\n // Format the credentials\n if (value) {\n if (formatter === 'Bearer') {\n value = `Bearer ${value}`;\n }\n else if (typeof formatter === 'function') {\n value = formatter(value);\n }\n }\n if (!Utils.hasText(value)) {\n value = undefined;\n }\n\n // Set cookie, query or request parameters\n if (in_ === 'query') {\n return { query: { type: 'private', key, value } };\n }\n else if (in_ === 'cookie') {\n return { cookie: { key, value } };\n }\n else if (in_ === 'header') {\n return { header: { key, value } };\n }\n else {\n return {};\n }\n }\n\n static async create(config, changeListener, router) {\n let method = new Auth();\n if (Utils.isObject(config)) {\n if (config.type === 'http' && config.scheme === 'basic') {\n const BasicAuth = (await import('./basic')).default;\n method = new BasicAuth(config, changeListener, router);\n }\n else if (config.type === 'apiKey') {\n const ApIKey = (await import('./apiKey')).default;\n method = new ApIKey(config, changeListener, router);\n }\n else if (config.type === 'openIdConnect') {\n const OIDC = (await import('./oidc')).default;\n method = new OIDC(config, changeListener, router);\n }\n }\n await method.init();\n return method;\n }\n\n static equals(method, config) {\n return JSON.stringify(method.options) === JSON.stringify(config);\n }\n\n}\n","import Utils from \"./utils\";\n\nexport default class BrowserStorage {\n\n static JSON_INDICATOR = \"\\n\\r\";\n\n static enabled(engine) {\n if (!Utils.isObject(engine)) {\n return false;\n }\n try {\n engine.setItem('test', 'yes');\n if (engine.getItem('test') === 'yes') {\n engine.removeItem('test');\n return true;\n }\n } catch(error) {\n console.error(error);\n }\n return false;\n }\n\n constructor(session = false) {\n if (session) {\n if (BrowserStorage.enabled(window.sessionStorage)) {\n this.engine = window.sessionStorage;\n }\n else if (navigator.cookieEnabled) {\n this.engine = new Cookies(true);\n }\n else {\n this.engine = new NoOp();\n }\n }\n else {\n if (BrowserStorage.enabled(window.localStorage)) {\n this.engine = window.localStorage;\n }\n else if (navigator.cookieEnabled) {\n this.engine = new Cookies();\n }\n else {\n this.engine = new NoOp();\n }\n }\n }\n\n get(name) {\n try {\n let data = this.engine.getItem(name);\n if (typeof data === 'string' && data.startsWith(BrowserStorage.JSON_INDICATOR)) {\n data = JSON.parse(data.slice(BrowserStorage.JSON_INDICATOR.length));\n }\n return data;\n } catch(error) {\n console.error(error);\n return null;\n }\n }\n\n set(name, value) {\n try {\n if (typeof value !== 'string') {\n value = BrowserStorage.JSON_INDICATOR + JSON.stringify(value);\n }\n this.engine.setItem(name, value);\n } catch(error) {\n console.error(error);\n }\n }\n\n remove(name) {\n try {\n this.engine.removeItem(name);\n } catch(error) {\n console.error(error);\n }\n }\n\n clear() {\n this.engine.clear();\n }\n\n}\n\nexport class Cookies {\n\n constructor(session = false) {\n this.session = session;\n }\n\n getExpiry(minutes = null) {\n if (minutes === null) {\n if (this.session) {\n minutes = 60; // 60 minutes\n }\n else {\n minutes = 1000 * 24 * 60; // 1000 days\n }\n }\n const date = new Date();\n date.setTime(date.getTime() + minutes * 60 * 1000);\n this.epires = date.toGMTString();\n }\n\n setItem(name, value, minutes = null) {\n const expires = this.getExpiry(minutes);\n value = encodeURIComponent(value);\n document.cookie = `${name}=${value}; expires=${expires}; path=/`;\n }\n\n getItem(name) {\n const prefix = name + \"=\";\n const parts = document.cookie.split(';');\n for (let c of parts) {\n c = c.trim();\n if (c.startsWith(prefix)) {\n const data = c.substring(prefix.length, c.length);\n return decodeURIComponent(data);\n }\n }\n return null;\n }\n\n removeItem(name) {\n this.set(name, \"\", -1);\n }\n\n clear() {\n document.cookie = '';\n }\n\n}\n\n\nclass NoOp {\n\n constructor(session = false) {\n this.session = session;\n }\n\n setItem(name/*, value*/) {\n console.warn(`Browser storage disabled, can't store ${name}`);\n }\n\n getItem(/*name*/) {\n return null;\n }\n\n removeItem(/*name*/) {\n }\n\n clear() {\n }\n\n}\n","// Add deprecated CQL conformance classes for stac-fastapi:\n// https://github.com/stac-utils/stac-fastapi/issues/539\nconst CQL_TEXT = [\n 'https://api.stacspec.org/v1.*/item-search#filter:cql-text', // deprecated\n 'http://www.opengis.net/spec/cql2/1.*/conf/cql2-text'\n];\nconst CQL_JSON = [\n 'https://api.stacspec.org/v1.*/item-search#filter:cql-json', // deprecated\n 'http://www.opengis.net/spec/cql2/1.*/conf/cql2-json'\n];\n\nconst CQL_ADV_COMPARISON = ['http://www.opengis.net/spec/cql2/1.*/req/advanced-comparison-operators'];\n\nimport { mapGetters } from \"vuex\";\n\nexport const TYPES = {\n // OGC / STAC API - Features\n Items: {\n BasicFilters: [\n 'https://api.stacspec.org/v1.*/ogcapi-features',\n 'http://www.opengis.net/spec/ogcapi-features-1/1.*/conf/core'\n ],\n CollectionIdFilter: false,\n ItemIdFilter: false,\n // It seems some conformance classes use conf (correct) and some req (deprecated?) after the version number\n CqlFilters: ['http://www.opengis.net/spec/ogcapi-features-3/1.*/*/features-filter'],\n Sort: [\n 'https://api.stacspec.org/v1.*/ogcapi-features#sort',\n 'http://www.opengis.net/spec/ogcapi-records-1/1.*/conf/sorting'\n ],\n FreeText: ['https://api.stacspec.org/v1.*/ogcapi-features#free-text']\n },\n // STAC API - Item Search\n Global: {\n BasicFilters: true,\n CollectionIdFilter: true,\n ItemIdFilter: true,\n CqlFilters: ['https://api.stacspec.org/v1.*/item-search#filter'],\n Sort: ['https://api.stacspec.org/v1.*/item-search#sort'],\n FreeText: ['https://api.stacspec.org/v1.*/item-search#free-text']\n },\n // OGC / STAC API - Collections\n Collections: {\n BasicFilters: ['https://api.stacspec.org/v1.*/collection-search'],\n CollectionIdFilter: false,\n ItemIdFilter: false,\n CqlFilters: ['https://api.stacspec.org/v1.*/collection-search#filter'],\n Sort: ['https://api.stacspec.org/v1.*/collection-search#sort'],\n FreeText: ['https://api.stacspec.org/v1.*/collection-search#free-text']\n }\n};\n\nexport default {\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n ...mapGetters(['supportsConformance']),\n\n conformances() {\n return TYPES[this.type];\n },\n\n canSort() {\n return this.supportsConformance(this.conformances.Sort);\n },\n canFilterExtents() {\n return this.supportsConformance(this.conformances.BasicFilters);\n },\n canFilterFreeText() {\n return this.supportsConformance(this.conformances.FreeText);\n },\n cql() {\n if (!this.supportsConformance(this.conformances.CqlFilters)) {\n return null;\n }\n let textMode = this.supportsConformance(CQL_TEXT);\n let jsonMode = this.supportsConformance(CQL_JSON);\n if (!textMode && !jsonMode) {\n return null;\n }\n\n return {\n textMode,\n jsonMode,\n advancedComparison: this.supportsConformance(CQL_ADV_COMPARISON)\n };\n }\n }\n};\n","import { mapState } from 'vuex';\n\nexport default functions => {\n let mixin = {\n computed: {\n ...mapState(['uiLanguage'])\n },\n methods: {}\n };\n for(let name in functions) {\n let fn = functions[name];\n mixin.methods[name] = function() {\n // We call uiLanguage once so that it's a dependency for the computed property\n // which makes the computed property to re-render when uiLanguage changes.\n this.uiLanguage;\n return fn(...arguments);\n };\n }\n return mixin;\n};\n","import { mapState } from 'vuex';\n\nexport default {\n props: {\n showThumbnail: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n ...mapState(['cardViewMode', 'crossOriginMedia', 'defaultThumbnailSize']),\n isList() {\n return this.data && !this.data.isItem() && this.cardViewMode === 'list';\n },\n hasImage() {\n return this.showThumbnail && this.thumbnail;\n },\n thumbnail() {\n if (this.data) {\n let thumbnails = this.data.getThumbnails(true, 'thumbnail');\n if (thumbnails.length > 0) {\n let t = thumbnails[0];\n let width, height;\n if (Array.isArray(t['proj:shape']) && t['proj:shape'].length === 2) {\n [height, width] = t['proj:shape'];\n }\n else if (Array.isArray(this.defaultThumbnailSize) && this.defaultThumbnailSize.length === 2) {\n [height, width] = this.defaultThumbnailSize;\n }\n return {\n src: t.href,\n alt: t.title,\n crossorigin: this.crossOriginMedia,\n right: this.isList,\n blankColor: \"rgba(0, 0, 0, 0.125)\",\n width,\n height,\n // for b-card-img-lazy\n \"blank-width\": width,\n \"blank-height\": height\n };\n }\n }\n return null;\n }\n }\n};","import Utils from '../../utils.js';\nimport STAC from '../../models/stac.js';\nimport Auth from '../../auth/index.js';\n\nexport default class AuthUtils {\n\n static resolveAuth(obj, context) {\n if (context instanceof STAC && Utils.size(obj['auth:refs']) > 0) {\n const scheme = context.getMetadata('auth:schemes');\n if (Utils.size(scheme) > 0) {\n return obj['auth:refs']\n .map(ref => scheme[ref])\n .filter(ref => Utils.isObject(ref));\n }\n }\n return [];\n }\n\n static isSupported(method, config) {\n if (method instanceof Auth) {\n method = method.options;\n }\n switch(method.type) {\n case 'http':\n return (method.schema === 'basic');\n case 'apiKey':\n return (method.in === 'header' || method.in === 'query');\n case 'openIdConnect':\n return (config.historyMode === 'history');\n default:\n return false;\n }\n }\n\n static convertLegacyAuthConfig(config) {\n if (!Utils.isObject(config) || config.type === null) {\n return null;\n }\n else if (config.type === 'query' || config.type === 'header') {\n // It is the old format\n return {\n type: 'apiKey',\n in: config.type,\n name: config.key,\n description: config.description,\n formatter: config.formatter\n };\n }\n else {\n // Is the new format from the authentication extension\n return config;\n }\n }\n\n}\n","let config;\nif (typeof CONFIG_PATH === 'undefined') {\n config = require('../config');\n}\nelse {\n config = require(CONFIG_PATH);\n}\n\nexport default Object.assign(config, CONFIG_CLI, window.STAC_BROWSER_CONFIG);","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport CONFIG from './config';\nimport { default as Fields } from '@radiantearth/stac-fields/I18N';\nimport Utils from './utils';\n\nVue.use(VueI18n);\n\nexport const API_LANGUAGE_CONFORMANCE = ['https://api.stacspec.org/v1.*/language'];\n\nconst LOCALE_CONFIG = {};\n\nfunction loadLocaleConfig() {\n // Load locale config\n for (let locale of CONFIG.supportedLocales) {\n LOCALE_CONFIG[locale] = require(`./locales/${locale}/config.json`);\n }\n const messages = {};\n // Add language names all other languages\n for (let locale in LOCALE_CONFIG) {\n messages[locale] = {\n languages: LOCALE_CONFIG\n };\n }\n return messages;\n}\n\nconst i18n = new VueI18n({\n locale: CONFIG.locale,\n fallbackLocale: CONFIG.fallbackLocale,\n messages: loadLocaleConfig(),\n // Todo: Workaround for https://github.com/kazupon/vue-i18n/issues/563\n postTranslation: (value, path) => {\n if (value === \"\") {\n const parts = path.split('.');\n let message = i18n.messages[CONFIG.fallbackLocale];\n for (const key of parts) {\n if (key in message) {\n message = message[key];\n }\n else {\n return value;\n }\n }\n return message;\n }\n return value;\n }\n});\nexport default i18n;\n\nexport function loadDefaultMessages() {\n return Promise.all([\n loadMessages(CONFIG.locale),\n loadMessages(CONFIG.fallbackLocale)\n ]);\n}\n\nexport async function loadMessages(locale) {\n // Check whether the language has already been loaded\n // Note that a languages key is already present thus check >1 and not >0\n if (Utils.size(i18n.messages[locale]) > 1) {\n return;\n }\n const messages = (await import(`./locales/${locale}/default.js`)).default;\n i18n.mergeLocaleMessage(locale, messages);\n}\n\nexport async function executeCustomFunctions(locale) {\n const customizeFiles = LOCALE_CONFIG[locale].customize;\n if (Utils.size(LOCALE_CONFIG[locale].customize) === 0) {\n return;\n }\n const p = customizeFiles.map(async (file) => {\n const fn = (await import(`./locales/${locale}/${file}`)).default;\n return await fn(locale);\n });\n return Promise.all(p);\n}\n\nexport function translateFields(value, vars = null) {\n if (typeof value !== 'string' || value.length === 0) {\n return value;\n }\n let key = `fields.${value}`;\n if (i18n.te(key)) {\n return i18n.t(key, null, vars);\n }\n return Fields.format(value, vars);\n}\n","// This code is based on https://github.com/cherry-projects/locale-id\n// Due to the \"heavy\" dependencies, it has been slimmed down\n\n// http://userguide.icu-project.org/locale\nexport default function parse(locale) {\n if (!locale) {\n return undefined;\n }\n\n // extract keyword\n const stringLocale = String(locale);\n const keywordPos = stringLocale.indexOf('@');\n\n const keyword = keywordPos !== -1\n ? stringLocale.substr(keywordPos + 1)\n : undefined;\n\n const localeWithoutKeyword = keywordPos !== -1\n ? stringLocale.substr(0, keywordPos)\n : stringLocale;\n\n // en-us => en_us\n const parts = String(localeWithoutKeyword)\n .replace(/-/g, '_')\n .split('_');\n\n if (!parts.length || parts.length > 4) {\n return undefined;\n }\n\n const language = parts.shift();\n if (!language) {\n return undefined;\n }\n\n const retVar = {\n keyword,\n language: language.toLowerCase(),\n };\n\n if (!parts.length) {\n return retVar;\n }\n\n if (parts.length === 3) {\n const variant = parts.pop();\n if (variant) {\n retVar.variant = variant.toUpperCase();\n }\n }\n\n let country = parts.pop();\n if (country.length > 3) {\n retVar.keyword = country;\n\n country = parts.pop();\n }\n\n if (country) {\n retVar.country = country.toUpperCase();\n }\n\n if (!parts.length) {\n return retVar;\n }\n\n const script = parts.pop();\n if (typeof script === 'string' && script.length >= 1) {\n retVar.script = script[0].toUpperCase() + script.substring(1).toLowerCase();\n }\n\n return retVar;\n}\n\nexport function normalize(locale, delimeter = '_') {\n const obj = parse(locale);\n if (!obj) {\n return obj;\n }\n\n let result = obj.language;\n\n if (obj.script) {\n result += `${delimeter}${obj.script}`;\n }\n\n if (obj.country) {\n result += `${delimeter}${obj.country}`;\n }\n\n return result;\n}\n\nconst splitAcceptLanguageRegEx = /([a-z]{1,8}(-[a-z]{1,8})?)\\s*(;\\s*q\\s*=\\s*(1|0\\.[0-9]+))?/ig;\nconst acceptLanguageItemRegEx = /^([a-z]{1,8}(-[a-z]{1,8})?)/i;\n\nexport function normalizeAcceptLanguage(acceptLanguage) {\n const returnItems = [];\n if (!acceptLanguage) {\n return returnItems;\n }\n\n const items = acceptLanguage.match(splitAcceptLanguageRegEx) || [];\n items.forEach(acceptLanguageItem => {\n const matches = acceptLanguageItem.match(acceptLanguageItemRegEx) || [];\n const locale = normalize(matches[0]);\n if (locale) {\n returnItems.push(locale);\n }\n });\n\n return returnItems;\n}\n\nexport function prepareSupported(supported) {\n const lgs = {};\n\n supported.forEach(supportedLocale => {\n const { language, country } = parse(supportedLocale);\n if (!language) {\n throw new Error(`Locale ${supportedLocale} is not parsable`);\n }\n\n if (!lgs[language]) {\n lgs[language] = {\n countries: {},\n firstCountry: undefined,\n main: undefined,\n };\n }\n\n const lg = lgs[language];\n if (country) {\n lg.countries[country] = supportedLocale;\n\n if (!lg.firstCountry) {\n lg.firstCountry = supportedLocale;\n }\n } else {\n lg.main = supportedLocale;\n }\n });\n\n return lgs;\n}\n\nexport function getBest(supported, locale, defaultLocale, getAnyCountry) {\n const lgs = Array.isArray(supported) ? prepareSupported(supported) : supported;\n\n // return defaultLocale if current locale is undefined\n if (!locale && defaultLocale) {\n return getBest(supported, defaultLocale, undefined, getAnyCountry);\n }\n\n if (!locale) {\n return undefined;\n }\n\n const { language, country } = parse(locale);\n if (!language) {\n return defaultLocale;\n }\n\n // selected locale is not supported\n if (!lgs[language]) {\n if (locale === defaultLocale) {\n return undefined;\n }\n\n return getBest(supported, defaultLocale, null, getAnyCountry);\n }\n\n const { countries, main = defaultLocale, firstCountry } = lgs[language];\n if (!countries || !country) {\n if (getAnyCountry && firstCountry) {\n return firstCountry;\n }\n\n return main;\n }\n\n if (getAnyCountry && firstCountry) {\n return countries[country] ? countries[country] : firstCountry;\n }\n\n return countries[country] ? countries[country] : main;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-container',{attrs:{\"id\":\"stac-browser\"}},[(_vm.showLogin)?_c('Authentication'):_vm._e(),(_vm.globalError)?_c('ErrorAlert',_vm._b({staticClass:\"global-error\",attrs:{\"dismissible\":\"\"},on:{\"close\":_vm.hideError}},'ErrorAlert',_vm.globalError,false)):_vm._e(),(_vm.sidebar)?_c('Sidebar'):_vm._e(),_c('header',[_c('div',{staticClass:\"logo\"},[_vm._v(_vm._s(_vm.displayCatalogTitle))]),_c('StacHeader',{on:{\"enableSidebar\":function($event){_vm.sidebar = true}}})],1),_c('router-view'),_c('footer',[_c('i18n',{staticClass:\"poweredby text-muted\",attrs:{\"tag\":\"small\",\"path\":\"poweredBy\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":\"https://github.com/radiantearth/stac-browser\",\"target\":\"_blank\"}},[_vm._v(\"STAC Browser\")]),_vm._v(\" \"+_vm._s(_vm.browserVersion)+\" \")]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('main',{staticClass:\"browse d-flex flex-column\"},[(!_vm.allowExternalAccess && _vm.isExternal)?_c('b-alert',{attrs:{\"show\":\"\"}},[_vm._v(_vm._s(_vm.$t('errors.noExternalAccess')))]):(_vm.error)?_c('ErrorAlert',{attrs:{\"url\":_vm.url,\"description\":_vm.errorDescription,\"id\":_vm.errorId}}):(_vm.loading)?_c('Loading',{attrs:{\"stretch\":\"\"}}):_c(_vm.component,{tag:\"component\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,staticClass:\"item\"},[_c('b-row',[_c('b-col',{staticClass:\"left\"},[_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"card\":\"\",\"pills\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.selectedAsset,\"scrollWheelZoom\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1),(_vm.thumbnails.length > 0)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.additionalLinks.length > 0)?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks,\"context\":_vm.data}}):_vm._e()],1),_c('b-col',{staticClass:\"right\"},[_c('section',{staticClass:\"intro\"},[(_vm.data.properties.description)?_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]):_vm._e(),(_vm.data.properties.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data.properties['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data.properties['anon:warning']}}):_vm._e(),(_vm.data.properties.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.properties.description}})],1):_vm._e(),(Array.isArray(_vm.data.properties.keywords) && _vm.data.properties.keywords.length > 0)?_c('Keywords',{staticClass:\"mb-3\",attrs:{\"keywords\":_vm.data.properties.keywords}}):_vm._e()],1),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.data.properties.providers)?_c('Providers',{attrs:{\"providers\":_vm.data.properties.providers}}):_vm._e(),_c('Metadata',{attrs:{\"data\":_vm.data,\"type\":\"Item\",\"ignoreFields\":_vm.ignoredMetadataFields}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Utils from '../utils';\nimport { mapGetters } from 'vuex';\n\nexport default {\n data() {\n return {\n shownAssetsOnMap: [],\n shownBandsOnMap: [],\n tab: null,\n selectedAsset: null,\n selectedAssetKey: null\n };\n },\n computed: {\n ...mapGetters(['thumbnails', 'hasAssets', 'assets']),\n shownAssets() {\n if (this.tab === 0) {\n return this.shownAssetsOnMap;\n }\n else if (this.tab === 1 || (this.tab === null && this.thumbnails.length > 0)) {\n let keys = [];\n let thumbnailRefs = this.thumbnails.map(t => t.href);\n for(let key in this.assets) {\n let asset = this.assets[key];\n if (thumbnailRefs.includes(asset.href)) {\n keys.push(key);\n }\n }\n return keys;\n }\n return [];\n }\n },\n methods: {\n showAsset(asset, id, isThumbnail) {\n if (isThumbnail) {\n this.tab = 1;\n }\n else {\n this.tab = 0;\n this.selectedAsset = asset;\n this.selectedAssetKey = id;\n }\n if (this.$refs.tabs) {\n Utils.scrollTo(this.$refs.tabs.$el);\n }\n },\n dataChanged(data) {\n if (!Utils.isObject(data)) {\n this.shownBandsOnMap = [];\n this.shownAssetsOnMap = [];\n }\n else if (data.assets || data.bands) {\n if (Utils.size(data.assets) > 0) {\n if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n else {\n this.shownAssetsOnMap = data.assets.map(meta => meta.key);\n }\n }\n if (Utils.size(data.bands) > 0) {\n this.shownBandsOnMap = data.bands;\n }\n }\n else if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n }\n }\n};\n","import Utils from './utils';\nimport STAC from './models/stac';\nimport URI from 'urijs';\nimport i18n from './i18n';\n\nfunction toBrowserUrl(url, store) {\n let path = store.getters.toBrowserPath(url);\n let uri = URI(window.location.origin.toString());\n if (store.state.historyMode === 'hash') {\n uri.path(store.state.pathPrefix);\n uri.fragment(path);\n }\n else {\n uri.path(Utils.removeTrailingSlash(store.state.pathPrefix) + path);\n }\n return uri.toString();\n}\n\nfunction addSpatialCoverage(schema, bbox) {\n if (Array.isArray(bbox) && bbox.length >= 4) {\n schema.spatialCoverage = {\n \"@type\": \"Place\",\n geo: {\n \"@type\": \"GeoShape\",\n box: (bbox || []).join(\" \")\n }\n };\n }\n}\n\nfunction formatTemporalCoverage(dates) {\n if (Array.isArray(dates) && dates.length === 2 && (typeof dates[0] === 'string' || typeof dates[1] === 'string')) {\n return dates.map(dt => dt ? dt : '..').join('/');\n }\n return null;\n}\n\nfunction makeAssets(data) {\n if (Utils.size(data.assets) > 0) {\n return Object.values(data.assets).map(a => ({\n \"@type\": \"DataDownload\",\n contentUrl: Utils.toAbsolute(a.href, data.getAbsoluteUrl()),\n encodingFormat: a.type,\n name: a.title\n }));\n }\n return [];\n}\n\nfunction makeLinks(links, data, store, type = \"DataCatalog\") {\n return links.map(link => {\n let name, isBasedOn;\n if (link instanceof STAC) {\n name = STAC.getDisplayTitle(link);\n isBasedOn = link.getAbsoluteUrl();\n }\n else {\n name = link.title;\n isBasedOn = Utils.toAbsolute(link.href, data.getAbsoluteUrl());\n }\n let obj = {\n \"@type\": type,\n name,\n url: toBrowserUrl(isBasedOn, store),\n isBasedOn\n };\n if (type === 'Dataset') {\n obj.description = fallbackDescription(link, store);\n }\n return obj;\n });\n}\n\nfunction makeProvider(providers, role) {\n return providers\n .filter(p => Utils.isObject(p) && Array.isArray(p.roles) && p.roles.includes(role))\n .map(p => ({\n \"@type\": \"Organization\",\n \"name\": p.name,\n \"description\": p.description,\n \"url\": p.url,\n \"email\": p.email || p.mail,\n }));\n}\n\nfunction fallbackDescription(data, store) {\n let stacType, container;\n if (data instanceof STAC) {\n stacType = data.isItem() ? \"Item\" : data.type;\n container = data.collection;\n }\n else if (Utils.isObject(data) && data.rel === 'item') {\n stacType = \"Item\";\n }\n if (stacType) {\n let type = i18n.tc(`stac${stacType}`);\n let inX = i18n.t('in', {catalog: container || store.catalogTitle});\n return `SpatioTemporal Asset Catalog (STAC)\\n${type} - ${data.id} ${inX}`;\n }\n}\n\nfunction createBaseSchema(data, type, store) {\n let name = STAC.getDisplayTitle(data);\n let stacUrl = data.getAbsoluteUrl();\n let url = toBrowserUrl(stacUrl, store);\n let inLanguage = data.getMetadata('language')?.code;\n let thumbnails = data.getThumbnails(true);\n let thumbnailUrl;\n if (thumbnails.length > 0) {\n thumbnailUrl = Utils.toAbsolute(thumbnails[0].href, data.getAbsoluteUrl());\n }\n let license = data.getMetadata('license');\n if (license && license !== 'proprietary' && license !== 'various' && license !== 'other') {\n license = `https://spdx.org/licenses/${license}.html`;\n }\n else {\n license = data.getLinkWithRel('license')?.href;\n }\n if (license) {\n license = Utils.toAbsolute(license, data.getAbsoluteUrl());\n }\n\n let providers = data.getMetadata('providers');\n let copyrightHolder; // licensor\n let producer; // producer\n let provider; // host\n let creator; // processor\n if (Utils.size(providers) > 0) {\n copyrightHolder = makeProvider(providers, \"licensor\");\n producer = makeProvider(providers, \"producer\");\n provider = makeProvider(providers, \"host\");\n creator = makeProvider(providers, \"processor\");\n }\n\n return {\n \"@context\": \"https://schema.org/\",\n \"@type\": type,\n name,\n description: data.getMetadata(\"description\") || fallbackDescription(data, store),\n citation: data.getMetadata(\"sci:citation\"),\n identifier: data.getMetadata(\"sci:doi\") || data.id,\n keywords: data.getMetadata(\"keywords\"),\n license,\n url,\n isBasedOn: stacUrl,\n dateCreated: data.getMetadata('created'),\n dateModified: data.getMetadata('updated'),\n datePublished: data.getMetadata('published'),\n expires: data.getMetadata('expires'),\n inLanguage,\n thumbnailUrl,\n version: data.getMetadata('version'),\n image: thumbnailUrl,\n copyrightHolder,\n producer,\n provider,\n creator\n };\n}\n\nexport function createCatalogSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n // Remove invalid links\n parents = parents.filter(link => Utils.isObject(link));\n if (parents.length > 1) {\n // Remove duplicates\n parents = parents.filter((link, i) => parents.findIndex(p => p.isBasedOn === link.isBasedOn) !== i);\n }\n\n let schema = createBaseSchema(data, 'DataCatalog', store);\n\n if (data.isCollection()) {\n if (data.extent?.temporal?.interval.length > 0) {\n schema.temporalCoverage = formatTemporalCoverage(data.extent.temporal.interval[0]);\n }\n\n if (data.extent?.spatial?.bbox.length > 0) {\n addSpatialCoverage(schema, data.extent.spatial.bbox[0]);\n }\n schema.associatedMedia = makeAssets(data);\n }\n\n schema.hasPart = makeLinks(store.getters.catalogs, data, store);\n schema.dataset = makeLinks(store.getters.items, data, store, \"Dataset\");\n schema.isPartOf = makeLinks(parents, data, store);\n\n return schema;\n}\n\nexport function createItemSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n parents = parents.filter(link => Utils.isObject(link));\n\n let schema = createBaseSchema(data, 'Dataset', store);\n\n schema.includedInDataCatalog = makeLinks(parents, data, store);\n\n let start = data.getMetadata('start_datetime');\n let end = data.getMetadata('end_datetime');\n if (start || end) {\n schema.temporalCoverage = formatTemporalCoverage([start, end]);\n }\n else {\n schema.temporalCoverage = data.getMetadata('datetime');\n }\n\n addSpatialCoverage(schema, data.bbox);\n schema.distribution = makeAssets(data);\n\n return schema;\n}\n\nexport function addSchemaToDocument(doc, schema) {\n let id = 'schema-org';\n let element = doc.getElementById(id);\n if (!element) {\n element = doc.createElement('script');\n element.type = 'application/ld+json';\n element.id = id;\n doc.head.appendChild(element);\n }\n element.innerText = JSON.stringify(schema);\n}\n","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=5a87283c\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=5a87283c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,class:{cc: true, [_vm.data.type.toLowerCase()]: true, mixed: _vm.hasCatalogs && _vm.hasItems, empty: !_vm.hasCatalogs && !_vm.hasItems}},[_c('b-row',[_c('b-col',{staticClass:\"meta\"},[_c('section',{staticClass:\"intro\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]),(_vm.data.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data['anon:warning']}}):_vm._e(),(_vm.data.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.description}})],1):_vm._e(),(Array.isArray(_vm.data.keywords) && _vm.data.keywords.length > 0)?_c('Keywords',{staticClass:\"mb-3\",attrs:{\"keywords\":_vm.data.keywords}}):_vm._e(),(_vm.isCollection)?_c('section',{staticClass:\"metadata mb-4\"},[(_vm.licenses)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.license')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.licenses)}})])],1):_vm._e(),(_vm.temporalExtents)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.temporalExtent')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.temporalExtents)}})])],1):_vm._e()],1):_vm._e(),(_vm.linkPosition === 'left')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks,\"context\":_vm.data}}):_vm._e()],1),(_vm.isCollection || _vm.hasThumbnails)?_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"pills\":\"\",\"card\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[(_vm.isCollection)?_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.mapData,\"fitBoundsOnce\":\"\",\"popover\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1):_vm._e(),(_vm.hasThumbnails)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1):_vm._e(),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.hasItemAssets && !_vm.hasItems)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"context\":_vm.data,\"definition\":true}}):_vm._e(),(_vm.providers)?_c('Providers',{attrs:{\"providers\":_vm.providers}}):_vm._e(),_c('Metadata',{staticClass:\"mb-4\",attrs:{\"type\":_vm.data.type,\"data\":_vm.data,\"ignoreFields\":_vm.ignoredMetadataFields}}),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.linkPosition === 'right')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks,\"context\":_vm.data}}):_vm._e()],1),(_vm.hasCatalogs)?_c('b-col',{staticClass:\"catalogs-container\"},[_c('Catalogs',{attrs:{\"catalogs\":_vm.catalogs,\"hasMore\":!!_vm.nextCollectionsLink},on:{\"loadMore\":_vm.loadMoreCollections}})],1):_vm._e(),(_vm.hasItems)?_c('b-col',{staticClass:\"items-container\"},[_c('Items',{attrs:{\"stac\":_vm.data,\"items\":_vm.items,\"api\":_vm.isApi,\"showFilters\":_vm.showFilters,\"apiFilters\":_vm.filters,\"pagination\":_vm.itemPages,\"loading\":_vm.apiItemsLoading},on:{\"paginate\":_vm.paginateItems,\"filterItems\":_vm.filterItems,\"filtersShown\":_vm.filtersShown}}),(_vm.hasItemAssets)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"context\":_vm.data,\"definition\":true}}):_vm._e()],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=1256854c\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=1256854c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Browse.vue?vue&type=template&id=21cc23bf\"\nimport script from \"./Browse.vue?vue&type=script&lang=js\"\nexport * from \"./Browse.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","import Browse from '../views/Browse.vue';\n\nfunction getPath(route, config) {\n let path = route.params.pathMatch;\n if (config.allowExternalAccess && path.startsWith(\"external/\")) {\n path = '/' + path;\n }\n return {path};\n}\n\nfunction getRoutes(config) {\n let routes = [];\n\n if (!config.catalogUrl) {\n routes.push({\n path: \"/\",\n name: \"select\",\n component: () => import(\"../views/SelectDataSource.vue\")\n });\n routes.push({\n path: \"/search/external/(.*)\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\"),\n props: route => {\n return {\n loadParent: `/external/${route.params.pathMatch}`\n };\n }\n });\n }\n else {\n routes.push({\n path: \"/search\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\")\n });\n }\n\n routes.push({\n path: '/auth/logout',\n name: \"logout\",\n component: () => import(\"../views/Logout.vue\")\n });\n routes.push({\n path: '/auth',\n component: () => import(\"../views/LoginCallback.vue\")\n });\n\n routes.push({\n path: \"/validation/(.*)\",\n name: \"validation\",\n component: () => import(\"../views/Validation.vue\"),\n props: route => getPath(route, config)\n });\n\n routes.push({\n path: \"/(.*)\",\n name: \"browse\",\n component: Browse,\n props: route => getPath(route, config)\n });\n\n return routes;\n}\n\nexport default getRoutes;\n","import Auth from '../auth';\nimport i18n from '../i18n';\nimport AuthUtils from '../components/auth/utils';\nimport BrowserStorage, { Cookies } from '../browser-store';\n\nconst handleAuthError = async (cx, error) => {\n cx.commit('showGlobalError', {\n error,\n message: i18n.t('errors.authFailed')\n }, { root: true });\n await cx.dispatch('updateCredentials');\n};\n\nexport default function getStore(router) {\n return {\n namespaced: true,\n state: {\n // Wrap in a function and use the getter instead of the state\n // Unfortunately, some auth libraries have internal state, which vuex doesn't like\n // and thus reports: \"do not mutate vuex store state outside mutation handlers.\"\n method: () => new Auth(),\n actions: [],\n credentials: null,\n inProgress: false\n },\n getters: {\n method(state) {\n return state.method();\n },\n canAuthenticate(state, getters, rootState) {\n return AuthUtils.isSupported(getters.method, rootState);\n },\n isLoggedIn(state) {\n return state.credentials !== null;\n },\n showLogin(state, getters) {\n return !getters.isLoggedIn && state.inProgress;\n }\n },\n mutations: {\n setCredentials(state, credentials) {\n state.credentials = credentials; // e.g. Username + Password or a Bearer Token\n },\n setMethod(state, method) {\n state.method = () => method;\n },\n addAction(state, callback) {\n state.actions.push(callback);\n },\n resetActions(state) {\n state.actions = [];\n },\n setInProgress(state, inProgress = true) {\n state.inProgress = inProgress;\n }\n },\n actions: {\n async waitForAuth(cx) {\n if (Auth.equals(cx.getters.method, cx.rootState.authConfig)) {\n return;\n }\n await cx.dispatch('updateMethod', cx.rootState.authConfig);\n },\n async updateMethod(cx, config) {\n config = AuthUtils.convertLegacyAuthConfig(config);\n await cx.getters.method.close();\n\n const changeListener = async (isLoggedIn, credentials) => {\n if (!isLoggedIn) {\n credentials = null;\n }\n await cx.dispatch('updateCredentials', credentials);\n if (isLoggedIn) {\n await cx.dispatch('executeActions');\n }\n else {\n cx.commit('resetActions');\n }\n };\n \n const storage = new BrowserStorage(true);\n storage.set('authConfig', config);\n\n const newAuth = await Auth.create(config, changeListener, router);\n cx.commit('setMethod', newAuth);\n },\n async requestLogin(cx) {\n if (cx.getters.isLoggedIn) {\n return;\n }\n cx.commit('setInProgress');\n try {\n await cx.getters.method.login();\n } catch(error) {\n handleAuthError(cx, error);\n }\n },\n async finalizeLogin(cx, credentials = null) {\n cx.commit('setInProgress', false);\n try {\n await cx.getters.method.confirmLogin(credentials);\n } catch(error) {\n handleAuthError(cx, error);\n }\n },\n async abortLogin(cx) {\n cx.commit('setInProgress', false);\n },\n async requestLogout(cx) {\n if (!cx.getters.isLoggedIn) {\n return;\n }\n cx.commit('setInProgress');\n await cx.getters.method.logout();\n },\n async finalizeLogout(cx) {\n cx.commit('setInProgress', false);\n try {\n await cx.getters.method.confirmLogout();\n } catch(error) {\n handleAuthError(cx, error);\n }\n },\n // Format the value and add it to query parameters or headers\n async updateCredentials(cx, value = null) {\n cx.commit('setCredentials', value);\n const intent = cx.getters.method.updateStore(value);\n if (intent.query) {\n cx.commit('setQueryParameter', intent.query, { root: true });\n }\n else if (intent.header) {\n cx.commit('setRequestHeader', intent.header, { root: true });\n }\n else if (intent.cookie) {\n const cookie = new Cookies(true);\n cookie.setItem(intent.cookie.key, intent.cookie.value);\n }\n },\n async executeActions(cx) {\n for (let callback of cx.state.actions) {\n try {\n const p = callback();\n if (p instanceof Promise) {\n p.catch(error => handleAuthError(cx, error));\n }\n } catch (error) {\n handleAuthError(cx, error);\n }\n }\n cx.commit('resetActions');\n }\n }\n };\n}\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport URI from \"urijs\";\n\nimport i18n from '../i18n';\nimport { stacBrowserSpecialHandling } from \"../rels\";\nimport Utils, { BrowserError } from '../utils';\nimport STAC from '../models/stac';\n\nimport auth from './auth.js';\nimport { addQueryIfNotExists, isAuthenticationError, Loading, processSTAC, proxyUrl, unproxyUrl, stacRequest } from './utils';\nimport { getBest } from '../locale-id';\nimport I18N from '@radiantearth/stac-fields/I18N';\nimport { translateFields, executeCustomFunctions, loadMessages } from '../i18n';\nimport { TYPES } from \"../components/ApiCapabilitiesMixin\";\nimport BrowserStorage from \"../browser-store.js\";\n\nfunction getStore(config, router) {\n // Local settings (e.g. for currently loaded STAC entity)\n const localDefaults = () => ({\n url: '',\n title: config.catalogTitle,\n description: null,\n data: null,\n parents: null,\n globalError: null,\n\n localRequestQueryParameters: {},\n stateQueryParameters: {\n language: null,\n asset: [],\n itemdef: []\n },\n\n apiItems: [],\n apiItemsLink: null,\n apiItemsPagination: {}\n });\n\n const catalogDefaults = () => ({\n queue: [],\n privateQueryParameters: {},\n authActions: [],\n conformsTo: [],\n dataLanguage: null,\n dataLanguages: [],\n\n apiCollections: [],\n apiItemsLoading: {},\n nextCollectionsLink: null\n });\n\n return new Vuex.Store({\n strict: process.env.NODE_ENV !== 'production',\n modules: {\n auth: auth(router)\n },\n state: Object.assign({}, config, localDefaults(), catalogDefaults(), {\n // Global settings\n database: {}, // STAC object, Error object or Loading object or Promise (when loading)\n allowSelectCatalog: !config.catalogUrl,\n globalRequestQueryParameters: config.requestQueryParameters,\n uiLanguage: config.locale\n }),\n getters: {\n loading: state => !state.url || !state.data || state.database[state.url] instanceof Loading,\n getApiItemsLoading: state => data => {\n let id = '';\n if (data instanceof Loading) {\n return true;\n }\n else if (data instanceof STAC) {\n id = data.id;\n }\n else if (typeof data === 'string') {\n id = data;\n }\n return state.apiItemsLoading[id] || false;\n },\n error: state => state.database[state.url] instanceof Error ? state.database[state.url] : null,\n getStac: state => (source, returnErrorObject = false) => {\n if (source instanceof STAC) {\n return source;\n }\n if (Utils.isObject(source) && Utils.hasText(source.href)) {\n source = source.href;\n }\n if (!Utils.hasText(source)) {\n return null;\n }\n let absoluteUrl = Utils.toAbsolute(source, state.url);\n let data = state.database[absoluteUrl];\n if (data instanceof STAC || (returnErrorObject && data instanceof Error)) {\n return data;\n }\n else {\n return null;\n }\n },\n\n displayCatalogTitle: (state, getters) => STAC.getDisplayTitle(getters.root, state.catalogTitle),\n\n isCollection: state => state.data?.isCollection() || false,\n isCatalog: state => state.data?.isCatalog() || false,\n isCatalogLike: state => state.data?.isCatalogLike() || false,\n isItem: state => state.data?.isItem() || false,\n\n root: (_, getters) => getters.getStac(getters.rootLink),\n\n rootLink: state => {\n let link = state.data?.getStacLinkWithRel('root');\n if (link) {\n return link;\n }\n else if (state.catalogUrl) {\n return Utils.createLink(state.catalogUrl, 'root');\n }\n else if (state.url && state.data instanceof STAC && state.data.getLinksWithRels(['conformance', 'service-desc', 'service-doc', 'data', 'search']).length > 0) {\n return Utils.createLink(state.url, 'root');\n }\n else if (state.url) {\n // Fallback: If we detect OGC API like paths, try to guess the paths\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n if (path === 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n }\n return Utils.createLink(uri.toString(), 'root');\n }\n }\n return null;\n },\n parentLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data.getStacLinkWithRel('parent');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'parent');\n }\n }\n\n return null;\n },\n collectionLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data?.getStacLinkWithRel('collection');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (path == 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'collection');\n }\n }\n\n return null;\n },\n supportsConformance: state => classes => {\n if(!Array.isArray(classes)) {\n return classes;\n }\n let classRegexp = classes\n .map(c => c.replaceAll('*', '[^/]+').replace(/\\/?#/, '/?#'))\n .join('|');\n let regexp = new RegExp('^(' + classRegexp + ')$');\n return Boolean(state.conformsTo.find(uri => uri.match(regexp)));\n },\n supportsExtension: state => schemaUri => {\n return Utils.supportsExtension(state.data, schemaUri);\n },\n\n canSearch: (state, getters) => {\n return getters.canSearchCollections || getters.canSearchItems;\n },\n canSearchItems: (state, getters) => {\n return getters.supportsConformance(TYPES.Items.BasicFilters);\n },\n canSearchCollections: (state, getters) => {\n return getters.supportsConformance(TYPES.Collections.BasicFilters);\n },\n\n items: state => {\n if (state.apiItems.length > 0) {\n return state.apiItems;\n }\n else if (state.data) {\n return state.data.getStacLinksWithRel('item');\n }\n return [];\n },\n catalogs: state => {\n let hasCollections = Boolean(state.data instanceof STAC && state.data.getApiCollectionsLink() && state.apiCollections.length > 0);\n let hasChilds = Boolean(state.data instanceof STAC);\n let showCollections = !state.apiCatalogPriority || state.apiCatalogPriority === 'collections';\n let showChilds = !state.apiCatalogPriority || state.apiCatalogPriority === 'childs';\n let catalogs = [];\n if (hasCollections && showCollections) {\n catalogs = catalogs.concat(state.apiCollections);\n }\n if (hasChilds && showChilds) {\n catalogs = STAC.addMissingChildren(catalogs, state.data);\n }\n return catalogs;\n },\n\n // hasAsset also checks whether the assets have a href and thus are not item asset definitions\n hasAssets: (state, getters) => Boolean(Object.values(getters.assets).find(asset => Utils.isObject(asset) && typeof asset.href === 'string')),\n assets: (state, getters) => {\n if (!Utils.isObject(state.data?.assets)) {\n return {};\n }\n else if (state.showThumbnailsAsAssets) {\n return state.data.assets;\n }\n else {\n let assets = {};\n let thumbnails = getters.thumbnails;\n for (let key in state.data.assets) {\n let asset = state.data.assets[key];\n if (!thumbnails.includes(asset)) {\n assets[key] = asset;\n }\n }\n return assets;\n }\n },\n thumbnails: state => state.data ? state.data.getThumbnails(true) : [],\n additionalLinks: state => state.data ? state.data.getLinksWithOtherRels(stacBrowserSpecialHandling).filter(link => link.rel !== 'preview' || !Utils.canBrowserDisplayImage(link)) : [],\n\n toBrowserPath: (state, getters) => url => {\n if (!Utils.hasText(url)) {\n url = '/';\n }\n\n let absolute = Utils.toAbsolute(unproxyUrl(url, state.stacProxyUrl), state.url, false);\n let relative;\n if (!state.allowSelectCatalog && state.catalogUrl) {\n relative = absolute.relativeTo(state.catalogUrl);\n }\n\n if (typeof relative === 'undefined' || getters.isExternalUrl(absolute, false)) {\n if (!state.allowExternalAccess) {\n return absolute.toString();\n }\n let parts = ['/external'];\n let protocol = absolute.protocol();\n if (protocol !== 'https') {\n parts.push(protocol + ':');\n }\n parts.push(absolute.authority());\n parts.push(absolute.path().replace(/^\\//, ''));\n let path = parts.join('/');\n let q = absolute.query();\n if (q) {\n path += `?${q}`;\n }\n return path;\n }\n else {\n return '/' + relative.toString();\n }\n },\n fromBrowserPath: (state, getters) => url => {\n const externalRE = /^\\/(search\\/)?external\\//;\n if (!Utils.hasText(url) || url === '/') {\n url = state.catalogUrl;\n }\n else if (url.match(externalRE)) {\n let parts = url.replace(externalRE, '').split('/');\n let protocol;\n if (!parts[0].endsWith(':')) {\n protocol = 'https:';\n }\n else {\n protocol = parts.shift();\n }\n url = `${protocol}//${parts.join('/')}`;\n }\n else if (!state.allowSelectCatalog && state.catalogUrl) {\n url = Utils.toAbsolute(url, state.catalogUrl, false);\n }\n return getters.getRequestUrl(url, null, true);\n },\n isExternalUrl: state => (absoluteUrl, whitelist = true) => {\n if (!state.catalogUrl) {\n return false;\n }\n if (!(absoluteUrl instanceof URI)) {\n absoluteUrl = URI(absoluteUrl);\n }\n if (whitelist && Array.isArray(state.allowedDomains) && state.allowedDomains.includes(absoluteUrl.domain())) {\n return false;\n }\n let relative;\n if (absoluteUrl.is(\"relative\")) {\n relative = absoluteUrl;\n }\n else {\n relative = absoluteUrl.relativeTo(state.catalogUrl);\n if (relative.equals(absoluteUrl)) {\n return true;\n }\n }\n let relativeStr = relative.toString();\n return relativeStr.startsWith('//') || relativeStr.startsWith('../');\n },\n getRequestUrl: (state, getters) => (url, baseUrl = null, addLocalQueryParams = false) => {\n let absoluteUrl = Utils.toAbsolute(proxyUrl(url, state.stacProxyUrl), baseUrl ? baseUrl : state.url, false);\n if (!getters.isExternalUrl(absoluteUrl)) {\n // Check whether private params are present and add them if the URL is part of the catalog\n addQueryIfNotExists(absoluteUrl, state.privateQueryParameters);\n // Check if we need to add global request params\n addQueryIfNotExists(absoluteUrl, state.globalRequestQueryParameters);\n if (addLocalQueryParams) {\n // Check if we need to add local request params\n addQueryIfNotExists(absoluteUrl, state.localRequestQueryParameters);\n }\n }\n // If we are proxying a STAC Catalog, replace any URI with the proxied address.\n return absoluteUrl.toString();\n },\n\n acceptedLanguages: state => {\n const languages = {};\n // Implement in ascending order:\n languages['en'] = 0.1;\n if (Array.isArray(state.supportedLocales)) {\n state.supportedLocales.forEach(locale => languages[locale] = 0.2);\n }\n if (Utils.hasText(state.fallbackLocale)) {\n languages[state.fallbackLocale] = 0.5;\n }\n if (Array.isArray(navigator.languages)) {\n navigator.languages.forEach(locale => languages[locale] = 0.7);\n }\n if (Utils.hasText(state.locale)) {\n languages[state.locale] = 1;\n }\n return Object.entries(languages)\n .sort((a,b) => {\n if (a[1] > b[1]) {\n return -1;\n }\n else if (a[1] < b[1]) {\n return 1;\n }\n return 0;\n })\n .map(([l, q]) => q >= 1 ? l : `${l};q=${q}`)\n .join(',');\n }\n },\n mutations: {\n config(state, config) {\n // This should only be called from the config action\n for (let key in config) {\n let value = config[key];\n switch (key) {\n case 'catalogTitle':\n state.catalogTitle = value;\n break;\n case 'catalogUrl':\n if (typeof value === 'function') {\n state.catalogUrl = value();\n }\n else if (typeof value === 'string') {\n state.catalogUrl = value;\n }\n break;\n case 'crossOriginMedia':\n state.crossOriginMedia = ['anonymous', 'use-credentials'].includes(value) ? value : null;\n break;\n case 'cardViewSort':\n switch(value) {\n case 'asc':\n state.cardViewSort = 1;\n break;\n case 'desc':\n state.cardViewSort = -1;\n break;\n default:\n state.cardViewSort = 0;\n }\n break;\n default:\n state[key] = value;\n }\n }\n },\n languages(state, {uiLanguage, dataLanguage}) {\n state.dataLanguage = dataLanguage || null;\n state.uiLanguage = uiLanguage || null;\n },\n setQueryParameter(state, { type, key, value }) {\n type = `${type}QueryParameters`;\n if (typeof value === 'undefined') {\n Vue.delete(state[type], key);\n }\n else {\n Vue.set(state[type], key, value);\n }\n },\n setRequestHeader(state, { key, value }) {\n if (typeof value === 'undefined') {\n Vue.delete(state.requestHeaders, key);\n }\n else {\n Vue.set(state.requestHeaders, key, value);\n }\n },\n requestAuth(state, callback) {\n if (typeof callback === 'function') {\n state.doAuth.push(callback);\n }\n else {\n state.doAuth = [];\n }\n },\n setAuthData(state, value) {\n state.authData = value;\n },\n state(state, newState) {\n state.stateQueryParameters = newState;\n },\n updateState(state, {type, value}) {\n if (value === null || typeof value === 'undefined') {\n Vue.delete(state.stateQueryParameters, type);\n }\n else {\n Vue.set(state.stateQueryParameters, type, value);\n }\n },\n openCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n // need to prevent duplicates because of the way the collapse v-model works\n if (idx === -1) {\n state.stateQueryParameters[type].push(uid);\n }\n },\n closeCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n if (idx > -1) {\n Vue.delete(state.stateQueryParameters[type], idx);\n }\n },\n updateLoading(state, { url, show, loadApi }) {\n let data = state.database[url];\n Vue.set(data, 'show', show || data.show);\n Vue.set(data, 'loadApi', loadApi || data.loadApi);\n },\n loading(state, { url, loading }) {\n Vue.set(state.database, url, loading);\n if (loading.show) {\n state.url = url;\n }\n },\n loaded(state, { url, data }) {\n Vue.set(state.database, url, processSTAC(state, data));\n },\n clear(state, url) {\n Vue.delete(state.database, url);\n },\n resetCatalog(state, clearAll) {\n Object.assign(state, catalogDefaults());\n Object.assign(state, localDefaults());\n if (!state.supportedLocales.includes(state.locale)) {\n state.locale = config.locale;\n }\n if (clearAll) {\n state.catalogUrl = config.catalogUrl;\n state.catalogTitle = config.catalogTitle;\n state.database = {};\n }\n },\n resetPage(state) {\n Object.assign(state, localDefaults());\n },\n setPageMetadata(state, { title, description }) {\n state.title = title;\n if (typeof description !== 'undefined') {\n state.description = description;\n }\n },\n showPage(state, { url, title, description, stac }) {\n if (!stac) {\n stac = state.database[url] || null;\n }\n state.url = url || null;\n state.data = stac instanceof STAC ? stac : null;\n state.description = description;\n\n // Set title\n if (title) {\n state.title = title;\n }\n else {\n state.title = STAC.getDisplayTitle(state.data, state.catalogTitle);\n if (state.data) {\n let description = state.data.getMetadata('description');\n if (Utils.hasText(description)) {\n state.description = description;\n }\n }\n }\n\n if (state.data) {\n let source = state.data.isItem() ? state.data.properties : state.data;\n let languages = Array.isArray(source.languages) ? source.languages.slice() : [];\n if (Utils.isObject(source.language)) {\n languages.unshift(source.language);\n }\n state.dataLanguages = languages.filter(lang => Utils.isObject(lang) && typeof lang.code === 'string');\n }\n },\n errored(state, { url, error }) {\n if (!(error instanceof Error)) {\n error = new Error(error);\n }\n Vue.set(state.database, url, error);\n },\n queue(state, url) {\n state.queue.push(url);\n },\n unqueue(state, url) {\n let i = state.queue.indexOf(url);\n if (i !== -1) {\n state.queue.splice(i, 1);\n }\n },\n removeFromQueue(state, num) {\n state.queue.splice(0, num);\n },\n setConformanceClasses(state, classes) {\n if (Array.isArray(classes)) {\n state.conformsTo = classes;\n }\n },\n setApiItemsLink(state, link) {\n state.apiItemsLink = link;\n },\n toggleApiItemsLoading(state, collectionId = '') {\n if (state.apiItemsLoading[collectionId]) {\n Vue.delete(state.apiItemsLoading, collectionId);\n }\n else {\n Vue.set(state.apiItemsLoading, collectionId, true);\n }\n },\n setApiItems(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.features)) {\n return;\n }\n let apiItems = data.features.map(feature => processSTAC(state, feature));\n\n if (show) {\n state.apiItems = apiItems;\n }\n\n // Handle pagination links\n let pages = Utils.getPaginationLinks(data);\n\n if (show) {\n state.apiItemsPagination = pages;\n }\n\n if (stac instanceof STAC) {\n // ToDo: Prev link only required when state.apiItems is not cached(?) -> cache apiItems?\n stac.setApiData(apiItems, pages.next, pages.prev);\n }\n },\n addApiCollections(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.collections)) {\n return;\n }\n\n let collections = data.collections.map(collection => processSTAC(state, collection));\n let nextLink = Utils.getLinkWithRel(data.links, 'next');\n if (show) {\n state.nextCollectionsLink = nextLink;\n state.apiCollections = state.apiCollections.concat(collections);\n }\n if (stac instanceof STAC) {\n stac.setApiData(collections, nextLink);\n }\n },\n resetApiItems(state, link) {\n state.apiItems = [];\n state.apiItemsLink = link;\n state.apiItemsPagination = {};\n },\n parents(state, parents) {\n state.parents = parents;\n },\n showGlobalError(state, error) {\n if(error) {\n console.trace(error);\n }\n state.globalError = error;\n }\n },\n actions: {\n async config(cx, config) {\n cx.commit('config', config);\n // React on config changes\n for (let key in config) {\n let value = cx.state[key];\n switch (key) {\n case 'catalogUrl':\n if (value) {\n // Load the root catalog data if not available (e.g. after page refresh or external access)\n await cx.dispatch(\"load\", { url: value, loadApi: true });\n }\n break;\n case 'authConfig':\n await cx.dispatch('auth/updateMethod', value);\n break;\n }\n }\n },\n async switchLocale(cx, {locale, userSelected}) {\n await cx.dispatch('config', {locale});\n\n if (cx.state.storeLocale && userSelected) {\n const storage = new BrowserStorage();\n storage.set('locale', locale);\n }\n\n // Locale for UI\n let uiLanguage = getBest(cx.state.supportedLocales, locale, cx.state.fallbackLocale);\n // Locale for data\n let dataLanguageCodes = cx.state.dataLanguages.map(l => l.code);\n let dataLanguageFallback = cx.state.dataLanguages.length > 0 ? cx.state.dataLanguages[0].code : uiLanguage;\n let dataLanguage = getBest(dataLanguageCodes, locale, dataLanguageFallback);\n\n // Load messages\n await loadMessages(uiLanguage);\n\n // Update stac-fields\n I18N.setLocales([uiLanguage, cx.state.fallbackLocale]);\n I18N.setTranslator(translateFields);\n\n // Execute other custom functions required to localize\n await executeCustomFunctions(uiLanguage);\n\n cx.commit('languages', {dataLanguage, uiLanguage});\n cx.commit('setQueryParameter', { type: 'state', key: 'language', value: locale });\n },\n async loadBackground(cx, count) {\n let urls = cx.state.queue.slice(0, count);\n if (urls.length > 0) {\n let promises = [];\n for (let url of urls) {\n promises.push(cx.dispatch('load', { url }));\n }\n cx.commit('removeFromQueue', count);\n return await Promise.all(promises);\n }\n },\n async loadParents(cx) {\n if (!(cx.state.data instanceof STAC)) {\n cx.commit('parents', []);\n return;\n }\n\n let parents = [];\n let stac = cx.state.data;\n while (stac) {\n let parentLink = stac.getLinkWithRel('parent') || stac.getLinkWithRel('root');\n if (!parentLink) {\n break;\n }\n let url = Utils.toAbsolute(parentLink.href, stac.getAbsoluteUrl());\n await cx.dispatch('load', { url, loadApi: true });\n let parentStac = cx.getters.getStac(url, true);\n if (parentStac instanceof Error) {\n cx.commit('parents', parentStac);\n return;\n }\n if (parentStac === stac) {\n break;\n }\n parents.push(parentStac);\n stac = parentStac;\n }\n cx.commit('parents', parents);\n },\n async tryLogin(cx, {url, action}) {\n cx.commit('clear', url);\n cx.commit('errored', { url, error: new BrowserError(i18n.t('authentication.unauthorized')) });\n if (action) {\n cx.commit('auth/addAction', action);\n }\n await cx.dispatch('auth/requestLogin');\n },\n async load(cx, args) {\n let { url, show, loadApi, loadRoot, force, noRetry } = args;\n\n let path = cx.getters.toBrowserPath(url);\n url = Utils.toAbsolute(url, cx.state.url);\n\n // Make sure we have all authentication details\n await cx.dispatch(\"auth/waitForAuth\");\n\n // Load the root catalog data if not available (e.g. after page refresh or external access)\n if (!loadRoot && path !== '/' && cx.state.catalogUrl && !cx.getters.getStac(cx.state.catalogUrl)) {\n await cx.dispatch(\"load\", { url: cx.state.catalogUrl, loadApi: true, loadRoot: true });\n }\n\n if (force) {\n cx.commit('clear', url);\n }\n\n let loading = new Loading(show, loadApi);\n let data = cx.state.database[url];\n if (data instanceof Loading) {\n cx.commit('updateLoading', { url, show, loadApi });\n return;\n }\n else if (!data || data instanceof Error || (data instanceof STAC && data.isPotentiallyIncomplete())) {\n cx.commit('loading', { url, loading });\n try {\n let response = await stacRequest(cx, url);\n if (!Utils.isObject(response.data)) {\n throw new BrowserError(i18n.t('errors.invalidJsonObject'));\n }\n data = new STAC(response.data, url, path);\n cx.commit('loaded', { url, data });\n\n if (show) {\n // If we prefer another language abort redirect to the new language\n let localeLink = data.getLocaleLink(cx.state.dataLanguage);\n if (localeLink) {\n router.replace(cx.getters.toBrowserPath(localeLink.href));\n return;\n }\n }\n\n if (!cx.getters.root) {\n let root = data.getLinkWithRel('root');\n if (root) {\n await cx.dispatch('config', { catalogUrl: Utils.toAbsolute(root.href, url) });\n }\n }\n\n let conformanceLink = data.getStacLinkWithRel('conformance');\n if (Array.isArray(data.conformsTo) && data.conformsTo.length > 0) {\n cx.commit('setConformanceClasses', data.conformsTo);\n }\n else if (conformanceLink) {\n await cx.dispatch('loadOgcApiConformance', conformanceLink);\n }\n } catch (error) {\n if (!noRetry && cx.state.authConfig && isAuthenticationError(error)) {\n await cx.dispatch('tryLogin', {\n url,\n action: () => cx.dispatch('load', Object.assign({noRetry: true, force: true, show: true}, args))\n });\n return;\n }\n console.error(error);\n cx.commit('errored', { url, error });\n }\n }\n\n if (loading.loadApi && data instanceof STAC) {\n // Load API Collections\n if (data.getApiCollectionsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadNextApiCollections', args);\n } catch (error) {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiCollectionsFailed'),\n error\n });\n }\n }\n // Load API Items\n if (data.getApiItemsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadApiItems', args);\n } catch (error) {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiItemsFailed'),\n error\n });\n }\n }\n }\n\n if (loading.show) {\n cx.commit('showPage', { url });\n }\n },\n async loadApiItems(cx, args) {\n let { link, stac, show, filters, noRetry } = args;\n let collectionId = stac instanceof STAC ? stac.id : '';\n cx.commit('toggleApiItemsLoading', collectionId);\n\n try {\n let baseUrl = cx.state.url;\n if (stac instanceof STAC) {\n link = stac.getApiItemsLink();\n baseUrl = stac.getAbsoluteUrl();\n }\n\n link = Utils.addFiltersToLink(link, filters, cx.state.itemsPerPage);\n\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.features)) {\n throw new BrowserError(i18n.t('errors.invalidStacItems'));\n }\n else {\n response.data.features = response.data.features.map(item => {\n try {\n if (!Utils.isObject(item) || item.type !== 'Feature') {\n return null;\n }\n let selfLink = Utils.getLinkWithRel(item.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, baseUrl);\n }\n else if (typeof item.id !== 'undefined') {\n let apiCollectionsLink = cx.getters.root?.getApiCollectionsLink();\n if (baseUrl) {\n url = Utils.toAbsolute(`items/${item.id}`, baseUrl);\n }\n else if (apiCollectionsLink) {\n url = Utils.toAbsolute(`${collectionId}/items/${item.id}`, apiCollectionsLink.href);\n }\n else if (cx.state.catalogUrl) {\n url = Utils.toAbsolute(`collections/${collectionId}/items/${item.id}`, cx.state.catalogUrl);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(item, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n } catch (error) {\n console.error(error);\n return null;\n }\n }).filter(item => item instanceof STAC);\n if (show) {\n cx.commit('setApiItemsLink', link);\n }\n cx.commit('setApiItems', { data: response.data, stac, show });\n cx.commit('toggleApiItemsLoading', collectionId);\n return response;\n }\n } catch (error) {\n cx.commit('toggleApiItemsLoading', collectionId);\n if (!noRetry && cx.state.authConfig && isAuthenticationError(error)) {\n await cx.dispatch('tryLogin', {\n url: link.href,\n action: () => cx.dispatch('loadApiItems', Object.assign({noRetry: true, force: true}, args))\n });\n return;\n }\n throw error;\n }\n },\n async loadNextApiCollections(cx, args) {\n let { stac, show, noRetry } = args;\n let link;\n if (stac) {\n // First page\n if (cx.state.apiCollections.length > 0) {\n // If we have already loaded collections, skip loading the first page\n return;\n }\n link = stac.getLinkWithRel('data');\n }\n else {\n // Second page and after\n stac = cx.state.data;\n link = cx.state.nextCollectionsLink;\n }\n if (!link) {\n return;\n }\n try {\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.collections)) {\n throw new BrowserError(i18n.t('errors.invalidStacCollections'));\n }\n else {\n response.data.collections = response.data.collections.map(collection => {\n let selfLink = Utils.getLinkWithRel(collection.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, cx.state.url || stac.getAbsoluteUrl());\n }\n else {\n url = Utils.toAbsolute(`collections/${collection.id}`, cx.state.catalogUrl || stac.getAbsoluteUrl());\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(collection, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n });\n cx.commit('addApiCollections', { data: response.data, stac, show });\n }\n } catch (error) {\n if (!noRetry && cx.state.authConfig && isAuthenticationError(error)) {\n await cx.dispatch('tryLogin', {\n url: link.href,\n action: () => cx.dispatch('loadNextApiCollections', Object.assign({noRetry: true, force: true}, args))\n });\n return;\n }\n throw error;\n }\n },\n async loadOgcApiConformance(cx, link) {\n let response = await stacRequest(cx, link);\n if (Utils.isObject(response.data) && Array.isArray(response.data.conformsTo)) {\n cx.commit('setConformanceClasses', response.data.conformsTo);\n }\n },\n async loadGeoJson(cx, link) {\n try {\n let response = await stacRequest(cx, link);\n return response.data; // Use data with $refs included as fallback anyway\n } catch (error) {\n return null;\n }\n },\n async retryAfterAuth(cx) {\n let errorFn = error => cx.commit('showGlobalError', {\n error,\n message: i18n.t('errors.authFailed')\n });\n\n for (let callback of cx.state.doAuth) {\n try {\n let p = callback();\n if (p instanceof Promise) {\n p.catch(errorFn);\n }\n } catch (error) {\n errorFn(error);\n }\n }\n }\n },\n });\n}\n\nexport default getStore;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-row',[_c('b-col',{attrs:{\"md\":\"12\"}},[_c('Source',{staticClass:\"float-right\",attrs:{\"title\":_vm.title,\"stacUrl\":_vm.url,\"stac\":_vm.data}}),_c('h1',[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))])],2),(!_vm.isStacChooser())?_c('p',{staticClass:\"lead\"},[(_vm.containerLink)?_c('i18n',{staticClass:\"in mr-3\",attrs:{\"tag\":\"span\",\"path\":\"in\"},scopedSlots:_vm._u([{key:\"catalog\",fn:function(){return [_c('StacLink',{attrs:{\"data\":_vm.containerLink}})]},proxy:true}],null,false,1458487365)}):_vm._e(),_c('b-button-group',[(_vm.back)?_c('b-button',{attrs:{\"to\":_vm.selfBrowserLink,\"title\":_vm.$t('goBack.description', {type: _vm.type}),\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-arrow-left'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goBack.label')))])],1):_vm._e(),(_vm.parentLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.parentLink.href),\"title\":_vm.parentLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-arrow-90deg-up'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToParent.label')))])],1):_vm._e(),(_vm.collectionLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.collectionLink.href),\"title\":_vm.collectionLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-folder-symlink'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToCollection.label')))])],1):_vm._e(),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.sidebar\",modifiers:{\"sidebar\":true}}],attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.$t('browse')},on:{\"click\":function($event){return _vm.$emit('enableSidebar')}}},[_c('b-icon-book'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('browse')))])],1),(_vm.canSearch)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"to\":_vm.searchBrowserLink,\"title\":_vm.$t('search.title'),\"pressed\":_vm.isSearchPage()}},[_c('b-icon-search'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('search.title')))])],1):_vm._e(),(_vm.canAuthenticate)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.authTitle},on:{\"click\":_vm.logInOut}},[_c(_vm.authIcon,{tag:\"component\"}),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.authLabel))])],1):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"share mt-1\"},[_c('b-button-group',[(_vm.showRoot)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-root-btn\"}},[_c('b-icon-box'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.rootTitle))])],1):_vm._e(),(_vm.stacUrl)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-link-btn\",\"title\":_vm.$t('source.detailsAboutSource')}},[_c('b-icon-link'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.label')))])],1):_vm._e(),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-share-btn\",\"title\":_vm.$t('source.share.withOthers')}},[_c('b-icon-share'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.share.label')))])],1),_c('b-dropdown',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"right\":\"\",\"title\":_vm.$t('source.language.switch')},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('b-icon-flag'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.language.label', {currentLanguage: _vm.currentLanguage})))])]},proxy:true}])},_vm._l((_vm.languages),function(l){return _c('b-dropdown-item',{key:l.code,staticClass:\"lang-item\",on:{\"click\":function($event){return _vm.switchLocale({locale: l.code, userSelected: true})}}},[(_vm.locale === l.code)?_c('b-icon-check'):_c('b-icon-blank'),_c('span',{staticClass:\"title\"},[_c('span',{attrs:{\"lang\":l.code}},[_vm._v(_vm._s(l.native))]),(l.global && l.global !== l.native)?[_vm._v(\" / \"),_c('span',{attrs:{\"lang\":\"en\"}},[_vm._v(_vm._s(l.global))])]:_vm._e()],2),(_vm.supportsLanguageExt && (!l.ui || !l.data))?_c('b-icon-exclamation-triangle',{staticClass:\"ml-2\",attrs:{\"title\":l.ui ? _vm.$t('source.language.onlyUI') : _vm.$t('source.language.onlyData')}}):_vm._e()],1)}),1)],1),(_vm.showRoot)?_c('b-popover',{attrs:{\"id\":\"popover-root\",\"target\":\"popover-root-btn\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.rootTitle}},[_c('RootStats')],1):_vm._e(),(_vm.stacUrl)?_c('b-popover',{attrs:{\"id\":\"popover-link\",\"target\":\"popover-link-btn\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.title')}},[(_vm.stac)?[(_vm.stacId)?_c('b-row',{staticClass:\"stac-id\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm.$t('source.id')))]),_c('b-col',[_c('code',[_vm._v(_vm._s(_vm.stacId))]),_c('CopyButton',{staticClass:\"ml-2\",attrs:{\"copyText\":_vm.stacId,\"button-props\":{size: 'sm'},\"variant\":\"primary\"}})],1)],1):_vm._e(),(_vm.stacVersion)?_c('b-row',{staticClass:\"stac-version\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm.$t('source.stacVersion')))]),_c('b-col',[_vm._v(_vm._s(_vm.stacVersion))])],1):_vm._e(),_c('b-row',{staticClass:\"stac-valid\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm.$t('source.valid')))]),_c('b-col',[_c('Validation',{attrs:{\"data\":_vm.stac}})],1)],1),_c('hr')]:_vm._e(),_c('Url',{attrs:{\"id\":\"stacUrl\",\"url\":_vm.stacUrl,\"label\":_vm.$t('source.locatedAt')}})],2):_vm._e(),_c('b-popover',{attrs:{\"id\":\"popover-share\",\"target\":\"popover-share-btn\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.share.title')}},[_c('Url',{attrs:{\"id\":\"browserUrl\",\"url\":_vm.browserUrl(),\"label\":_vm.$t('source.share.sharePageWithOthers'),\"open\":false}}),_c('hr'),_c('b-button',{staticClass:\"twitter mr-1\",attrs:{\"href\":_vm.twitterUrl}},[_c('b-icon-twitter'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.twitter')))],1),_c('b-button',{attrs:{\"variant\":\"dark\",\"href\":_vm.mailTo}},[_c('b-icon-envelope'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.email')))],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-form-group',{attrs:{\"label\":_vm.label,\"label-for\":_vm.id}},[_c('b-input-group',{attrs:{\"size\":\"sm\"}},[_c('b-form-input',{ref:\"input\",attrs:{\"id\":_vm.id,\"value\":_vm.url,\"readonly\":\"\"}}),_c('b-input-group-append',[_c('CopyButton',{attrs:{\"copyText\":_vm.url,\"variant\":\"primary\"}}),(_vm.open)?_c('b-button',{attrs:{\"href\":_vm.url,\"target\":\"_blank\",\"variant\":\"primary\",\"title\":_vm.$t('open')}},[_c('b-icon-arrow-up-right-square')],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Url.vue?vue&type=template&id=74684ede&scoped=true\"\nimport script from \"./Url.vue?vue&type=script&lang=js\"\nexport * from \"./Url.vue?vue&type=script&lang=js\"\nimport style0 from \"./Url.vue?vue&type=style&index=0&id=74684ede&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74684ede\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Source.vue?vue&type=template&id=93db7fbc&scoped=true\"\nimport script from \"./Source.vue?vue&type=script&lang=js\"\nexport * from \"./Source.vue?vue&type=script&lang=js\"\nimport style0 from \"./Source.vue?vue&type=style&index=0&id=93db7fbc&prod&lang=scss\"\nimport style1 from \"./Source.vue?vue&type=style&index=1&id=93db7fbc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93db7fbc\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacHeader.vue?vue&type=template&id=6f700824&scoped=true\"\nimport script from \"./StacHeader.vue?vue&type=script&lang=js\"\nexport * from \"./StacHeader.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacHeader.vue?vue&type=style&index=0&id=6f700824&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f700824\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.authComponent,{tag:\"component\",on:{\"submit\":_vm.submit,\"reset\":_vm.reset}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=5dbcd191\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","\n\n\n\n\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacBrowser.vue?vue&type=template&id=a5605574\"\nimport script from \"./StacBrowser.vue?vue&type=script&lang=js\"\nexport * from \"./StacBrowser.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacBrowser.vue?vue&type=style&index=0&id=a5605574&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/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","import Vue from \"vue\";\nimport StacBrowser from \"./StacBrowser.vue\";\nimport i18n, { loadDefaultMessages } from './i18n';\n\nexport default function init() {\n return loadDefaultMessages().then(() => {\n return new Vue({\n i18n,\n render: h => h(StacBrowser)\n }).$mount(\"#stac-browser\");\n });\n}\n","import Vue from \"vue\";\nimport init from \"./init\";\n\nVue.config.productionTip = false;\n\ninit();\n","import Utils, { geojsonMediaType } from \"../utils\";\nimport Migrate from '@radiantearth/stac-migrate';\nimport { getBest } from '../locale-id';\n\nlet stacObjCounter = 0;\n\n// STAC Entity\nclass STAC {\n\n constructor(data, url, path, migrate = true) {\n this._id = stacObjCounter++;\n this._url = url;\n this._path = path;\n this._apiChildrenListeners = {};\n this._incomplete = false;\n this._apiChildren = {\n list: [],\n prev: false,\n next: false\n };\n\n if (migrate) {\n // Uncomment this line if the old checksum: fields should be converted\n // This is usually not needed so it's not enabled by default to shrink the bundle size\n // Migrate.enableMultihash(require('multihashes'));\n if (data.type === 'FeatureCollection') {\n data.features = data.features.map(item => Migrate.item(item, false));\n }\n else {\n data = Migrate.stac(data, false);\n }\n }\n for (let key in data) {\n if (typeof this[key] === 'undefined') {\n this[key] = data[key];\n }\n }\n }\n\n isPotentiallyIncomplete() {\n return this._incomplete;\n }\n\n markPotentiallyIncomplete() {\n this._incomplete = true;\n }\n\n isItem() {\n return this.type === 'Feature';\n }\n\n isCatalog() {\n return this.type === 'Catalog';\n }\n\n isCatalogLike() {\n return this.isCatalog() || this.isCollection();\n }\n\n isCollection() {\n return this.type === 'Collection';\n }\n\n isItemCollection() {\n return this.type === 'FeatureCollection';\n }\n\n hasApiData() {\n return this._apiChildren.list.length > 0;\n }\n\n setApiDataListener(id, listener = null) {\n if (typeof listener === 'function') {\n this._apiChildrenListeners[id] = listener;\n }\n else {\n delete this._apiChildrenListeners[id];\n }\n }\n\n setApiData(list, next = null, prev = null) {\n if (prev) {\n this._apiChildren.prev = prev;\n }\n if (next) {\n this._apiChildren.next = next;\n }\n this._apiChildren.list = list;\n\n for (let id in this._apiChildrenListeners) {\n try {\n this._apiChildrenListeners[id](this._apiChildren);\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n getFileFormats() {\n let assets = [];\n if ((this.isItem() || this.isCollection()) && Utils.isObject(this.assets)) {\n assets = assets.concat(Object.values(this.assets));\n }\n if (this.isCollection() && Utils.isObject(this.item_assets)) {\n assets = assets.concat(Object.values(this.item_assets));\n }\n return assets\n .filter(asset => Array.isArray(asset.roles) && asset.roles.includes('data') && typeof asset.type === 'string') // Look for data files\n .map(asset => asset.type) // Array shall only contain media types\n .filter((v, i, a) => a.indexOf(v) === i); // Unique values\n }\n\n getChildren(priority = null) {\n if (!this.isCatalogLike()) {\n return [];\n }\n\n let showCollections = !priority || priority === 'collections';\n let showChilds = !priority || priority === 'childs';\n\n let children = [];\n if (showCollections && this._apiChildren.prev) {\n children.push(this._apiChildren.prev);\n }\n if (showCollections && this._apiChildren.list.length > 0) {\n children = this._apiChildren.list.slice(0);\n }\n if (showChilds) {\n children = STAC.addMissingChildren(children, this).concat(this.getLinksWithRels(['item']));\n }\n if (showCollections && this._apiChildren.next) {\n children.push(this._apiChildren.next);\n }\n return children;\n }\n\n static addMissingChildren(catalogs, stac) {\n let links = stac.getStacLinksWithRel('child').filter(link => {\n // Don't add links that are already in collections: https://github.com/radiantearth/stac-browser/issues/103\n // ToDo: The runtime of this can probably be improved\n let absoluteUrl = Utils.toAbsolute(link.href, stac.getAbsoluteUrl());\n return !catalogs.find(collection => collection.getAbsoluteUrl() === absoluteUrl);\n });\n // place the children first to avoid conflicts with the paginated collections\n // where the children are always at the end and can never be reached due to infinite scrolling\n return links.concat(catalogs);\n }\n\n getSearchLink() {\n // The search link MUST be 'application/geo+json' as otherwise it's likely not STAC\n // See https://github.com/opengeospatial/ogcapi-features/issues/832\n let links = Utils.getLinksWithRels(this.links, ['search'])\n .filter(link => Utils.isMediaType(link.type, geojsonMediaType))\n .map(link => Object.assign({}, link, {href: Utils.toAbsolute(link.href, this._url)}));\n // Prefer POST if present\n let post = links.find(link => Utils.hasText(link.method) && link.method.toUpperCase() === 'POST');\n return post || links[0] || null;\n }\n\n getApiCollectionsLink() {\n return this.getStacLinkWithRel('data');\n }\n\n getApiItemsLink() {\n return this.getStacLinkWithRel('items');\n }\n\n getMetadata(field) {\n if (this.isItem()) {\n return this.properties[field];\n }\n else if (this.isCatalogLike()) {\n return this[field];\n }\n return null;\n }\n\n getBrowserPath() {\n return this._path;\n }\n\n getAbsoluteUrl() {\n return this._url;\n }\n\n getLocaleLink(locale, fallbackLocale = null) {\n let links = this.getStacLinksWithRel('alternate')\n .filter(link => Utils.hasText(link.hreflang));\n \n let available;\n if (Array.isArray(this.languages)) {\n available = this.languages.map(l => l.code);\n }\n else {\n available = links.map(link => link.hreflang);\n }\n \n let best = getBest(available, locale, fallbackLocale);\n return links.find(link => link.hreflang === best) || null;\n }\n\n getStacLinksWithRel(rel, allowEmpty = true) {\n return Utils.getLinksWithRels(this.links, [rel])\n .filter(link => Utils.isStacMediaType(link.type, allowEmpty));\n }\n\n getStacLinkWithRel(rel, allowEmpty = true) {\n const links = this.getStacLinksWithRel(rel, allowEmpty);\n if (links.length > 0) {\n return links[0];\n }\n else {\n return null;\n }\n }\n\n getLinkWithRel(rel) {\n return Utils.getLinkWithRel(this.links, rel);\n }\n\n getLinksWithRels(rels) {\n return Utils.getLinksWithRels(this.links, rels);\n }\n\n getLinksWithOtherRels(rels) {\n return Utils.getLinksWithOtherRels(this.links, rels);\n }\n\n getAssetsWithRoles(roles) {\n let matches = [];\n if (Utils.isObject(this.assets)) {\n for (let key in this.assets) {\n let asset = this.assets[key];\n if (Utils.isObject(asset) && typeof asset.href === 'string' && Array.isArray(asset.roles) && asset.roles.find(role => roles.includes(role))) {\n matches.push(asset);\n }\n }\n }\n return matches;\n }\n\n static getDisplayTitle(sources, fallbackTitle = null) {\n if (!Array.isArray(sources)) {\n sources = [sources];\n }\n let stac = sources.find(o => o instanceof STAC);\n let link = sources.find(o => Utils.isObject(o) && !(o instanceof STAC));\n // Get title from STAC item/catalog/collection\n if (stac && Utils.hasText(stac.getTitle())) {\n return stac.getTitle();\n }\n // Get title from link\n else if (link && Utils.hasText(link.title)) {\n return link.title;\n }\n // Use id from STAC item/catalog/collection instead of titles\n else if (stac && Utils.hasText(stac.id)) {\n return stac.id;\n }\n // Use fallback title\n else if (Utils.hasText(fallbackTitle)) {\n return fallbackTitle;\n }\n // Use file or directory name from STAC as title\n else if (stac) {\n return Utils.titleForHref(stac.getAbsoluteUrl(), true);\n }\n // Use file or directory name from link as title\n else if (link && Utils.hasText(link.href)) {\n return Utils.titleForHref(link.href, true);\n }\n // Nothing available, return \"untitled\"\n else {\n return \"Untitled\";\n }\n }\n\n getTitle() {\n return this.getMetadata(\"title\");\n }\n\n _linkToAbsolute(link) {\n return Object.assign({}, link, { href: Utils.toAbsolute(link.href, this.getAbsoluteUrl()) });\n }\n\n getIcons() {\n return this.getLinksWithRels(['icon'])\n .filter(img => Utils.canBrowserDisplayImage(img))\n .map(img => this._linkToAbsolute(img));\n }\n\n /**\n * Get the thumbnails from the assets and links in a STAC entity.\n * \n * @param {boolean} browserOnly - Return only images that can be shown in a browser natively (PNG/JPG/GIF/WEBP).\n * @param {?string} prefer - If not `null` (default), prefers a role over the other. Either `thumbnail` or `overview`.\n * @returns \n */\n getThumbnails(browserOnly = false, prefer = null) { // prefer can be either \n let thumbnails = this.getAssetsWithRoles(['thumbnail', 'overview']);\n // Get from links only if no assets are available as they should usually be the same as in assets\n if (thumbnails.length === 0) {\n thumbnails = this.getLinksWithRels(['preview']);\n }\n // Some old catalogs use just a asset key\n if (thumbnails.length === 0 && Utils.isObject(this.assets) && Utils.isObject(this.assets.thumbnail)) {\n thumbnails = [this.assets.thumbnail];\n }\n if (browserOnly) {\n // Remove all images that can't be displayed in a browser\n thumbnails = thumbnails.filter(img => Utils.canBrowserDisplayImage(img));\n }\n if (prefer && thumbnails.length > 1) {\n // Prefer one role over the other.\n // The two step approach with two filters ensures the same sort bevahiour across all browsers:\n // see https://github.com/radiantearth/stac-browser/issues/370\n let filter = img => img.roles.includes(prefer);\n thumbnails = thumbnails\n .filter(filter)\n .concat(thumbnails.filter(img => !filter(img)));\n }\n return thumbnails.map(img => this._linkToAbsolute(img));\n }\n\n equals(other) {\n if (!Utils.isObject(other)) {\n return false;\n }\n if (this === other) {\n return true;\n }\n if (this.id === other.id && this.type == other.type) {\n return true;\n }\n return false;\n }\n\n}\n\nexport default STAC;\n","// STAC relation types\n\n// STAC hierarchical\nexport const stacHierarchy = [\n 'child',\n 'collection',\n 'item',\n 'parent',\n 'root',\n 'self',\n];\n\n// STAC API Pagination\nexport const stacPagination = [\n 'first',\n 'last',\n 'next',\n 'prev',\n 'previous',\n];\n\n// Queryables\nexport const ogcQueryables = [\n 'queryables', // Old way in STAC (deprecated)\n 'http://www.opengis.net/def/rel/ogc/1.0/queryables', // STAC and OGC APIs\n 'ogc-rel:queryables' // Alternative in OGC APIs\n];\n\n// Rels that STAC Browser can navigate to and display natively (i.e. Collections, Catalogs and Items)\nexport const stacBrowserNavigatesTo = [\n 'canonical', // Links to other catalogs or items v\n 'related',\n 'derived_from',\n 'latest-version', // version extension v\n 'predecessor-version',\n 'successor-version',\n 'source', // label extension,\n 'alternate' // language extension\n].concat(stacHierarchy).concat(stacPagination);\n\n// Rels that are handled in a special way and should not be shown in the link list\nexport const stacBrowserSpecialHandling = [\n 'conformance', // API related v\n 'data',\n 'items',\n 'search',\n 'icon', // Other v\n 'license',\n].concat(stacHierarchy).concat(stacPagination).concat(ogcQueryables);\n\n// OGC APIs\nexport const ogcRelPrefix = 'http://www.opengis.net/def/rel/ogc/1.0/';\n","import axios from \"axios\";\nimport URI from \"urijs\";\nimport Utils from \"../utils\";\n\nexport class Loading {\n\n constructor(show = false, loadApi = false) {\n this.show = Boolean(show);\n this.loadApi = Boolean(loadApi);\n }\n\n}\n\nexport function stacRequestOptions(cx, link) {\n // Convert a URL string to a Link Object\n if (typeof link === 'string') {\n link = {\n href: link\n };\n }\n // Return if the link is not an object or doesn't contain an href\n if (!Utils.isObject(link) || typeof link.href !== 'string') {\n return {};\n }\n\n // Generate URL including query strings\n const url = cx.getters.getRequestUrl(link.href);\n\n // Combine headers\n let headers = {\n 'Accept-Language': cx.getters.acceptedLanguages\n };\n if (Utils.hasText(link.type)) {\n headers.Accept = link.type;\n }\n if (!cx.getters.isExternalUrl(url)) {\n Object.assign(headers, cx.state.requestHeaders);\n }\n if (Utils.isObject(link.headers)) {\n Object.assign(headers, link.headers);\n }\n\n // Combine all options for axios request\n return {\n method: typeof link.method === 'string' ? link.method.toLowerCase() : 'get',\n url,\n headers,\n data: link.body\n // ToDo: Support for merge property from STAC API\n };\n}\n\nexport async function stacRequest(cx, link, axiosOptions = {}) {\n // Get options\n const options = stacRequestOptions(cx, link);\n // Execute the request\n return await axios(Object.assign(options, axiosOptions));\n}\n\n\nexport function unproxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[1], proxy[0]);\n }\n return absoluteUrl;\n}\n\nexport function proxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[0], proxy[1]);\n }\n return absoluteUrl;\n}\n\nexport function processSTAC(state, stac) {\n if (typeof state.preprocessSTAC === 'function') {\n stac = state.preprocessSTAC(stac, state);\n }\n return Object.freeze(stac);\n}\n\nexport function isAuthenticationError(error) {\n return [401, 403].includes(error?.response?.status);\n}\n\nexport function addQueryIfNotExists(uri, query) {\n if (Utils.size(query) == 0) {\n return uri;\n }\n for (let key in query) {\n if (!uri.hasQuery(key)) {\n uri.addQuery(key, query[key]);\n }\n }\n return uri;\n}\n","import URI from 'urijs';\nimport removeMd from 'remove-markdown';\nimport { stacPagination } from \"./rels\";\n\nexport const commonFileNames = ['catalog', 'collection', 'item'];\n\nexport const geojsonMediaType = \"application/geo+json\";\n\nexport const schemaMediaType = \"application/schema+json\";\n\nexport const stacMediaTypes = [\n 'application/json',\n geojsonMediaType,\n 'text/json'\n];\n\nexport const browserImageTypes = [\n 'image/gif',\n 'image/jpg',\n 'image/jpeg',\n 'image/apng',\n 'image/png',\n 'image/webp'\n];\n\nexport const cogMediaTypes = [\n \"image/tiff; application=geotiff; profile=cloud-optimized\",\n \"image/vnd.stac.geotiff; cloud-optimized=true\"\n];\n\nexport const geotiffMediaTypes = [\n \"application/geotiff\",\n \"image/tiff; application=geotiff\",\n \"image/vnd.stac.geotiff\",\n].concat(cogMediaTypes);\n\nexport const browserProtocols = [\n 'http',\n 'https'\n];\n\nexport const imageMediaTypes = browserImageTypes.concat(geotiffMediaTypes);\nexport const mapMediaTypes = imageMediaTypes.concat([geojsonMediaType]);\n\nexport class BrowserError extends Error {\n constructor(message) {\n super(message);\n }\n}\n\n/**\n * General utilities\n * \n * @class\n */\nexport default class Utils {\n\n /**\n * Checks whether a variable is a real object or not.\n * \n * This is a more strict version of `typeof x === 'object'` as this example would also succeeds for arrays and `null`.\n * This function only returns `true` for real objects and not for arrays, `null` or any other data types.\n * \n * @param {*} obj - A variable to check.\n * @returns {boolean} - `true` is the given variable is an object, `false` otherwise.\n */\n static isObject(obj) {\n return (typeof obj === 'object' && obj === Object(obj) && !Array.isArray(obj));\n }\n\n /**\n * Computes the size of an array (number of array elements) or object (number of key-value-pairs).\n * \n * Returns 0 for all other data types.\n * \n * @param {*} obj \n * @returns {integer}\n */\n static size(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if (Array.isArray(obj)) {\n return obj.length;\n }\n else {\n return Object.keys(obj).length;\n }\n }\n return 0;\n }\n\n static isStacMediaType(type, allowEmpty = false) {\n return Utils.isMediaType(type, stacMediaTypes, allowEmpty);\n }\n\n static isMediaType(type, types, allowEmpty = false) {\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (allowEmpty && !type) {\n return true;\n }\n else if (typeof type !== 'string') {\n return false;\n }\n else {\n return types.includes(type.toLowerCase());\n }\n }\n\n /**\n * Checks whether a variable is a string and contains at least one character.\n * \n * @param {*} string - A variable to check.\n * @returns {boolean} - `true` is the given variable is an string with length > 0, `false` otherwise.\n */\n static hasText(string) {\n return (typeof string === 'string' && string.length > 0);\n }\n\n static shortenTitle(fullStr, strLen, separator = '…') {\n if (fullStr.length <= strLen) {\n return fullStr;\n }\n\n let sepLen = separator.length;\n let charsToShow = strLen - sepLen;\n let frontChars = Math.ceil(charsToShow/2);\n let backChars = Math.floor(charsToShow/2);\n return fullStr.substr(0, frontChars) + \n separator + \n fullStr.substr(fullStr.length - backChars);\n }\n\n static isGdalVfsUri(url) {\n return typeof url === 'string' && url.startsWith('/vsi') && !url.startsWith('/vsicurl/');\n }\n\n static toAbsolute(href, baseUrl, stringify = true) {\n return Utils.normalizeUri(href, baseUrl, false, stringify);\n }\n\n static normalizeUri(href, baseUrl = null, noParams = false, stringify = true) {\n // Convert vsicurl URLs to normal URLs\n if (typeof href === 'string' && href.startsWith('/vsicurl/')) {\n href = href.replace(/^\\/vsicurl\\//, '');\n }\n // Parse URL and make absolute, if required\n let uri = URI(href);\n // Don't convert GDAL VFS URIs: https://github.com/radiantearth/stac-browser/issues/116\n if (baseUrl && uri.is(\"relative\") && !Utils.isGdalVfsUri(href)) {\n uri = uri.absoluteTo(baseUrl);\n }\n uri.normalize();\n if (noParams) {\n uri.query(\"\");\n uri.fragment(\"\");\n }\n return stringify ? uri.toString() : uri;\n }\n\n static getLinkWithRel(links, rel) {\n return Array.isArray(links) ? links.find(link => Utils.isObject(link) && Utils.hasText(link.href) && link.rel === rel) : null;\n }\n\n static getLinksWithRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && rels.includes(link.rel)) : [];\n }\n\n static getLinksWithOtherRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && !rels.includes(link.rel)) : [];\n }\n\n static removeTrailingSlash(str) {\n return str.replace(/\\/$/, '');\n }\n\n static equalUrl(a, b) {\n try {\n let uri1 = URI(a);\n let uri2 = URI(b);\n // Ignore trailing slash in URL paths\n uri1.path(Utils.removeTrailingSlash(uri1.path()));\n uri2.path(Utils.removeTrailingSlash(uri2.path()));\n return uri1.equals(uri2);\n } catch (error) {\n return false;\n }\n }\n\n static summarizeMd(text, maxLength = null) {\n if (!Utils.hasText(text)) {\n return '';\n }\n // Best-effort approach to remove some CommonMark (Markdown).\n // Likely not perfect, but seems good enough for most cases.\n text = removeMd(text).replaceAll(/[\\r\\n]+/g, ' ');\n if (maxLength > 0 && text.length > maxLength) {\n text = text.substr(0, maxLength) + '…';\n }\n return text;\n }\n\n static scrollTo(el) {\n if (!el) {\n return;\n }\n var rect = el.getBoundingClientRect();\n var isVisible = rect.top < window.innerHeight && rect.bottom >= 0;\n if (!isVisible) {\n el.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n }\n }\n\n // Convert from UTC to locale time (needed for vue2-datetimepicker)\n // see https://github.com/mengxiong10/vue2-datepicker/issues/388\n static dateFromUTC(dt) {\n if (dt instanceof Date) {\n const value = new Date(dt);\n const offset = value.getTimezoneOffset();\n dt = new Date(value.getTime() + offset * 60 * 1000);\n }\n return dt;\n }\n\n static dateToUTC(dt) {\n if (dt instanceof Date) {\n const offset = new Date().getTimezoneOffset();\n return new Date(dt.getTime() - offset * 60 * 1000);\n }\n return dt;\n }\n\n static formatDatetimeQuery(value) {\n return value.map(dt => {\n if (dt instanceof Date) {\n return dt.toISOString();\n }\n else if (dt) {\n return dt;\n }\n else {\n return '..';\n }\n }).join('/');\n }\n\n static formatSortbyForPOST(value) {\n // POST search requires sortby to be an array of objects containing a property name and sort direction.\n // See spec here: https://api.stacspec.org/v1.0.0-rc.1/item-search/#tag/Item-Search/operation/postItemSearch\n // This function converts the property name to the desired format.\n const sortby = {\n field: '',\n direction: 'asc'\n };\n \n // Check if the value starts with a minus sign (\"-\")\n if (value.startsWith('-')) {\n // sort by descending order\n sortby.field = value.substring(1);\n sortby.direction = 'desc';\n } else {\n //sort by ascending order\n sortby.field = value;\n }\n \n // Put the object in an array\n return [sortby];\n }\n\n static getPaginationLinks(data) {\n let pages = {};\n if (Utils.isObject(data)) {\n let pageLinks = Utils.getLinksWithRels(data.links, stacPagination);\n for (let pageLink of pageLinks) {\n let rel = pageLink.rel === 'previous' ? 'prev' : pageLink.rel;\n pages[rel] = pageLink;\n }\n }\n return pages;\n }\n\n static addFiltersToLink(link, filters = {}, itemsPerPage = null) {\n let isEmpty = value => {\n return (value === null\n || (typeof value === 'number' && !Number.isFinite(value))\n || (typeof value === 'string' && value.length === 0)\n || (typeof value === 'object' && Utils.size(value) === 0));\n };\n\n if (!Utils.isObject(filters)) {\n filters = {};\n }\n else {\n filters = Object.assign({}, filters);\n }\n\n if (typeof filters.limit !== 'number' && typeof itemsPerPage === 'number') {\n filters.limit = itemsPerPage;\n }\n\n if (Utils.hasText(link.method) && link.method.toUpperCase() === 'POST') {\n let body = Object.assign({}, link.body);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n delete body[key];\n continue;\n }\n\n if (key === 'sortby') {\n value = Utils.formatSortbyForPOST(value);\n }\n else if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'filters') {\n Object.assign(body, value.toJSON());\n continue;\n }\n\n body[key] = value;\n }\n return Object.assign({}, link, { body });\n }\n else { // GET\n // Construct new link with search params\n let url = URI(link.href);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n url.removeQuery(key);\n continue;\n }\n\n if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'bbox') {\n value = value.join(',');\n }\n else if ((key === 'collections' || key === 'ids' || key === 'q')) {\n value = value.join(',');\n }\n else if (key === 'filters') {\n let params = value.toText();\n url.setQuery(params);\n continue;\n }\n\n url.setQuery(key, value);\n }\n\n return Object.assign({}, link, { href: url.toString() });\n }\n }\n\n static titleForHref(href, preferFileName = false) {\n let uri = URI(href);\n let auth = uri.authority();\n let file = uri.filename().replace(/^(.{1,})\\.\\w+$/, '$1');\n let dir = uri.directory().replace(/^\\//, '');\n if (auth && file && !preferFileName) {\n let path = uri.path().replace(/^\\//, '');\n if (auth === 'doi.org' && path.startsWith('10.')) {\n return `DOI ${path}`;\n }\n else {\n return `${file} (${auth})`;\n }\n }\n else if (file && !commonFileNames.includes(file)) {\n return file;\n }\n else if (auth) {\n return auth;\n }\n else if (dir) {\n return dir;\n }\n else {\n return href;\n }\n }\n\n static canBrowserDisplayImage(img) {\n if (typeof img.href !== 'string') {\n return false;\n }\n let uri = URI(img.href);\n let protocol = uri.protocol().toLowerCase();\n if (protocol && !browserProtocols.includes(protocol)) {\n return false;\n }\n else if (browserImageTypes.includes(img.type)) {\n return true;\n }\n else if (browserImageTypes.includes('image/' + uri.suffix().toLowerCase())) {\n return true;\n }\n else if (img.type) {\n return false;\n }\n else {\n return true; // If no img.type is given, try to load it anyway: https://github.com/radiantearth/stac-browser/issues/147\n }\n }\n\n // Gets the value at path of object.\n // Drop in replacement for lodash.get\n static getValueFromObjectUsingPath(object, path) {\n if (object === null || typeof object !== 'object') {\n return;\n }\n object = object[path[0]];\n if (typeof object !== 'undefined' && path.length > 1) {\n return this.getValueFromObjectUsingPath(object, path.slice(1));\n }\n return object;\n }\n\n static search(searchterm, target, and = true) {\n if (typeof searchterm !== 'string' || searchterm.length === 0) {\n return false;\n }\n if (Utils.isObject(target)) {\n target = Object.values(target);\n }\n else if (typeof target === 'string') {\n target = [target];\n }\n\n if (!Array.isArray(target)) {\n return false;\n }\n\n let splitChars = /[\\s.,;!&({[)}]]+/g;\n\n // Prepare search terms\n searchterm = searchterm.toLowerCase().split(splitChars);\n\n // Prepare text to search in\n target = target\n .filter(s => typeof s === 'string') // Remove non-strings\n .join(' ') // Merge into a single string\n .replace(splitChars, ' ') // replace split chars with white spaces\n .toLowerCase(); // Lowercase\n\n // Search with \"and\" or \"or\"\n let fn = and ? 'every' : 'some';\n return searchterm[fn](term => target.includes(term));\n }\n\n static createLink(href, rel) {\n return { href, rel };\n }\n\n static supportsExtension(data, pattern) {\n if (!Utils.isObject(data) || !Array.isArray(data['stac_extensions'])) {\n return false;\n }\n let regexp = new RegExp('^' + pattern.replaceAll('*', '[^/]+') + '$');\n return Boolean(data['stac_extensions'].find(uri => regexp.test(uri)));\n }\n\n /**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\n static mergeDeep(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n\n if (Utils.isObject(target) && Utils.isObject(source)) {\n for (const key in source) {\n if (Utils.isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n Utils.mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return Utils.mergeDeep(target, ...sources);\n }\n\n}\n","import ErrorAlert from '../components/ErrorAlert.vue';\nimport Loading from '../components/Loading.vue';\nimport Utils, { BrowserError } from '../utils';\nimport URI from 'urijs';\nimport { mapState, mapGetters } from 'vuex';\n\nexport default {\n components: {\n ErrorAlert,\n Loading\n },\n props: {\n path: {\n type: String,\n required: true\n }\n },\n computed: {\n ...mapState([\"allowExternalAccess\", \"url\", \"redirectLegacyUrls\"]),\n ...mapGetters([\"fromBrowserPath\", \"error\", \"loading\"]),\n errorId() {\n if (this.error instanceof Error && this.error.isAxiosError && Utils.isObject(this.error.response)) {\n let res = this.error.response;\n if (Utils.isObject(res.data) && res.data.code) {\n return res.data.code;\n }\n else {\n return res.status;\n }\n }\n return null;\n },\n errorDescription() { \n if (this.error instanceof Error && this.error.isAxiosError && Utils.isObject(this.error.response)) {\n let res = this.error.response;\n if (Utils.isObject(res.data) && typeof res.data.description === 'string') { // STAC API compliant error response\n return res.data.description;\n }\n if (res.status === 401) {\n return this.$t('errors.unauthorized');\n }\n else if (res.status === 403) {\n return this.$t('errors.forbidden');\n }\n else if (res.status === 404) {\n return this.$t('errors.notFound');\n }\n else if (res.status > 500) {\n return this.$t('errors.serverError');\n }\n else if (res.status > 400) {\n return this.$t('errors.badRequest');\n }\n }\n else if (this.error instanceof BrowserError) {\n return this.error.message;\n }\n\n return this.$t('errors.networkError');\n },\n isExternal() {\n return URI(this.path).is(\"absolute\");\n }\n },\n watch: {\n path: {\n immediate: true,\n async handler(path, oldPath) {\n if (path === oldPath) {\n return;\n }\n else if (!this.allowExternalAccess && this.isExternal) {\n return;\n }\n else if (this.redirectLegacyUrls && await this.redirectLegacyUrl(path)) {\n return;\n }\n\n let url = this.fromBrowserPath(path || '/');\n this.$store.dispatch(\"load\", { url, show: true, loadApi: true });\n }\n }\n },\n methods: {\n async redirectLegacyUrl(path) {\n if (!path || path === '/') {\n return false;\n }\n // Split all subpaths and remove the leading item or collection prefixes from the old STAC Browser routes\n let parts = path.split('/').filter(part => part.length > 0 && part !== 'item' && part !== 'collection');\n // Make sure all remaining parts are valid base58, otherwise they likely no legacy URLs\n if (parts.length > 0 && parts.every(part => part.match(/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]+$/))) {\n // Lazy load base58 so that it's only in the loaded when really needed\n const { decode } = await import('bs58');\n // Decode last path element from base58, the others parts are not relevant for us\n let newPath = decode(parts[parts.length - 1]).toString();\n if (newPath) {\n let uri = URI(newPath);\n // Navigate to new URL\n this.$router.replace({\n // Remove trailing collections or items paths from APIs\n path: '/' + uri.path().replace(/(collections|items)\\/?$/, ''),\n query: uri.query(true)\n });\n return true;\n }\n }\n return false;\n }\n }\n};\n","var map = {\n\t\"./de-CH/config\": [\n\t\t79933,\n\t\t3\n\t],\n\t\"./de-CH/config.json\": [\n\t\t79933,\n\t\t3\n\t],\n\t\"./de-CH/datepicker\": [\n\t\t40895,\n\t\t9,\n\t\t895\n\t],\n\t\"./de-CH/datepicker.js\": [\n\t\t40895,\n\t\t9,\n\t\t895\n\t],\n\t\"./de-CH/default\": [\n\t\t968,\n\t\t9,\n\t\t4490,\n\t\t968\n\t],\n\t\"./de-CH/default.js\": [\n\t\t968,\n\t\t9,\n\t\t4490,\n\t\t968\n\t],\n\t\"./de-CH/duration\": [\n\t\t49637,\n\t\t9,\n\t\t9710,\n\t\t9637\n\t],\n\t\"./de-CH/duration.js\": [\n\t\t49637,\n\t\t9,\n\t\t9710,\n\t\t9637\n\t],\n\t\"./de-CH/validation\": [\n\t\t75270,\n\t\t9,\n\t\t5270\n\t],\n\t\"./de-CH/validation.js\": [\n\t\t75270,\n\t\t9,\n\t\t5270\n\t],\n\t\"./de/config\": [\n\t\t28417,\n\t\t3\n\t],\n\t\"./de/config.json\": [\n\t\t28417,\n\t\t3\n\t],\n\t\"./de/custom\": [\n\t\t45692,\n\t\t3,\n\t\t5692\n\t],\n\t\"./de/custom.json\": [\n\t\t45692,\n\t\t3,\n\t\t5692\n\t],\n\t\"./de/datepicker\": [\n\t\t74801,\n\t\t9,\n\t\t4801\n\t],\n\t\"./de/datepicker.js\": [\n\t\t74801,\n\t\t9,\n\t\t4801\n\t],\n\t\"./de/default\": [\n\t\t62862,\n\t\t9,\n\t\t4490,\n\t\t2862\n\t],\n\t\"./de/default.js\": [\n\t\t62862,\n\t\t9,\n\t\t4490,\n\t\t2862\n\t],\n\t\"./de/duration\": [\n\t\t54511,\n\t\t9,\n\t\t9710,\n\t\t4511\n\t],\n\t\"./de/duration.js\": [\n\t\t54511,\n\t\t9,\n\t\t9710,\n\t\t4511\n\t],\n\t\"./de/fields\": [\n\t\t14490,\n\t\t3,\n\t\t4490\n\t],\n\t\"./de/fields.json\": [\n\t\t14490,\n\t\t3,\n\t\t4490\n\t],\n\t\"./de/texts\": [\n\t\t99581,\n\t\t3,\n\t\t9581\n\t],\n\t\"./de/texts.json\": [\n\t\t99581,\n\t\t3,\n\t\t9581\n\t],\n\t\"./de/validation\": [\n\t\t62816,\n\t\t9,\n\t\t2816\n\t],\n\t\"./de/validation.js\": [\n\t\t62816,\n\t\t9,\n\t\t2816\n\t],\n\t\"./en-GB/config\": [\n\t\t23667,\n\t\t3\n\t],\n\t\"./en-GB/config.json\": [\n\t\t23667,\n\t\t3\n\t],\n\t\"./en-GB/custom\": [\n\t\t78798,\n\t\t3,\n\t\t8798\n\t],\n\t\"./en-GB/custom.json\": [\n\t\t78798,\n\t\t3,\n\t\t8798\n\t],\n\t\"./en-GB/datepicker\": [\n\t\t22605,\n\t\t9,\n\t\t2605\n\t],\n\t\"./en-GB/datepicker.js\": [\n\t\t22605,\n\t\t9,\n\t\t2605\n\t],\n\t\"./en-GB/default\": [\n\t\t63170,\n\t\t9,\n\t\t3170\n\t],\n\t\"./en-GB/default.js\": [\n\t\t63170,\n\t\t9,\n\t\t3170\n\t],\n\t\"./en-GB/duration\": [\n\t\t47843,\n\t\t9,\n\t\t9710,\n\t\t7843\n\t],\n\t\"./en-GB/duration.js\": [\n\t\t47843,\n\t\t9,\n\t\t9710,\n\t\t7843\n\t],\n\t\"./en-GB/fields\": [\n\t\t87400,\n\t\t3,\n\t\t7400\n\t],\n\t\"./en-GB/fields.json\": [\n\t\t87400,\n\t\t3,\n\t\t7400\n\t],\n\t\"./en-GB/texts\": [\n\t\t62963,\n\t\t3,\n\t\t2963\n\t],\n\t\"./en-GB/texts.json\": [\n\t\t62963,\n\t\t3,\n\t\t2963\n\t],\n\t\"./en-GB/validation\": [\n\t\t6492,\n\t\t9,\n\t\t6492\n\t],\n\t\"./en-GB/validation.js\": [\n\t\t6492,\n\t\t9,\n\t\t6492\n\t],\n\t\"./en-US/config\": [\n\t\t92444,\n\t\t3\n\t],\n\t\"./en-US/config.json\": [\n\t\t92444,\n\t\t3\n\t],\n\t\"./en-US/datepicker\": [\n\t\t95558,\n\t\t9,\n\t\t5558\n\t],\n\t\"./en-US/datepicker.js\": [\n\t\t95558,\n\t\t9,\n\t\t5558\n\t],\n\t\"./en-US/default\": [\n\t\t15691,\n\t\t9,\n\t\t5691\n\t],\n\t\"./en-US/default.js\": [\n\t\t15691,\n\t\t9,\n\t\t5691\n\t],\n\t\"./en-US/duration\": [\n\t\t49684,\n\t\t9,\n\t\t9710,\n\t\t9684\n\t],\n\t\"./en-US/duration.js\": [\n\t\t49684,\n\t\t9,\n\t\t9710,\n\t\t9684\n\t],\n\t\"./en-US/validation\": [\n\t\t3155,\n\t\t9,\n\t\t3155\n\t],\n\t\"./en-US/validation.js\": [\n\t\t3155,\n\t\t9,\n\t\t3155\n\t],\n\t\"./en/config\": [\n\t\t11401,\n\t\t3\n\t],\n\t\"./en/config.json\": [\n\t\t11401,\n\t\t3\n\t],\n\t\"./en/custom\": [\n\t\t85300,\n\t\t3,\n\t\t5300\n\t],\n\t\"./en/custom.json\": [\n\t\t85300,\n\t\t3,\n\t\t5300\n\t],\n\t\"./en/datepicker\": [\n\t\t71865,\n\t\t9,\n\t\t1865\n\t],\n\t\"./en/datepicker.js\": [\n\t\t71865,\n\t\t9,\n\t\t1865\n\t],\n\t\"./en/default\": [\n\t\t56886,\n\t\t9,\n\t\t6886\n\t],\n\t\"./en/default.js\": [\n\t\t56886,\n\t\t9,\n\t\t6886\n\t],\n\t\"./en/duration\": [\n\t\t86855,\n\t\t9,\n\t\t9710,\n\t\t6855\n\t],\n\t\"./en/duration.js\": [\n\t\t86855,\n\t\t9,\n\t\t9710,\n\t\t6855\n\t],\n\t\"./en/fields\": [\n\t\t87090,\n\t\t3,\n\t\t7090\n\t],\n\t\"./en/fields.json\": [\n\t\t87090,\n\t\t3,\n\t\t7090\n\t],\n\t\"./en/stac-fields\": [\n\t\t98236,\n\t\t9,\n\t\t8236\n\t],\n\t\"./en/stac-fields.js\": [\n\t\t98236,\n\t\t9,\n\t\t8236\n\t],\n\t\"./en/texts\": [\n\t\t33301,\n\t\t3,\n\t\t3301\n\t],\n\t\"./en/texts.json\": [\n\t\t33301,\n\t\t3,\n\t\t3301\n\t],\n\t\"./en/validation\": [\n\t\t98552,\n\t\t9,\n\t\t8552\n\t],\n\t\"./en/validation.js\": [\n\t\t98552,\n\t\t9,\n\t\t8552\n\t],\n\t\"./es/config\": [\n\t\t17212,\n\t\t3\n\t],\n\t\"./es/config.json\": [\n\t\t17212,\n\t\t3\n\t],\n\t\"./es/custom\": [\n\t\t14581,\n\t\t3,\n\t\t4581\n\t],\n\t\"./es/custom.json\": [\n\t\t14581,\n\t\t3,\n\t\t4581\n\t],\n\t\"./es/datepicker\": [\n\t\t54312,\n\t\t9,\n\t\t4312\n\t],\n\t\"./es/datepicker.js\": [\n\t\t54312,\n\t\t9,\n\t\t4312\n\t],\n\t\"./es/default\": [\n\t\t89113,\n\t\t9,\n\t\t9113\n\t],\n\t\"./es/default.js\": [\n\t\t89113,\n\t\t9,\n\t\t9113\n\t],\n\t\"./es/duration\": [\n\t\t46046,\n\t\t9,\n\t\t9710,\n\t\t6046\n\t],\n\t\"./es/duration.js\": [\n\t\t46046,\n\t\t9,\n\t\t9710,\n\t\t6046\n\t],\n\t\"./es/fields\": [\n\t\t11295,\n\t\t3,\n\t\t1295\n\t],\n\t\"./es/fields.json\": [\n\t\t11295,\n\t\t3,\n\t\t1295\n\t],\n\t\"./es/texts\": [\n\t\t90674,\n\t\t3,\n\t\t674\n\t],\n\t\"./es/texts.json\": [\n\t\t90674,\n\t\t3,\n\t\t674\n\t],\n\t\"./es/validation\": [\n\t\t35893,\n\t\t9,\n\t\t5893\n\t],\n\t\"./es/validation.js\": [\n\t\t35893,\n\t\t9,\n\t\t5893\n\t],\n\t\"./fr-CA/config\": [\n\t\t20995,\n\t\t3\n\t],\n\t\"./fr-CA/config.json\": [\n\t\t20995,\n\t\t3\n\t],\n\t\"./fr-CA/datepicker\": [\n\t\t6997,\n\t\t9,\n\t\t6997\n\t],\n\t\"./fr-CA/datepicker.js\": [\n\t\t6997,\n\t\t9,\n\t\t6997\n\t],\n\t\"./fr-CA/default\": [\n\t\t71082,\n\t\t9,\n\t\t5767,\n\t\t1082\n\t],\n\t\"./fr-CA/default.js\": [\n\t\t71082,\n\t\t9,\n\t\t5767,\n\t\t1082\n\t],\n\t\"./fr-CA/duration\": [\n\t\t27003,\n\t\t9,\n\t\t9710,\n\t\t7003\n\t],\n\t\"./fr-CA/duration.js\": [\n\t\t27003,\n\t\t9,\n\t\t9710,\n\t\t7003\n\t],\n\t\"./fr-CA/validation\": [\n\t\t38228,\n\t\t9,\n\t\t8228\n\t],\n\t\"./fr-CA/validation.js\": [\n\t\t38228,\n\t\t9,\n\t\t8228\n\t],\n\t\"./fr-CH/config\": [\n\t\t1738,\n\t\t3\n\t],\n\t\"./fr-CH/config.json\": [\n\t\t1738,\n\t\t3\n\t],\n\t\"./fr-CH/datepicker\": [\n\t\t81456,\n\t\t9,\n\t\t1456\n\t],\n\t\"./fr-CH/datepicker.js\": [\n\t\t81456,\n\t\t9,\n\t\t1456\n\t],\n\t\"./fr-CH/default\": [\n\t\t44545,\n\t\t9,\n\t\t5767,\n\t\t4545\n\t],\n\t\"./fr-CH/default.js\": [\n\t\t44545,\n\t\t9,\n\t\t5767,\n\t\t4545\n\t],\n\t\"./fr-CH/duration\": [\n\t\t67286,\n\t\t9,\n\t\t9710,\n\t\t7286\n\t],\n\t\"./fr-CH/duration.js\": [\n\t\t67286,\n\t\t9,\n\t\t9710,\n\t\t7286\n\t],\n\t\"./fr-CH/validation\": [\n\t\t82605,\n\t\t9,\n\t\t4986\n\t],\n\t\"./fr-CH/validation.js\": [\n\t\t82605,\n\t\t9,\n\t\t4986\n\t],\n\t\"./fr/config\": [\n\t\t37748,\n\t\t3\n\t],\n\t\"./fr/config.json\": [\n\t\t37748,\n\t\t3\n\t],\n\t\"./fr/custom\": [\n\t\t75197,\n\t\t3,\n\t\t5197\n\t],\n\t\"./fr/custom.json\": [\n\t\t75197,\n\t\t3,\n\t\t5197\n\t],\n\t\"./fr/datepicker\": [\n\t\t37036,\n\t\t9,\n\t\t7036\n\t],\n\t\"./fr/datepicker.js\": [\n\t\t37036,\n\t\t9,\n\t\t7036\n\t],\n\t\"./fr/default\": [\n\t\t1589,\n\t\t9,\n\t\t5767,\n\t\t1589\n\t],\n\t\"./fr/default.js\": [\n\t\t1589,\n\t\t9,\n\t\t5767,\n\t\t1589\n\t],\n\t\"./fr/duration\": [\n\t\t93658,\n\t\t9,\n\t\t9710,\n\t\t3658\n\t],\n\t\"./fr/duration.js\": [\n\t\t93658,\n\t\t9,\n\t\t9710,\n\t\t3658\n\t],\n\t\"./fr/fields\": [\n\t\t48148,\n\t\t3,\n\t\t5767\n\t],\n\t\"./fr/fields.json\": [\n\t\t48148,\n\t\t3,\n\t\t5767\n\t],\n\t\"./fr/texts\": [\n\t\t23418,\n\t\t3,\n\t\t3418\n\t],\n\t\"./fr/texts.json\": [\n\t\t23418,\n\t\t3,\n\t\t3418\n\t],\n\t\"./fr/validation\": [\n\t\t33129,\n\t\t9,\n\t\t3129\n\t],\n\t\"./fr/validation.js\": [\n\t\t33129,\n\t\t9,\n\t\t3129\n\t],\n\t\"./it-CH/config\": [\n\t\t16835,\n\t\t3\n\t],\n\t\"./it-CH/config.json\": [\n\t\t16835,\n\t\t3\n\t],\n\t\"./it-CH/datepicker\": [\n\t\t75862,\n\t\t9,\n\t\t3481\n\t],\n\t\"./it-CH/datepicker.js\": [\n\t\t75862,\n\t\t9,\n\t\t3481\n\t],\n\t\"./it-CH/default\": [\n\t\t77638,\n\t\t9,\n\t\t9476,\n\t\t7638\n\t],\n\t\"./it-CH/default.js\": [\n\t\t77638,\n\t\t9,\n\t\t9476,\n\t\t7638\n\t],\n\t\"./it-CH/duration\": [\n\t\t44567,\n\t\t9,\n\t\t9710,\n\t\t4567\n\t],\n\t\"./it-CH/duration.js\": [\n\t\t44567,\n\t\t9,\n\t\t9710,\n\t\t4567\n\t],\n\t\"./it-CH/validation\": [\n\t\t63048,\n\t\t9,\n\t\t3048\n\t],\n\t\"./it-CH/validation.js\": [\n\t\t63048,\n\t\t9,\n\t\t3048\n\t],\n\t\"./it/config\": [\n\t\t37295,\n\t\t3\n\t],\n\t\"./it/config.json\": [\n\t\t37295,\n\t\t3\n\t],\n\t\"./it/custom\": [\n\t\t5290,\n\t\t3,\n\t\t5290\n\t],\n\t\"./it/custom.json\": [\n\t\t5290,\n\t\t3,\n\t\t5290\n\t],\n\t\"./it/datepicker\": [\n\t\t36147,\n\t\t9,\n\t\t6147\n\t],\n\t\"./it/datepicker.js\": [\n\t\t36147,\n\t\t9,\n\t\t6147\n\t],\n\t\"./it/default\": [\n\t\t23108,\n\t\t9,\n\t\t9476,\n\t\t3108\n\t],\n\t\"./it/default.js\": [\n\t\t23108,\n\t\t9,\n\t\t9476,\n\t\t3108\n\t],\n\t\"./it/duration\": [\n\t\t67905,\n\t\t9,\n\t\t9710,\n\t\t7905\n\t],\n\t\"./it/duration.js\": [\n\t\t67905,\n\t\t9,\n\t\t9710,\n\t\t7905\n\t],\n\t\"./it/fields\": [\n\t\t39476,\n\t\t3,\n\t\t9476\n\t],\n\t\"./it/fields.json\": [\n\t\t39476,\n\t\t3,\n\t\t9476\n\t],\n\t\"./it/texts\": [\n\t\t27519,\n\t\t3,\n\t\t7519\n\t],\n\t\"./it/texts.json\": [\n\t\t27519,\n\t\t3,\n\t\t7519\n\t],\n\t\"./it/validation\": [\n\t\t66346,\n\t\t9,\n\t\t6346\n\t],\n\t\"./it/validation.js\": [\n\t\t66346,\n\t\t9,\n\t\t6346\n\t],\n\t\"./ja/config\": [\n\t\t15203,\n\t\t3\n\t],\n\t\"./ja/config.json\": [\n\t\t15203,\n\t\t3\n\t],\n\t\"./ja/custom\": [\n\t\t79870,\n\t\t3,\n\t\t9870\n\t],\n\t\"./ja/custom.json\": [\n\t\t79870,\n\t\t3,\n\t\t9870\n\t],\n\t\"./ja/datepicker\": [\n\t\t70675,\n\t\t9,\n\t\t675\n\t],\n\t\"./ja/datepicker.js\": [\n\t\t70675,\n\t\t9,\n\t\t675\n\t],\n\t\"./ja/default\": [\n\t\t4964,\n\t\t9,\n\t\t4964\n\t],\n\t\"./ja/default.js\": [\n\t\t4964,\n\t\t9,\n\t\t4964\n\t],\n\t\"./ja/duration\": [\n\t\t87905,\n\t\t9,\n\t\t9710,\n\t\t2667\n\t],\n\t\"./ja/duration.js\": [\n\t\t87905,\n\t\t9,\n\t\t9710,\n\t\t2667\n\t],\n\t\"./ja/fields\": [\n\t\t68376,\n\t\t3,\n\t\t8376\n\t],\n\t\"./ja/fields.json\": [\n\t\t68376,\n\t\t3,\n\t\t8376\n\t],\n\t\"./ja/texts\": [\n\t\t30883,\n\t\t3,\n\t\t883\n\t],\n\t\"./ja/texts.json\": [\n\t\t30883,\n\t\t3,\n\t\t883\n\t],\n\t\"./ja/validation\": [\n\t\t14826,\n\t\t9,\n\t\t4826\n\t],\n\t\"./ja/validation.js\": [\n\t\t14826,\n\t\t9,\n\t\t4826\n\t],\n\t\"./pt-BR/config\": [\n\t\t87503,\n\t\t3\n\t],\n\t\"./pt-BR/config.json\": [\n\t\t87503,\n\t\t3\n\t],\n\t\"./pt-BR/custom\": [\n\t\t54794,\n\t\t3,\n\t\t4794\n\t],\n\t\"./pt-BR/custom.json\": [\n\t\t54794,\n\t\t3,\n\t\t4794\n\t],\n\t\"./pt-BR/datepicker\": [\n\t\t20105,\n\t\t9,\n\t\t105\n\t],\n\t\"./pt-BR/datepicker.js\": [\n\t\t20105,\n\t\t9,\n\t\t105\n\t],\n\t\"./pt-BR/default\": [\n\t\t92294,\n\t\t9,\n\t\t2294\n\t],\n\t\"./pt-BR/default.js\": [\n\t\t92294,\n\t\t9,\n\t\t2294\n\t],\n\t\"./pt-BR/duration\": [\n\t\t44631,\n\t\t9,\n\t\t9710,\n\t\t4631\n\t],\n\t\"./pt-BR/duration.js\": [\n\t\t44631,\n\t\t9,\n\t\t9710,\n\t\t4631\n\t],\n\t\"./pt-BR/fields\": [\n\t\t1524,\n\t\t3,\n\t\t1524\n\t],\n\t\"./pt-BR/fields.json\": [\n\t\t1524,\n\t\t3,\n\t\t1524\n\t],\n\t\"./pt-BR/texts\": [\n\t\t69311,\n\t\t3,\n\t\t9311\n\t],\n\t\"./pt-BR/texts.json\": [\n\t\t69311,\n\t\t3,\n\t\t9311\n\t],\n\t\"./pt-BR/validation\": [\n\t\t70536,\n\t\t9,\n\t\t536\n\t],\n\t\"./pt-BR/validation.js\": [\n\t\t70536,\n\t\t9,\n\t\t536\n\t],\n\t\"./pt/config\": [\n\t\t22356,\n\t\t3\n\t],\n\t\"./pt/config.json\": [\n\t\t22356,\n\t\t3\n\t],\n\t\"./pt/custom\": [\n\t\t2653,\n\t\t3,\n\t\t2653\n\t],\n\t\"./pt/custom.json\": [\n\t\t2653,\n\t\t3,\n\t\t2653\n\t],\n\t\"./pt/datepicker\": [\n\t\t59856,\n\t\t9,\n\t\t9856\n\t],\n\t\"./pt/datepicker.js\": [\n\t\t59856,\n\t\t9,\n\t\t9856\n\t],\n\t\"./pt/default\": [\n\t\t56513,\n\t\t9,\n\t\t6513\n\t],\n\t\"./pt/default.js\": [\n\t\t56513,\n\t\t9,\n\t\t6513\n\t],\n\t\"./pt/duration\": [\n\t\t32438,\n\t\t9,\n\t\t9710,\n\t\t2438\n\t],\n\t\"./pt/duration.js\": [\n\t\t32438,\n\t\t9,\n\t\t9710,\n\t\t2438\n\t],\n\t\"./pt/fields\": [\n\t\t44455,\n\t\t3,\n\t\t4455\n\t],\n\t\"./pt/fields.json\": [\n\t\t44455,\n\t\t3,\n\t\t4455\n\t],\n\t\"./pt/texts\": [\n\t\t29946,\n\t\t3,\n\t\t9946\n\t],\n\t\"./pt/texts.json\": [\n\t\t29946,\n\t\t3,\n\t\t9946\n\t],\n\t\"./pt/validation\": [\n\t\t12685,\n\t\t9,\n\t\t2685\n\t],\n\t\"./pt/validation.js\": [\n\t\t12685,\n\t\t9,\n\t\t2685\n\t],\n\t\"./ro/config\": [\n\t\t99069,\n\t\t3\n\t],\n\t\"./ro/config.json\": [\n\t\t99069,\n\t\t3\n\t],\n\t\"./ro/custom\": [\n\t\t5160,\n\t\t3,\n\t\t5160\n\t],\n\t\"./ro/custom.json\": [\n\t\t5160,\n\t\t3,\n\t\t5160\n\t],\n\t\"./ro/datepicker\": [\n\t\t2929,\n\t\t9,\n\t\t2929\n\t],\n\t\"./ro/datepicker.js\": [\n\t\t2929,\n\t\t9,\n\t\t2929\n\t],\n\t\"./ro/default\": [\n\t\t63022,\n\t\t9,\n\t\t3022\n\t],\n\t\"./ro/default.js\": [\n\t\t63022,\n\t\t9,\n\t\t3022\n\t],\n\t\"./ro/duration\": [\n\t\t65583,\n\t\t9,\n\t\t9710,\n\t\t5583\n\t],\n\t\"./ro/duration.js\": [\n\t\t65583,\n\t\t9,\n\t\t9710,\n\t\t5583\n\t],\n\t\"./ro/fields\": [\n\t\t14758,\n\t\t3,\n\t\t4758\n\t],\n\t\"./ro/fields.json\": [\n\t\t14758,\n\t\t3,\n\t\t4758\n\t],\n\t\"./ro/texts\": [\n\t\t55577,\n\t\t3,\n\t\t5577\n\t],\n\t\"./ro/texts.json\": [\n\t\t55577,\n\t\t3,\n\t\t5577\n\t],\n\t\"./ro/validation\": [\n\t\t90944,\n\t\t9,\n\t\t944\n\t],\n\t\"./ro/validation.js\": [\n\t\t90944,\n\t\t9,\n\t\t944\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(2).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, ids[1] | 16)\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 93731;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de-CH/default.js\": [\n\t\t968,\n\t\t4490,\n\t\t968\n\t],\n\t\"./de/default.js\": [\n\t\t62862,\n\t\t4490,\n\t\t2862\n\t],\n\t\"./en-GB/default.js\": [\n\t\t63170,\n\t\t3170\n\t],\n\t\"./en-US/default.js\": [\n\t\t15691,\n\t\t5691\n\t],\n\t\"./en/default.js\": [\n\t\t56886,\n\t\t6886\n\t],\n\t\"./es/default.js\": [\n\t\t89113,\n\t\t9113\n\t],\n\t\"./fr-CA/default.js\": [\n\t\t71082,\n\t\t5767,\n\t\t1082\n\t],\n\t\"./fr-CH/default.js\": [\n\t\t44545,\n\t\t5767,\n\t\t4545\n\t],\n\t\"./fr/default.js\": [\n\t\t1589,\n\t\t5767,\n\t\t1589\n\t],\n\t\"./it-CH/default.js\": [\n\t\t77638,\n\t\t9476,\n\t\t7638\n\t],\n\t\"./it/default.js\": [\n\t\t23108,\n\t\t9476,\n\t\t3108\n\t],\n\t\"./ja/default.js\": [\n\t\t4964,\n\t\t4964\n\t],\n\t\"./pt-BR/default.js\": [\n\t\t92294,\n\t\t2294\n\t],\n\t\"./pt/default.js\": [\n\t\t56513,\n\t\t6513\n\t],\n\t\"./ro/default.js\": [\n\t\t63022,\n\t\t3022\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 33545;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de-CH/config.json\": 79933,\n\t\"./de/config.json\": 28417,\n\t\"./en-GB/config.json\": 23667,\n\t\"./en-US/config.json\": 92444,\n\t\"./en/config.json\": 11401,\n\t\"./es/config.json\": 17212,\n\t\"./fr-CA/config.json\": 20995,\n\t\"./fr-CH/config.json\": 1738,\n\t\"./fr/config.json\": 37748,\n\t\"./it-CH/config.json\": 16835,\n\t\"./it/config.json\": 37295,\n\t\"./ja/config.json\": 15203,\n\t\"./pt-BR/config.json\": 87503,\n\t\"./pt/config.json\": 22356,\n\t\"./ro/config.json\": 99069\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 97991;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = function(queue) {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach(function(fn) { fn.r--; });\n\t\tqueue.forEach(function(fn) { fn.r-- ? fn.r++ : fn(); });\n\t}\n}\nvar wrapDeps = function(deps) { return deps.map(function(dep) {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then(function(r) {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, function(e) {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = function(fn) { fn(queue); };\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = function() {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}); };\n__webpack_require__.a = function(module, body, hasAwait) {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise(function(resolve, rej) {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = function(fn) { queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](function() {}); };\n\tmodule.exports = promise;\n\tbody(function(deps) {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = function() { return currentDeps.map(function(d) {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}); }\n\t\tvar promise = new Promise(function(resolve) {\n\t\t\tfn = function() { resolve(getResult); };\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = function(q) { q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))); };\n\t\t\tcurrentDeps.map(function(dep) { dep[webpackQueues](fnQueue); });\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, function(err) { (err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue); });\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"57\":\"5be4327a\",\"105\":\"e2583608\",\"143\":\"17c32b12\",\"224\":\"73380e95\",\"259\":\"5d9423a7\",\"286\":\"9968152f\",\"287\":\"de8bc964\",\"453\":\"cdf3dcef\",\"513\":\"cdf66342\",\"536\":\"1a6dbc5d\",\"537\":\"1e693d0f\",\"572\":\"e8726472\",\"635\":\"3fc71e47\",\"674\":\"628dacf0\",\"675\":\"18ffac5f\",\"771\":\"71d0273d\",\"883\":\"04936a46\",\"895\":\"8187e671\",\"944\":\"52479ee6\",\"967\":\"aedc4196\",\"968\":\"e992ebff\",\"1082\":\"bc8d3aaa\",\"1277\":\"7d6a095f\",\"1295\":\"27f043b7\",\"1456\":\"d1b42447\",\"1524\":\"98e4593a\",\"1589\":\"a8e28692\",\"1802\":\"e793d255\",\"1865\":\"a9fa055a\",\"1935\":\"049809bf\",\"1940\":\"d3c49361\",\"2018\":\"ce075d9e\",\"2294\":\"936b4a9d\",\"2438\":\"9de74d16\",\"2605\":\"1c2993cd\",\"2618\":\"11733eb3\",\"2653\":\"a4273a9b\",\"2667\":\"854d158f\",\"2685\":\"93067bb8\",\"2816\":\"45937916\",\"2862\":\"6af34fc2\",\"2904\":\"e9e7058d\",\"2929\":\"329a3419\",\"2963\":\"2d6fae39\",\"2986\":\"087cf117\",\"3022\":\"f05af57b\",\"3048\":\"24de37f6\",\"3108\":\"2381da32\",\"3129\":\"5db71fda\",\"3147\":\"8c62f1a6\",\"3155\":\"bfefc377\",\"3170\":\"1f0bbce4\",\"3301\":\"a6b90c8a\",\"3418\":\"1583461d\",\"3481\":\"94bedc54\",\"3545\":\"4729f6d7\",\"3611\":\"9beecf13\",\"3621\":\"33cab0e1\",\"3627\":\"35a62045\",\"3658\":\"b69417b4\",\"3665\":\"8d915206\",\"4312\":\"a55046c8\",\"4455\":\"20b19c75\",\"4490\":\"ba7247be\",\"4511\":\"814216f9\",\"4527\":\"9945a88b\",\"4545\":\"12d31611\",\"4567\":\"fd438142\",\"4581\":\"ab8bb64d\",\"4631\":\"3fda2a6b\",\"4648\":\"d62412bc\",\"4748\":\"9cad5d00\",\"4758\":\"81bfed10\",\"4794\":\"be71e110\",\"4801\":\"3edc3a39\",\"4826\":\"14dec5b7\",\"4870\":\"d5037fd1\",\"4905\":\"c253340a\",\"4964\":\"aabf058f\",\"4986\":\"43315b9e\",\"5048\":\"73e94787\",\"5160\":\"0199c3c7\",\"5197\":\"e5331eb8\",\"5262\":\"043c45ae\",\"5270\":\"955a079f\",\"5290\":\"11b823e6\",\"5300\":\"04767d9e\",\"5500\":\"a4789aa8\",\"5528\":\"5cf36dce\",\"5558\":\"1b7ea293\",\"5577\":\"77c30967\",\"5583\":\"a2d41d1b\",\"5691\":\"f24e25d4\",\"5692\":\"e7ac3b0d\",\"5767\":\"72834f18\",\"5833\":\"8137a15b\",\"5876\":\"4dd7f581\",\"5893\":\"6f7d75b8\",\"6046\":\"c4a8b81f\",\"6147\":\"1c9b2abd\",\"6247\":\"acea7c1f\",\"6340\":\"18158e76\",\"6346\":\"dbc5bcff\",\"6492\":\"8dedde79\",\"6513\":\"e0ea7017\",\"6750\":\"7aedfad0\",\"6763\":\"8e2843dd\",\"6780\":\"f53800c2\",\"6855\":\"192625a7\",\"6866\":\"6a34f86e\",\"6886\":\"72674174\",\"6892\":\"e419da08\",\"6935\":\"2ff826c6\",\"6948\":\"0f0902d7\",\"6997\":\"a28a1e59\",\"7003\":\"ca61e641\",\"7012\":\"55ebfa96\",\"7036\":\"af262471\",\"7090\":\"0eb933be\",\"7130\":\"880efce9\",\"7197\":\"f0bb6068\",\"7286\":\"347cbbbe\",\"7303\":\"e09f204d\",\"7312\":\"54428d50\",\"7341\":\"e7260174\",\"7400\":\"1d37f795\",\"7457\":\"db6d398a\",\"7519\":\"2d2eb579\",\"7638\":\"51f8c29a\",\"7659\":\"e86bd86e\",\"7719\":\"749c5ec0\",\"7820\":\"0ee35023\",\"7843\":\"814dcd79\",\"7905\":\"d12be83f\",\"7964\":\"ff8cbcd1\",\"8228\":\"efd83c38\",\"8236\":\"8111695f\",\"8376\":\"d2c8723f\",\"8499\":\"ebf4ff10\",\"8552\":\"d4b5fff9\",\"8648\":\"72d749a6\",\"8775\":\"a495f41e\",\"8798\":\"67d14058\",\"8940\":\"92678f29\",\"9099\":\"2ed3cba3\",\"9113\":\"bbb25f06\",\"9236\":\"a8d872bf\",\"9311\":\"4911b00a\",\"9384\":\"3cccf96f\",\"9476\":\"20e3397d\",\"9581\":\"692a0ccc\",\"9637\":\"618f0cfe\",\"9684\":\"31bdfb18\",\"9710\":\"f06fdbe3\",\"9738\":\"a53cd36a\",\"9813\":\"0e3b02b4\",\"9856\":\"8de9e0e6\",\"9870\":\"7449c477\",\"9891\":\"3c48937a\",\"9946\":\"f6bd18dd\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"143\":\"ac728857\",\"453\":\"f55423e0\",\"513\":\"1c24940f\",\"635\":\"f849b3f1\",\"967\":\"72c8c98f\",\"1802\":\"32ec082e\",\"1940\":\"4149415b\",\"2618\":\"6fac7cd8\",\"3147\":\"45781634\",\"3545\":\"2412eeb4\",\"3611\":\"c6830b09\",\"4748\":\"fc757a13\",\"5528\":\"45781634\",\"6780\":\"0780c10b\",\"6866\":\"081b4583\",\"7130\":\"c4ced7cf\",\"7312\":\"81053aa2\",\"7341\":\"c9b64985\",\"8648\":\"4b50bc38\",\"8775\":\"bbca74ef\",\"8940\":\"f418fe25\",\"9813\":\"63e96376\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"@radiantearth/stac-browser:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/stac-browser/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"143\":1,\"453\":1,\"513\":1,\"635\":1,\"967\":1,\"1802\":1,\"1940\":1,\"2618\":1,\"3147\":1,\"3545\":1,\"3611\":1,\"4748\":1,\"5528\":1,\"6780\":1,\"6866\":1,\"7130\":1,\"7312\":1,\"7341\":1,\"8648\":1,\"8775\":1,\"8940\":1,\"9813\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(453 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_radiantearth_stac_browser\"] = self[\"webpackChunk_radiantearth_stac_browser\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(22117); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","directives","name","rawName","value","load","expression","modifiers","class","classes","attrs","isList","hasImage","_b","staticClass","thumbnail","_e","data","catalog","fileFormats","length","description","deprecated","_v","_s","$t","_l","format","key","_f","showKeywordsInCatalogCards","keywords","temporalExtent","domProps","_t","staticRenderFns","components","StacLink","Keywords","filters","summarize","text","Utils","summarizeMd","formatMediaType","shorten","mixins","ThumbnailCardMixin","StacFieldsMixin","formatTemporalExtent","props","type","Object","required","computed","mapState","mapGetters","push","getStac","_this$data","_this$data$extent","_this$data$extent$tem","isCollection","extent","temporal","interval","Array","isArray","getFileFormats","getMetadata","methods","visible","STAC","$store","commit","href","component","title","catalogCount","model","view","callback","$$v","isComplete","catalogs","sort","filterPlaceholder","searchTerm","allKeywords","limitText","selectedKeywords","showPagination","ref","pagination","on","paginate","hasSearchCritera","catalogView","loading","cardsComponent","tag","cardsComponentProps","scopedSlots","_u","fn","hasMore","loadMore","$event","toggle","id","BIconBricks","BIconListTask","String","default","selectedValue","$emit","ViewButtons","columns","get","state","cardViewMode","set","dispatch","Catalog","Loading","Pagination","SearchBox","SortButtons","Multiselect","ViewMixin","collectionsOnly","Boolean","count","Number","$tc","values","some","link","allCatalogs","map","stac","filter","hasKeywords","every","keyword","includes","haystack","concat","search","collator","Intl","Collator","uiLanguage","slice","a","b","compare","getDisplayTitle","reverse","created","cardViewSort","placement","$refs","topPagination","scrollTo","$el","copyColor","preventDefault","stopPropagation","copy","apply","arguments","buttonProps","copyIcon","BIconClipboard","BIconClipboardCheck","BIconClipboardX","copyText","variant","status","startsWith","focus","document","activeElement","Clipboard","error","console","setTimeout","compact","inline","markup","allowHTML","reader","commonmark","writer","safe","smart","parsed","parse","dismissible","message","url","Error","queued","isDeprecated","hasDescription","item","properties","showKeywordsInItemCards","datetime","Registry","require","formatTimestamp","start_datetime","end_datetime","hasText","items","itemCount","api","allowFilter","hasFilters","filtersOpen","filterCount","apiFilters","emitFilter","chunkedItems","showMore","BCollapse","BIconSearch","Item","SearchFilter","showFilters","chunkSize","shownItems","size","watch","mounted","reset","small","fill","stretch","top","first","prev","next","last","tooltip","attributes","icon","displayTitle","fallbackTitle","Function","button","icons","getIcons","find","o","isLink","isStacBrowserLink","isStacMediaType","allowExternalAccess","isExternalUrl","stacBrowserNavigatesTo","rel","obj","to","isObject","assign","target","getBrowserPath","toBrowserPath","privateQueryParameters","uri","URI","addParameters","prefix","queryKey","hasQuery","addQuery","toString","getRequestUrl","fallback","module","exports","catalogUrl","catalogTitle","allowedDomains","detectLocaleFromBrowser","storeLocale","locale","fallbackLocale","supportedLocales","apiCatalogPriority","useTileLayerAsFallback","displayGeoTiffByDefault","buildTileUrlTemplate","asset","encodeURIComponent","stacProxyUrl","pathPrefix","historyMode","showThumbnailsAsAssets","geoTiffResolution","redirectLegacyUrls","itemsPerPage","defaultThumbnailSize","maxPreviewsOnMap","crossOriginMedia","requestHeaders","requestQueryParameters","preprocessSTAC","authConfig","Auth","constructor","options","changeListener","router","getButtonTitle","getLoginLabel","i18n","t","getLogoutLabel","getComponent","getComponentProps","init","login","confirmLogin","credentials","logout","confirmLogout","close","updateStore","_updateStore","defaultName","defaultIn","defaultFormatter","formatter","in_","in","undefined","query","cookie","header","create","config","method","scheme","BasicAuth","ApIKey","OIDC","equals","JSON","stringify","BrowserStorage","enabled","engine","setItem","getItem","removeItem","session","window","sessionStorage","navigator","cookieEnabled","Cookies","NoOp","localStorage","JSON_INDICATOR","remove","clear","_defineProperty","getExpiry","minutes","date","Date","setTime","getTime","epires","toGMTString","expires","parts","split","c","trim","substring","decodeURIComponent","warn","CQL_TEXT","CQL_JSON","CQL_ADV_COMPARISON","TYPES","Items","BasicFilters","CollectionIdFilter","ItemIdFilter","CqlFilters","Sort","FreeText","Global","Collections","conformances","canSort","supportsConformance","canFilterExtents","canFilterFreeText","cql","textMode","jsonMode","advancedComparison","functions","mixin","showThumbnail","isItem","thumbnails","getThumbnails","width","height","src","alt","crossorigin","right","blankColor","AuthUtils","resolveAuth","context","isSupported","schema","convertLegacyAuthConfig","CONFIG_PATH","CONFIG_CLI","STAC_BROWSER_CONFIG","Vue","use","VueI18n","API_LANGUAGE_CONFORMANCE","LOCALE_CONFIG","loadLocaleConfig","CONFIG","messages","languages","postTranslation","path","loadDefaultMessages","Promise","all","loadMessages","async","mergeLocaleMessage","executeCustomFunctions","customizeFiles","customize","p","file","translateFields","vars","te","Fields","stringLocale","keywordPos","indexOf","substr","localeWithoutKeyword","replace","language","shift","retVar","toLowerCase","pop","toUpperCase","country","script","prepareSupported","supported","lgs","forEach","supportedLocale","countries","firstCountry","main","lg","getBest","defaultLocale","getAnyCountry","showLogin","globalError","hideError","sidebar","displayCatalogTitle","browserVersion","proxy","isExternal","errorDescription","errorId","tab","selectedAsset","dataChanged","hasAssets","assets","shownAssets","showAsset","additionalLinks","collectionLink","providers","ignoredMetadataFields","shownAssetsOnMap","shownBandsOnMap","selectedAssetKey","keys","thumbnailRefs","isThumbnail","tabs","bands","meta","toBrowserUrl","store","getters","location","origin","fragment","removeTrailingSlash","addSpatialCoverage","bbox","spatialCoverage","geo","box","join","formatTemporalCoverage","dates","dt","makeAssets","contentUrl","toAbsolute","getAbsoluteUrl","encodingFormat","makeLinks","links","isBasedOn","fallbackDescription","makeProvider","role","roles","email","mail","stacType","container","collection","tc","inX","createBaseSchema","_data$getMetadata","thumbnailUrl","stacUrl","inLanguage","code","license","_data$getLinkWithRel","getLinkWithRel","copyrightHolder","producer","provider","creator","citation","identifier","dateCreated","dateModified","datePublished","version","image","createCatalogSchema","parents","i","findIndex","_data$extent","_data$extent$temporal","_data$extent2","_data$extent2$spatial","temporalCoverage","spatial","associatedMedia","hasPart","dataset","isPartOf","createItemSchema","includedInDataCatalog","start","end","distribution","addSchemaToDocument","doc","element","getElementById","createElement","head","appendChild","innerText","AnonymizedNotice","Assets","BTabs","BTab","CollectionLink","Description","DeprecationNotice","Links","Map","Metadata","Providers","ReadMore","Thumbnails","ShowAssetMixin","immediate","handler","parentLink","cc","mixed","hasCatalogs","hasItems","empty","licenses","temporalExtents","linkPosition","hasThumbnails","mapData","hasItemAssets","item_assets","nextCollectionsLink","loadMoreCollections","isApi","itemPages","apiItemsLoading","paginateItems","filterItems","filtersShown","Catalogs","formatLicense","formatTemporalExtents","stateQueryParameters","getApiItemsLoading","summaries","extents","pages","apiItemsPagination","apiItemsLink","addFiltersToLink","getApiItemsLink","features","rootLink","show","$root","msg","BrowseMixin","getPath","route","params","pathMatch","getRoutes","routes","loadParent","Browse","handleAuthError","cx","root","getStore","namespaced","actions","inProgress","canAuthenticate","rootState","isLoggedIn","mutations","setCredentials","setMethod","addAction","resetActions","setInProgress","waitForAuth","updateMethod","storage","newAuth","requestLogin","finalizeLogin","abortLogin","requestLogout","finalizeLogout","updateCredentials","intent","executeActions","catch","localDefaults","localRequestQueryParameters","itemdef","apiItems","catalogDefaults","queue","authActions","conformsTo","dataLanguage","dataLanguages","apiCollections","Vuex","strict","process","modules","auth","database","allowSelectCatalog","globalRequestQueryParameters","source","returnErrorObject","absoluteUrl","_state$data","isCatalog","_state$data2","isCatalogLike","_state$data3","_state$data4","_","_state$data5","getStacLinkWithRel","createLink","getLinksWithRels","segment","_state$data6","classRegexp","replaceAll","regexp","RegExp","match","supportsExtension","schemaUri","canSearch","canSearchCollections","canSearchItems","getStacLinksWithRel","hasCollections","getApiCollectionsLink","hasChilds","showCollections","showChilds","addMissingChildren","_state$data7","getLinksWithOtherRels","stacBrowserSpecialHandling","canBrowserDisplayImage","relative","absolute","unproxyUrl","relativeTo","protocol","authority","q","fromBrowserPath","externalRE","endsWith","whitelist","domain","is","relativeStr","baseUrl","addLocalQueryParams","proxyUrl","addQueryIfNotExists","acceptedLanguages","entries","l","setQueryParameter","delete","setRequestHeader","requestAuth","doAuth","setAuthData","authData","newState","updateState","openCollapsible","uid","idx","closeCollapsible","updateLoading","loadApi","loaded","processSTAC","resetCatalog","clearAll","resetPage","setPageMetadata","showPage","unshift","lang","errored","unqueue","splice","removeFromQueue","num","setConformanceClasses","setApiItemsLink","toggleApiItemsLoading","collectionId","setApiItems","feature","getPaginationLinks","setApiData","addApiCollections","collections","nextLink","resetApiItems","showGlobalError","trace","switchLocale","userSelected","dataLanguageCodes","dataLanguageFallback","I18N","loadBackground","urls","promises","loadParents","parentStac","tryLogin","action","BrowserError","args","loadRoot","force","noRetry","isPotentiallyIncomplete","response","stacRequest","localeLink","getLocaleLink","conformanceLink","isAuthenticationError","loadApiItems","selfLink","_cx$getters$root","apiCollectionsLink","markPotentiallyIncomplete","loadNextApiCollections","loadOgcApiConformance","loadGeoJson","retryAfterAuth","errorFn","isStacChooser","containerLink","back","selfBrowserLink","parentLinkTitle","collectionLinkTitle","searchBrowserLink","isSearchPage","authTitle","logInOut","authIcon","authLabel","showRoot","rootTitle","currentLanguage","native","global","supportsLanguageExt","ui","stacId","stacVersion","browserUrl","twitterUrl","mailTo","label","open","BFormGroup","BFormInput","BIconArrowUpRightSquare","BInputGroup","BInputGroupAppend","CopyButton","LANGUAGE_EXT","BDropdown","BDropdownItem","BIconBlank","BIconBox","BIconCheck","BIconEnvelope","BIconExclamationTriangle","BIconFlag","BIconLink","BIconShare","BIconTwitter","BPopover","RootStats","Url","Validation","_this$stac","stac_version","_this$stac2","newLang","alternate","uiSupported","dataSupported","mapActions","BIconArrow90degUp","BIconArrowLeft","BIconBook","BIconFolderSymlink","BIconLock","BIconUnlock","Source","authMethod","$route","dataLink","getSearchLink","equalUrl","mapMutations","$router","currentRoute","authComponent","submit","ApiKey","Basic","authComponentProps","beforeCreate","AlertPlugin","ButtonGroupPlugin","ButtonPlugin","BadgePlugin","CardPlugin","LayoutPlugin","SpinnerPlugin","directive","VBToggle","VBVisible","VueRouter","mode","base","Props","Watchers","newValue","Authentication","ErrorAlert","Sidebar","StacHeader","onDataLoaded","detectLocaleFromBrowserFromVueX","supportedLocalesFromVueX","storeLocaleFromVueX","STAC_BROWSER_VERSION","setAttribute","$i18n","documentElement","deep","duplicated","oldRoot","canChange","doReset","doSet","onReady","detectLocale","parseQuery","afterEach","from","resetOp","$on","showError","setInterval","best","_params$state","privateFromHash","hash","private","realKey","localRequest","then","h","StacBrowser","$mount","productionTip","stacObjCounter","migrate","_id","_url","_path","_apiChildrenListeners","_incomplete","_apiChildren","list","Migrate","isItemCollection","hasApiData","setApiDataListener","listener","v","getChildren","priority","children","isMediaType","geojsonMediaType","post","field","available","hreflang","allowEmpty","rels","getAssetsWithRoles","matches","sources","getTitle","titleForHref","_linkToAbsolute","img","browserOnly","prefer","other","stacHierarchy","stacPagination","ogcQueryables","ogcRelPrefix","stacRequestOptions","headers","Accept","body","axiosOptions","axios","freeze","_error$response","commonFileNames","schemaMediaType","stacMediaTypes","browserImageTypes","cogMediaTypes","geotiffMediaTypes","browserProtocols","imageMediaTypes","mapMediaTypes","super","types","string","shortenTitle","fullStr","strLen","separator","sepLen","charsToShow","frontChars","Math","ceil","backChars","floor","isGdalVfsUri","normalizeUri","noParams","absoluteTo","normalize","str","uri1","uri2","maxLength","removeMd","el","rect","getBoundingClientRect","isVisible","innerHeight","bottom","scrollIntoView","behavior","block","dateFromUTC","offset","getTimezoneOffset","dateToUTC","formatDatetimeQuery","toISOString","formatSortbyForPOST","sortby","direction","pageLinks","pageLink","isEmpty","isFinite","limit","toJSON","removeQuery","toText","setQuery","preferFileName","filename","dir","directory","suffix","getValueFromObjectUsingPath","object","searchterm","and","splitChars","s","term","pattern","test","mergeDeep","isAxiosError","res","oldPath","redirectLegacyUrl","part","decode","newPath","webpackAsyncContext","req","__webpack_require__","resolve","e","ids","webpackContext","webpackContextResolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","m","webpackQueues","Symbol","webpackExports","webpackError","resolveQueue","d","r","wrapDeps","deps","dep","ret","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","promise","rej","getResult","fnQueue","has","add","err","deferred","O","result","chunkIds","notFulfilled","Infinity","fulfilled","j","n","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","__proto__","ns","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","reduce","u","miniCssF","g","globalThis","hmd","prop","prototype","hasOwnProperty","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","toStringTag","nmd","paths","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.e94149d7.js b/js/app.e94149d7.js new file mode 100644 index 000000000..690674b5d --- /dev/null +++ b/js/app.e94149d7.js @@ -0,0 +1,2 @@ +(function(){var t={61629:function(t,e,a){"use strict";a.d(e,{A:function(){return m}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],class:t.classes,attrs:{"no-body":"","img-right":t.isList}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.catalog]}})],1),t.data&&(t.fileFormats.length>0||t.data.description||t.data.deprecated)?e("b-card-text",{staticClass:"intro"},[t.data.deprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t._v(" "+t._s(t._f("summarize")(t.data.description))+" ")],2):t._e(),t.showKeywordsInCatalogCards&&t.keywords.length>0?e("Keywords",{attrs:{keywords:t.keywords,variant:"primary",center:!t.isList}}):t._e(),t.temporalExtent?e("b-card-text",{staticClass:"datetime"},[e("small",{domProps:{innerHTML:t._s(t.temporalExtent)}})]):t._e()],1),e("b-card-footer",[t._t("footer",null,{data:t.data})],2)],1)},i=[],r=(a(44114),a(95353)),n=a(67467),o=a(97685),l=a(58581),c=a(31831),u=a(50735),d=a(2566),h={name:"Catalog",components:{StacLink:l["default"],Keywords:()=>a.e(8499).then(a.bind(a,28499))},filters:{summarize:t=>d.Ay.summarizeMd(t,300),formatMediaType:t=>(0,u.formatMediaType)(t,null,{shorten:!0})},mixins:[o.A,(0,n.A)({formatTemporalExtent:u.formatTemporalExtent})],props:{catalog:{type:Object,required:!0}},computed:{...(0,r.aH)(["showKeywordsInCatalogCards"]),...(0,r.L8)(["getStac"]),classes(){let t=["catalog-card"];return this.data||t.push("queued"),this.data&&this.data.deprecated&&t.push("deprecated"),this.hasImage&&t.push("has-thumbnail"),this.temporalExtent&&t.push("has-extent"),t},data(){return this.getStac(this.catalog)},temporalExtent(){var t,e,a;if(null!==(t=this.data)&&void 0!==t&&t.isCollection()&&(null===(e=this.data.extent)||void 0===e||null===(a=e.temporal)||void 0===a?void 0:a.interval.length)>0){let t=this.data.extent.temporal.interval[0];if(Array.isArray(t)&&("string"===typeof t[0]||"string"===typeof t[1]))return this.formatTemporalExtent(this.data.extent.temporal.interval[0],!0)}return null},fileFormats(){return this.data?this.data.getFileFormats():[]},keywords(){return this.data&&this.data.getMetadata("keywords")||[]}},methods:{load(t){this.catalog instanceof c.A||this.$store.commit(t?"queue":"unqueue",this.catalog.href)}}},p=h,f=a(81656),g=(0,f.A)(p,s,i,!1,null,null,null),m=g.exports},32398:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return C}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"catalogs mb-4"},[e("header",[e("h2",{staticClass:"title mr-2"},[t._v(t._s(t.title))]),null!==t.catalogCount?e("b-badge",{staticClass:"mr-4",attrs:{pill:"",variant:"secondary"}},[t._v(t._s(t.catalogCount))]):t._e(),e("ViewButtons",{staticClass:"mr-2",model:{value:t.view,callback:function(e){t.view=e},expression:"view"}}),t.isComplete&&t.catalogs.length>1?e("SortButtons",{model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.isComplete&&t.catalogs.length>1?e("section",{staticClass:"catalog-filter mb-2"},[e("SearchBox",{attrs:{placeholder:t.filterPlaceholder},model:{value:t.searchTerm,callback:function(e){t.searchTerm=e},expression:"searchTerm"}}),t.allKeywords.length>0?e("multiselect",{attrs:{multiple:"",options:t.allKeywords,placeholder:t.$t("multiselect.keywordsPlaceholder"),selectLabel:t.$t("multiselect.selectLabel"),selectedLabel:t.$t("multiselect.selectedLabel"),deselectLabel:t.$t("multiselect.deselectLabel"),limitText:t.limitText},model:{value:t.selectedKeywords,callback:function(e){t.selectedKeywords=e},expression:"selectedKeywords"}}):t._e()],1):t._e(),t.showPagination?e("Pagination",{ref:"topPagination",attrs:{pagination:t.pagination,placement:"top"},on:{paginate:t.paginate}}):t._e(),t.hasSearchCritera&&0===t.catalogView.length?e("b-alert",{staticClass:"mt-2",attrs:{variant:"warning",show:""}},[t._v(t._s(t.$t("catalogs.noMatches")))]):t._e(),e("section",{staticClass:"list"},[t.loading?e("Loading",{attrs:{fill:"",top:""}}):t._e(),e(t.cardsComponent,t._b({tag:"component"},"component",t.cardsComponentProps,!1),t._l(t.catalogView,(function(a){return e("Catalog",{key:a.href,attrs:{catalog:a},scopedSlots:t._u([{key:"footer",fn:function({data:e}){return[t._t("catalogFooter",null,{data:e})]}}],null,!0)})})),1)],1),t.showPagination?e("Pagination",{attrs:{pagination:t.pagination},on:{paginate:t.paginate}}):t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.loadMore,expression:"loadMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.loadMore}},[t._v(t._s(t.$t("catalogs.loadMore")))]):t._e()],1)},i=[],r=(a(44114),a(95353)),n=a(61629),o=a(39773),l=a(31831),c=function(){var t=this,e=t._self._c;return e("b-button-group",{attrs:{title:t.$t("view.title"),size:"sm"}},[e("b-button",{attrs:{title:t.$t("view.tiles.title"),variant:"outline-primary",pressed:"cards"===t.value},on:{click:function(e){return t.toggle("cards")}}},[e("b-icon-bricks"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.tiles.label")))])],1),e("b-button",{attrs:{title:t.$t("view.list.title"),variant:"outline-primary",pressed:"list"===t.value},on:{click:function(e){return t.toggle("list")}}},[e("b-icon-list-task"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("view.list.label")))])],1)],1)},u=[],d=a(82948),h={id:"SortButtons",components:{BIconBricks:d.Muv,BIconListTask:d.Xjw},props:{value:{type:String,default:"cards"}},methods:{toggle(t){this.value!==t&&this.$emit("input",t)}}},p=h,f=a(81656),g=(0,f.A)(p,c,u,!1,null,null,null),m=g.exports,b={components:{ViewButtons:m},computed:{cardsComponent(){return"list"===this.view?"div":"b-card-group"},cardsComponentProps(){return"list"===this.view?{class:["card-list"]}:{columns:!0}},view:{get(){return this.$store.state.cardViewMode},async set(t){await this.$store.dispatch("config",{cardViewMode:t})}}}},y=a(2566),A={name:"Catalogs",components:{Catalog:n.A,Loading:o.A,Pagination:()=>Promise.resolve().then(a.bind(a,70678)),SearchBox:()=>a.e(4748).then(a.bind(a,74748)),SortButtons:()=>a.e(771).then(a.bind(a,40771)),Multiselect:()=>a.e(5262).then(a.t.bind(a,75262,23))},mixins:[b],props:{catalogs:{type:Array,required:!0},collectionsOnly:{type:Boolean,required:!1},loading:{type:Boolean,default:!1},hasMore:{type:Boolean,default:!1},pagination:{type:Object,default:()=>({})},count:{type:Number,default:null}},data(){return{searchTerm:"",sort:0,selectedKeywords:[]}},computed:{...(0,r.aH)(["cardViewSort","uiLanguage"]),...(0,r.L8)(["getStac"]),catalogCount(){return this.catalogs.length!==this.catalogView.length?this.catalogView.length+"/"+this.catalogs.length:null!==this.count?this.count:this.isComplete?this.catalogs.length:null},title(){return this.collectionsOnly?this.$tc("stacCollection",this.catalogs.length):this.$tc("stacCatalog",this.catalogs.length)},isComplete(){return!this.hasMore&&!this.showPagination},filterPlaceholder(){return this.isComplete?this.$t("catalogs.filterByTitleAndMore"):this.$t("catalogs.filterByTitle")},showPagination(){return Object.values(this.pagination).some((t=>!!t))},allCatalogs(){return this.catalogs.map((t=>{let e=this.getStac(t);return e||t}))},hasSearchCritera(){return this.searchTerm||this.selectedKeywords.length>0},catalogView(){if(this.hasMore)return this.catalogs;let t=this.allCatalogs;if(this.hasSearchCritera&&(t=t.filter((t=>{if(this.selectedKeywords.length>0&&t instanceof l.A&&Array.isArray(t.keywords)){let e=this.selectedKeywords.every((e=>t.keywords.includes(e)));if(!e)return!1}if(this.searchTerm){let e=[t.title];return t instanceof l.A&&this.isComplete&&(e.push(t.id),Array.isArray(t.keywords)&&(e=e.concat(t.keywords))),y.Ay.search(this.searchTerm,e)}return!0}))),!this.hasMore&&0!==this.sort){const e=new Intl.Collator(this.uiLanguage);t=t.slice(0).sort(((t,a)=>e.compare(l.A.getDisplayTitle(t),l.A.getDisplayTitle(a)))),-1===this.sort&&(t=t.reverse())}return t},allKeywords(){if(!this.isComplete)return[];let t=[];for(let e of this.allCatalogs)if(e instanceof l.A&&Array.isArray(e.keywords))for(let a of e.keywords)t.includes(a)||t.push(a);return t.sort()}},created(){this.sort=this.cardViewSort},methods:{loadMore(t=!0){t&&(this.sort=0,this.$emit("loadMore"))},paginate(t,e){"bottom"===e&&this.$refs.topPagination&&y.Ay.scrollTo(this.$refs.topPagination.$el),this.$emit("paginate",t)},limitText(t){return this.$t("multiselect.andMore",{count:t})}}},v=A,w=(0,f.A)(v,s,i,!1,null,"3b49c796",null),C=w.exports},99975:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return d}});var s=function(){var t=this,e=t._self._c;return e("b-button",t._b({staticClass:"copy-button",attrs:{variant:t.copyColor,title:t.$t("copy")},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.copy.apply(null,arguments)}}},"b-button",t.buttonProps,!1),[e(t.copyIcon,{tag:"component"}),t._t("default")],2)},i=[],r=a(82948),n=a(14405),o={name:"CopyButton",components:{BIconClipboard:r.ceV,BIconClipboardCheck:r.mD4,BIconClipboardX:r.A6N},props:{copyText:{type:String,required:!0},variant:{type:String,default:"primary"},buttonProps:{type:Object,default:()=>({})}},data(){return{status:null}},computed:{copyColor(){let t=this.variant;return!0===this.status?t="success":!1===this.status&&(t="danger"),this.variant.startsWith("outline-")&&(t="outline-"+t),t},copyIcon(){return!0===this.status?"b-icon-clipboard-check":!1===this.status?"b-icon-clipboard-x":"b-icon-clipboard"}},methods:{async copy(){try{let t=document.activeElement;await n.B.copy(this.copyText),t.focus(),this.status=!0}catch(t){console.error(t),this.status=!1}setTimeout((()=>this.status=null),2500)}}},l=o,c=a(81656),u=(0,c.A)(l,s,i,!1,null,null,null),d=u.exports},41526:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return u}});var s=function(){var t=this,e=t._self._c;return e("div",{staticClass:"styled-description",class:{compact:t.compact,inline:t.inline},domProps:{innerHTML:t._s(t.markup(t.description))}})},i=[],r=a(30855),n={name:"Description",props:{description:{type:String,default:""},compact:{type:Boolean,default:!1},inline:{type:Boolean,default:!1},allowHTML:{type:Boolean,default:!1}},methods:{markup(t){if("string"!==typeof t)return"";var e=new r.iX,a=new r.j6({safe:!this.allowHTML,smart:!0}),s=e.parse(t);return a.render(s)}}},o=n,l=a(81656),c=(0,l.A)(o,s,i,!1,null,null,null),u=c.exports},85952:function(t,e,a){"use strict";a.d(e,{A:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("b-alert",{attrs:{variant:"danger",show:"",dismissible:t.dismissible},on:{dismissed:function(e){return t.$emit("close")}}},[e("p",{staticClass:"message"},[t._v(t._s(t.message||t.$t("errors.default")))]),t.error&&t.error.message?e("dl",{staticClass:"error"},[e("dt",[t._v(t._s(t.$t("errors.labels.cause")))]),e("dd",[t._v(t._s(t.error.message))])]):t._e(),t.description?e("dl",{staticClass:"description"},[e("dt",[t._v(t._s(t.$t("errors.labels.reason")))]),e("dd",[t._v(t._s(t.description))])]):t._e(),t.id?e("dl",{staticClass:"id"},[e("dt",[t._v(t._s(t.$t("errors.labels.code")))]),e("dd",[e("code",[t._v(t._s(t.id))])])]):t._e(),t.url?e("dl",{staticClass:"url"},[e("dt",[t._v(t._s(t.$t("errors.labels.requestURL")))]),e("dd",[e("code",[t._v(t._s(t.url))])])]):t._e()])},i=[],r={name:"ErrorAlert",props:{message:{type:String,default:null},description:{type:String,default:""},error:{type:[Object,Error],default:null},id:{type:[String,Number],default:null},url:{type:String,default:""},dismissible:{type:Boolean,default:!1}}},n=r,o=a(81656),l=(0,o.A)(n,s,i,!1,null,"7a9d646a",null),c=l.exports},77455:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return b}});var s=function(){var t=this,e=t._self._c;return e("b-card",{directives:[{name:"b-visible",rawName:"v-b-visible.400",value:t.load,expression:"load",modifiers:{400:!0}}],staticClass:"item-card",class:{queued:!t.data,deprecated:t.isDeprecated,description:t.hasDescription},attrs:{"no-body":""}},[t.hasImage?e("b-card-img-lazy",t._b({staticClass:"thumbnail",attrs:{offset:"200"}},"b-card-img-lazy",t.thumbnail,!1)):t._e(),e("b-card-body",[e("b-card-title",[e("StacLink",{staticClass:"stretched-link",attrs:{data:[t.data,t.item]}})],1),t.fileFormats.length>0||t.hasDescription||t.isDeprecated?e("b-card-text",{staticClass:"intro"},[t.isDeprecated?e("b-badge",{staticClass:"mr-1 mt-1 deprecated",attrs:{variant:"warning"}},[t._v(t._s(t.$t("deprecated")))]):t._e(),t._l(t.fileFormats,(function(a){return e("b-badge",{key:a,staticClass:"mr-1 mt-1 fileformat",attrs:{variant:"secondary"}},[t._v(t._s(t._f("formatMediaType")(a)))])})),t.hasDescription?[t._v(t._s(t._f("summarize")(t.data.properties.description)))]:t._e()],2):t._e(),t.showKeywordsInItemCards&&t.keywords.length>0?e("Keywords",{attrs:{keywords:t.keywords,variant:"primary",center:""}}):t._e(),e("b-card-text",[e("small",{staticClass:"text-muted"},[t.extent?[t._v(t._s(t._f("formatTemporalExtent")(t.extent)))]:t.data&&t.data.properties.datetime?[t._v(t._s(t._f("formatTimestamp")(t.data.properties.datetime)))]:[t._v(t._s(t.$t("items.noTime")))]],2)])],1)],1)},i=[],r=a(95353),n=a(97685),o=a(58581),l=a(31831),c=a(50735),u=a(19087),d=a.n(u),h=a(2566);d().addDependency("content-type",a(58597));var p={name:"Item",components:{StacLink:o["default"],Keywords:()=>a.e(8499).then(a.bind(a,28499))},filters:{summarize:t=>h.Ay.summarizeMd(t,150),formatMediaType:t=>(0,c.formatMediaType)(t,null,{shorten:!0}),formatTemporalExtent:c.formatTemporalExtent,formatTimestamp:c.formatTimestamp},mixins:[n.A],props:{item:{type:Object,required:!0}},computed:{...(0,r.aH)(["showKeywordsInItemCards"]),...(0,r.L8)(["getStac"]),data(){return this.getStac(this.item)},extent(){return this.data&&(this.data.properties.start_datetime||this.data.properties.end_datetime)?[this.data.properties.start_datetime,this.data.properties.end_datetime]:null},fileFormats(){return this.data?this.data.getFileFormats():[]},keywords(){return this.data&&this.data.getMetadata("keywords")||[]},isDeprecated(){return this.data instanceof l.A&&Boolean(this.data.properties.deprecated)},hasDescription(){return this.data instanceof l.A&&h.Ay.hasText(this.data.properties.description)}},methods:{load(t){this.item instanceof l.A||this.$store.commit(t?"queue":"unqueue",this.item.href)}}},f=p,g=a(81656),m=(0,g.A)(f,s,i,!1,null,null,null),b=m.exports},82239:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return b}});var s=function(){var t=this,e=t._self._c;return e("section",{staticClass:"items mb-4"},[e("header",[e("h2",{staticClass:"title mr-2"},[t._v(t._s(t.$tc("stacItem",t.items.length)))]),null!==t.itemCount?e("b-badge",{staticClass:"mr-4",attrs:{pill:"",variant:"secondary"}},[t._v(t._s(t.itemCount))]):t._e(),!t.api&&t.items.length>1?e("SortButtons",{model:{value:t.sort,callback:function(e){t.sort=e},expression:"sort"}}):t._e()],1),t.showPagination?e("Pagination",{ref:"topPagination",attrs:{pagination:t.pagination,placement:"top"},on:{paginate:t.paginate}}):t._e(),t.allowFilter?[t.api?e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.itemFilter",modifiers:{itemFilter:!0}}],staticClass:"mb-4 mt-2",class:{"ml-3":t.showPagination},attrs:{variant:t.hasFilters&&!t.filtersOpen?"primary":"outline-primary"}},[e("b-icon-search"),t._v(" "+t._s(t.filtersOpen?t.$t("items.hideFilter"):t.$t("items.showFilter"))+" "),t.hasFilters&&!t.filtersOpen?e("b-badge",{attrs:{variant:"dark"}},[t._v(t._s(t.filterCount))]):t._e()],1):t._e(),e("b-collapse",{attrs:{id:"itemFilter"},model:{value:t.filtersOpen,callback:function(e){t.filtersOpen=e},expression:"filtersOpen"}},[e("SearchFilter",{attrs:{type:"Items",title:t.$t("items.filter"),parent:t.stac,value:t.apiFilters},on:{input:t.emitFilter}})],1)]:t._e(),e("section",{staticClass:"list"},[t.loading?e("Loading",{attrs:{fill:"",top:""}}):t._e(),t.chunkedItems.length>0?e("b-card-group",{attrs:{columns:""}},t._l(t.chunkedItems,(function(t){return e("Item",{key:t.href,attrs:{item:t}})})),1):e("b-alert",{attrs:{variant:t.hasFilters?"warning":"info",show:""}},[t.hasFilters?[t._v(t._s(t.$t("search.noItemsFound")))]:[t._v(t._s(t.$t("items.noneAvailableForCollection")))]],2)],1),t.showPagination?e("Pagination",{attrs:{pagination:t.pagination},on:{paginate:t.paginate}}):t.hasMore?e("b-button",{directives:[{name:"b-visible",rawName:"v-b-visible.300",value:t.showMore,expression:"showMore",modifiers:{300:!0}}],attrs:{variant:"primary"},on:{click:t.showMore}},[t._v(t._s(t.$t("showMore")))]):t._e()],2)},i=[],r=a(77455),n=a(39773),o=a(70678),l=a(48883),c=a(82948),u=a(2566),d=a(31831),h=a(95353),p={name:"Items",components:{BCollapse:l.K,BIconSearch:c.S8S,Item:r["default"],SearchFilter:()=>Promise.all([a.e(537),a.e(5262),a.e(2904),a.e(453)]).then(a.bind(a,22904)),Loading:n.A,Pagination:o["default"],SortButtons:()=>a.e(771).then(a.bind(a,40771))},props:{items:{type:Array,required:!0},loading:{type:Boolean,default:!1},stac:{type:Object,required:!0},api:{type:Boolean,default:!1},allowFilter:{type:Boolean,default:!0},showFilters:{type:Boolean,default:!1},apiFilters:{type:Object,default:()=>({})},pagination:{type:Object,default:()=>({})},chunkSize:{type:Number,default:90},count:{type:Number,default:null}},data(){return{shownItems:this.chunkSize,filtersOpen:this.showFilters,sort:0}},computed:{...(0,h.aH)(["cardViewSort","uiLanguage"]),itemCount(){return null!==this.count?this.count:!this.api&&this.items.length>0?this.items.length:null},hasMore(){return this.items.length>this.shownItems},filterCount(){return Object.values(this.apiFilters).filter((t=>!(null===t||0===u.Ay.size(t)))).length},hasFilters(){return this.filterCount>0},chunkedItems(){let t=this.items;if(0!==this.sort){const e=new Intl.Collator(this.uiLanguage);t=t.slice(0).sort(((t,a)=>e.compare(d.A.getDisplayTitle(t),d.A.getDisplayTitle(a)))),-1===this.sort&&(t=t.reverse())}return!this.api&&this.items.length>this.chunkSize?t.slice(0,this.shownItems):t},showPagination(){if(this.api){if(this.hasFilters)return!0;if(this.items.length>0)return Object.values(this.pagination).some((t=>!!t))}return!1}},watch:{showFilters(){this.filter=this.showFilters},filtersOpen(){this.$emit("filtersShown",this.filtersOpen)}},created(){this.sort=this.cardViewSort},mounted(){this.showFilters&&setTimeout((()=>u.Ay.scrollTo(this.$el)),250)},methods:{emitFilter(t,e){this.$emit("filterItems",t,e)},showMore(){this.shownItems+=this.chunkSize},paginate(t,e){"bottom"===e&&this.$refs.topPagination&&u.Ay.scrollTo(this.$refs.topPagination.$el),this.$emit("paginate",t)}}},f=p,g=a(81656),m=(0,g.A)(f,s,i,!1,null,null,null),b=m.exports},39773:function(t,e,a){"use strict";a.d(e,{A:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("div",{class:t.classes},[e("b-spinner",{attrs:{label:t.$t("loading"),small:t.small}})],1)},i=[],r=(a(44114),{name:"Loading",props:{fill:{type:Boolean,default:!1},stretch:{type:Boolean,default:!1},small:{type:Boolean,default:!1},top:{type:Boolean,default:!1}},computed:{classes(){let t=["loading"];return this.fill?t.push("loading-fill"):this.stretch&&t.push("loading-stretch"),this.top&&t.push("top"),t}}}),n=r,o=a(81656),l=(0,o.A)(n,s,i,!1,null,"67931bb8",null),c=l.exports},70678:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return c}});var s=function(){var t=this,e=t._self._c;return e("b-button-group",{class:t.classes},[e("b-button",{attrs:{disabled:!t.pagination.first,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.first)}}},[t._v(t._s(t.$t("pagination.first")))]),e("b-button",{attrs:{disabled:!t.pagination.prev,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.prev)}}},[t._v(t._s(t.$t("pagination.previous")))]),e("b-button",{attrs:{disabled:!t.pagination.next,variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.next)}}},[t._v(t._s(t.$t("pagination.next")))]),t.pagination.last?e("b-button",{attrs:{variant:"primary"},on:{click:function(e){return t.paginate(t.pagination.last)}}},[t._v(t._s(t.$t("pagination.last")))]):t._e()],1)},i=[],r={name:"Pagination",props:{pagination:{type:Object,default:()=>({})},placement:{type:String,default:"bottom"}},computed:{classes(){return"top"===this.placement?"mb-4 mt-2":"mb-2 mt-2"}},methods:{paginate(t){this.$emit("paginate",t,this.placement)}}},n=r,o=a(81656),l=(0,o.A)(n,s,i,!1,null,null,null),c=l.exports},58581:function(t,e,a){"use strict";a.r(e),a.d(e,{default:function(){return g}});var s=function(){var t=this,e=t._self._c;return e(t.component,t._b({tag:"component",staticClass:"stac-link",attrs:{title:t.tooltip}},"component",t.attributes,!1),[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.displayTitle))])],2)},i=[],r=a(95353),n=a(59203),o=a(2566),l=a(31831),c=a(84193),u=a.n(c),d={name:"StacLink",props:{data:{type:[Object,Array],default:null},title:{type:String,default:null},fallbackTitle:{type:[String,Function],default:null},tooltip:{type:String,default:null},button:{type:[Boolean,Object],default:!1},state:{type:Object,default:null}},computed:{...(0,r.aH)(["allowExternalAccess","privateQueryParameters"]),...(0,r.L8)(["toBrowserPath","getRequestUrl","isExternalUrl"]),icon(){if(this.stac){let t=this.stac.getIcons();if(t.length>0)return t[0]}return null},stac(){return this.data instanceof l.A?this.data:Array.isArray(this.data)?this.data.find((t=>t instanceof l.A)):null},link(){return this.isLink(this.data)?this.data:Array.isArray(this.data)&&this.data.find((t=>this.isLink(t)))||{}},isStacBrowserLink(){return!!this.stac||!!o.Ay.isStacMediaType(this.link.type,!0)&&(!(!this.allowExternalAccess&&this.isExternalUrl(this.link.href))&&n.Bv.includes(this.link.rel))},attributes(){if(this.isStacBrowserLink||this.button){let t={to:this.href,rel:this.rel};return o.Ay.isObject(this.button)&&Object.assign(t,this.button),t}return{href:this.href,target:"_blank",rel:this.rel}},component(){return this.button?"b-button":this.isStacBrowserLink?"router-link":"a"},href(){if(this.stac||this.isStacBrowserLink){let t;if(t=this.stac?this.stac.getBrowserPath():this.toBrowserPath(this.link.href),t.startsWith("/")||(t="/"+t),o.Ay.size(this.privateQueryParameters)>0||o.Ay.size(this.state)>0){let e=u()(t),a=(t,a)=>{for(let s in t){let i=`${a}${s}`;e.hasQuery(i)||e.addQuery(i,t[s])}};a(this.privateQueryParameters,"~"),a(this.state,"."),t=e.toString()}return t}return this.getRequestUrl(this.link.href)},displayTitle(){if(this.title)return this.title;let t="function"===typeof this.fallbackTitle?this.fallbackTitle():this.fallbackTitle;return l.A.getDisplayTitle(this.data,t)}},methods:{isLink(t){return o.Ay.isObject(t)&&!(t instanceof l.A)}}},h=d,p=a(81656),f=(0,p.A)(h,s,i,!1,null,null,null),g=f.exports},19306:function(t){t.exports={catalogUrl:null,catalogTitle:"STAC Browser",allowExternalAccess:!0,allowedDomains:[],detectLocaleFromBrowser:!0,storeLocale:!0,locale:"en",fallbackLocale:"en",supportedLocales:["de","es","en","fr","it","ro","ja","pt"],apiCatalogPriority:null,useTileLayerAsFallback:!0,displayGeoTiffByDefault:!1,buildTileUrlTemplate:({href:t,asset:e})=>"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url="+encodeURIComponent(e.href.startsWith("/vsi")?e.href:t),stacProxyUrl:null,pathPrefix:"/",historyMode:"history",cardViewMode:"cards",cardViewSort:"asc",showKeywordsInItemCards:!1,showKeywordsInCatalogCards:!1,showThumbnailsAsAssets:!1,geoTiffResolution:128,redirectLegacyUrls:!1,itemsPerPage:12,defaultThumbnailSize:null,maxPreviewsOnMap:50,crossOriginMedia:null,requestHeaders:{},requestQueryParameters:{},preprocessSTAC:null,authConfig:null}},44426:function(t,e,a){"use strict";a.d(e,{A:function(){return r}});var s=a(48907),i=a(2566);class r{constructor(t={},e=null,a=null){this.options=t,this.changeListener=e,this.router=a}getButtonTitle(){return null}getLoginLabel(){return s.Ay.t("authentication.button.login")}getLogoutLabel(){return s.Ay.t("authentication.button.logout")}getComponent(){return null}getComponentProps(){return{}}async init(){}async login(){}async confirmLogin(t){this.changeListener&&await this.changeListener(!0,t)}async logout(){}async confirmLogout(){this.changeListener&&await this.changeListener(!1)}async close(){}updateStore(){return{}}_updateStore(t,e=null,a=null,s=null){const r=this.options.formatter||s,n=this.options.name||e,o=this.options.in||a;return t&&("Bearer"===r?t=`Bearer ${t}`:"function"===typeof r&&(t=r(t))),i.Ay.hasText(t)||(t=void 0),"query"===o?{query:{type:"private",key:n,value:t}}:"cookie"===o?{cookie:{key:n,value:t}}:"header"===o?{header:{key:n,value:t}}:{}}static async create(t,e,s){let n=new r;if(i.Ay.isObject(t))if("http"===t.type&&"basic"===t.scheme){const i=(await a.e(4648).then(a.bind(a,34648))).default;n=new i(t,e,s)}else if("apiKey"===t.type){const i=(await a.e(6935).then(a.bind(a,46935))).default;n=new i(t,e,s)}else if("openIdConnect"===t.type){const i=(await a.e(3621).then(a.bind(a,93621))).default;n=new i(t,e,s)}return await n.init(),n}static equals(t,e){return JSON.stringify(t.options)===JSON.stringify(e)}}},45311:function(t,e,a){"use strict";a.d(e,{A:function(){return r},W:function(){return n}});var s=a(42473),i=a(2566);class r{static enabled(t){if(!i.Ay.isObject(t))return!1;try{if(t.setItem("test","yes"),"yes"===t.getItem("test"))return t.removeItem("test"),!0}catch(e){console.error(e)}return!1}constructor(t=!1){t?r.enabled(window.sessionStorage)?this.engine=window.sessionStorage:navigator.cookieEnabled?this.engine=new n(!0):this.engine=new o:r.enabled(window.localStorage)?this.engine=window.localStorage:navigator.cookieEnabled?this.engine=new n:this.engine=new o}get(t){try{let e=this.engine.getItem(t);return"string"===typeof e&&e.startsWith(r.JSON_INDICATOR)&&(e=JSON.parse(e.slice(r.JSON_INDICATOR.length))),e}catch(e){return console.error(e),null}}set(t,e){try{"string"!==typeof e&&(e=r.JSON_INDICATOR+JSON.stringify(e)),this.engine.setItem(t,e)}catch(a){console.error(a)}}remove(t){try{this.engine.removeItem(t)}catch(e){console.error(e)}}clear(){this.engine.clear()}}(0,s.A)(r,"JSON_INDICATOR","\n\r");class n{constructor(t=!1){this.session=t}getExpiry(t=null){null===t&&(t=this.session?60:144e4);const e=new Date;e.setTime(e.getTime()+60*t*1e3),this.epires=e.toGMTString()}setItem(t,e,a=null){const s=this.getExpiry(a);e=encodeURIComponent(e),document.cookie=`${t}=${e}; expires=${s}; path=/`}getItem(t){const e=t+"=",a=document.cookie.split(";");for(let s of a)if(s=s.trim(),s.startsWith(e)){const t=s.substring(e.length,s.length);return decodeURIComponent(t)}return null}removeItem(t){this.set(t,"",-1)}clear(){document.cookie=""}}class o{constructor(t=!1){this.session=t}setItem(t){console.warn(`Browser storage disabled, can't store ${t}`)}getItem(){return null}removeItem(){}clear(){}}},78561:function(t,e,a){"use strict";a.d(e,{Q:function(){return o}});var s=a(95353);const i=["https://api.stacspec.org/v1.*/item-search#filter:cql-text","http://www.opengis.net/spec/cql2/1.*/conf/cql2-text"],r=["https://api.stacspec.org/v1.*/item-search#filter:cql-json","http://www.opengis.net/spec/cql2/1.*/conf/cql2-json"],n=["http://www.opengis.net/spec/cql2/1.*/req/advanced-comparison-operators"],o={Items:{BasicFilters:["https://api.stacspec.org/v1.*/ogcapi-features","http://www.opengis.net/spec/ogcapi-features-1/1.*/conf/core"],CollectionIdFilter:!1,ItemIdFilter:!1,CqlFilters:["http://www.opengis.net/spec/ogcapi-features-3/1.*/*/features-filter"],Sort:["https://api.stacspec.org/v1.*/ogcapi-features#sort","http://www.opengis.net/spec/ogcapi-records-1/1.*/conf/sorting"],FreeText:["https://api.stacspec.org/v1.*/ogcapi-features#free-text"]},Global:{BasicFilters:!0,CollectionIdFilter:!0,ItemIdFilter:!0,CqlFilters:["https://api.stacspec.org/v1.*/item-search#filter"],Sort:["https://api.stacspec.org/v1.*/item-search#sort"],FreeText:["https://api.stacspec.org/v1.*/item-search#free-text"]},Collections:{BasicFilters:["https://api.stacspec.org/v1.*/collection-search"],CollectionIdFilter:!1,ItemIdFilter:!1,CqlFilters:["https://api.stacspec.org/v1.*/collection-search#filter"],Sort:["https://api.stacspec.org/v1.*/collection-search#sort"],FreeText:["https://api.stacspec.org/v1.*/collection-search#free-text"]}};e.A={props:{type:{type:String,required:!0}},computed:{...(0,s.L8)(["supportsConformance"]),conformances(){return o[this.type]},canSort(){return this.supportsConformance(this.conformances.Sort)},canFilterExtents(){return this.supportsConformance(this.conformances.BasicFilters)},canFilterFreeText(){return this.supportsConformance(this.conformances.FreeText)},cql(){if(!this.supportsConformance(this.conformances.CqlFilters))return null;let t=this.supportsConformance(i),e=this.supportsConformance(r);return t||e?{textMode:t,jsonMode:e,advancedComparison:this.supportsConformance(n)}:null}}}},67467:function(t,e,a){"use strict";var s=a(95353);e.A=t=>{let e={computed:{...(0,s.aH)(["uiLanguage"])},methods:{}};for(let a in t){let s=t[a];e.methods[a]=function(){return this.uiLanguage,s(...arguments)}}return e}},97685:function(t,e,a){"use strict";var s=a(95353);e.A={props:{showThumbnail:{type:Boolean,default:!0}},computed:{...(0,s.aH)(["cardViewMode","crossOriginMedia","defaultThumbnailSize"]),isList(){return this.data&&!this.data.isItem()&&"list"===this.cardViewMode},hasImage(){return this.showThumbnail&&this.thumbnail},thumbnail(){if(this.data){let t=this.data.getThumbnails(!0,"thumbnail");if(t.length>0){let e,a,s=t[0];return Array.isArray(s["proj:shape"])&&2===s["proj:shape"].length?[a,e]=s["proj:shape"]:Array.isArray(this.defaultThumbnailSize)&&2===this.defaultThumbnailSize.length&&([a,e]=this.defaultThumbnailSize),{src:s.href,alt:s.title,crossorigin:this.crossOriginMedia,right:this.isList,blankColor:"rgba(0, 0, 0, 0.125)",width:e,height:a,"blank-width":e,"blank-height":a}}}return null}}}},24274:function(t,e,a){"use strict";a.d(e,{A:function(){return n}});var s=a(2566),i=a(31831),r=a(44426);class n{static resolveAuth(t,e){if(e instanceof i.A&&s.Ay.size(t["auth:refs"])>0){const a=e.getMetadata("auth:schemes");if(s.Ay.size(a)>0)return t["auth:refs"].map((t=>a[t])).filter((t=>s.Ay.isObject(t)))}return[]}static isSupported(t,e){switch(t instanceof r.A&&(t=t.options),t.type){case"http":return"basic"===t.schema;case"apiKey":return"header"===t.in||"query"===t.in;case"openIdConnect":return"history"===e.historyMode;default:return!1}}static convertLegacyAuthConfig(t){return s.Ay.isObject(t)&&null!==t.type?"query"===t.type||"header"===t.type?{type:"apiKey",in:t.type,name:t.key,description:t.description,formatter:t.formatter}:t:null}}},50737:function(t,e,a){"use strict";let s;s=a(19306),e.A=Object.assign(s,{pathPrefix:"/stac-browser",historyMode:"hash"},window.STAC_BROWSER_CONFIG)},48907:function(t,e,a){"use strict";a.d(e,{Aj:function(){return c},Qm:function(){return p},SM:function(){return g},_:function(){return m},fH:function(){return f}});var s=a(85471),i=a(64765),r=a(50737),n=a(14540),o=a.n(n),l=a(2566);s.Ay.use(i.A);const c=["https://api.stacspec.org/v1.*/language"],u={};function d(){for(let e of r.A.supportedLocales)u[e]=a(97991)(`./${e}/config.json`);const t={};for(let e in u)t[e]={languages:u};return t}const h=new i.A({locale:r.A.locale,fallbackLocale:r.A.fallbackLocale,messages:d(),postTranslation:(t,e)=>{if(""===t){const a=e.split(".");let s=h.messages[r.A.fallbackLocale];for(const e of a){if(!(e in s))return t;s=s[e]}return s}return t}});function p(){return Promise.all([f(r.A.locale),f(r.A.fallbackLocale)])}async function f(t){if(l.Ay.size(h.messages[t])>1)return;const e=(await a(33545)(`./${t}/default.js`)).default;h.mergeLocaleMessage(t,e)}async function g(t){const e=u[t].customize;if(0===l.Ay.size(u[t].customize))return;const s=e.map((async e=>{const s=(await a(93731)(`./${t}/${e}`)).default;return await s(t)}));return Promise.all(s)}function m(t,e=null){if("string"!==typeof t||0===t.length)return t;let a=`fields.${t}`;return h.te(a)?h.t(a,null,e):o().format(t,e)}e.Ay=h},39071:function(t,e,a){"use strict";a.d(e,{E0:function(){return i},f5:function(){return r}});a(44114);function s(t){if(!t)return;const e=String(t),a=e.indexOf("@"),s=-1!==a?e.substr(a+1):void 0,i=-1!==a?e.substr(0,a):e,r=String(i).replace(/-/g,"_").split("_");if(!r.length||r.length>4)return;const n=r.shift();if(!n)return;const o={keyword:s,language:n.toLowerCase()};if(!r.length)return o;if(3===r.length){const t=r.pop();t&&(o.variant=t.toUpperCase())}let l=r.pop();if(l.length>3&&(o.keyword=l,l=r.pop()),l&&(o.country=l.toUpperCase()),!r.length)return o;const c=r.pop();return"string"===typeof c&&c.length>=1&&(o.script=c[0].toUpperCase()+c.substring(1).toLowerCase()),o}function i(t){const e={};return t.forEach((t=>{const{language:a,country:i}=s(t);if(!a)throw new Error(`Locale ${t} is not parsable`);e[a]||(e[a]={countries:{},firstCountry:void 0,main:void 0});const r=e[a];i?(r.countries[i]=t,r.firstCountry||(r.firstCountry=t)):r.main=t})),e}function r(t,e,a,n){const o=Array.isArray(t)?i(t):t;if(!e&&a)return r(t,a,void 0,n);if(!e)return;const{language:l,country:c}=s(e);if(!l)return a;if(!o[l]){if(e===a)return;return r(t,a,null,n)}const{countries:u,main:d=a,firstCountry:h}=o[l];return u&&c?n&&h?u[c]?u[c]:h:u[c]?u[c]:d:n&&h?h:d}},59222:function(t,e,a){"use strict";var s=a(85471),i=function(){var t=this,e=t._self._c;return e("b-container",{attrs:{id:"stac-browser"}},[t.showLogin?e("Authentication"):t._e(),t.globalError?e("ErrorAlert",t._b({staticClass:"global-error",attrs:{dismissible:""},on:{close:t.hideError}},"ErrorAlert",t.globalError,!1)):t._e(),t.sidebar?e("Sidebar"):t._e(),e("header",[e("div",{staticClass:"logo"},[t._v(t._s(t.displayCatalogTitle))]),e("StacHeader",{on:{enableSidebar:function(e){t.sidebar=!0}}})],1),e("router-view"),e("footer",[e("i18n",{staticClass:"poweredby text-muted",attrs:{tag:"small",path:"poweredBy"},scopedSlots:t._u([{key:"link",fn:function(){return[e("a",{attrs:{href:"https://github.com/radiantearth/stac-browser",target:"_blank"}},[t._v("STAC Browser")]),t._v(" "+t._s(t.browserVersion)+" ")]},proxy:!0}])})],1)],1)},r=[],n=(a(44114),a(40173)),o=a(95353),l=a(50737),c=function(){var t=this,e=t._self._c;return e("main",{staticClass:"browse d-flex flex-column"},[!t.allowExternalAccess&&t.isExternal?e("b-alert",{attrs:{show:""}},[t._v(t._s(t.$t("errors.noExternalAccess")))]):t.error?e("ErrorAlert",{attrs:{url:t.url,description:t.errorDescription,id:t.errorId}}):t.loading?e("Loading",{attrs:{stretch:""}}):e(t.component,{tag:"component"})],1)},u=[],d=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,staticClass:"item"},[e("b-row",[e("b-col",{staticClass:"left"},[e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{card:"",pills:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.selectedAsset,scrollWheelZoom:""},on:{dataChanged:t.dataChanged}})],1),t.thumbnails.length>0?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.additionalLinks.length>0?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks,context:t.data}}):t._e()],1),e("b-col",{staticClass:"right"},[e("section",{staticClass:"intro"},[t.data.properties.description?e("h2",[t._v(t._s(t.$t("description")))]):t._e(),t.data.properties.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data.properties["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data.properties["anon:warning"]}}):t._e(),t.data.properties.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.properties.description}})],1):t._e(),Array.isArray(t.data.properties.keywords)&&t.data.properties.keywords.length>0?e("Keywords",{staticClass:"mb-3",attrs:{keywords:t.data.properties.keywords}}):t._e()],1),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),t.data.properties.providers?e("Providers",{attrs:{providers:t.data.properties.providers}}):t._e(),e("Metadata",{attrs:{data:t.data,type:"Item",ignoreFields:t.ignoredMetadataFields}})],1)],1)],1)},h=[],p=a(41526),f=a(6841),g=a.n(f),m=a(2566),b={data(){return{shownAssetsOnMap:[],shownBandsOnMap:[],tab:null,selectedAsset:null,selectedAssetKey:null}},computed:{...(0,o.L8)(["thumbnails","hasAssets","assets"]),shownAssets(){if(0===this.tab)return this.shownAssetsOnMap;if(1===this.tab||null===this.tab&&this.thumbnails.length>0){let t=[],e=this.thumbnails.map((t=>t.href));for(let a in this.assets){let s=this.assets[a];e.includes(s.href)&&t.push(a)}return t}return[]}},methods:{showAsset(t,e,a){a?this.tab=1:(this.tab=0,this.selectedAsset=t,this.selectedAssetKey=e),this.$refs.tabs&&m.Ay.scrollTo(this.$refs.tabs.$el)},dataChanged(t){m.Ay.isObject(t)?t.assets||t.bands?(m.Ay.size(t.assets)>0&&(this.selectedAssetKey?this.shownAssetsOnMap=[this.selectedAssetKey]:this.shownAssetsOnMap=t.assets.map((t=>t.key))),m.Ay.size(t.bands)>0&&(this.shownBandsOnMap=t.bands)):this.selectedAssetKey&&(this.shownAssetsOnMap=[this.selectedAssetKey]):(this.shownBandsOnMap=[],this.shownAssetsOnMap=[])}}},y=a(95050),A=a(63405),v=a(31831),w=a(84193),C=a.n(w),k=a(48907);function _(t,e){let a=e.getters.toBrowserPath(t),s=C()(window.location.origin.toString());return"hash"===e.state.historyMode?(s.path(e.state.pathPrefix),s.fragment(a)):s.path(m.Ay.removeTrailingSlash(e.state.pathPrefix)+a),s.toString()}function L(t,e){Array.isArray(e)&&e.length>=4&&(t.spatialCoverage={"@type":"Place",geo:{"@type":"GeoShape",box:(e||[]).join(" ")}})}function j(t){return!Array.isArray(t)||2!==t.length||"string"!==typeof t[0]&&"string"!==typeof t[1]?null:t.map((t=>t||"..")).join("/")}function x(t){return m.Ay.size(t.assets)>0?Object.values(t.assets).map((e=>({"@type":"DataDownload",contentUrl:m.Ay.toAbsolute(e.href,t.getAbsoluteUrl()),encodingFormat:e.type,name:e.title}))):[]}function S(t,e,a,s="DataCatalog"){return t.map((t=>{let i,r;t instanceof v.A?(i=v.A.getDisplayTitle(t),r=t.getAbsoluteUrl()):(i=t.title,r=m.Ay.toAbsolute(t.href,e.getAbsoluteUrl()));let n={"@type":s,name:i,url:_(r,a),isBasedOn:r};return"Dataset"===s&&(n.description=I(t,a)),n}))}function T(t,e){return t.filter((t=>m.Ay.isObject(t)&&Array.isArray(t.roles)&&t.roles.includes(e))).map((t=>({"@type":"Organization",name:t.name,description:t.description,url:t.url,email:t.email||t.mail})))}function I(t,e){let a,s;if(t instanceof v.A?(a=t.isItem()?"Item":t.type,s=t.collection):m.Ay.isObject(t)&&"item"===t.rel&&(a="Item"),a){let i=k.Ay.tc(`stac${a}`),r=k.Ay.t("in",{catalog:s||e.catalogTitle});return`SpatioTemporal Asset Catalog (STAC)\n${i} - ${t.id} ${r}`}}function O(t,e,a){var s;let i,r=v.A.getDisplayTitle(t),n=t.getAbsoluteUrl(),o=_(n,a),l=null===(s=t.getMetadata("language"))||void 0===s?void 0:s.code,c=t.getThumbnails(!0);c.length>0&&(i=m.Ay.toAbsolute(c[0].href,t.getAbsoluteUrl()));let u=t.getMetadata("license");var d;u&&"proprietary"!==u&&"various"!==u&&"other"!==u?u=`https://spdx.org/licenses/${u}.html`:u=null===(d=t.getLinkWithRel("license"))||void 0===d?void 0:d.href;u&&(u=m.Ay.toAbsolute(u,t.getAbsoluteUrl()));let h,p,f,g,b=t.getMetadata("providers");return m.Ay.size(b)>0&&(h=T(b,"licensor"),p=T(b,"producer"),f=T(b,"host"),g=T(b,"processor")),{"@context":"https://schema.org/","@type":e,name:r,description:t.getMetadata("description")||I(t,a),citation:t.getMetadata("sci:citation"),identifier:t.getMetadata("sci:doi")||t.id,keywords:t.getMetadata("keywords"),license:u,url:o,isBasedOn:n,dateCreated:t.getMetadata("created"),dateModified:t.getMetadata("updated"),datePublished:t.getMetadata("published"),expires:t.getMetadata("expires"),inLanguage:l,thumbnailUrl:i,version:t.getMetadata("version"),image:i,copyrightHolder:h,producer:p,provider:f,creator:g}}function $(t,e,a){if(!(t instanceof v.A))return null;e=e.filter((t=>m.Ay.isObject(t))),e.length>1&&(e=e.filter(((t,a)=>e.findIndex((e=>e.isBasedOn===t.isBasedOn))!==a)));let s=O(t,"DataCatalog",a);var i,r,n,o;t.isCollection()&&((null===(i=t.extent)||void 0===i||null===(r=i.temporal)||void 0===r?void 0:r.interval.length)>0&&(s.temporalCoverage=j(t.extent.temporal.interval[0])),(null===(n=t.extent)||void 0===n||null===(o=n.spatial)||void 0===o?void 0:o.bbox.length)>0&&L(s,t.extent.spatial.bbox[0]),s.associatedMedia=x(t));return s.hasPart=S(a.getters.catalogs,t,a),s.dataset=S(a.getters.items,t,a,"Dataset"),s.isPartOf=S(e,t,a),s}function P(t,e,a){if(!(t instanceof v.A))return null;e=e.filter((t=>m.Ay.isObject(t)));let s=O(t,"Dataset",a);s.includedInDataCatalog=S(e,t,a);let i=t.getMetadata("start_datetime"),r=t.getMetadata("end_datetime");return s.temporalCoverage=i||r?j([i,r]):t.getMetadata("datetime"),L(s,t.bbox),s.distribution=x(t),s}function B(t,e){let a="schema-org",s=t.getElementById(a);s||(s=t.createElement("script"),s.type="application/ld+json",s.id=a,t.head.appendChild(s)),s.innerText=JSON.stringify(e)}var M={name:"Item",components:{AnonymizedNotice:()=>a.e(7457).then(a.bind(a,47457)),Assets:()=>Promise.all([a.e(7719),a.e(513)]).then(a.bind(a,33231)),BTabs:y.r,BTab:A.a,CollectionLink:()=>a.e(9891).then(a.bind(a,89891)),Description:p["default"],DeprecationNotice:()=>a.e(7341).then(a.bind(a,57341)),Keywords:()=>a.e(8499).then(a.bind(a,28499)),Links:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(7719),a.e(9813)]).then(a.bind(a,73931)),Map:()=>a.e(1940).then(a.bind(a,81940)),Metadata:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(3147)]).then(a.bind(a,73147)),Providers:()=>a.e(635).then(a.bind(a,80635)),ReadMore:g(),Thumbnails:()=>a.e(8648).then(a.bind(a,48648))},mixins:[b],data(){return{ignoredMetadataFields:["description","keywords","providers","title","deprecated","proj:bbox","proj:geometry","auth:schemes","anon:warning"]}},computed:{...(0,o.aH)(["data","url"]),...(0,o.L8)(["additionalLinks","collectionLink","parentLink"])},watch:{data:{immediate:!0,handler(t){try{let e=P(t,[this.collectionLink,this.parentLink],this.$store);B(document,e)}catch(e){console.error(e)}}}}},F=M,E=a(81656),U=(0,E.A)(F,d,h,!1,null,null,null),R=U.exports,q=function(){var t=this,e=t._self._c;return e("div",{key:t.data.id,class:{cc:!0,[t.data.type.toLowerCase()]:!0,mixed:t.hasCatalogs&&t.hasItems,empty:!t.hasCatalogs&&!t.hasItems}},[e("b-row",[e("b-col",{staticClass:"meta"},[e("section",{staticClass:"intro"},[e("h2",[t._v(t._s(t.$t("description")))]),t.data.deprecated?e("DeprecationNotice",{attrs:{data:t.data}}):t._e(),t.data["anon:warning"]?e("AnonymizedNotice",{attrs:{warning:t.data["anon:warning"]}}):t._e(),t.data.description?e("ReadMore",{attrs:{lines:10,text:t.$t("read.more"),"text-less":t.$t("read.less")}},[e("Description",{attrs:{description:t.data.description}})],1):t._e(),Array.isArray(t.data.keywords)&&t.data.keywords.length>0?e("Keywords",{staticClass:"mb-3",attrs:{keywords:t.data.keywords}}):t._e(),t.isCollection?e("section",{staticClass:"metadata mb-4"},[t.licenses?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.license")))]),e("b-col",{staticClass:"value",attrs:{md:"8"}},[e("span",{domProps:{innerHTML:t._s(t.licenses)}})])],1):t._e(),t.temporalExtents?e("b-row",[e("b-col",{staticClass:"label",attrs:{md:"4"}},[t._v(t._s(t.$t("catalog.temporalExtent")))]),e("b-col",{staticClass:"value",attrs:{md:"8"}},[e("span",{domProps:{innerHTML:t._s(t.temporalExtents)}})])],1):t._e()],1):t._e(),"left"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks,context:t.data}}):t._e()],1),t.isCollection||t.hasThumbnails?e("section",{staticClass:"mb-4"},[e("b-card",{staticClass:"maps-preview",attrs:{"no-body":""}},[e("b-tabs",{ref:"tabs",attrs:{pills:"",card:"",vertical:"",end:""},model:{value:t.tab,callback:function(e){t.tab=e},expression:"tab"}},[t.isCollection?e("b-tab",{attrs:{title:t.$t("map"),"no-body":""}},[e("Map",{attrs:{stac:t.data,stacLayerData:t.mapData,fitBoundsOnce:"",popover:""},on:{dataChanged:t.dataChanged}})],1):t._e(),t.hasThumbnails?e("b-tab",{attrs:{title:t.$t("thumbnails"),"no-body":""}},[e("Thumbnails",{attrs:{thumbnails:t.thumbnails}})],1):t._e()],1)],1)],1):t._e(),t.hasAssets?e("Assets",{attrs:{assets:t.assets,context:t.data,shown:t.shownAssets},on:{showAsset:t.showAsset}}):t._e(),t.hasItemAssets&&!t.hasItems?e("Assets",{attrs:{assets:t.data.item_assets,context:t.data,definition:!0}}):t._e(),t.providers?e("Providers",{attrs:{providers:t.providers}}):t._e(),e("Metadata",{staticClass:"mb-4",attrs:{type:t.data.type,data:t.data,ignoreFields:t.ignoredMetadataFields}}),t.collectionLink?e("CollectionLink",{attrs:{link:t.collectionLink}}):t._e(),"right"===t.linkPosition?e("Links",{attrs:{title:t.$t("additionalResources"),links:t.additionalLinks,context:t.data}}):t._e()],1),t.hasCatalogs?e("b-col",{staticClass:"catalogs-container"},[e("Catalogs",{attrs:{catalogs:t.catalogs,hasMore:!!t.nextCollectionsLink},on:{loadMore:t.loadMoreCollections}})],1):t._e(),t.hasItems?e("b-col",{staticClass:"items-container"},[e("Items",{attrs:{stac:t.data,items:t.items,api:t.isApi,showFilters:t.showFilters,apiFilters:t.filters,pagination:t.itemPages,loading:t.apiItemsLoading},on:{paginate:t.paginateItems,filterItems:t.filterItems,filtersShown:t.filtersShown}}),t.hasItemAssets?e("Assets",{attrs:{assets:t.data.item_assets,context:t.data,definition:!0}}):t._e()],1):t._e()],1)],1)},D=[],z=a(32398),H=a(82239),N=a(67467),W=a(50735),Q={name:"Catalog",components:{AnonymizedNotice:()=>a.e(7457).then(a.bind(a,47457)),Assets:()=>Promise.all([a.e(7719),a.e(513)]).then(a.bind(a,33231)),BTabs:y.r,BTab:A.a,Catalogs:z["default"],CollectionLink:()=>a.e(9891).then(a.bind(a,89891)),DeprecationNotice:()=>a.e(7341).then(a.bind(a,57341)),Description:p["default"],Items:H["default"],Keywords:()=>a.e(8499).then(a.bind(a,28499)),Links:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(7719),a.e(9813)]).then(a.bind(a,73931)),Map:()=>a.e(1940).then(a.bind(a,81940)),Metadata:()=>Promise.all([a.e(9710),a.e(537),a.e(4870),a.e(3147)]).then(a.bind(a,73147)),Providers:()=>a.e(635).then(a.bind(a,80635)),ReadMore:g(),Thumbnails:()=>a.e(8648).then(a.bind(a,48648))},mixins:[b,(0,N.A)({formatLicense:W.formatLicense,formatTemporalExtents:W.formatTemporalExtents})],data(){return{filters:{},ignoredMetadataFields:["stac_version","stac_extensions","id","type","title","description","keywords","providers","license","extent","summaries","links","assets","item_assets","proj:bbox","proj:geometry","conformsTo","deprecated","anon:warning","stats:catalogs","stats:collections","stats:items","auth:schemes","stac_browser"]}},computed:{...(0,o.aH)(["data","url","apiItems","apiItemsLink","apiItemsPagination","nextCollectionsLink","stateQueryParameters"]),...(0,o.L8)(["additionalLinks","catalogs","collectionLink","isCollection","items","getApiItemsLoading","parentLink","rootLink"]),showFilters(){return Boolean(this.stateQueryParameters["itemFilterOpen"])},hasThumbnails(){return this.thumbnails.length>0},linkPosition(){return 0===this.additionalLinks.length?null:this.isCollection||!this.hasThumbnails?"right":"left"},apiItemsLoading(){return this.getApiItemsLoading(this.data)},licenses(){return this.isCollection&&this.data.license?this.formatLicense(this.data.license,null,null,this.data):null},providers(){let t=[];return Array.isArray(this.data.providers)&&this.data.providers.length>0?t=this.data.providers:this.isCollection&&m.Ay.isObject(this.data.summaries)&&Array.isArray(this.data.summaries.providers)&&(t=this.data.summaries.providers),t.length>0?t:null},temporalExtents(){if(this.isCollection&&this.data.extent.temporal.interval.length>0){let t=this.data.extent.temporal.interval;return t.length>1&&(t=t.slice(1)),this.formatTemporalExtents(t)}return null},hasItemAssets(){var t;return m.Ay.size(null===(t=this.data)||void 0===t?void 0:t.item_assets)>0},itemPages(){let t=Object.assign({},this.apiItemsPagination);return!t.first&&this.data&&this.apiItemsLink&&"items"!==this.apiItemsLink.rel&&(t.first=m.Ay.addFiltersToLink(this.data.getApiItemsLink(),this.filters)),t},isApi(){return Boolean(this.apiItemsLink)},hasItems(){return this.items.length>0||this.isApi},hasCatalogs(){return this.catalogs.length>0},mapData(){return this.selectedAsset?this.selectedAsset:{type:"FeatureCollection",features:this.items}}},watch:{data:{immediate:!0,handler(t){try{let e=$(t,[this.parentLink,this.rootLink],this.$store);B(document,e)}catch(e){console.error(e)}}}},methods:{filtersShown(t){this.$store.commit("updateState",{type:"itemFilterOpen",value:t?1:null})},loadMoreCollections(){this.$store.dispatch("loadNextApiCollections",{show:!0})},async paginateItems(t){try{await this.$store.dispatch("loadApiItems",{link:t,show:!0,filters:this.filters})}catch(e){this.$root.$emit("error",e,this.$t("errors.loadItems"))}},async filterItems(t,e){this.filters=t,e&&this.$store.commit("resetApiItems",this.data.getApiItemsLink());try{await this.$store.dispatch("loadApiItems",{link:this.data.getApiItemsLink(),show:!0,filters:t})}catch(a){let t=e?this.$t("errors.loadItems"):this.$t("errors.loadFilteredItems");this.$root.$emit("error",a,t)}}}},V=Q,G=(0,E.A)(V,q,D,!1,null,null,null),K=G.exports,J=a(79873),X={name:"Browse",components:{Catalog:K,Item:R},mixins:[J.A],computed:{...(0,o.L8)(["isItem"]),component(){return this.isItem?"Item":"Catalog"}}},Y=X,Z=(0,E.A)(Y,c,u,!1,null,null,null),tt=Z.exports;function et(t,e){let a=t.params.pathMatch;return e.allowExternalAccess&&a.startsWith("external/")&&(a="/"+a),{path:a}}function at(t){let e=[];return t.catalogUrl?e.push({path:"/search",name:"search",component:()=>Promise.all([a.e(537),a.e(5262),a.e(2904),a.e(3611)]).then(a.bind(a,33855))}):(e.push({path:"/",name:"select",component:()=>a.e(967).then(a.bind(a,60967))}),e.push({path:"/search/external/(.*)",name:"search",component:()=>Promise.all([a.e(537),a.e(5262),a.e(2904),a.e(3611)]).then(a.bind(a,33855)),props:t=>({loadParent:`/external/${t.params.pathMatch}`})})),e.push({path:"/auth/logout",name:"logout",component:()=>a.e(7130).then(a.bind(a,77130))}),e.push({path:"/auth",component:()=>a.e(7659).then(a.bind(a,17659))}),e.push({path:"/validation/(.*)",name:"validation",component:()=>Promise.all([a.e(537),a.e(287),a.e(3545)]).then(a.bind(a,93545)),props:e=>et(e,t)}),e.push({path:"/(.*)",name:"browse",component:tt,props:e=>et(e,t)}),e}var st=at,it=a(59203),rt=a(44426),nt=a(24274),ot=a(45311);const lt=async(t,e)=>{t.commit("showGlobalError",{error:e,message:k.Ay.t("errors.authFailed")},{root:!0}),await t.dispatch("updateCredentials")};function ct(t){return{namespaced:!0,state:{method:()=>new rt.A,actions:[],credentials:null,inProgress:!1},getters:{method(t){return t.method()},canAuthenticate(t,e,a){return nt.A.isSupported(e.method,a)},isLoggedIn(t){return null!==t.credentials},showLogin(t,e){return!e.isLoggedIn&&t.inProgress}},mutations:{setCredentials(t,e){t.credentials=e},setMethod(t,e){t.method=()=>e},addAction(t,e){t.actions.push(e)},resetActions(t){t.actions=[]},setInProgress(t,e=!0){t.inProgress=e}},actions:{async waitForAuth(t){rt.A.equals(t.getters.method,t.rootState.authConfig)||await t.dispatch("updateMethod",t.rootState.authConfig)},async updateMethod(e,a){a=nt.A.convertLegacyAuthConfig(a),await e.getters.method.close();const s=async(t,a)=>{t||(a=null),await e.dispatch("updateCredentials",a),t?await e.dispatch("executeActions"):e.commit("resetActions")},i=new ot.A(!0);i.set("authConfig",a);const r=await rt.A.create(a,s,t);e.commit("setMethod",r)},async requestLogin(t){if(!t.getters.isLoggedIn){t.commit("setInProgress");try{await t.getters.method.login()}catch(e){lt(t,e)}}},async finalizeLogin(t,e=null){t.commit("setInProgress",!1);try{await t.getters.method.confirmLogin(e)}catch(a){lt(t,a)}},async abortLogin(t){t.commit("setInProgress",!1)},async requestLogout(t){t.getters.isLoggedIn&&(t.commit("setInProgress"),await t.getters.method.logout())},async finalizeLogout(t){t.commit("setInProgress",!1);try{await t.getters.method.confirmLogout()}catch(e){lt(t,e)}},async updateCredentials(t,e=null){t.commit("setCredentials",e);const a=t.getters.method.updateStore(e);if(a.query)t.commit("setQueryParameter",a.query,{root:!0});else if(a.header)t.commit("setRequestHeader",a.header,{root:!0});else if(a.cookie){const t=new ot.W(!0);t.setItem(a.cookie.key,a.cookie.value)}},async executeActions(t){for(let a of t.state.actions)try{const e=a();e instanceof Promise&&e.catch((e=>lt(t,e)))}catch(e){lt(t,e)}t.commit("resetActions")}}}}var ut=a(33484),dt=a(39071),ht=a(14540),pt=a.n(ht),ft=a(78561);function gt(t,e){const a=()=>({url:"",title:t.catalogTitle,description:null,data:null,parents:null,globalError:null,localRequestQueryParameters:{},stateQueryParameters:{language:null,asset:[],itemdef:[]},apiItems:[],apiItemsLink:null,apiItemsPagination:{}}),i=()=>({queue:[],privateQueryParameters:{},authActions:[],conformsTo:[],dataLanguage:null,dataLanguages:[],apiCollections:[],apiItemsLoading:{},nextCollectionsLink:null});return new o.Ay.Store({strict:!1,modules:{auth:ct(e)},state:Object.assign({},t,a(),i(),{database:{},allowSelectCatalog:!t.catalogUrl,globalRequestQueryParameters:t.requestQueryParameters,uiLanguage:t.locale}),getters:{loading:t=>!t.url||!t.data||t.database[t.url]instanceof ut.Rh,getApiItemsLoading:t=>e=>{let a="";return e instanceof ut.Rh||(e instanceof v.A?a=e.id:"string"===typeof e&&(a=e),t.apiItemsLoading[a]||!1)},error:t=>t.database[t.url]instanceof Error?t.database[t.url]:null,getStac:t=>(e,a=!1)=>{if(e instanceof v.A)return e;if(m.Ay.isObject(e)&&m.Ay.hasText(e.href)&&(e=e.href),!m.Ay.hasText(e))return null;let s=m.Ay.toAbsolute(e,t.url),i=t.database[s];return i instanceof v.A||a&&i instanceof Error?i:null},displayCatalogTitle:(t,e)=>v.A.getDisplayTitle(e.root,t.catalogTitle),isCollection:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCollection())||!1},isCatalog:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalog())||!1},isCatalogLike:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isCatalogLike())||!1},isItem:t=>{var e;return(null===(e=t.data)||void 0===e?void 0:e.isItem())||!1},root:(t,e)=>e.getStac(e.rootLink),rootLink:t=>{var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("root");if(a)return a;if(t.catalogUrl)return m.Ay.createLink(t.catalogUrl,"root");if(t.url&&t.data instanceof v.A&&t.data.getLinksWithRels(["conformance","service-desc","service-doc","data","search"]).length>0)return m.Ay.createLink(t.url,"root");if(t.url){let e=C()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),"items"===a&&(e.segment(-1,""),e.segment(-1,"")),m.Ay.createLink(e.toString(),"root")}return null},parentLink:t=>{if(t.data instanceof v.A){let e=t.data.getStacLinkWithRel("parent");if(e)return e}if(t.url){let e=C()(t.url),a=e.segment(-2);if(["collections","items"].includes(a))return e.segment(-1,""),e.segment(-1,""),m.Ay.createLink(e.toString(),"parent")}return null},collectionLink:t=>{if(t.data instanceof v.A){var e;let a=null===(e=t.data)||void 0===e?void 0:e.getStacLinkWithRel("collection");if(a)return a}if(t.url){let e=C()(t.url),a=e.segment(-2);if("items"==a)return e.segment(-1,""),e.segment(-1,""),m.Ay.createLink(e.toString(),"collection")}return null},supportsConformance:t=>e=>{if(!Array.isArray(e))return e;let a=e.map((t=>t.replaceAll("*","[^/]+").replace(/\/?#/,"/?#"))).join("|"),s=new RegExp("^("+a+")$");return Boolean(t.conformsTo.find((t=>t.match(s))))},supportsExtension:t=>e=>m.Ay.supportsExtension(t.data,e),canSearch:(t,e)=>e.canSearchCollections||e.canSearchItems,canSearchItems:(t,e)=>e.supportsConformance(ft.Q.Items.BasicFilters),canSearchCollections:(t,e)=>e.supportsConformance(ft.Q.Collections.BasicFilters),items:t=>t.apiItems.length>0?t.apiItems:t.data?t.data.getStacLinksWithRel("item"):[],catalogs:t=>{let e=Boolean(t.data instanceof v.A&&t.data.getApiCollectionsLink()&&t.apiCollections.length>0),a=Boolean(t.data instanceof v.A),s=!t.apiCatalogPriority||"collections"===t.apiCatalogPriority,i=!t.apiCatalogPriority||"childs"===t.apiCatalogPriority,r=[];return e&&s&&(r=r.concat(t.apiCollections)),a&&i&&(r=v.A.addMissingChildren(r,t.data)),r},hasAssets:(t,e)=>Boolean(Object.values(e.assets).find((t=>m.Ay.isObject(t)&&"string"===typeof t.href))),assets:(t,e)=>{var a;if(m.Ay.isObject(null===(a=t.data)||void 0===a?void 0:a.assets)){if(t.showThumbnailsAsAssets)return t.data.assets;{let a={},s=e.thumbnails;for(let e in t.data.assets){let i=t.data.assets[e];s.includes(i)||(a[e]=i)}return a}}return{}},thumbnails:t=>t.data?t.data.getThumbnails(!0):[],additionalLinks:t=>t.data?t.data.getLinksWithOtherRels(it.ol).filter((t=>"preview"!==t.rel||!m.Ay.canBrowserDisplayImage(t))):[],toBrowserPath:(t,e)=>a=>{m.Ay.hasText(a)||(a="/");let s,i=m.Ay.toAbsolute((0,ut.rM)(a,t.stacProxyUrl),t.url,!1);if(!t.allowSelectCatalog&&t.catalogUrl&&(s=i.relativeTo(t.catalogUrl)),"undefined"===typeof s||e.isExternalUrl(i,!1)){if(!t.allowExternalAccess)return i.toString();let e=["/external"],a=i.protocol();"https"!==a&&e.push(a+":"),e.push(i.authority()),e.push(i.path().replace(/^\//,""));let s=e.join("/"),r=i.query();return r&&(s+=`?${r}`),s}return"/"+s.toString()},fromBrowserPath:(t,e)=>a=>{const s=/^\/(search\/)?external\//;if(m.Ay.hasText(a)&&"/"!==a)if(a.match(s)){let t,e=a.replace(s,"").split("/");t=e[0].endsWith(":")?e.shift():"https:",a=`${t}//${e.join("/")}`}else!t.allowSelectCatalog&&t.catalogUrl&&(a=m.Ay.toAbsolute(a,t.catalogUrl,!1));else a=t.catalogUrl;return e.getRequestUrl(a,null,!0)},isExternalUrl:t=>(e,a=!0)=>{if(!t.catalogUrl)return!1;if(e instanceof C()||(e=C()(e)),a&&Array.isArray(t.allowedDomains)&&t.allowedDomains.includes(e.domain()))return!1;let s;if(e.is("relative"))s=e;else if(s=e.relativeTo(t.catalogUrl),s.equals(e))return!0;let i=s.toString();return i.startsWith("//")||i.startsWith("../")},getRequestUrl:(t,e)=>(a,s=null,i=!1)=>{let r=m.Ay.toAbsolute((0,ut.sd)(a,t.stacProxyUrl),s||t.url,!1);return e.isExternalUrl(r)||((0,ut.mA)(r,t.privateQueryParameters),(0,ut.mA)(r,t.globalRequestQueryParameters),i&&(0,ut.mA)(r,t.localRequestQueryParameters)),r.toString()},acceptedLanguages:t=>{const e={en:.1};return Array.isArray(t.supportedLocales)&&t.supportedLocales.forEach((t=>e[t]=.2)),m.Ay.hasText(t.fallbackLocale)&&(e[t.fallbackLocale]=.5),Array.isArray(navigator.languages)&&navigator.languages.forEach((t=>e[t]=.7)),m.Ay.hasText(t.locale)&&(e[t.locale]=1),Object.entries(e).sort(((t,e)=>t[1]>e[1]?-1:t[1]e>=1?t:`${t};q=${e}`)).join(",")}},mutations:{config(t,e){for(let a in e){let s=e[a];switch(a){case"catalogTitle":t.catalogTitle=s;break;case"catalogUrl":"function"===typeof s?t.catalogUrl=s():"string"===typeof s&&(t.catalogUrl=s);break;case"crossOriginMedia":t.crossOriginMedia=["anonymous","use-credentials"].includes(s)?s:null;break;case"cardViewSort":switch(s){case"asc":t.cardViewSort=1;break;case"desc":t.cardViewSort=-1;break;default:t.cardViewSort=0}break;default:t[a]=s}}},languages(t,{uiLanguage:e,dataLanguage:a}){t.dataLanguage=a||null,t.uiLanguage=e||null},setQueryParameter(t,{type:e,key:a,value:i}){e=`${e}QueryParameters`,"undefined"===typeof i?s.Ay.delete(t[e],a):s.Ay.set(t[e],a,i)},setRequestHeader(t,{key:e,value:a}){"undefined"===typeof a?s.Ay.delete(t.requestHeaders,e):s.Ay.set(t.requestHeaders,e,a)},requestAuth(t,e){"function"===typeof e?t.doAuth.push(e):t.doAuth=[]},setAuthData(t,e){t.authData=e},state(t,e){t.stateQueryParameters=e},updateState(t,{type:e,value:a}){null===a||"undefined"===typeof a?s.Ay.delete(t.stateQueryParameters,e):s.Ay.set(t.stateQueryParameters,e,a)},openCollapsible(t,{type:e,uid:a}){const s=t.stateQueryParameters[e].indexOf(a);-1===s&&t.stateQueryParameters[e].push(a)},closeCollapsible(t,{type:e,uid:a}){const i=t.stateQueryParameters[e].indexOf(a);i>-1&&s.Ay.delete(t.stateQueryParameters[e],i)},updateLoading(t,{url:e,show:a,loadApi:i}){let r=t.database[e];s.Ay.set(r,"show",a||r.show),s.Ay.set(r,"loadApi",i||r.loadApi)},loading(t,{url:e,loading:a}){s.Ay.set(t.database,e,a),a.show&&(t.url=e)},loaded(t,{url:e,data:a}){s.Ay.set(t.database,e,(0,ut.Pj)(t,a))},clear(t,e){s.Ay.delete(t.database,e)},resetCatalog(e,s){Object.assign(e,i()),Object.assign(e,a()),e.supportedLocales.includes(e.locale)||(e.locale=t.locale),s&&(e.catalogUrl=t.catalogUrl,e.catalogTitle=t.catalogTitle,e.database={})},resetPage(t){Object.assign(t,a())},setPageMetadata(t,{title:e,description:a}){t.title=e,"undefined"!==typeof a&&(t.description=a)},showPage(t,{url:e,title:a,description:s,stac:i}){if(i||(i=t.database[e]||null),t.url=e||null,t.data=i instanceof v.A?i:null,t.description=s,a)t.title=a;else if(t.title=v.A.getDisplayTitle(t.data,t.catalogTitle),t.data){let e=t.data.getMetadata("description");m.Ay.hasText(e)&&(t.description=e)}if(t.data){let e=t.data.isItem()?t.data.properties:t.data,a=Array.isArray(e.languages)?e.languages.slice():[];m.Ay.isObject(e.language)&&a.unshift(e.language),t.dataLanguages=a.filter((t=>m.Ay.isObject(t)&&"string"===typeof t.code))}},errored(t,{url:e,error:a}){a instanceof Error||(a=new Error(a)),s.Ay.set(t.database,e,a)},queue(t,e){t.queue.push(e)},unqueue(t,e){let a=t.queue.indexOf(e);-1!==a&&t.queue.splice(a,1)},removeFromQueue(t,e){t.queue.splice(0,e)},setConformanceClasses(t,e){Array.isArray(e)&&(t.conformsTo=e)},setApiItemsLink(t,e){t.apiItemsLink=e},toggleApiItemsLoading(t,e=""){t.apiItemsLoading[e]?s.Ay.delete(t.apiItemsLoading,e):s.Ay.set(t.apiItemsLoading,e,!0)},setApiItems(t,{data:e,stac:a,show:s}){if(!m.Ay.isObject(e)||!Array.isArray(e.features))return;let i=e.features.map((e=>(0,ut.Pj)(t,e)));s&&(t.apiItems=i);let r=m.Ay.getPaginationLinks(e);s&&(t.apiItemsPagination=r),a instanceof v.A&&a.setApiData(i,r.next,r.prev)},addApiCollections(t,{data:e,stac:a,show:s}){if(!m.Ay.isObject(e)||!Array.isArray(e.collections))return;let i=e.collections.map((e=>(0,ut.Pj)(t,e))),r=m.Ay.getLinkWithRel(e.links,"next");s&&(t.nextCollectionsLink=r,t.apiCollections=t.apiCollections.concat(i)),a instanceof v.A&&a.setApiData(i,r)},resetApiItems(t,e){t.apiItems=[],t.apiItemsLink=e,t.apiItemsPagination={}},parents(t,e){t.parents=e},showGlobalError(t,e){e&&console.trace(e),t.globalError=e}},actions:{async config(t,e){t.commit("config",e);for(let a in e){let e=t.state[a];switch(a){case"catalogUrl":e&&await t.dispatch("load",{url:e,loadApi:!0});break;case"authConfig":await t.dispatch("auth/updateMethod",e);break}}},async switchLocale(t,{locale:e,userSelected:a}){if(await t.dispatch("config",{locale:e}),t.state.storeLocale&&a){const t=new ot.A;t.set("locale",e)}let s=(0,dt.f5)(t.state.supportedLocales,e,t.state.fallbackLocale),i=t.state.dataLanguages.map((t=>t.code)),r=t.state.dataLanguages.length>0?t.state.dataLanguages[0].code:s,n=(0,dt.f5)(i,e,r);await(0,k.fH)(s),pt().setLocales([s,t.state.fallbackLocale]),pt().setTranslator(k._),await(0,k.SM)(s),t.commit("languages",{dataLanguage:n,uiLanguage:s}),t.commit("setQueryParameter",{type:"state",key:"language",value:e})},async loadBackground(t,e){let a=t.state.queue.slice(0,e);if(a.length>0){let s=[];for(let e of a)s.push(t.dispatch("load",{url:e}));return t.commit("removeFromQueue",e),await Promise.all(s)}},async loadParents(t){if(!(t.state.data instanceof v.A))return void t.commit("parents",[]);let e=[],a=t.state.data;while(a){let s=a.getLinkWithRel("parent")||a.getLinkWithRel("root");if(!s)break;let i=m.Ay.toAbsolute(s.href,a.getAbsoluteUrl());await t.dispatch("load",{url:i,loadApi:!0});let r=t.getters.getStac(i,!0);if(r instanceof Error)return void t.commit("parents",r);if(r===a)break;e.push(r),a=r}t.commit("parents",e)},async tryLogin(t,{url:e,action:a}){t.commit("clear",e),t.commit("errored",{url:e,error:new m.fe(k.Ay.t("authentication.unauthorized"))}),a&&t.commit("auth/addAction",a),await t.dispatch("auth/requestLogin")},async load(t,a){let{url:s,show:i,loadApi:r,loadRoot:n,force:o,noRetry:l}=a,c=t.getters.toBrowserPath(s);s=m.Ay.toAbsolute(s,t.state.url),await t.dispatch("auth/waitForAuth"),n||"/"===c||!t.state.catalogUrl||t.getters.getStac(t.state.catalogUrl)||await t.dispatch("load",{url:t.state.catalogUrl,loadApi:!0,loadRoot:!0}),o&&t.commit("clear",s);let u=new ut.Rh(i,r),d=t.state.database[s];if(d instanceof ut.Rh)t.commit("updateLoading",{url:s,show:i,loadApi:r});else{if(!d||d instanceof Error||d instanceof v.A&&d.isPotentiallyIncomplete()){t.commit("loading",{url:s,loading:u});try{let a=await(0,ut.FF)(t,s);if(!m.Ay.isObject(a.data))throw new m.fe(k.Ay.t("errors.invalidJsonObject"));if(d=new v.A(a.data,s,c),t.commit("loaded",{url:s,data:d}),i){let a=d.getLocaleLink(t.state.dataLanguage);if(a)return void e.replace(t.getters.toBrowserPath(a.href))}if(!t.getters.root){let e=d.getLinkWithRel("root");e&&await t.dispatch("config",{catalogUrl:m.Ay.toAbsolute(e.href,s)})}let r=d.getStacLinkWithRel("conformance");Array.isArray(d.conformsTo)&&d.conformsTo.length>0?t.commit("setConformanceClasses",d.conformsTo):r&&await t.dispatch("loadOgcApiConformance",r)}catch(h){if(!l&&t.state.authConfig&&(0,ut.HD)(h))return void await t.dispatch("tryLogin",{url:s,action:()=>t.dispatch("load",Object.assign({noRetry:!0,force:!0,show:!0},a))});console.error(h),t.commit("errored",{url:s,error:h})}}if(u.loadApi&&d instanceof v.A){if(d.getApiCollectionsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadNextApiCollections",e)}catch(h){t.commit("showGlobalError",{message:k.Ay.t("errors.loadApiCollectionsFailed"),error:h})}}if(d.getApiItemsLink()){let e={stac:d,show:u.show};try{await t.dispatch("loadApiItems",e)}catch(h){t.commit("showGlobalError",{message:k.Ay.t("errors.loadApiItemsFailed"),error:h})}}}u.show&&t.commit("showPage",{url:s})}},async loadApiItems(t,e){let{link:a,stac:s,show:i,filters:r,noRetry:n}=e,o=s instanceof v.A?s.id:"";t.commit("toggleApiItemsLoading",o);try{let e=t.state.url;s instanceof v.A&&(a=s.getApiItemsLink(),e=s.getAbsoluteUrl()),a=m.Ay.addFiltersToLink(a,r,t.state.itemsPerPage);let n=await(0,ut.FF)(t,a);if(m.Ay.isObject(n.data)&&Array.isArray(n.data.features))return n.data.features=n.data.features.map((a=>{try{if(!m.Ay.isObject(a)||"Feature"!==a.type)return null;let i,r=m.Ay.getLinkWithRel(a.links,"self");if(null!==r&&void 0!==r&&r.href)i=m.Ay.toAbsolute(r.href,e);else{if("undefined"===typeof a.id)return null;{var s;let r=null===(s=t.getters.root)||void 0===s?void 0:s.getApiCollectionsLink();if(e)i=m.Ay.toAbsolute(`items/${a.id}`,e);else if(r)i=m.Ay.toAbsolute(`${o}/items/${a.id}`,r.href);else{if(!t.state.catalogUrl)return null;i=m.Ay.toAbsolute(`collections/${o}/items/${a.id}`,t.state.catalogUrl)}}}let n=t.getters.getStac(i);return n||(n=new v.A(a,i,t.getters.toBrowserPath(i)),n.markPotentiallyIncomplete(),t.commit("loaded",{data:n,url:i}),n)}catch(i){return console.error(i),null}})).filter((t=>t instanceof v.A)),i&&t.commit("setApiItemsLink",a),t.commit("setApiItems",{data:n.data,stac:s,show:i}),t.commit("toggleApiItemsLoading",o),n;throw new m.fe(k.Ay.t("errors.invalidStacItems"))}catch(l){if(t.commit("toggleApiItemsLoading",o),!n&&t.state.authConfig&&(0,ut.HD)(l))return void await t.dispatch("tryLogin",{url:a.href,action:()=>t.dispatch("loadApiItems",Object.assign({noRetry:!0,force:!0},e))});throw l}},async loadNextApiCollections(t,e){let a,{stac:s,show:i,noRetry:r}=e;if(s){if(t.state.apiCollections.length>0)return;a=s.getLinkWithRel("data")}else s=t.state.data,a=t.state.nextCollectionsLink;if(a)try{let e=await(0,ut.FF)(t,a);if(!m.Ay.isObject(e.data)||!Array.isArray(e.data.collections))throw new m.fe(k.Ay.t("errors.invalidStacCollections"));e.data.collections=e.data.collections.map((e=>{let a,i=m.Ay.getLinkWithRel(e.links,"self");a=null!==i&&void 0!==i&&i.href?m.Ay.toAbsolute(i.href,t.state.url||s.getAbsoluteUrl()):m.Ay.toAbsolute(`collections/${e.id}`,t.state.catalogUrl||s.getAbsoluteUrl());let r=t.getters.getStac(a);return r||(r=new v.A(e,a,t.getters.toBrowserPath(a)),r.markPotentiallyIncomplete(),t.commit("loaded",{data:r,url:a}),r)})),t.commit("addApiCollections",{data:e.data,stac:s,show:i})}catch(n){if(!r&&t.state.authConfig&&(0,ut.HD)(n))return void await t.dispatch("tryLogin",{url:a.href,action:()=>t.dispatch("loadNextApiCollections",Object.assign({noRetry:!0,force:!0},e))});throw n}},async loadOgcApiConformance(t,e){let a=await(0,ut.FF)(t,e);m.Ay.isObject(a.data)&&Array.isArray(a.data.conformsTo)&&t.commit("setConformanceClasses",a.data.conformsTo)},async loadGeoJson(t,e){try{let a=await(0,ut.FF)(t,e);return a.data}catch(a){return null}},async retryAfterAuth(t){let e=e=>t.commit("showGlobalError",{error:e,message:k.Ay.t("errors.authFailed")});for(let s of t.state.doAuth)try{let t=s();t instanceof Promise&&t.catch(e)}catch(a){e(a)}}}})}var mt=gt,bt=a(78933),yt=a(92999),At=a(12670),vt=a(1169),wt=a(19680),Ct=a(35915),kt=a(56967),_t=a(80262),Lt=a(93444),jt=(a(59313),a(85952)),xt=function(){var t=this,e=t._self._c;return e("b-row",[e("b-col",{attrs:{md:"12"}},[e("Source",{staticClass:"float-right",attrs:{title:t.title,stacUrl:t.url,stac:t.data}}),e("h1",[t.icon?[e("img",{staticClass:"icon mr-2",attrs:{src:t.icon.href,alt:t.icon.title,title:t.icon.title}})]:t._e(),e("span",{staticClass:"title"},[t._v(t._s(t.title))])],2),t.isStacChooser()?t._e():e("p",{staticClass:"lead"},[t.containerLink?e("i18n",{staticClass:"in mr-3",attrs:{tag:"span",path:"in"},scopedSlots:t._u([{key:"catalog",fn:function(){return[e("StacLink",{attrs:{data:t.containerLink}})]},proxy:!0}],null,!1,1458487365)}):t._e(),e("b-button-group",[t.back?e("b-button",{attrs:{to:t.selfBrowserLink,title:t.$t("goBack.description",{type:t.type}),variant:"outline-primary",size:"sm"}},[e("b-icon-arrow-left"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goBack.label")))])],1):t._e(),t.parentLink?e("b-button",{attrs:{to:t.toBrowserPath(t.parentLink.href),title:t.parentLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-arrow-90deg-up"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToParent.label")))])],1):t._e(),t.collectionLink?e("b-button",{attrs:{to:t.toBrowserPath(t.collectionLink.href),title:t.collectionLinkTitle,variant:"outline-primary",size:"sm"}},[e("b-icon-folder-symlink"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("goToCollection.label")))])],1):t._e(),e("b-button",{directives:[{name:"b-toggle",rawName:"v-b-toggle.sidebar",modifiers:{sidebar:!0}}],attrs:{variant:"outline-primary",size:"sm",title:t.$t("browse")},on:{click:function(e){return t.$emit("enableSidebar")}}},[e("b-icon-book"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("browse")))])],1),t.canSearch?e("b-button",{attrs:{variant:"outline-primary",size:"sm",to:t.searchBrowserLink,title:t.$t("search.title"),pressed:t.isSearchPage()}},[e("b-icon-search"),t._v(" "),e("span",{staticClass:"button-label prio"},[t._v(t._s(t.$t("search.title")))])],1):t._e(),t.canAuthenticate?e("b-button",{attrs:{variant:"outline-primary",size:"sm",title:t.authTitle},on:{click:t.logInOut}},[e(t.authIcon,{tag:"component"}),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.authLabel))])],1):t._e()],1)],1)],1)],1)},St=[],Tt=function(){var t=this,e=t._self._c;return e("div",{staticClass:"share mt-1"},[e("b-button-group",[t.showRoot?e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-root-btn"}},[e("b-icon-box"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.rootTitle))])],1):t._e(),t.stacUrl?e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-link-btn",title:t.$t("source.detailsAboutSource")}},[e("b-icon-link"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.label")))])],1):t._e(),e("b-button",{attrs:{size:"sm",variant:"outline-primary",id:"popover-share-btn",title:t.$t("source.share.withOthers")}},[e("b-icon-share"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.share.label")))])],1),e("b-dropdown",{attrs:{size:"sm",variant:"outline-primary",right:"",title:t.$t("source.language.switch")},scopedSlots:t._u([{key:"button-content",fn:function(){return[e("b-icon-flag"),t._v(" "),e("span",{staticClass:"button-label"},[t._v(t._s(t.$t("source.language.label",{currentLanguage:t.currentLanguage})))])]},proxy:!0}])},t._l(t.languages,(function(a){return e("b-dropdown-item",{key:a.code,staticClass:"lang-item",on:{click:function(e){return t.switchLocale({locale:a.code,userSelected:!0})}}},[t.locale===a.code?e("b-icon-check"):e("b-icon-blank"),e("span",{staticClass:"title"},[e("span",{attrs:{lang:a.code}},[t._v(t._s(a.native))]),a.global&&a.global!==a.native?[t._v(" / "),e("span",{attrs:{lang:"en"}},[t._v(t._s(a.global))])]:t._e()],2),!t.supportsLanguageExt||a.ui&&a.data?t._e():e("b-icon-exclamation-triangle",{staticClass:"ml-2",attrs:{title:a.ui?t.$t("source.language.onlyUI"):t.$t("source.language.onlyData")}})],1)})),1)],1),t.showRoot?e("b-popover",{attrs:{id:"popover-root",target:"popover-root-btn",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.rootTitle}},[e("RootStats")],1):t._e(),t.stacUrl?e("b-popover",{attrs:{id:"popover-link",target:"popover-link-btn",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.title")}},[t.stac?[t.stacId?e("b-row",{staticClass:"stac-id"},[e("b-col",{attrs:{cols:"4"}},[t._v(t._s(t.$t("source.id")))]),e("b-col",[e("code",[t._v(t._s(t.stacId))]),e("CopyButton",{staticClass:"ml-2",attrs:{copyText:t.stacId,"button-props":{size:"sm"},variant:"primary"}})],1)],1):t._e(),t.stacVersion?e("b-row",{staticClass:"stac-version"},[e("b-col",{attrs:{cols:"4"}},[t._v(t._s(t.$t("source.stacVersion")))]),e("b-col",[t._v(t._s(t.stacVersion))])],1):t._e(),e("b-row",{staticClass:"stac-valid"},[e("b-col",{attrs:{cols:"4"}},[t._v(t._s(t.$t("source.valid")))]),e("b-col",[e("Validation",{attrs:{data:t.stac}})],1)],1),e("hr")]:t._e(),e("Url",{attrs:{id:"stacUrl",url:t.stacUrl,label:t.$t("source.locatedAt")}})],2):t._e(),e("b-popover",{attrs:{id:"popover-share",target:"popover-share-btn",triggers:"focus",placement:"bottom",container:"stac-browser",title:t.$t("source.share.title")}},[e("Url",{attrs:{id:"browserUrl",url:t.browserUrl(),label:t.$t("source.share.sharePageWithOthers"),open:!1}}),e("hr"),e("b-button",{staticClass:"twitter mr-1",attrs:{href:t.twitterUrl}},[e("b-icon-twitter"),t._v(" "+t._s(t.$t("source.share.twitter")))],1),e("b-button",{attrs:{variant:"dark",href:t.mailTo}},[e("b-icon-envelope"),t._v(" "+t._s(t.$t("source.share.email")))],1)],1)],1)},It=[],Ot=a(15378),$t=a(9656),Pt=a(82948),Bt=a(30278),Mt=function(){var t=this,e=t._self._c;return e("b-form-group",{attrs:{label:t.label,"label-for":t.id}},[e("b-input-group",{attrs:{size:"sm"}},[e("b-form-input",{ref:"input",attrs:{id:t.id,value:t.url,readonly:""}}),e("b-input-group-append",[e("CopyButton",{attrs:{copyText:t.url,variant:"primary"}}),t.open?e("b-button",{attrs:{href:t.url,target:"_blank",variant:"primary",title:t.$t("open")}},[e("b-icon-arrow-up-right-square")],1):t._e()],1)],1)],1)},Ft=[],Et=a(69771),Ut=a(19115),Rt=a(89576),qt=a(16167),Dt={name:"Share",components:{BFormGroup:Et.a,BFormInput:Ut.b,BIconArrowUpRightSquare:Pt.xur,BInputGroup:Rt.Y,BInputGroupAppend:qt.G,CopyButton:()=>Promise.resolve().then(a.bind(a,99975))},props:{id:{type:String,required:!0},url:{type:String,required:!0},label:{type:String,required:!0},open:{type:Boolean,default:!0}}},zt=Dt,Ht=(0,E.A)(zt,Mt,Ft,!1,null,"74684ede",null),Nt=Ht.exports,Wt=a(99975);const Qt="https://stac-extensions.github.io/language/v1.*/schema.json";var Vt={name:"Source",components:{BDropdown:Ot.U,BDropdownItem:$t.H,BIconBlank:Pt.ufk,BIconBox:Pt.H$j,BIconCheck:Pt.GSz,BIconEnvelope:Pt.EXn,BIconExclamationTriangle:Pt.T12,BIconFlag:Pt.c_U,BIconLink:Pt.IfX,BIconShare:Pt.v6r,BIconTwitter:Pt.FrH,BPopover:Bt.u,RootStats:()=>a.e(143).then(a.bind(a,40143)),Url:Nt,CopyButton:Wt["default"],Validation:()=>Promise.all([a.e(537),a.e(287),a.e(9099)]).then(a.bind(a,49099))},props:{title:{type:String,required:!0},stacUrl:{type:String,default:null},stac:{type:Object,default:null}},computed:{...(0,o.aH)(["conformsTo","dataLanguages","locale","supportedLocales","uiLanguage","valid"]),...(0,o.L8)(["supportsExtension","root"]),stacVersion(){var t;return null===(t=this.stac)||void 0===t?void 0:t.stac_version},stacId(){var t;return null===(t=this.stac)||void 0===t?void 0:t.id},showRoot(){return!!this.root&&(Array.isArray(this.conformsTo)&&this.conformsTo.length>0||m.Ay.isObject(this.root["stats:collections"])||m.Ay.isObject(this.root["stats:catalogs"])||m.Ay.isObject(this.root["stats:items"]))},rootTitle(){return Array.isArray(this.conformsTo)&&this.conformsTo.length>0?this.$t("index.api"):this.$t("index.catalog")},currentLanguage(){let t=this.languages.find((t=>t.code===this.locale));return t?t.native:"-"},message(){return this.$t("source.share.message",{title:this.title,url:this.browserUrl()})},twitterUrl(){let t=encodeURIComponent(this.message);return`https://twitter.com/intent/tweet?text=${t}`},mailTo(){let t=encodeURIComponent(this.title),e=encodeURIComponent(this.message);return`mailto:?subject=${t}&body=${e}`},supportsLanguageExt(){return this.supportsExtension(Qt)},languages(){let t=[];for(let a of this.supportedLocales)t.push({code:a,native:this.$t(`languages.${a}.native`),global:this.$t(`languages.${a}.global`),ui:!0});for(let a of this.dataLanguages){if(!m.Ay.isObject(a)||!a.code||this.supportedLocales.includes(a.code))continue;let e={code:a.code};e.native=a.name||a.alternate||a.code,e.global=a.alternate||a.name||a.code,e.data=!0,t.push(e)}if(this.supportsExtension(Qt)){const e=(0,dt.E0)(this.supportedLocales),a=(0,dt.E0)(this.dataLanguages.map((t=>t.code)));for(let s of t)s.ui||(s.ui=Boolean((0,dt.f5)(e,s.code,null))),s.data||(s.data=Boolean((0,dt.f5)(a,s.code,null)))}const e=new Intl.Collator(this.uiLanguage);return t.sort(((t,a)=>e.compare(t.global,a.global)))}},methods:{...(0,o.i0)(["switchLocale"]),browserUrl(){return window.location.toString()}}},Gt=Vt,Kt=(0,E.A)(Gt,Tt,It,!1,null,"93db7fbc",null),Jt=Kt.exports,Xt=a(58581),Yt={name:"StacHeader",components:{BIconArrow90degUp:Pt.JK4,BIconArrowLeft:Pt.sV1,BIconBook:Pt.VOl,BIconFolderSymlink:Pt.P_X,BIconSearch:Pt.S8S,BIconLock:Pt.D8r,BIconUnlock:Pt.a_V,StacLink:Xt["default"],Source:Jt},computed:{...(0,o.aH)(["allowSelectCatalog","catalogUrl","data","url","title"]),...(0,o.L8)(["canSearch","root","parentLink","collectionLink","toBrowserPath"]),...(0,o.L8)("auth",{authMethod:"method"}),...(0,o.L8)("auth",["canAuthenticate","isLoggedIn"]),authIcon(){return this.isLoggedIn?"b-icon-unlock":"b-icon-lock"},authTitle(){return this.authMethod.getButtonTitle()},authLabel(){return this.isLoggedIn?this.authMethod.getLogoutLabel():this.authMethod.getLoginLabel()},back(){return"validation"===this.$route.name},selfBrowserLink(){return this.toBrowserPath(this.url)},type(){return this.data instanceof v.A?this.data.isItem()?this.$tc("stacItem"):this.data.isCollection()?this.$tc("stacCollection"):this.data.isCatalog()?this.$tc("stacCatalog"):this.data.type:null},collectionLinkTitle(){return this.collectionLink&&m.Ay.hasText(this.collectionLink.title)?this.$t("goToCollection.descriptionWithTitle",this.collectionLink):this.$t("goToCollection.description")},parentLinkTitle(){return this.parentLink&&m.Ay.hasText(this.parentLink.title)?this.$t("goToParent.descriptionWithTitle",this.parentLink):this.$t("goToParent.description")},icon(){if(this.data instanceof v.A){let t=this.data.getIcons();if(t.length>0)return t[0]}return null},searchBrowserLink(){if(!this.canSearch)return null;let t;return this.data instanceof v.A&&!this.data.equals(this.root)&&(t=this.data.getSearchLink()),t?`/search${this.data.getBrowserPath()}`:this.root&&this.allowSelectCatalog?`/search${this.root.getBrowserPath()}`:"/search"},containerLink(){return this.catalogUrl&&this.url===this.catalogUrl?null:this.root?m.Ay.equalUrl(this.root.getAbsoluteUrl(),this.url)?null:{href:this.root.getAbsoluteUrl(),rel:"root",title:v.A.getDisplayTitle(this.root)}:this.collectionLink||this.parentLink}},methods:{...(0,o.PY)("auth",["addAction"]),...(0,o.i0)("auth",["requestLogin","requestLogout"]),isSearchPage(){return"search"===this.$router.currentRoute.name},isStacChooser(){return"choose"===this.$router.currentRoute.name},async logInOut(){this.url&&this.addAction((()=>this.$store.dispatch("load",{url:this.url,loadApi:!0,show:!0,force:!0,noRetry:!0}))),this.isLoggedIn?await this.requestLogout():await this.requestLogin()}}},Zt=Yt,te=(0,E.A)(Zt,xt,St,!1,null,"6f700824",null),ee=te.exports,ae=function(){var t=this,e=t._self._c;return e(t.authComponent,{tag:"component",on:{submit:t.submit,reset:t.reset}})},se=[],ie={name:"Authentication",components:{ApiKey:()=>a.e(7197).then(a.bind(a,87197)),Basic:()=>a.e(7820).then(a.bind(a,47820))},computed:{...(0,o.L8)("auth",["method","isLoggedIn"]),authComponent(){return this.method.getComponent()},authComponentProps(){return this.method.getComponentProps()}},beforeCreate(){this.isLoggedIn&&this.$store.dispatch("auth/finalizeLogout")},methods:{async reset(){await this.$store.dispatch("auth/abortLogin")},async submit(t){await this.$store.dispatch("auth/finalizeLogin",t)}}},re=ie,ne=(0,E.A)(re,ae,se,!1,null,null,null),oe=ne.exports;s.Ay.use(bt.q),s.Ay.use(yt.p),s.Ay.use(At.sG),s.Ay.use(vt.z),s.Ay.use(wt.qc),s.Ay.use(Ct.CG),s.Ay.use(kt.z),s.Ay.directive("b-toggle",_t.z),s.Ay.directive("b-visible",Lt.p),s.Ay.use(n.Ay);const le=new n.Ay({mode:l.A.historyMode,base:l.A.pathPrefix,routes:st(l.A)});s.Ay.use(o.Ay);const ce=mt(l.A,le);let ue={},de={};for(let be in l.A)ue[be]={default:["object","function"].includes(typeof l.A[be])?()=>l.A[be]:l.A[be]},de[be]={immediate:!0,handler:async function(t){await this.$store.dispatch("config",{[be]:t})}};var he={name:"StacBrowser",router:le,store:ce,components:{Authentication:oe,ErrorAlert:jt.A,Sidebar:()=>a.e(8940).then(a.bind(a,38940)),StacHeader:ee},props:{...ue},data(){return{sidebar:!1,error:null,onDataLoaded:null}},computed:{...(0,o.aH)(["allowSelectCatalog","data","dataLanguage","description","globalError","stateQueryParameters","title","uiLanguage","url"]),...(0,o.aH)({detectLocaleFromBrowserFromVueX:"detectLocaleFromBrowser",supportedLocalesFromVueX:"supportedLocales",storeLocaleFromVueX:"storeLocale"}),...(0,o.L8)(["displayCatalogTitle","fromBrowserPath","isExternalUrl","root","supportsConformance","toBrowserPath"]),...(0,o.L8)("auth",["showLogin"]),browserVersion(){return"3.2.0"}},watch:{...de,title(t){document.title=t},description(t){let e=document.getElementById("meta-description");e&&e.setAttribute("content",m.Ay.summarizeMd(t,200))},uiLanguage:{immediate:!0,async handler(t){t&&(this.$root.$i18n.locale=t,document.documentElement.setAttribute("lang",t),this.$root.$emit("uiLanguageChanged",t))}},dataLanguage:{immediate:!0,async handler(t){if(t&&this.data instanceof v.A){let e=this.data.getLocaleLink(t);if(e){let t=Object.assign({},this.stateQueryParameters);this.$router.push(this.toBrowserPath(e.href)),this.$store.commit("state",t)}else if(this.supportsConformance(k.Aj)){let t=this.url;this.$store.commit("resetCatalog",!0),await this.$store.dispatch("load",{url:t,loadApi:!0,show:!0})}}}},stateQueryParameters:{deep:!0,handler(){let t={};for(const[e,a]of Object.entries(this.$route.query))e.startsWith(".")||(t[e]=a);for(const[e,a]of Object.entries(this.stateQueryParameters)){let s=`.${e}`;Array.isArray(a)?a.length>0&&(t[s]=a.join(",")):null!==a&&(t[s]=a)}this.$router.replace({query:t}).catch((t=>{if(!n.Ay.isNavigationFailure(t,n.Ay.NavigationFailureType.duplicated))throw Error(t)}))}},root(t,e){const a=["apiCatalogPriority","authConfig","cardViewMode","cardViewSort","crossOriginMedia","defaultThumbnailSize","displayGeoTiffByDefault","showThumbnailsAsAssets"];let s=!t||e&&m.Ay.isObject(e["stac_browser"]),i=t&&m.Ay.isObject(t["stac_browser"]);for(let r of a){let e;s&&(e=l.A[r]),i&&"undefined"!==typeof t["stac_browser"][r]&&(e=t["stac_browser"][r]),"undefined"!==typeof e&&this.$store.dispatch("config",{[r]:e}).catch((t=>console.error(t)))}},data(t){this.onDataLoaded&&t instanceof v.A&&this.onDataLoaded()}},async created(){this.$router.onReady((()=>{this.detectLocale(),this.parseQuery(this.$route)})),this.$router.afterEach(((t,e)=>{if(t.path===e.path)return;let a="resetPage";if(this.allowSelectCatalog&&t.path){let e=this.fromBrowserPath(t.path);this.isExternalUrl(e)&&(a="resetCatalog")}this.$store.commit(a),this.parseQuery(t)}));const t=new ot.A(!0),e=t.get("authConfig");e&&(t.remove("authConfig"),await this.$store.dispatch("config",{authConfig:e}))},mounted(){this.$root.$on("error",this.showError),setInterval((()=>this.$store.dispatch("loadBackground",3)),200)},methods:{...(0,o.i0)(["switchLocale"]),detectLocale(){let t;if(this.storeLocaleFromVueX){const e=new ot.A;t=e.get("locale")}if(!t&&this.detectLocaleFromBrowserFromVueX&&Array.isArray(navigator.languages)){const e=(0,dt.E0)(this.supportedLocalesFromVueX);for(let a of navigator.languages){const s=(0,dt.f5)(e,a,null);if(s){t=s;break}}}t&&this.supportedLocalesFromVueX.includes(t)&&(this.switchLocale({locale:t}),this.data||(this.onDataLoaded=()=>{this.switchLocale({locale:t}),this.onDataLoaded=null}))},parseQuery(t){var e;let a={};if("history"===this.historyMode){let e=C()(t.hash.replace(/^#/,""));a=e.query(!0)}let s=Object.assign({},t.query,a),i={};for(let r in s){let t=s[r];if(r.startsWith("~"))i.private=m.Ay.isObject(i.private)?i.private:{},i.private[r.substr(1)]=t,delete s[r];else if(r.startsWith(".")){let e=r.substr(1);i.state=m.Ay.isObject(i.state)?i.state:{},Array.isArray(this.stateQueryParameters[e])&&!Array.isArray(t)&&(t=t.split(",")),i.state[e]=t}else m.Ay.isObject(i.localRequest)||(i.localRequest={}),i.localRequest[r]=t}if(m.Ay.size(i)>0)for(let r in i)for(let t in i[r])this.$store.commit("setQueryParameter",{type:r,key:t,value:i[r][t]});null!==i&&void 0!==i&&null!==(e=i.state)&&void 0!==e&&e.language&&this.switchLocale({locale:i.state.language}),m.Ay.size(i.private)>0&&this.$router.replace({query:s})},showError(t,e){this.$store.commit("showGlobalError",{error:t,message:e})},hideError(){this.$store.commit("showGlobalError",null)}}},pe=he,fe=(0,E.A)(pe,i,r,!1,null,null,null),ge=fe.exports;function me(){return(0,k.Qm)().then((()=>new s.Ay({i18n:k.Ay,render:t=>t(ge)}).$mount("#stac-browser")))}s.Ay.config.productionTip=!1,me()},31831:function(t,e,a){"use strict";a(44114);var s=a(2566),i=a(71321),r=a.n(i),n=a(39071);let o=0;class l{constructor(t,e,a,s=!0){this._id=o++,this._url=e,this._path=a,this._apiChildrenListeners={},this._incomplete=!1,this._apiChildren={list:[],prev:!1,next:!1},s&&("FeatureCollection"===t.type?t.features=t.features.map((t=>r().item(t,!1))):t=r().stac(t,!1));for(let i in t)"undefined"===typeof this[i]&&(this[i]=t[i])}isPotentiallyIncomplete(){return this._incomplete}markPotentiallyIncomplete(){this._incomplete=!0}isItem(){return"Feature"===this.type}isCatalog(){return"Catalog"===this.type}isCatalogLike(){return this.isCatalog()||this.isCollection()}isCollection(){return"Collection"===this.type}isItemCollection(){return"FeatureCollection"===this.type}hasApiData(){return this._apiChildren.list.length>0}setApiDataListener(t,e=null){"function"===typeof e?this._apiChildrenListeners[t]=e:delete this._apiChildrenListeners[t]}setApiData(t,e=null,a=null){a&&(this._apiChildren.prev=a),e&&(this._apiChildren.next=e),this._apiChildren.list=t;for(let i in this._apiChildrenListeners)try{this._apiChildrenListeners[i](this._apiChildren)}catch(s){console.error(s)}}getFileFormats(){let t=[];return(this.isItem()||this.isCollection())&&s.Ay.isObject(this.assets)&&(t=t.concat(Object.values(this.assets))),this.isCollection()&&s.Ay.isObject(this.item_assets)&&(t=t.concat(Object.values(this.item_assets))),t.filter((t=>Array.isArray(t.roles)&&t.roles.includes("data")&&"string"===typeof t.type)).map((t=>t.type)).filter(((t,e,a)=>a.indexOf(t)===e))}getChildren(t=null){if(!this.isCatalogLike())return[];let e=!t||"collections"===t,a=!t||"childs"===t,s=[];return e&&this._apiChildren.prev&&s.push(this._apiChildren.prev),e&&this._apiChildren.list.length>0&&(s=this._apiChildren.list.slice(0)),a&&(s=l.addMissingChildren(s,this).concat(this.getLinksWithRels(["item"]))),e&&this._apiChildren.next&&s.push(this._apiChildren.next),s}static addMissingChildren(t,e){let a=e.getStacLinksWithRel("child").filter((a=>{let i=s.Ay.toAbsolute(a.href,e.getAbsoluteUrl());return!t.find((t=>t.getAbsoluteUrl()===i))}));return a.concat(t)}getSearchLink(){let t=s.Ay.getLinksWithRels(this.links,["search"]).filter((t=>s.Ay.isMediaType(t.type,s.oV))).map((t=>Object.assign({},t,{href:s.Ay.toAbsolute(t.href,this._url)}))),e=t.find((t=>s.Ay.hasText(t.method)&&"POST"===t.method.toUpperCase()));return e||t[0]||null}getApiCollectionsLink(){return this.getStacLinkWithRel("data")}getApiItemsLink(){return this.getStacLinkWithRel("items")}getMetadata(t){return this.isItem()?this.properties[t]:this.isCatalogLike()?this[t]:null}getBrowserPath(){return this._path}getAbsoluteUrl(){return this._url}getLocaleLink(t,e=null){let a,i=this.getStacLinksWithRel("alternate").filter((t=>s.Ay.hasText(t.hreflang)));a=Array.isArray(this.languages)?this.languages.map((t=>t.code)):i.map((t=>t.hreflang));let r=(0,n.f5)(a,t,e);return i.find((t=>t.hreflang===r))||null}getStacLinksWithRel(t,e=!0){return s.Ay.getLinksWithRels(this.links,[t]).filter((t=>s.Ay.isStacMediaType(t.type,e)))}getStacLinkWithRel(t,e=!0){const a=this.getStacLinksWithRel(t,e);return a.length>0?a[0]:null}getLinkWithRel(t){return s.Ay.getLinkWithRel(this.links,t)}getLinksWithRels(t){return s.Ay.getLinksWithRels(this.links,t)}getLinksWithOtherRels(t){return s.Ay.getLinksWithOtherRels(this.links,t)}getAssetsWithRoles(t){let e=[];if(s.Ay.isObject(this.assets))for(let a in this.assets){let i=this.assets[a];s.Ay.isObject(i)&&"string"===typeof i.href&&Array.isArray(i.roles)&&i.roles.find((e=>t.includes(e)))&&e.push(i)}return e}static getDisplayTitle(t,e=null){Array.isArray(t)||(t=[t]);let a=t.find((t=>t instanceof l)),i=t.find((t=>s.Ay.isObject(t)&&!(t instanceof l)));return a&&s.Ay.hasText(a.getTitle())?a.getTitle():i&&s.Ay.hasText(i.title)?i.title:a&&s.Ay.hasText(a.id)?a.id:s.Ay.hasText(e)?e:a?s.Ay.titleForHref(a.getAbsoluteUrl(),!0):i&&s.Ay.hasText(i.href)?s.Ay.titleForHref(i.href,!0):"Untitled"}getTitle(){return this.getMetadata("title")}_linkToAbsolute(t){return Object.assign({},t,{href:s.Ay.toAbsolute(t.href,this.getAbsoluteUrl())})}getIcons(){return this.getLinksWithRels(["icon"]).filter((t=>s.Ay.canBrowserDisplayImage(t))).map((t=>this._linkToAbsolute(t)))}getThumbnails(t=!1,e=null){let a=this.getAssetsWithRoles(["thumbnail","overview"]);if(0===a.length&&(a=this.getLinksWithRels(["preview"])),0===a.length&&s.Ay.isObject(this.assets)&&s.Ay.isObject(this.assets.thumbnail)&&(a=[this.assets.thumbnail]),t&&(a=a.filter((t=>s.Ay.canBrowserDisplayImage(t)))),e&&a.length>1){let t=t=>t.roles.includes(e);a=a.filter(t).concat(a.filter((e=>!t(e))))}return a.map((t=>this._linkToAbsolute(t)))}equals(t){return!!s.Ay.isObject(t)&&(this===t||this.id===t.id&&this.type==t.type)}}e.A=l},59203:function(t,e,a){"use strict";a.d(e,{Bv:function(){return n},Eg:function(){return i},ZQ:function(){return r},dL:function(){return l},ol:function(){return o}});const s=["child","collection","item","parent","root","self"],i=["first","last","next","prev","previous"],r=["queryables","http://www.opengis.net/def/rel/ogc/1.0/queryables","ogc-rel:queryables"],n=["canonical","related","derived_from","latest-version","predecessor-version","successor-version","source","alternate"].concat(s).concat(i),o=["conformance","data","items","search","icon","license"].concat(s).concat(i).concat(r),l="http://www.opengis.net/def/rel/ogc/1.0/"},33484:function(t,e,a){"use strict";a.d(e,{FF:function(){return c},HD:function(){return p},Pj:function(){return h},Rh:function(){return o},lx:function(){return l},mA:function(){return f},rM:function(){return u},sd:function(){return d}});var s=a(94335),i=a(84193),r=a.n(i),n=a(2566);class o{constructor(t=!1,e=!1){this.show=Boolean(t),this.loadApi=Boolean(e)}}function l(t,e){if("string"===typeof e&&(e={href:e}),!n.Ay.isObject(e)||"string"!==typeof e.href)return{};const a=t.getters.getRequestUrl(e.href);let s={"Accept-Language":t.getters.acceptedLanguages};return n.Ay.hasText(e.type)&&(s.Accept=e.type),t.getters.isExternalUrl(a)||Object.assign(s,t.state.requestHeaders),n.Ay.isObject(e.headers)&&Object.assign(s,e.headers),{method:"string"===typeof e.method?e.method.toLowerCase():"get",url:a,headers:s,data:e.body}}async function c(t,e,a={}){const i=l(t,e);return await(0,s.A)(Object.assign(i,a))}function u(t,e){return t instanceof r()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[1],e[0]):t}function d(t,e){return t instanceof r()&&(t=t.toString()),"string"===typeof t&&Array.isArray(e)?t.replace(e[0],e[1]):t}function h(t,e){return"function"===typeof t.preprocessSTAC&&(e=t.preprocessSTAC(e,t)),Object.freeze(e)}function p(t){var e;return[401,403].includes(null===t||void 0===t||null===(e=t.response)||void 0===e?void 0:e.status)}function f(t,e){if(0==n.Ay.size(e))return t;for(let a in e)t.hasQuery(a)||t.addQuery(a,e[a]);return t}},2566:function(t,e,a){"use strict";a.d(e,{Ay:function(){return A},C8:function(){return b},I5:function(){return g},Yq:function(){return u},df:function(){return m},fe:function(){return y},oV:function(){return c}});var s=a(84193),i=a.n(s),r=a(58481),n=a.n(r),o=a(59203);const l=["catalog","collection","item"],c="application/geo+json",u="application/schema+json",d=["application/json",c,"text/json"],h=["image/gif","image/jpg","image/jpeg","image/apng","image/png","image/webp"],p=["image/tiff; application=geotiff; profile=cloud-optimized","image/vnd.stac.geotiff; cloud-optimized=true"],f=["application/geotiff","image/tiff; application=geotiff","image/vnd.stac.geotiff"].concat(p),g=["http","https"],m=h.concat(f),b=m.concat([c]);class y extends Error{constructor(t){super(t)}}class A{static isObject(t){return"object"===typeof t&&t===Object(t)&&!Array.isArray(t)}static size(t){return"object"===typeof t&&null!==t?Array.isArray(t)?t.length:Object.keys(t).length:0}static isStacMediaType(t,e=!1){return A.isMediaType(t,d,e)}static isMediaType(t,e,a=!1){return Array.isArray(e)||(e=[e]),!(!a||t)||"string"===typeof t&&e.includes(t.toLowerCase())}static hasText(t){return"string"===typeof t&&t.length>0}static shortenTitle(t,e,a="…"){if(t.length<=e)return t;let s=a.length,i=e-s,r=Math.ceil(i/2),n=Math.floor(i/2);return t.substr(0,r)+a+t.substr(t.length-n)}static isGdalVfsUri(t){return"string"===typeof t&&t.startsWith("/vsi")&&!t.startsWith("/vsicurl/")}static toAbsolute(t,e,a=!0){return A.normalizeUri(t,e,!1,a)}static normalizeUri(t,e=null,a=!1,s=!0){"string"===typeof t&&t.startsWith("/vsicurl/")&&(t=t.replace(/^\/vsicurl\//,""));let r=i()(t);return e&&r.is("relative")&&!A.isGdalVfsUri(t)&&(r=r.absoluteTo(e)),r.normalize(),a&&(r.query(""),r.fragment("")),s?r.toString():r}static getLinkWithRel(t,e){return Array.isArray(t)?t.find((t=>A.isObject(t)&&A.hasText(t.href)&&t.rel===e)):null}static getLinksWithRels(t,e){return Array.isArray(t)?t.filter((t=>A.isObject(t)&&A.hasText(t.href)&&e.includes(t.rel))):[]}static getLinksWithOtherRels(t,e){return Array.isArray(t)?t.filter((t=>A.isObject(t)&&A.hasText(t.href)&&!e.includes(t.rel))):[]}static removeTrailingSlash(t){return t.replace(/\/$/,"")}static equalUrl(t,e){try{let a=i()(t),s=i()(e);return a.path(A.removeTrailingSlash(a.path())),s.path(A.removeTrailingSlash(s.path())),a.equals(s)}catch(a){return!1}}static summarizeMd(t,e=null){return A.hasText(t)?(t=n()(t).replaceAll(/[\r\n]+/g," "),e>0&&t.length>e&&(t=t.substr(0,e)+"…"),t):""}static scrollTo(t){if(t){var e=t.getBoundingClientRect(),a=e.top=0;a||t.scrollIntoView({behavior:"smooth",block:"start"})}}static dateFromUTC(t){if(t instanceof Date){const e=new Date(t),a=e.getTimezoneOffset();t=new Date(e.getTime()+60*a*1e3)}return t}static dateToUTC(t){if(t instanceof Date){const e=(new Date).getTimezoneOffset();return new Date(t.getTime()-60*e*1e3)}return t}static formatDatetimeQuery(t){return t.map((t=>t instanceof Date?t.toISOString():t||"..")).join("/")}static formatSortbyForPOST(t){const e={field:"",direction:"asc"};return t.startsWith("-")?(e.field=t.substring(1),e.direction="desc"):e.field=t,[e]}static getPaginationLinks(t){let e={};if(A.isObject(t)){let a=A.getLinksWithRels(t.links,o.Eg);for(let t of a){let a="previous"===t.rel?"prev":t.rel;e[a]=t}}return e}static addFiltersToLink(t,e={},a=null){let s=t=>null===t||"number"===typeof t&&!Number.isFinite(t)||"string"===typeof t&&0===t.length||"object"===typeof t&&0===A.size(t);if(e=A.isObject(e)?Object.assign({},e):{},"number"!==typeof e.limit&&"number"===typeof a&&(e.limit=a),A.hasText(t.method)&&"POST"===t.method.toUpperCase()){let a=Object.assign({},t.body);for(let t in e){let i=e[t];if(s(i))delete a[t];else{if("sortby"===t)i=A.formatSortbyForPOST(i);else if("datetime"===t)i=A.formatDatetimeQuery(i);else if("filters"===t){Object.assign(a,i.toJSON());continue}a[t]=i}}return Object.assign({},t,{body:a})}{let a=i()(t.href);for(let t in e){let i=e[t];if(s(i))a.removeQuery(t);else{if("datetime"===t)i=A.formatDatetimeQuery(i);else if("bbox"===t)i=i.join(",");else if("collections"===t||"ids"===t||"q"===t)i=i.join(",");else if("filters"===t){let t=i.toText();a.setQuery(t);continue}a.setQuery(t,i)}}return Object.assign({},t,{href:a.toString()})}}static titleForHref(t,e=!1){let a=i()(t),s=a.authority(),r=a.filename().replace(/^(.{1,})\.\w+$/,"$1"),n=a.directory().replace(/^\//,"");if(s&&r&&!e){let t=a.path().replace(/^\//,"");return"doi.org"===s&&t.startsWith("10.")?`DOI ${t}`:`${r} (${s})`}return r&&!l.includes(r)?r:s||(n||t)}static canBrowserDisplayImage(t){if("string"!==typeof t.href)return!1;let e=i()(t.href),a=e.protocol().toLowerCase();return!(a&&!g.includes(a))&&(!!h.includes(t.type)||(!!h.includes("image/"+e.suffix().toLowerCase())||!t.type))}static getValueFromObjectUsingPath(t,e){if(null!==t&&"object"===typeof t)return t=t[e[0]],"undefined"!==typeof t&&e.length>1?this.getValueFromObjectUsingPath(t,e.slice(1)):t}static search(t,e,a=!0){if("string"!==typeof t||0===t.length)return!1;if(A.isObject(e)?e=Object.values(e):"string"===typeof e&&(e=[e]),!Array.isArray(e))return!1;let s=/[\s.,;!&({[)}]]+/g;t=t.toLowerCase().split(s),e=e.filter((t=>"string"===typeof t)).join(" ").replace(s," ").toLowerCase();let i=a?"every":"some";return t[i]((t=>e.includes(t)))}static createLink(t,e){return{href:t,rel:e}}static supportsExtension(t,e){if(!A.isObject(t)||!Array.isArray(t["stac_extensions"]))return!1;let a=new RegExp("^"+e.replaceAll("*","[^/]+")+"$");return Boolean(t["stac_extensions"].find((t=>a.test(t))))}static mergeDeep(t,...e){if(!e.length)return t;const a=e.shift();if(A.isObject(t)&&A.isObject(a))for(const s in a)A.isObject(a[s])?(t[s]||Object.assign(t,{[s]:{}}),A.mergeDeep(t[s],a[s])):Object.assign(t,{[s]:a[s]});return A.mergeDeep(t,...e)}}},79873:function(t,e,a){"use strict";var s=a(85952),i=a(39773),r=a(2566),n=a(84193),o=a.n(n),l=a(95353);e.A={components:{ErrorAlert:s.A,Loading:i.A},props:{path:{type:String,required:!0}},computed:{...(0,l.aH)(["allowExternalAccess","url","redirectLegacyUrls"]),...(0,l.L8)(["fromBrowserPath","error","loading"]),errorId(){if(this.error instanceof Error&&this.error.isAxiosError&&r.Ay.isObject(this.error.response)){let t=this.error.response;return r.Ay.isObject(t.data)&&t.data.code?t.data.code:t.status}return null},errorDescription(){if(this.error instanceof Error&&this.error.isAxiosError&&r.Ay.isObject(this.error.response)){let t=this.error.response;if(r.Ay.isObject(t.data)&&"string"===typeof t.data.description)return t.data.description;if(401===t.status)return this.$t("errors.unauthorized");if(403===t.status)return this.$t("errors.forbidden");if(404===t.status)return this.$t("errors.notFound");if(t.status>500)return this.$t("errors.serverError");if(t.status>400)return this.$t("errors.badRequest")}else if(this.error instanceof r.fe)return this.error.message;return this.$t("errors.networkError")},isExternal(){return o()(this.path).is("absolute")}},watch:{path:{immediate:!0,async handler(t,e){if(t===e)return;if(!this.allowExternalAccess&&this.isExternal)return;if(this.redirectLegacyUrls&&await this.redirectLegacyUrl(t))return;let a=this.fromBrowserPath(t||"/");this.$store.dispatch("load",{url:a,show:!0,loadApi:!0})}}},methods:{async redirectLegacyUrl(t){if(!t||"/"===t)return!1;let e=t.split("/").filter((t=>t.length>0&&"item"!==t&&"collection"!==t));if(e.length>0&&e.every((t=>t.match(/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]+$/)))){const{decode:t}=await a.e(6763).then(a.t.bind(a,16763,23));let s=t(e[e.length-1]).toString();if(s){let t=o()(s);return this.$router.replace({path:"/"+t.path().replace(/(collections|items)\/?$/,""),query:t.query(!0)}),!0}}return!1}}}},93731:function(t,e,a){var s={"./de-CH/config":[79933,3],"./de-CH/config.json":[79933,3],"./de-CH/datepicker":[40895,9,895],"./de-CH/datepicker.js":[40895,9,895],"./de-CH/default":[968,9,4490,968],"./de-CH/default.js":[968,9,4490,968],"./de-CH/duration":[49637,9,9710,9637],"./de-CH/duration.js":[49637,9,9710,9637],"./de-CH/validation":[75270,9,5270],"./de-CH/validation.js":[75270,9,5270],"./de/config":[28417,3],"./de/config.json":[28417,3],"./de/custom":[45692,3,5692],"./de/custom.json":[45692,3,5692],"./de/datepicker":[74801,9,4801],"./de/datepicker.js":[74801,9,4801],"./de/default":[62862,9,4490,2862],"./de/default.js":[62862,9,4490,2862],"./de/duration":[54511,9,9710,4511],"./de/duration.js":[54511,9,9710,4511],"./de/fields":[14490,3,4490],"./de/fields.json":[14490,3,4490],"./de/texts":[99581,3,9581],"./de/texts.json":[99581,3,9581],"./de/validation":[62816,9,2816],"./de/validation.js":[62816,9,2816],"./en-GB/config":[23667,3],"./en-GB/config.json":[23667,3],"./en-GB/custom":[78798,3,8798],"./en-GB/custom.json":[78798,3,8798],"./en-GB/datepicker":[22605,9,2605],"./en-GB/datepicker.js":[22605,9,2605],"./en-GB/default":[63170,9,3170],"./en-GB/default.js":[63170,9,3170],"./en-GB/duration":[47843,9,9710,7843],"./en-GB/duration.js":[47843,9,9710,7843],"./en-GB/fields":[87400,3,7400],"./en-GB/fields.json":[87400,3,7400],"./en-GB/texts":[62963,3,2963],"./en-GB/texts.json":[62963,3,2963],"./en-GB/validation":[6492,9,6492],"./en-GB/validation.js":[6492,9,6492],"./en-US/config":[92444,3],"./en-US/config.json":[92444,3],"./en-US/datepicker":[95558,9,5558],"./en-US/datepicker.js":[95558,9,5558],"./en-US/default":[15691,9,5691],"./en-US/default.js":[15691,9,5691],"./en-US/duration":[49684,9,9710,9684],"./en-US/duration.js":[49684,9,9710,9684],"./en-US/validation":[3155,9,3155],"./en-US/validation.js":[3155,9,3155],"./en/config":[11401,3],"./en/config.json":[11401,3],"./en/custom":[85300,3,5300],"./en/custom.json":[85300,3,5300],"./en/datepicker":[71865,9,1865],"./en/datepicker.js":[71865,9,1865],"./en/default":[56886,9,6886],"./en/default.js":[56886,9,6886],"./en/duration":[86855,9,9710,6855],"./en/duration.js":[86855,9,9710,6855],"./en/fields":[87090,3,7090],"./en/fields.json":[87090,3,7090],"./en/stac-fields":[98236,9,8236],"./en/stac-fields.js":[98236,9,8236],"./en/texts":[33301,3,3301],"./en/texts.json":[33301,3,3301],"./en/validation":[98552,9,8552],"./en/validation.js":[98552,9,8552],"./es/config":[17212,3],"./es/config.json":[17212,3],"./es/custom":[14581,3,4581],"./es/custom.json":[14581,3,4581],"./es/datepicker":[54312,9,4312],"./es/datepicker.js":[54312,9,4312],"./es/default":[89113,9,9113],"./es/default.js":[89113,9,9113],"./es/duration":[46046,9,9710,6046],"./es/duration.js":[46046,9,9710,6046],"./es/fields":[11295,3,1295],"./es/fields.json":[11295,3,1295],"./es/texts":[90674,3,674],"./es/texts.json":[90674,3,674],"./es/validation":[35893,9,5893],"./es/validation.js":[35893,9,5893],"./fr-CA/config":[20995,3],"./fr-CA/config.json":[20995,3],"./fr-CA/datepicker":[6997,9,6997],"./fr-CA/datepicker.js":[6997,9,6997],"./fr-CA/default":[71082,9,5767,1082],"./fr-CA/default.js":[71082,9,5767,1082],"./fr-CA/duration":[27003,9,9710,7003],"./fr-CA/duration.js":[27003,9,9710,7003],"./fr-CA/validation":[38228,9,8228],"./fr-CA/validation.js":[38228,9,8228],"./fr-CH/config":[1738,3],"./fr-CH/config.json":[1738,3],"./fr-CH/datepicker":[81456,9,1456],"./fr-CH/datepicker.js":[81456,9,1456],"./fr-CH/default":[44545,9,5767,4545],"./fr-CH/default.js":[44545,9,5767,4545],"./fr-CH/duration":[67286,9,9710,7286],"./fr-CH/duration.js":[67286,9,9710,7286],"./fr-CH/validation":[82605,9,4986],"./fr-CH/validation.js":[82605,9,4986],"./fr/config":[37748,3],"./fr/config.json":[37748,3],"./fr/custom":[75197,3,5197],"./fr/custom.json":[75197,3,5197],"./fr/datepicker":[37036,9,7036],"./fr/datepicker.js":[37036,9,7036],"./fr/default":[1589,9,5767,1589],"./fr/default.js":[1589,9,5767,1589],"./fr/duration":[93658,9,9710,3658],"./fr/duration.js":[93658,9,9710,3658],"./fr/fields":[48148,3,5767],"./fr/fields.json":[48148,3,5767],"./fr/texts":[23418,3,3418],"./fr/texts.json":[23418,3,3418],"./fr/validation":[33129,9,3129],"./fr/validation.js":[33129,9,3129],"./it-CH/config":[16835,3],"./it-CH/config.json":[16835,3],"./it-CH/datepicker":[75862,9,3481],"./it-CH/datepicker.js":[75862,9,3481],"./it-CH/default":[77638,9,9476,7638],"./it-CH/default.js":[77638,9,9476,7638],"./it-CH/duration":[44567,9,9710,4567],"./it-CH/duration.js":[44567,9,9710,4567],"./it-CH/validation":[63048,9,3048],"./it-CH/validation.js":[63048,9,3048],"./it/config":[37295,3],"./it/config.json":[37295,3],"./it/custom":[5290,3,5290],"./it/custom.json":[5290,3,5290],"./it/datepicker":[36147,9,6147],"./it/datepicker.js":[36147,9,6147],"./it/default":[23108,9,9476,3108],"./it/default.js":[23108,9,9476,3108],"./it/duration":[67905,9,9710,7905],"./it/duration.js":[67905,9,9710,7905],"./it/fields":[39476,3,9476],"./it/fields.json":[39476,3,9476],"./it/texts":[27519,3,7519],"./it/texts.json":[27519,3,7519],"./it/validation":[66346,9,6346],"./it/validation.js":[66346,9,6346],"./ja/config":[15203,3],"./ja/config.json":[15203,3],"./ja/custom":[79870,3,9870],"./ja/custom.json":[79870,3,9870],"./ja/datepicker":[70675,9,675],"./ja/datepicker.js":[70675,9,675],"./ja/default":[4964,9,4964],"./ja/default.js":[4964,9,4964],"./ja/duration":[87905,9,9710,2667],"./ja/duration.js":[87905,9,9710,2667],"./ja/fields":[68376,3,8376],"./ja/fields.json":[68376,3,8376],"./ja/texts":[30883,3,883],"./ja/texts.json":[30883,3,883],"./ja/validation":[14826,9,4826],"./ja/validation.js":[14826,9,4826],"./pt-BR/config":[87503,3],"./pt-BR/config.json":[87503,3],"./pt-BR/custom":[54794,3,4794],"./pt-BR/custom.json":[54794,3,4794],"./pt-BR/datepicker":[20105,9,105],"./pt-BR/datepicker.js":[20105,9,105],"./pt-BR/default":[92294,9,2294],"./pt-BR/default.js":[92294,9,2294],"./pt-BR/duration":[44631,9,9710,4631],"./pt-BR/duration.js":[44631,9,9710,4631],"./pt-BR/fields":[1524,3,1524],"./pt-BR/fields.json":[1524,3,1524],"./pt-BR/texts":[69311,3,9311],"./pt-BR/texts.json":[69311,3,9311],"./pt-BR/validation":[70536,9,536],"./pt-BR/validation.js":[70536,9,536],"./pt/config":[22356,3],"./pt/config.json":[22356,3],"./pt/custom":[2653,3,2653],"./pt/custom.json":[2653,3,2653],"./pt/datepicker":[59856,9,9856],"./pt/datepicker.js":[59856,9,9856],"./pt/default":[56513,9,6513],"./pt/default.js":[56513,9,6513],"./pt/duration":[32438,9,9710,2438],"./pt/duration.js":[32438,9,9710,2438],"./pt/fields":[44455,3,4455],"./pt/fields.json":[44455,3,4455],"./pt/texts":[29946,3,9946],"./pt/texts.json":[29946,3,9946],"./pt/validation":[12685,9,2685],"./pt/validation.js":[12685,9,2685],"./ro/config":[99069,3],"./ro/config.json":[99069,3],"./ro/custom":[5160,3,5160],"./ro/custom.json":[5160,3,5160],"./ro/datepicker":[2929,9,2929],"./ro/datepicker.js":[2929,9,2929],"./ro/default":[63022,9,3022],"./ro/default.js":[63022,9,3022],"./ro/duration":[65583,9,9710,5583],"./ro/duration.js":[65583,9,9710,5583],"./ro/fields":[14758,3,4758],"./ro/fields.json":[14758,3,4758],"./ro/texts":[55577,3,5577],"./ro/texts.json":[55577,3,5577],"./ro/validation":[90944,9,944],"./ro/validation.js":[90944,9,944]};function i(t){if(!a.o(s,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=s[t],i=e[0];return Promise.all(e.slice(2).map(a.e)).then((function(){return a.t(i,16|e[1])}))}i.keys=function(){return Object.keys(s)},i.id=93731,t.exports=i},33545:function(t,e,a){var s={"./de-CH/default.js":[968,4490,968],"./de/default.js":[62862,4490,2862],"./en-GB/default.js":[63170,3170],"./en-US/default.js":[15691,5691],"./en/default.js":[56886,6886],"./es/default.js":[89113,9113],"./fr-CA/default.js":[71082,5767,1082],"./fr-CH/default.js":[44545,5767,4545],"./fr/default.js":[1589,5767,1589],"./it-CH/default.js":[77638,9476,7638],"./it/default.js":[23108,9476,3108],"./ja/default.js":[4964,4964],"./pt-BR/default.js":[92294,2294],"./pt/default.js":[56513,6513],"./ro/default.js":[63022,3022]};function i(t){if(!a.o(s,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=s[t],i=e[0];return Promise.all(e.slice(1).map(a.e)).then((function(){return a(i)}))}i.keys=function(){return Object.keys(s)},i.id=33545,t.exports=i},97991:function(t,e,a){var s={"./de-CH/config.json":79933,"./de/config.json":28417,"./en-GB/config.json":23667,"./en-US/config.json":92444,"./en/config.json":11401,"./es/config.json":17212,"./fr-CA/config.json":20995,"./fr-CH/config.json":1738,"./fr/config.json":37748,"./it-CH/config.json":16835,"./it/config.json":37295,"./ja/config.json":15203,"./pt-BR/config.json":87503,"./pt/config.json":22356,"./ro/config.json":99069};function i(t){var e=r(t);return a(e)}function r(t){if(!a.o(s,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return s[t]}i.keys=function(){return Object.keys(s)},i.resolve=r,t.exports=i,i.id=97991},79933:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch (Schweiz)","global":"German (Switzerland)"}')},28417:function(t){"use strict";t.exports=JSON.parse('{"native":"Deutsch","global":"German"}')},23667:function(t){"use strict";t.exports=JSON.parse('{"native":"English (UK)","global":"English (UK)"}')},92444:function(t){"use strict";t.exports=JSON.parse('{"native":"English (US)","global":"English (US)"}')},11401:function(t){"use strict";t.exports=JSON.parse('{"native":"English","global":"English","customize":["stac-fields.js"]}')},17212:function(t){"use strict";t.exports=JSON.parse('{"native":"Español","global":"Spanish"}')},20995:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Canada)","global":"French (Canada)"}')},1738:function(t){"use strict";t.exports=JSON.parse('{"native":"Français (Suisse)","global":"French (Switzerland)"}')},37748:function(t){"use strict";t.exports=JSON.parse('{"native":"Français","global":"French"}')},16835:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano (Svizzera)","global":"Italian (Switzerland)"}')},37295:function(t){"use strict";t.exports=JSON.parse('{"native":"Italiano","global":"Italian"}')},15203:function(t){"use strict";t.exports=JSON.parse('{"native":"日本語","global":"Japanese"}')},87503:function(t){"use strict";t.exports=JSON.parse('{"native":"Português (Brasil)","global":"Portuguese (Brazil)"}')},22356:function(t){"use strict";t.exports=JSON.parse('{"native":"Português","global":"Portuguese"}')},99069:function(t){"use strict";t.exports=JSON.parse('{"native":"Română","global":"Romanian"}')}},e={};function a(s){var i=e[s];if(void 0!==i)return i.exports;var r=e[s]={id:s,loaded:!1,exports:{}};return t[s].call(r.exports,r,r.exports,a),r.loaded=!0,r.exports}a.m=t,function(){var t="function"===typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",e="function"===typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",s="function"===typeof Symbol?Symbol("webpack error"):"__webpack_error__",i=function(t){t&&t.d<1&&(t.d=1,t.forEach((function(t){t.r--})),t.forEach((function(t){t.r--?t.r++:t()})))},r=function(a){return a.map((function(a){if(null!==a&&"object"===typeof a){if(a[t])return a;if(a.then){var r=[];r.d=0,a.then((function(t){n[e]=t,i(r)}),(function(t){n[s]=t,i(r)}));var n={};return n[t]=function(t){t(r)},n}}var o={};return o[t]=function(){},o[e]=a,o}))};a.a=function(a,n,o){var l;o&&((l=[]).d=-1);var c,u,d,h=new Set,p=a.exports,f=new Promise((function(t,e){d=e,u=t}));f[e]=p,f[t]=function(t){l&&t(l),h.forEach(t),f["catch"]((function(){}))},a.exports=f,n((function(a){var i;c=r(a);var n=function(){return c.map((function(t){if(t[s])throw t[s];return t[e]}))},o=new Promise((function(e){i=function(){e(n)},i.r=0;var a=function(t){t!==l&&!h.has(t)&&(h.add(t),t&&!t.d&&(i.r++,t.push(i)))};c.map((function(e){e[t](a)}))}));return i.r?o:n()}),(function(t){t?d(f[s]=t):u(p),i(l)})),l&&l.d<0&&(l.d=0)}}(),function(){var t=[];a.O=function(e,s,i,r){if(!s){var n=1/0;for(u=0;u=r)&&Object.keys(a.O).every((function(t){return a.O[t](s[l])}))?s.splice(l--,1):(o=!1,r0&&t[u-1][2]>r;u--)t[u]=t[u-1];t[u]=[s,i,r]}}(),function(){a.n=function(t){var e=t&&t.__esModule?function(){return t["default"]}:function(){return t};return a.d(e,{a:e}),e}}(),function(){var t,e=Object.getPrototypeOf?function(t){return Object.getPrototypeOf(t)}:function(t){return t.__proto__};a.t=function(s,i){if(1&i&&(s=this(s)),8&i)return s;if("object"===typeof s&&s){if(4&i&&s.__esModule)return s;if(16&i&&"function"===typeof s.then)return s}var r=Object.create(null);a.r(r);var n={};t=t||[null,e({}),e([]),e(e)];for(var o=2&i&&s;"object"==typeof o&&!~t.indexOf(o);o=e(o))Object.getOwnPropertyNames(o).forEach((function(t){n[t]=function(){return s[t]}}));return n["default"]=function(){return s},a.d(r,n),r}}(),function(){a.d=function(t,e){for(var s in e)a.o(e,s)&&!a.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})}}(),function(){a.f={},a.e=function(t){return Promise.all(Object.keys(a.f).reduce((function(e,s){return a.f[s](t,e),e}),[]))}}(),function(){a.u=function(t){return"js/"+t+"."+{57:"5be4327a",105:"e2583608",143:"17c32b12",224:"73380e95",259:"5d9423a7",286:"9968152f",287:"de8bc964",453:"cdf3dcef",513:"cdf66342",536:"1a6dbc5d",537:"1e693d0f",572:"e8726472",635:"3fc71e47",674:"628dacf0",675:"18ffac5f",771:"71d0273d",883:"04936a46",895:"8187e671",944:"52479ee6",967:"aedc4196",968:"e992ebff",1082:"bc8d3aaa",1277:"7d6a095f",1295:"27f043b7",1456:"d1b42447",1524:"98e4593a",1589:"a8e28692",1802:"e793d255",1865:"a9fa055a",1935:"049809bf",1940:"d3c49361",2018:"ce075d9e",2294:"936b4a9d",2438:"9de74d16",2605:"1c2993cd",2618:"11733eb3",2653:"a4273a9b",2667:"854d158f",2685:"93067bb8",2816:"45937916",2862:"6af34fc2",2904:"e9e7058d",2929:"329a3419",2963:"2d6fae39",2986:"087cf117",3022:"f05af57b",3048:"24de37f6",3108:"2381da32",3129:"5db71fda",3147:"8c62f1a6",3155:"bfefc377",3170:"1f0bbce4",3301:"a6b90c8a",3418:"1583461d",3481:"94bedc54",3545:"4729f6d7",3611:"9beecf13",3621:"33cab0e1",3627:"35a62045",3658:"b69417b4",3665:"8d915206",4312:"a55046c8",4455:"20b19c75",4490:"ba7247be",4511:"814216f9",4527:"9945a88b",4545:"12d31611",4567:"fd438142",4581:"ab8bb64d",4631:"3fda2a6b",4648:"d62412bc",4748:"9cad5d00",4758:"81bfed10",4794:"be71e110",4801:"3edc3a39",4826:"14dec5b7",4870:"d5037fd1",4905:"c253340a",4964:"aabf058f",4986:"43315b9e",5048:"73e94787",5160:"0199c3c7",5197:"e5331eb8",5262:"043c45ae",5270:"955a079f",5290:"11b823e6",5300:"04767d9e",5500:"a4789aa8",5528:"5cf36dce",5558:"1b7ea293",5577:"77c30967",5583:"a2d41d1b",5691:"f24e25d4",5692:"e7ac3b0d",5767:"72834f18",5833:"8137a15b",5876:"4dd7f581",5893:"6f7d75b8",6046:"c4a8b81f",6147:"1c9b2abd",6247:"acea7c1f",6340:"18158e76",6346:"dbc5bcff",6492:"8dedde79",6513:"e0ea7017",6750:"7aedfad0",6763:"8e2843dd",6780:"f53800c2",6855:"192625a7",6866:"6a34f86e",6886:"72674174",6892:"e419da08",6935:"2ff826c6",6948:"0f0902d7",6997:"a28a1e59",7003:"ca61e641",7012:"55ebfa96",7036:"af262471",7090:"0eb933be",7130:"880efce9",7197:"f0bb6068",7286:"347cbbbe",7303:"e09f204d",7312:"54428d50",7341:"e7260174",7400:"1d37f795",7457:"db6d398a",7519:"2d2eb579",7638:"51f8c29a",7659:"e86bd86e",7719:"749c5ec0",7820:"0ee35023",7843:"814dcd79",7905:"d12be83f",7964:"ff8cbcd1",8228:"efd83c38",8236:"8111695f",8376:"d2c8723f",8499:"ebf4ff10",8552:"d4b5fff9",8648:"72d749a6",8775:"a495f41e",8798:"67d14058",8940:"92678f29",9099:"2ed3cba3",9113:"bbb25f06",9236:"a8d872bf",9311:"4911b00a",9384:"3cccf96f",9476:"20e3397d",9581:"692a0ccc",9637:"618f0cfe",9684:"31bdfb18",9710:"f06fdbe3",9738:"a53cd36a",9813:"0e3b02b4",9856:"8de9e0e6",9870:"7449c477",9891:"3c48937a",9946:"f6bd18dd"}[t]+".js"}}(),function(){a.miniCssF=function(t){return"css/"+t+"."+{143:"ac728857",453:"f55423e0",513:"1c24940f",635:"f849b3f1",967:"72c8c98f",1802:"32ec082e",1940:"4149415b",2618:"6fac7cd8",3147:"45781634",3545:"2412eeb4",3611:"c6830b09",4748:"fc757a13",5528:"45781634",6780:"0780c10b",6866:"081b4583",7130:"c4ced7cf",7312:"81053aa2",7341:"c9b64985",8648:"4b50bc38",8775:"bbca74ef",8940:"f418fe25",9813:"63e96376"}[t]+".css"}}(),function(){a.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"===typeof window)return window}}()}(),function(){a.hmd=function(t){return t=Object.create(t),t.children||(t.children=[]),Object.defineProperty(t,"exports",{enumerable:!0,set:function(){throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+t.id)}}),t}}(),function(){a.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)}}(),function(){var t={},e="@radiantearth/stac-browser:";a.l=function(s,i,r,n){if(t[s])t[s].push(i);else{var o,l;if(void 0!==r)for(var c=document.getElementsByTagName("script"),u=0;u 0 || _vm.data.description || _vm.data.deprecated))?_c('b-card-text',{staticClass:\"intro\"},[(_vm.data.deprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),_vm._v(\" \"+_vm._s(_vm._f(\"summarize\")(_vm.data.description))+\" \")],2):_vm._e(),(_vm.showKeywordsInCatalogCards && _vm.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.keywords,\"variant\":\"primary\",\"center\":!_vm.isList}}):_vm._e(),(_vm.temporalExtent)?_c('b-card-text',{staticClass:\"datetime\"},[_c('small',{domProps:{\"innerHTML\":_vm._s(_vm.temporalExtent)}})]):_vm._e()],1),_c('b-card-footer',[_vm._t(\"footer\",null,{\"data\":_vm.data})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=50eb59b2\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=50eb59b2&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"catalogs mb-4\"},[_c('header',[_c('h2',{staticClass:\"title mr-2\"},[_vm._v(_vm._s(_vm.title))]),(_vm.catalogCount !== null)?_c('b-badge',{staticClass:\"mr-4\",attrs:{\"pill\":\"\",\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.catalogCount))]):_vm._e(),_c('ViewButtons',{staticClass:\"mr-2\",model:{value:(_vm.view),callback:function ($$v) {_vm.view=$$v},expression:\"view\"}}),(_vm.isComplete && _vm.catalogs.length > 1)?_c('SortButtons',{model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.isComplete && _vm.catalogs.length > 1)?_c('section',{staticClass:\"catalog-filter mb-2\"},[_c('SearchBox',{attrs:{\"placeholder\":_vm.filterPlaceholder},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}}),(_vm.allKeywords.length > 0)?_c('multiselect',{attrs:{\"multiple\":\"\",\"options\":_vm.allKeywords,\"placeholder\":_vm.$t('multiselect.keywordsPlaceholder'),\"selectLabel\":_vm.$t('multiselect.selectLabel'),\"selectedLabel\":_vm.$t('multiselect.selectedLabel'),\"deselectLabel\":_vm.$t('multiselect.deselectLabel'),\"limitText\":_vm.limitText},model:{value:(_vm.selectedKeywords),callback:function ($$v) {_vm.selectedKeywords=$$v},expression:\"selectedKeywords\"}}):_vm._e()],1):_vm._e(),(_vm.showPagination)?_c('Pagination',{ref:\"topPagination\",attrs:{\"pagination\":_vm.pagination,\"placement\":\"top\"},on:{\"paginate\":_vm.paginate}}):_vm._e(),(_vm.hasSearchCritera && _vm.catalogView.length === 0)?_c('b-alert',{staticClass:\"mt-2\",attrs:{\"variant\":\"warning\",\"show\":\"\"}},[_vm._v(_vm._s(_vm.$t('catalogs.noMatches')))]):_vm._e(),_c('section',{staticClass:\"list\"},[(_vm.loading)?_c('Loading',{attrs:{\"fill\":\"\",\"top\":\"\"}}):_vm._e(),_c(_vm.cardsComponent,_vm._b({tag:\"component\"},'component',_vm.cardsComponentProps,false),_vm._l((_vm.catalogView),function(catalog){return _c('Catalog',{key:catalog.href,attrs:{\"catalog\":catalog},scopedSlots:_vm._u([{key:\"footer\",fn:function({data}){return [_vm._t(\"catalogFooter\",null,{\"data\":data})]}}],null,true)})}),1)],1),(_vm.showPagination)?_c('Pagination',{attrs:{\"pagination\":_vm.pagination},on:{\"paginate\":_vm.paginate}}):(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.loadMore),expression:\"loadMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.loadMore}},[_vm._v(_vm._s(_vm.$t('catalogs.loadMore')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{attrs:{\"title\":_vm.$t('view.title'),\"size\":\"sm\"}},[_c('b-button',{attrs:{\"title\":_vm.$t('view.tiles.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'cards'},on:{\"click\":function($event){return _vm.toggle('cards')}}},[_c('b-icon-bricks'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.tiles.label')))])],1),_c('b-button',{attrs:{\"title\":_vm.$t('view.list.title'),\"variant\":\"outline-primary\",\"pressed\":_vm.value === 'list'},on:{\"click\":function($event){return _vm.toggle('list')}}},[_c('b-icon-list-task'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('view.list.label')))])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ViewButtons.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ViewButtons.vue?vue&type=template&id=6a51668d\"\nimport script from \"./ViewButtons.vue?vue&type=script&lang=js\"\nexport * from \"./ViewButtons.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","import ViewButtons from './ViewButtons.vue';\n\nexport default {\n components: {\n ViewButtons\n },\n computed: {\n cardsComponent() {\n return (this.view === 'list') ? 'div' : 'b-card-group';\n },\n cardsComponentProps() {\n if (this.view === 'list') {\n return {\n class: [\n 'card-list'\n ]\n };\n }\n else {\n return {\n columns: true\n };\n }\n },\n view: {\n get() {\n return this.$store.state.cardViewMode;\n },\n async set(cardViewMode) {\n await this.$store.dispatch('config', { cardViewMode });\n }\n }\n }\n};\n","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalogs.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalogs.vue?vue&type=template&id=3b49c796&scoped=true\"\nimport script from \"./Catalogs.vue?vue&type=script&lang=js\"\nexport * from \"./Catalogs.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalogs.vue?vue&type=style&index=0&id=3b49c796&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b49c796\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button',_vm._b({staticClass:\"copy-button\",attrs:{\"variant\":_vm.copyColor,\"title\":_vm.$t('copy')},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.copy.apply(null, arguments)}}},'b-button',_vm.buttonProps,false),[_c(_vm.copyIcon,{tag:\"component\"}),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CopyButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CopyButton.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CopyButton.vue?vue&type=template&id=033681c8\"\nimport script from \"./CopyButton.vue?vue&type=script&lang=js\"\nexport * from \"./CopyButton.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"styled-description\",class:{compact: _vm.compact, inline: _vm.inline},domProps:{\"innerHTML\":_vm._s(_vm.markup(_vm.description))}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Description.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Description.vue?vue&type=template&id=77c4c56a\"\nimport script from \"./Description.vue?vue&type=script&lang=js\"\nexport * from \"./Description.vue?vue&type=script&lang=js\"\nimport style0 from \"./Description.vue?vue&type=style&index=0&id=77c4c56a&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":\"\",\"dismissible\":_vm.dismissible},on:{\"dismissed\":function($event){return _vm.$emit('close')}}},[_c('p',{staticClass:\"message\"},[_vm._v(_vm._s(_vm.message || _vm.$t('errors.default')))]),(_vm.error && _vm.error.message)?_c('dl',{staticClass:\"error\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.cause')))]),_c('dd',[_vm._v(_vm._s(_vm.error.message))])]):_vm._e(),(_vm.description)?_c('dl',{staticClass:\"description\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.reason')))]),_c('dd',[_vm._v(_vm._s(_vm.description))])]):_vm._e(),(_vm.id)?_c('dl',{staticClass:\"id\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.code')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.id))])])]):_vm._e(),(_vm.url)?_c('dl',{staticClass:\"url\"},[_c('dt',[_vm._v(_vm._s(_vm.$t('errors.labels.requestURL')))]),_c('dd',[_c('code',[_vm._v(_vm._s(_vm.url))])])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ErrorAlert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ErrorAlert.vue?vue&type=template&id=7a9d646a&scoped=true\"\nimport script from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nexport * from \"./ErrorAlert.vue?vue&type=script&lang=js\"\nimport style0 from \"./ErrorAlert.vue?vue&type=style&index=0&id=7a9d646a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a9d646a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-card',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.400\",value:(_vm.load),expression:\"load\",modifiers:{\"400\":true}}],staticClass:\"item-card\",class:{queued: !_vm.data, deprecated: _vm.isDeprecated, description: _vm.hasDescription},attrs:{\"no-body\":\"\"}},[(_vm.hasImage)?_c('b-card-img-lazy',_vm._b({staticClass:\"thumbnail\",attrs:{\"offset\":\"200\"}},'b-card-img-lazy',_vm.thumbnail,false)):_vm._e(),_c('b-card-body',[_c('b-card-title',[_c('StacLink',{staticClass:\"stretched-link\",attrs:{\"data\":[_vm.data, _vm.item]}})],1),(_vm.fileFormats.length > 0 || _vm.hasDescription || _vm.isDeprecated)?_c('b-card-text',{staticClass:\"intro\"},[(_vm.isDeprecated)?_c('b-badge',{staticClass:\"mr-1 mt-1 deprecated\",attrs:{\"variant\":\"warning\"}},[_vm._v(_vm._s(_vm.$t('deprecated')))]):_vm._e(),_vm._l((_vm.fileFormats),function(format){return _c('b-badge',{key:format,staticClass:\"mr-1 mt-1 fileformat\",attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm._f(\"formatMediaType\")(format)))])}),(_vm.hasDescription)?[_vm._v(_vm._s(_vm._f(\"summarize\")(_vm.data.properties.description)))]:_vm._e()],2):_vm._e(),(_vm.showKeywordsInItemCards && _vm.keywords.length > 0)?_c('Keywords',{attrs:{\"keywords\":_vm.keywords,\"variant\":\"primary\",\"center\":\"\"}}):_vm._e(),_c('b-card-text',[_c('small',{staticClass:\"text-muted\"},[(_vm.extent)?[_vm._v(_vm._s(_vm._f(\"formatTemporalExtent\")(_vm.extent)))]:(_vm.data && _vm.data.properties.datetime)?[_vm._v(_vm._s(_vm._f(\"formatTimestamp\")(_vm.data.properties.datetime)))]:[_vm._v(_vm._s(_vm.$t('items.noTime')))]],2)])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=7144a4b0\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=7144a4b0&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',{staticClass:\"items mb-4\"},[_c('header',[_c('h2',{staticClass:\"title mr-2\"},[_vm._v(_vm._s(_vm.$tc('stacItem', _vm.items.length )))]),(_vm.itemCount !== null)?_c('b-badge',{staticClass:\"mr-4\",attrs:{\"pill\":\"\",\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.itemCount))]):_vm._e(),(!_vm.api && _vm.items.length > 1)?_c('SortButtons',{model:{value:(_vm.sort),callback:function ($$v) {_vm.sort=$$v},expression:\"sort\"}}):_vm._e()],1),(_vm.showPagination)?_c('Pagination',{ref:\"topPagination\",attrs:{\"pagination\":_vm.pagination,\"placement\":\"top\"},on:{\"paginate\":_vm.paginate}}):_vm._e(),(_vm.allowFilter)?[(_vm.api)?_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.itemFilter\",modifiers:{\"itemFilter\":true}}],staticClass:\"mb-4 mt-2\",class:{'ml-3': _vm.showPagination},attrs:{\"variant\":_vm.hasFilters && !_vm.filtersOpen ? 'primary' : 'outline-primary'}},[_c('b-icon-search'),_vm._v(\" \"+_vm._s(_vm.filtersOpen ? _vm.$t('items.hideFilter') : _vm.$t('items.showFilter'))+\" \"),(_vm.hasFilters && !_vm.filtersOpen)?_c('b-badge',{attrs:{\"variant\":\"dark\"}},[_vm._v(_vm._s(_vm.filterCount))]):_vm._e()],1):_vm._e(),_c('b-collapse',{attrs:{\"id\":\"itemFilter\"},model:{value:(_vm.filtersOpen),callback:function ($$v) {_vm.filtersOpen=$$v},expression:\"filtersOpen\"}},[_c('SearchFilter',{attrs:{\"type\":\"Items\",\"title\":_vm.$t('items.filter'),\"parent\":_vm.stac,\"value\":_vm.apiFilters},on:{\"input\":_vm.emitFilter}})],1)]:_vm._e(),_c('section',{staticClass:\"list\"},[(_vm.loading)?_c('Loading',{attrs:{\"fill\":\"\",\"top\":\"\"}}):_vm._e(),(_vm.chunkedItems.length > 0)?_c('b-card-group',{attrs:{\"columns\":\"\"}},_vm._l((_vm.chunkedItems),function(item){return _c('Item',{key:item.href,attrs:{\"item\":item}})}),1):_c('b-alert',{attrs:{\"variant\":_vm.hasFilters ? 'warning' : 'info',\"show\":\"\"}},[(_vm.hasFilters)?[_vm._v(_vm._s(_vm.$t('search.noItemsFound')))]:[_vm._v(_vm._s(_vm.$t('items.noneAvailableForCollection')))]],2)],1),(_vm.showPagination)?_c('Pagination',{attrs:{\"pagination\":_vm.pagination},on:{\"paginate\":_vm.paginate}}):(_vm.hasMore)?_c('b-button',{directives:[{name:\"b-visible\",rawName:\"v-b-visible.300\",value:(_vm.showMore),expression:\"showMore\",modifiers:{\"300\":true}}],attrs:{\"variant\":\"primary\"},on:{\"click\":_vm.showMore}},[_vm._v(_vm._s(_vm.$t('showMore')))]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Items.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Items.vue?vue&type=template&id=1de617f0\"\nimport script from \"./Items.vue?vue&type=script&lang=js\"\nexport * from \"./Items.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{class:_vm.classes},[_c('b-spinner',{attrs:{\"label\":_vm.$t('loading'),\"small\":_vm.small}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=67931bb8&scoped=true\"\nimport script from \"./Loading.vue?vue&type=script&lang=js\"\nexport * from \"./Loading.vue?vue&type=script&lang=js\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=67931bb8&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67931bb8\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-button-group',{class:_vm.classes},[_c('b-button',{attrs:{\"disabled\":!_vm.pagination.first,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.first)}}},[_vm._v(_vm._s(_vm.$t('pagination.first')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.prev,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.prev)}}},[_vm._v(_vm._s(_vm.$t('pagination.previous')))]),_c('b-button',{attrs:{\"disabled\":!_vm.pagination.next,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.next)}}},[_vm._v(_vm._s(_vm.$t('pagination.next')))]),(_vm.pagination.last)?_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.paginate(_vm.pagination.last)}}},[_vm._v(_vm._s(_vm.$t('pagination.last')))]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Pagination.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Pagination.vue?vue&type=template&id=56aa2ed6\"\nimport script from \"./Pagination.vue?vue&type=script&lang=js\"\nexport * from \"./Pagination.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.component,_vm._b({tag:\"component\",staticClass:\"stac-link\",attrs:{\"title\":_vm.tooltip}},'component',_vm.attributes,false),[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.displayTitle))])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacLink.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacLink.vue?vue&type=template&id=935ce1da\"\nimport script from \"./StacLink.vue?vue&type=script&lang=js\"\nexport * from \"./StacLink.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","module.exports = {\n catalogUrl: null,\n catalogTitle: \"STAC Browser\",\n allowExternalAccess: true, // Must be true if catalogUrl is not given\n allowedDomains: [],\n detectLocaleFromBrowser: true,\n storeLocale: true,\n locale: \"en\",\n fallbackLocale: \"en\",\n supportedLocales: [\n \"de\",\n// \"de-CH\",\n \"es\",\n \"en\",\n// \"en-GB\",\n// \"en-US\",\n \"fr\",\n// \"fr-CA\",\n// \"fr-CH\",\n \"it\",\n// \"it-CH\",\n \"ro\",\n \"ja\",\n \"pt\",\n// \"pt-BR\"\n ],\n apiCatalogPriority: null,\n useTileLayerAsFallback: true,\n displayGeoTiffByDefault: false,\n buildTileUrlTemplate: ({href, asset}) => \"https://tiles.rdnt.io/tiles/{z}/{x}/{y}@2x?url=\" + encodeURIComponent(asset.href.startsWith(\"/vsi\") ? asset.href : href),\n stacProxyUrl: null,\n pathPrefix: \"/\",\n historyMode: \"history\",\n cardViewMode: \"cards\",\n cardViewSort: \"asc\",\n showKeywordsInItemCards: false,\n showKeywordsInCatalogCards: false,\n showThumbnailsAsAssets: false,\n geoTiffResolution: 128,\n redirectLegacyUrls: false,\n itemsPerPage: 12,\n defaultThumbnailSize: null,\n maxPreviewsOnMap: 50,\n crossOriginMedia: null,\n requestHeaders: {},\n requestQueryParameters: {},\n preprocessSTAC: null,\n authConfig: null\n};\n","import i18n from '../i18n';\nimport Utils from '../utils';\n\nexport default class Auth {\n\n /**\n * Constructs the authentication method.\n * \n * @param {Object.} options Any potential options the authentication method needs\n * @param {Function} changeListener A change listener with two parameters: loggedIn (boolean) and credentials (string|null)\n * @param {Router} router The Vue router instance\n */\n constructor(options = {}, changeListener = null, router = null) {\n this.options = options;\n this.changeListener = changeListener;\n this.router = router;\n }\n\n /**\n * A tooltip title for the authentication button.\n * \n * @returns {string}\n */\n getButtonTitle() {\n return null;\n }\n\n /**\n * A label for the button that is shown when unauthorized (logged out).\n * \n * @returns {string}\n */\n getLoginLabel() {\n return i18n.t('authentication.button.login');\n }\n\n /**\n * A label for the button that is shown when authorized (logged in).\n * \n * @returns {string}\n */\n getLogoutLabel() {\n return i18n.t('authentication.button.logout');\n }\n\n getComponent() {\n return null;\n }\n\n getComponentProps() {\n return {};\n }\n\n async init() {\n return;\n }\n\n async login() {\n }\n\n async confirmLogin(credentials) {\n if (this.changeListener) {\n await this.changeListener(true, credentials);\n }\n }\n\n async logout(/*credentials*/) {\n }\n\n async confirmLogout() {\n if (this.changeListener) {\n await this.changeListener(false);\n }\n }\n\n async close() {\n return;\n }\n\n updateStore(/*value*/) {\n return {};\n }\n\n _updateStore(value, defaultName = null, defaultIn = null, defaultFormatter = null) {\n const formatter = this.options.formatter || defaultFormatter;\n const key = this.options.name || defaultName;\n const in_ = this.options.in || defaultIn;\n\n // Format the credentials\n if (value) {\n if (formatter === 'Bearer') {\n value = `Bearer ${value}`;\n }\n else if (typeof formatter === 'function') {\n value = formatter(value);\n }\n }\n if (!Utils.hasText(value)) {\n value = undefined;\n }\n\n // Set cookie, query or request parameters\n if (in_ === 'query') {\n return { query: { type: 'private', key, value } };\n }\n else if (in_ === 'cookie') {\n return { cookie: { key, value } };\n }\n else if (in_ === 'header') {\n return { header: { key, value } };\n }\n else {\n return {};\n }\n }\n\n static async create(config, changeListener, router) {\n let method = new Auth();\n if (Utils.isObject(config)) {\n if (config.type === 'http' && config.scheme === 'basic') {\n const BasicAuth = (await import('./basic')).default;\n method = new BasicAuth(config, changeListener, router);\n }\n else if (config.type === 'apiKey') {\n const ApIKey = (await import('./apiKey')).default;\n method = new ApIKey(config, changeListener, router);\n }\n else if (config.type === 'openIdConnect') {\n const OIDC = (await import('./oidc')).default;\n method = new OIDC(config, changeListener, router);\n }\n }\n await method.init();\n return method;\n }\n\n static equals(method, config) {\n return JSON.stringify(method.options) === JSON.stringify(config);\n }\n\n}\n","import Utils from \"./utils\";\n\nexport default class BrowserStorage {\n\n static JSON_INDICATOR = \"\\n\\r\";\n\n static enabled(engine) {\n if (!Utils.isObject(engine)) {\n return false;\n }\n try {\n engine.setItem('test', 'yes');\n if (engine.getItem('test') === 'yes') {\n engine.removeItem('test');\n return true;\n }\n } catch(error) {\n console.error(error);\n }\n return false;\n }\n\n constructor(session = false) {\n if (session) {\n if (BrowserStorage.enabled(window.sessionStorage)) {\n this.engine = window.sessionStorage;\n }\n else if (navigator.cookieEnabled) {\n this.engine = new Cookies(true);\n }\n else {\n this.engine = new NoOp();\n }\n }\n else {\n if (BrowserStorage.enabled(window.localStorage)) {\n this.engine = window.localStorage;\n }\n else if (navigator.cookieEnabled) {\n this.engine = new Cookies();\n }\n else {\n this.engine = new NoOp();\n }\n }\n }\n\n get(name) {\n try {\n let data = this.engine.getItem(name);\n if (typeof data === 'string' && data.startsWith(BrowserStorage.JSON_INDICATOR)) {\n data = JSON.parse(data.slice(BrowserStorage.JSON_INDICATOR.length));\n }\n return data;\n } catch(error) {\n console.error(error);\n return null;\n }\n }\n\n set(name, value) {\n try {\n if (typeof value !== 'string') {\n value = BrowserStorage.JSON_INDICATOR + JSON.stringify(value);\n }\n this.engine.setItem(name, value);\n } catch(error) {\n console.error(error);\n }\n }\n\n remove(name) {\n try {\n this.engine.removeItem(name);\n } catch(error) {\n console.error(error);\n }\n }\n\n clear() {\n this.engine.clear();\n }\n\n}\n\nexport class Cookies {\n\n constructor(session = false) {\n this.session = session;\n }\n\n getExpiry(minutes = null) {\n if (minutes === null) {\n if (this.session) {\n minutes = 60; // 60 minutes\n }\n else {\n minutes = 1000 * 24 * 60; // 1000 days\n }\n }\n const date = new Date();\n date.setTime(date.getTime() + minutes * 60 * 1000);\n this.epires = date.toGMTString();\n }\n\n setItem(name, value, minutes = null) {\n const expires = this.getExpiry(minutes);\n value = encodeURIComponent(value);\n document.cookie = `${name}=${value}; expires=${expires}; path=/`;\n }\n\n getItem(name) {\n const prefix = name + \"=\";\n const parts = document.cookie.split(';');\n for (let c of parts) {\n c = c.trim();\n if (c.startsWith(prefix)) {\n const data = c.substring(prefix.length, c.length);\n return decodeURIComponent(data);\n }\n }\n return null;\n }\n\n removeItem(name) {\n this.set(name, \"\", -1);\n }\n\n clear() {\n document.cookie = '';\n }\n\n}\n\n\nclass NoOp {\n\n constructor(session = false) {\n this.session = session;\n }\n\n setItem(name/*, value*/) {\n console.warn(`Browser storage disabled, can't store ${name}`);\n }\n\n getItem(/*name*/) {\n return null;\n }\n\n removeItem(/*name*/) {\n }\n\n clear() {\n }\n\n}\n","// Add deprecated CQL conformance classes for stac-fastapi:\n// https://github.com/stac-utils/stac-fastapi/issues/539\nconst CQL_TEXT = [\n 'https://api.stacspec.org/v1.*/item-search#filter:cql-text', // deprecated\n 'http://www.opengis.net/spec/cql2/1.*/conf/cql2-text'\n];\nconst CQL_JSON = [\n 'https://api.stacspec.org/v1.*/item-search#filter:cql-json', // deprecated\n 'http://www.opengis.net/spec/cql2/1.*/conf/cql2-json'\n];\n\nconst CQL_ADV_COMPARISON = ['http://www.opengis.net/spec/cql2/1.*/req/advanced-comparison-operators'];\n\nimport { mapGetters } from \"vuex\";\n\nexport const TYPES = {\n // OGC / STAC API - Features\n Items: {\n BasicFilters: [\n 'https://api.stacspec.org/v1.*/ogcapi-features',\n 'http://www.opengis.net/spec/ogcapi-features-1/1.*/conf/core'\n ],\n CollectionIdFilter: false,\n ItemIdFilter: false,\n // It seems some conformance classes use conf (correct) and some req (deprecated?) after the version number\n CqlFilters: ['http://www.opengis.net/spec/ogcapi-features-3/1.*/*/features-filter'],\n Sort: [\n 'https://api.stacspec.org/v1.*/ogcapi-features#sort',\n 'http://www.opengis.net/spec/ogcapi-records-1/1.*/conf/sorting'\n ],\n FreeText: ['https://api.stacspec.org/v1.*/ogcapi-features#free-text']\n },\n // STAC API - Item Search\n Global: {\n BasicFilters: true,\n CollectionIdFilter: true,\n ItemIdFilter: true,\n CqlFilters: ['https://api.stacspec.org/v1.*/item-search#filter'],\n Sort: ['https://api.stacspec.org/v1.*/item-search#sort'],\n FreeText: ['https://api.stacspec.org/v1.*/item-search#free-text']\n },\n // OGC / STAC API - Collections\n Collections: {\n BasicFilters: ['https://api.stacspec.org/v1.*/collection-search'],\n CollectionIdFilter: false,\n ItemIdFilter: false,\n CqlFilters: ['https://api.stacspec.org/v1.*/collection-search#filter'],\n Sort: ['https://api.stacspec.org/v1.*/collection-search#sort'],\n FreeText: ['https://api.stacspec.org/v1.*/collection-search#free-text']\n }\n};\n\nexport default {\n props: {\n type: {\n type: String,\n required: true\n }\n },\n computed: {\n ...mapGetters(['supportsConformance']),\n\n conformances() {\n return TYPES[this.type];\n },\n\n canSort() {\n return this.supportsConformance(this.conformances.Sort);\n },\n canFilterExtents() {\n return this.supportsConformance(this.conformances.BasicFilters);\n },\n canFilterFreeText() {\n return this.supportsConformance(this.conformances.FreeText);\n },\n cql() {\n if (!this.supportsConformance(this.conformances.CqlFilters)) {\n return null;\n }\n let textMode = this.supportsConformance(CQL_TEXT);\n let jsonMode = this.supportsConformance(CQL_JSON);\n if (!textMode && !jsonMode) {\n return null;\n }\n\n return {\n textMode,\n jsonMode,\n advancedComparison: this.supportsConformance(CQL_ADV_COMPARISON)\n };\n }\n }\n};\n","import { mapState } from 'vuex';\n\nexport default functions => {\n let mixin = {\n computed: {\n ...mapState(['uiLanguage'])\n },\n methods: {}\n };\n for(let name in functions) {\n let fn = functions[name];\n mixin.methods[name] = function() {\n // We call uiLanguage once so that it's a dependency for the computed property\n // which makes the computed property to re-render when uiLanguage changes.\n this.uiLanguage;\n return fn(...arguments);\n };\n }\n return mixin;\n};\n","import { mapState } from 'vuex';\n\nexport default {\n props: {\n showThumbnail: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n ...mapState(['cardViewMode', 'crossOriginMedia', 'defaultThumbnailSize']),\n isList() {\n return this.data && !this.data.isItem() && this.cardViewMode === 'list';\n },\n hasImage() {\n return this.showThumbnail && this.thumbnail;\n },\n thumbnail() {\n if (this.data) {\n let thumbnails = this.data.getThumbnails(true, 'thumbnail');\n if (thumbnails.length > 0) {\n let t = thumbnails[0];\n let width, height;\n if (Array.isArray(t['proj:shape']) && t['proj:shape'].length === 2) {\n [height, width] = t['proj:shape'];\n }\n else if (Array.isArray(this.defaultThumbnailSize) && this.defaultThumbnailSize.length === 2) {\n [height, width] = this.defaultThumbnailSize;\n }\n return {\n src: t.href,\n alt: t.title,\n crossorigin: this.crossOriginMedia,\n right: this.isList,\n blankColor: \"rgba(0, 0, 0, 0.125)\",\n width,\n height,\n // for b-card-img-lazy\n \"blank-width\": width,\n \"blank-height\": height\n };\n }\n }\n return null;\n }\n }\n};","import Utils from '../../utils.js';\nimport STAC from '../../models/stac.js';\nimport Auth from '../../auth/index.js';\n\nexport default class AuthUtils {\n\n static resolveAuth(obj, context) {\n if (context instanceof STAC && Utils.size(obj['auth:refs']) > 0) {\n const scheme = context.getMetadata('auth:schemes');\n if (Utils.size(scheme) > 0) {\n return obj['auth:refs']\n .map(ref => scheme[ref])\n .filter(ref => Utils.isObject(ref));\n }\n }\n return [];\n }\n\n static isSupported(method, config) {\n if (method instanceof Auth) {\n method = method.options;\n }\n switch(method.type) {\n case 'http':\n return (method.schema === 'basic');\n case 'apiKey':\n return (method.in === 'header' || method.in === 'query');\n case 'openIdConnect':\n return (config.historyMode === 'history');\n default:\n return false;\n }\n }\n\n static convertLegacyAuthConfig(config) {\n if (!Utils.isObject(config) || config.type === null) {\n return null;\n }\n else if (config.type === 'query' || config.type === 'header') {\n // It is the old format\n return {\n type: 'apiKey',\n in: config.type,\n name: config.key,\n description: config.description,\n formatter: config.formatter\n };\n }\n else {\n // Is the new format from the authentication extension\n return config;\n }\n }\n\n}\n","let config;\nif (typeof CONFIG_PATH === 'undefined') {\n config = require('../config');\n}\nelse {\n config = require(CONFIG_PATH);\n}\n\nexport default Object.assign(config, CONFIG_CLI, window.STAC_BROWSER_CONFIG);","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport CONFIG from './config';\nimport { default as Fields } from '@radiantearth/stac-fields/I18N';\nimport Utils from './utils';\n\nVue.use(VueI18n);\n\nexport const API_LANGUAGE_CONFORMANCE = ['https://api.stacspec.org/v1.*/language'];\n\nconst LOCALE_CONFIG = {};\n\nfunction loadLocaleConfig() {\n // Load locale config\n for (let locale of CONFIG.supportedLocales) {\n LOCALE_CONFIG[locale] = require(`./locales/${locale}/config.json`);\n }\n const messages = {};\n // Add language names all other languages\n for (let locale in LOCALE_CONFIG) {\n messages[locale] = {\n languages: LOCALE_CONFIG\n };\n }\n return messages;\n}\n\nconst i18n = new VueI18n({\n locale: CONFIG.locale,\n fallbackLocale: CONFIG.fallbackLocale,\n messages: loadLocaleConfig(),\n // Todo: Workaround for https://github.com/kazupon/vue-i18n/issues/563\n postTranslation: (value, path) => {\n if (value === \"\") {\n const parts = path.split('.');\n let message = i18n.messages[CONFIG.fallbackLocale];\n for (const key of parts) {\n if (key in message) {\n message = message[key];\n }\n else {\n return value;\n }\n }\n return message;\n }\n return value;\n }\n});\nexport default i18n;\n\nexport function loadDefaultMessages() {\n return Promise.all([\n loadMessages(CONFIG.locale),\n loadMessages(CONFIG.fallbackLocale)\n ]);\n}\n\nexport async function loadMessages(locale) {\n // Check whether the language has already been loaded\n // Note that a languages key is already present thus check >1 and not >0\n if (Utils.size(i18n.messages[locale]) > 1) {\n return;\n }\n const messages = (await import(`./locales/${locale}/default.js`)).default;\n i18n.mergeLocaleMessage(locale, messages);\n}\n\nexport async function executeCustomFunctions(locale) {\n const customizeFiles = LOCALE_CONFIG[locale].customize;\n if (Utils.size(LOCALE_CONFIG[locale].customize) === 0) {\n return;\n }\n const p = customizeFiles.map(async (file) => {\n const fn = (await import(`./locales/${locale}/${file}`)).default;\n return await fn(locale);\n });\n return Promise.all(p);\n}\n\nexport function translateFields(value, vars = null) {\n if (typeof value !== 'string' || value.length === 0) {\n return value;\n }\n let key = `fields.${value}`;\n if (i18n.te(key)) {\n return i18n.t(key, null, vars);\n }\n return Fields.format(value, vars);\n}\n","// This code is based on https://github.com/cherry-projects/locale-id\n// Due to the \"heavy\" dependencies, it has been slimmed down\n\n// http://userguide.icu-project.org/locale\nexport default function parse(locale) {\n if (!locale) {\n return undefined;\n }\n\n // extract keyword\n const stringLocale = String(locale);\n const keywordPos = stringLocale.indexOf('@');\n\n const keyword = keywordPos !== -1\n ? stringLocale.substr(keywordPos + 1)\n : undefined;\n\n const localeWithoutKeyword = keywordPos !== -1\n ? stringLocale.substr(0, keywordPos)\n : stringLocale;\n\n // en-us => en_us\n const parts = String(localeWithoutKeyword)\n .replace(/-/g, '_')\n .split('_');\n\n if (!parts.length || parts.length > 4) {\n return undefined;\n }\n\n const language = parts.shift();\n if (!language) {\n return undefined;\n }\n\n const retVar = {\n keyword,\n language: language.toLowerCase(),\n };\n\n if (!parts.length) {\n return retVar;\n }\n\n if (parts.length === 3) {\n const variant = parts.pop();\n if (variant) {\n retVar.variant = variant.toUpperCase();\n }\n }\n\n let country = parts.pop();\n if (country.length > 3) {\n retVar.keyword = country;\n\n country = parts.pop();\n }\n\n if (country) {\n retVar.country = country.toUpperCase();\n }\n\n if (!parts.length) {\n return retVar;\n }\n\n const script = parts.pop();\n if (typeof script === 'string' && script.length >= 1) {\n retVar.script = script[0].toUpperCase() + script.substring(1).toLowerCase();\n }\n\n return retVar;\n}\n\nexport function normalize(locale, delimeter = '_') {\n const obj = parse(locale);\n if (!obj) {\n return obj;\n }\n\n let result = obj.language;\n\n if (obj.script) {\n result += `${delimeter}${obj.script}`;\n }\n\n if (obj.country) {\n result += `${delimeter}${obj.country}`;\n }\n\n return result;\n}\n\nconst splitAcceptLanguageRegEx = /([a-z]{1,8}(-[a-z]{1,8})?)\\s*(;\\s*q\\s*=\\s*(1|0\\.[0-9]+))?/ig;\nconst acceptLanguageItemRegEx = /^([a-z]{1,8}(-[a-z]{1,8})?)/i;\n\nexport function normalizeAcceptLanguage(acceptLanguage) {\n const returnItems = [];\n if (!acceptLanguage) {\n return returnItems;\n }\n\n const items = acceptLanguage.match(splitAcceptLanguageRegEx) || [];\n items.forEach(acceptLanguageItem => {\n const matches = acceptLanguageItem.match(acceptLanguageItemRegEx) || [];\n const locale = normalize(matches[0]);\n if (locale) {\n returnItems.push(locale);\n }\n });\n\n return returnItems;\n}\n\nexport function prepareSupported(supported) {\n const lgs = {};\n\n supported.forEach(supportedLocale => {\n const { language, country } = parse(supportedLocale);\n if (!language) {\n throw new Error(`Locale ${supportedLocale} is not parsable`);\n }\n\n if (!lgs[language]) {\n lgs[language] = {\n countries: {},\n firstCountry: undefined,\n main: undefined,\n };\n }\n\n const lg = lgs[language];\n if (country) {\n lg.countries[country] = supportedLocale;\n\n if (!lg.firstCountry) {\n lg.firstCountry = supportedLocale;\n }\n } else {\n lg.main = supportedLocale;\n }\n });\n\n return lgs;\n}\n\nexport function getBest(supported, locale, defaultLocale, getAnyCountry) {\n const lgs = Array.isArray(supported) ? prepareSupported(supported) : supported;\n\n // return defaultLocale if current locale is undefined\n if (!locale && defaultLocale) {\n return getBest(supported, defaultLocale, undefined, getAnyCountry);\n }\n\n if (!locale) {\n return undefined;\n }\n\n const { language, country } = parse(locale);\n if (!language) {\n return defaultLocale;\n }\n\n // selected locale is not supported\n if (!lgs[language]) {\n if (locale === defaultLocale) {\n return undefined;\n }\n\n return getBest(supported, defaultLocale, null, getAnyCountry);\n }\n\n const { countries, main = defaultLocale, firstCountry } = lgs[language];\n if (!countries || !country) {\n if (getAnyCountry && firstCountry) {\n return firstCountry;\n }\n\n return main;\n }\n\n if (getAnyCountry && firstCountry) {\n return countries[country] ? countries[country] : firstCountry;\n }\n\n return countries[country] ? countries[country] : main;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-container',{attrs:{\"id\":\"stac-browser\"}},[(_vm.showLogin)?_c('Authentication'):_vm._e(),(_vm.globalError)?_c('ErrorAlert',_vm._b({staticClass:\"global-error\",attrs:{\"dismissible\":\"\"},on:{\"close\":_vm.hideError}},'ErrorAlert',_vm.globalError,false)):_vm._e(),(_vm.sidebar)?_c('Sidebar'):_vm._e(),_c('header',[_c('div',{staticClass:\"logo\"},[_vm._v(_vm._s(_vm.displayCatalogTitle))]),_c('StacHeader',{on:{\"enableSidebar\":function($event){_vm.sidebar = true}}})],1),_c('router-view'),_c('footer',[_c('i18n',{staticClass:\"poweredby text-muted\",attrs:{\"tag\":\"small\",\"path\":\"poweredBy\"},scopedSlots:_vm._u([{key:\"link\",fn:function(){return [_c('a',{attrs:{\"href\":\"https://github.com/radiantearth/stac-browser\",\"target\":\"_blank\"}},[_vm._v(\"STAC Browser\")]),_vm._v(\" \"+_vm._s(_vm.browserVersion)+\" \")]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('main',{staticClass:\"browse d-flex flex-column\"},[(!_vm.allowExternalAccess && _vm.isExternal)?_c('b-alert',{attrs:{\"show\":\"\"}},[_vm._v(_vm._s(_vm.$t('errors.noExternalAccess')))]):(_vm.error)?_c('ErrorAlert',{attrs:{\"url\":_vm.url,\"description\":_vm.errorDescription,\"id\":_vm.errorId}}):(_vm.loading)?_c('Loading',{attrs:{\"stretch\":\"\"}}):_c(_vm.component,{tag:\"component\"})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,staticClass:\"item\"},[_c('b-row',[_c('b-col',{staticClass:\"left\"},[_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"card\":\"\",\"pills\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.selectedAsset,\"scrollWheelZoom\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1),(_vm.thumbnails.length > 0)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.additionalLinks.length > 0)?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks,\"context\":_vm.data}}):_vm._e()],1),_c('b-col',{staticClass:\"right\"},[_c('section',{staticClass:\"intro\"},[(_vm.data.properties.description)?_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]):_vm._e(),(_vm.data.properties.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data.properties['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data.properties['anon:warning']}}):_vm._e(),(_vm.data.properties.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.properties.description}})],1):_vm._e(),(Array.isArray(_vm.data.properties.keywords) && _vm.data.properties.keywords.length > 0)?_c('Keywords',{staticClass:\"mb-3\",attrs:{\"keywords\":_vm.data.properties.keywords}}):_vm._e()],1),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.data.properties.providers)?_c('Providers',{attrs:{\"providers\":_vm.data.properties.providers}}):_vm._e(),_c('Metadata',{attrs:{\"data\":_vm.data,\"type\":\"Item\",\"ignoreFields\":_vm.ignoredMetadataFields}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Utils from '../utils';\nimport { mapGetters } from 'vuex';\n\nexport default {\n data() {\n return {\n shownAssetsOnMap: [],\n shownBandsOnMap: [],\n tab: null,\n selectedAsset: null,\n selectedAssetKey: null\n };\n },\n computed: {\n ...mapGetters(['thumbnails', 'hasAssets', 'assets']),\n shownAssets() {\n if (this.tab === 0) {\n return this.shownAssetsOnMap;\n }\n else if (this.tab === 1 || (this.tab === null && this.thumbnails.length > 0)) {\n let keys = [];\n let thumbnailRefs = this.thumbnails.map(t => t.href);\n for(let key in this.assets) {\n let asset = this.assets[key];\n if (thumbnailRefs.includes(asset.href)) {\n keys.push(key);\n }\n }\n return keys;\n }\n return [];\n }\n },\n methods: {\n showAsset(asset, id, isThumbnail) {\n if (isThumbnail) {\n this.tab = 1;\n }\n else {\n this.tab = 0;\n this.selectedAsset = asset;\n this.selectedAssetKey = id;\n }\n if (this.$refs.tabs) {\n Utils.scrollTo(this.$refs.tabs.$el);\n }\n },\n dataChanged(data) {\n if (!Utils.isObject(data)) {\n this.shownBandsOnMap = [];\n this.shownAssetsOnMap = [];\n }\n else if (data.assets || data.bands) {\n if (Utils.size(data.assets) > 0) {\n if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n else {\n this.shownAssetsOnMap = data.assets.map(meta => meta.key);\n }\n }\n if (Utils.size(data.bands) > 0) {\n this.shownBandsOnMap = data.bands;\n }\n }\n else if (this.selectedAssetKey) {\n this.shownAssetsOnMap = [this.selectedAssetKey];\n }\n }\n }\n};\n","import Utils from './utils';\nimport STAC from './models/stac';\nimport URI from 'urijs';\nimport i18n from './i18n';\n\nfunction toBrowserUrl(url, store) {\n let path = store.getters.toBrowserPath(url);\n let uri = URI(window.location.origin.toString());\n if (store.state.historyMode === 'hash') {\n uri.path(store.state.pathPrefix);\n uri.fragment(path);\n }\n else {\n uri.path(Utils.removeTrailingSlash(store.state.pathPrefix) + path);\n }\n return uri.toString();\n}\n\nfunction addSpatialCoverage(schema, bbox) {\n if (Array.isArray(bbox) && bbox.length >= 4) {\n schema.spatialCoverage = {\n \"@type\": \"Place\",\n geo: {\n \"@type\": \"GeoShape\",\n box: (bbox || []).join(\" \")\n }\n };\n }\n}\n\nfunction formatTemporalCoverage(dates) {\n if (Array.isArray(dates) && dates.length === 2 && (typeof dates[0] === 'string' || typeof dates[1] === 'string')) {\n return dates.map(dt => dt ? dt : '..').join('/');\n }\n return null;\n}\n\nfunction makeAssets(data) {\n if (Utils.size(data.assets) > 0) {\n return Object.values(data.assets).map(a => ({\n \"@type\": \"DataDownload\",\n contentUrl: Utils.toAbsolute(a.href, data.getAbsoluteUrl()),\n encodingFormat: a.type,\n name: a.title\n }));\n }\n return [];\n}\n\nfunction makeLinks(links, data, store, type = \"DataCatalog\") {\n return links.map(link => {\n let name, isBasedOn;\n if (link instanceof STAC) {\n name = STAC.getDisplayTitle(link);\n isBasedOn = link.getAbsoluteUrl();\n }\n else {\n name = link.title;\n isBasedOn = Utils.toAbsolute(link.href, data.getAbsoluteUrl());\n }\n let obj = {\n \"@type\": type,\n name,\n url: toBrowserUrl(isBasedOn, store),\n isBasedOn\n };\n if (type === 'Dataset') {\n obj.description = fallbackDescription(link, store);\n }\n return obj;\n });\n}\n\nfunction makeProvider(providers, role) {\n return providers\n .filter(p => Utils.isObject(p) && Array.isArray(p.roles) && p.roles.includes(role))\n .map(p => ({\n \"@type\": \"Organization\",\n \"name\": p.name,\n \"description\": p.description,\n \"url\": p.url,\n \"email\": p.email || p.mail,\n }));\n}\n\nfunction fallbackDescription(data, store) {\n let stacType, container;\n if (data instanceof STAC) {\n stacType = data.isItem() ? \"Item\" : data.type;\n container = data.collection;\n }\n else if (Utils.isObject(data) && data.rel === 'item') {\n stacType = \"Item\";\n }\n if (stacType) {\n let type = i18n.tc(`stac${stacType}`);\n let inX = i18n.t('in', {catalog: container || store.catalogTitle});\n return `SpatioTemporal Asset Catalog (STAC)\\n${type} - ${data.id} ${inX}`;\n }\n}\n\nfunction createBaseSchema(data, type, store) {\n let name = STAC.getDisplayTitle(data);\n let stacUrl = data.getAbsoluteUrl();\n let url = toBrowserUrl(stacUrl, store);\n let inLanguage = data.getMetadata('language')?.code;\n let thumbnails = data.getThumbnails(true);\n let thumbnailUrl;\n if (thumbnails.length > 0) {\n thumbnailUrl = Utils.toAbsolute(thumbnails[0].href, data.getAbsoluteUrl());\n }\n let license = data.getMetadata('license');\n if (license && license !== 'proprietary' && license !== 'various' && license !== 'other') {\n license = `https://spdx.org/licenses/${license}.html`;\n }\n else {\n license = data.getLinkWithRel('license')?.href;\n }\n if (license) {\n license = Utils.toAbsolute(license, data.getAbsoluteUrl());\n }\n\n let providers = data.getMetadata('providers');\n let copyrightHolder; // licensor\n let producer; // producer\n let provider; // host\n let creator; // processor\n if (Utils.size(providers) > 0) {\n copyrightHolder = makeProvider(providers, \"licensor\");\n producer = makeProvider(providers, \"producer\");\n provider = makeProvider(providers, \"host\");\n creator = makeProvider(providers, \"processor\");\n }\n\n return {\n \"@context\": \"https://schema.org/\",\n \"@type\": type,\n name,\n description: data.getMetadata(\"description\") || fallbackDescription(data, store),\n citation: data.getMetadata(\"sci:citation\"),\n identifier: data.getMetadata(\"sci:doi\") || data.id,\n keywords: data.getMetadata(\"keywords\"),\n license,\n url,\n isBasedOn: stacUrl,\n dateCreated: data.getMetadata('created'),\n dateModified: data.getMetadata('updated'),\n datePublished: data.getMetadata('published'),\n expires: data.getMetadata('expires'),\n inLanguage,\n thumbnailUrl,\n version: data.getMetadata('version'),\n image: thumbnailUrl,\n copyrightHolder,\n producer,\n provider,\n creator\n };\n}\n\nexport function createCatalogSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n // Remove invalid links\n parents = parents.filter(link => Utils.isObject(link));\n if (parents.length > 1) {\n // Remove duplicates\n parents = parents.filter((link, i) => parents.findIndex(p => p.isBasedOn === link.isBasedOn) !== i);\n }\n\n let schema = createBaseSchema(data, 'DataCatalog', store);\n\n if (data.isCollection()) {\n if (data.extent?.temporal?.interval.length > 0) {\n schema.temporalCoverage = formatTemporalCoverage(data.extent.temporal.interval[0]);\n }\n\n if (data.extent?.spatial?.bbox.length > 0) {\n addSpatialCoverage(schema, data.extent.spatial.bbox[0]);\n }\n schema.associatedMedia = makeAssets(data);\n }\n\n schema.hasPart = makeLinks(store.getters.catalogs, data, store);\n schema.dataset = makeLinks(store.getters.items, data, store, \"Dataset\");\n schema.isPartOf = makeLinks(parents, data, store);\n\n return schema;\n}\n\nexport function createItemSchema(data, parents, store) {\n if (!(data instanceof STAC)) {\n return null;\n }\n parents = parents.filter(link => Utils.isObject(link));\n\n let schema = createBaseSchema(data, 'Dataset', store);\n\n schema.includedInDataCatalog = makeLinks(parents, data, store);\n\n let start = data.getMetadata('start_datetime');\n let end = data.getMetadata('end_datetime');\n if (start || end) {\n schema.temporalCoverage = formatTemporalCoverage([start, end]);\n }\n else {\n schema.temporalCoverage = data.getMetadata('datetime');\n }\n\n addSpatialCoverage(schema, data.bbox);\n schema.distribution = makeAssets(data);\n\n return schema;\n}\n\nexport function addSchemaToDocument(doc, schema) {\n let id = 'schema-org';\n let element = doc.getElementById(id);\n if (!element) {\n element = doc.createElement('script');\n element.type = 'application/ld+json';\n element.id = id;\n doc.head.appendChild(element);\n }\n element.innerText = JSON.stringify(schema);\n}\n","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Item.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Item.vue?vue&type=template&id=5a87283c\"\nimport script from \"./Item.vue?vue&type=script&lang=js\"\nexport * from \"./Item.vue?vue&type=script&lang=js\"\nimport style0 from \"./Item.vue?vue&type=style&index=0&id=5a87283c&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{key:_vm.data.id,class:{cc: true, [_vm.data.type.toLowerCase()]: true, mixed: _vm.hasCatalogs && _vm.hasItems, empty: !_vm.hasCatalogs && !_vm.hasItems}},[_c('b-row',[_c('b-col',{staticClass:\"meta\"},[_c('section',{staticClass:\"intro\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('description')))]),(_vm.data.deprecated)?_c('DeprecationNotice',{attrs:{\"data\":_vm.data}}):_vm._e(),(_vm.data['anon:warning'])?_c('AnonymizedNotice',{attrs:{\"warning\":_vm.data['anon:warning']}}):_vm._e(),(_vm.data.description)?_c('ReadMore',{attrs:{\"lines\":10,\"text\":_vm.$t('read.more'),\"text-less\":_vm.$t('read.less')}},[_c('Description',{attrs:{\"description\":_vm.data.description}})],1):_vm._e(),(Array.isArray(_vm.data.keywords) && _vm.data.keywords.length > 0)?_c('Keywords',{staticClass:\"mb-3\",attrs:{\"keywords\":_vm.data.keywords}}):_vm._e(),(_vm.isCollection)?_c('section',{staticClass:\"metadata mb-4\"},[(_vm.licenses)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.license')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.licenses)}})])],1):_vm._e(),(_vm.temporalExtents)?_c('b-row',[_c('b-col',{staticClass:\"label\",attrs:{\"md\":\"4\"}},[_vm._v(_vm._s(_vm.$t('catalog.temporalExtent')))]),_c('b-col',{staticClass:\"value\",attrs:{\"md\":\"8\"}},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.temporalExtents)}})])],1):_vm._e()],1):_vm._e(),(_vm.linkPosition === 'left')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks,\"context\":_vm.data}}):_vm._e()],1),(_vm.isCollection || _vm.hasThumbnails)?_c('section',{staticClass:\"mb-4\"},[_c('b-card',{staticClass:\"maps-preview\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{ref:\"tabs\",attrs:{\"pills\":\"\",\"card\":\"\",\"vertical\":\"\",\"end\":\"\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[(_vm.isCollection)?_c('b-tab',{attrs:{\"title\":_vm.$t('map'),\"no-body\":\"\"}},[_c('Map',{attrs:{\"stac\":_vm.data,\"stacLayerData\":_vm.mapData,\"fitBoundsOnce\":\"\",\"popover\":\"\"},on:{\"dataChanged\":_vm.dataChanged}})],1):_vm._e(),(_vm.hasThumbnails)?_c('b-tab',{attrs:{\"title\":_vm.$t('thumbnails'),\"no-body\":\"\"}},[_c('Thumbnails',{attrs:{\"thumbnails\":_vm.thumbnails}})],1):_vm._e()],1)],1)],1):_vm._e(),(_vm.hasAssets)?_c('Assets',{attrs:{\"assets\":_vm.assets,\"context\":_vm.data,\"shown\":_vm.shownAssets},on:{\"showAsset\":_vm.showAsset}}):_vm._e(),(_vm.hasItemAssets && !_vm.hasItems)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"context\":_vm.data,\"definition\":true}}):_vm._e(),(_vm.providers)?_c('Providers',{attrs:{\"providers\":_vm.providers}}):_vm._e(),_c('Metadata',{staticClass:\"mb-4\",attrs:{\"type\":_vm.data.type,\"data\":_vm.data,\"ignoreFields\":_vm.ignoredMetadataFields}}),(_vm.collectionLink)?_c('CollectionLink',{attrs:{\"link\":_vm.collectionLink}}):_vm._e(),(_vm.linkPosition === 'right')?_c('Links',{attrs:{\"title\":_vm.$t('additionalResources'),\"links\":_vm.additionalLinks,\"context\":_vm.data}}):_vm._e()],1),(_vm.hasCatalogs)?_c('b-col',{staticClass:\"catalogs-container\"},[_c('Catalogs',{attrs:{\"catalogs\":_vm.catalogs,\"hasMore\":!!_vm.nextCollectionsLink},on:{\"loadMore\":_vm.loadMoreCollections}})],1):_vm._e(),(_vm.hasItems)?_c('b-col',{staticClass:\"items-container\"},[_c('Items',{attrs:{\"stac\":_vm.data,\"items\":_vm.items,\"api\":_vm.isApi,\"showFilters\":_vm.showFilters,\"apiFilters\":_vm.filters,\"pagination\":_vm.itemPages,\"loading\":_vm.apiItemsLoading},on:{\"paginate\":_vm.paginateItems,\"filterItems\":_vm.filterItems,\"filtersShown\":_vm.filtersShown}}),(_vm.hasItemAssets)?_c('Assets',{attrs:{\"assets\":_vm.data.item_assets,\"context\":_vm.data,\"definition\":true}}):_vm._e()],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Catalog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Catalog.vue?vue&type=template&id=2de6eb7f\"\nimport script from \"./Catalog.vue?vue&type=script&lang=js\"\nexport * from \"./Catalog.vue?vue&type=script&lang=js\"\nimport style0 from \"./Catalog.vue?vue&type=style&index=0&id=2de6eb7f&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Browse.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Browse.vue?vue&type=template&id=21cc23bf\"\nimport script from \"./Browse.vue?vue&type=script&lang=js\"\nexport * from \"./Browse.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","import Browse from '../views/Browse.vue';\n\nfunction getPath(route, config) {\n let path = route.params.pathMatch;\n if (config.allowExternalAccess && path.startsWith(\"external/\")) {\n path = '/' + path;\n }\n return {path};\n}\n\nfunction getRoutes(config) {\n let routes = [];\n\n if (!config.catalogUrl) {\n routes.push({\n path: \"/\",\n name: \"select\",\n component: () => import(\"../views/SelectDataSource.vue\")\n });\n routes.push({\n path: \"/search/external/(.*)\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\"),\n props: route => {\n return {\n loadParent: `/external/${route.params.pathMatch}`\n };\n }\n });\n }\n else {\n routes.push({\n path: \"/search\",\n name: \"search\",\n component: () => import(\"../views/Search.vue\")\n });\n }\n\n routes.push({\n path: '/auth/logout',\n name: \"logout\",\n component: () => import(\"../views/Logout.vue\")\n });\n routes.push({\n path: '/auth',\n component: () => import(\"../views/LoginCallback.vue\")\n });\n\n routes.push({\n path: \"/validation/(.*)\",\n name: \"validation\",\n component: () => import(\"../views/Validation.vue\"),\n props: route => getPath(route, config)\n });\n\n routes.push({\n path: \"/(.*)\",\n name: \"browse\",\n component: Browse,\n props: route => getPath(route, config)\n });\n\n return routes;\n}\n\nexport default getRoutes;\n","import Auth from '../auth';\nimport i18n from '../i18n';\nimport AuthUtils from '../components/auth/utils';\nimport BrowserStorage, { Cookies } from '../browser-store';\n\nconst handleAuthError = async (cx, error) => {\n cx.commit('showGlobalError', {\n error,\n message: i18n.t('errors.authFailed')\n }, { root: true });\n await cx.dispatch('updateCredentials');\n};\n\nexport default function getStore(router) {\n return {\n namespaced: true,\n state: {\n // Wrap in a function and use the getter instead of the state\n // Unfortunately, some auth libraries have internal state, which vuex doesn't like\n // and thus reports: \"do not mutate vuex store state outside mutation handlers.\"\n method: () => new Auth(),\n actions: [],\n credentials: null,\n inProgress: false\n },\n getters: {\n method(state) {\n return state.method();\n },\n canAuthenticate(state, getters, rootState) {\n return AuthUtils.isSupported(getters.method, rootState);\n },\n isLoggedIn(state) {\n return state.credentials !== null;\n },\n showLogin(state, getters) {\n return !getters.isLoggedIn && state.inProgress;\n }\n },\n mutations: {\n setCredentials(state, credentials) {\n state.credentials = credentials; // e.g. Username + Password or a Bearer Token\n },\n setMethod(state, method) {\n state.method = () => method;\n },\n addAction(state, callback) {\n state.actions.push(callback);\n },\n resetActions(state) {\n state.actions = [];\n },\n setInProgress(state, inProgress = true) {\n state.inProgress = inProgress;\n }\n },\n actions: {\n async waitForAuth(cx) {\n if (Auth.equals(cx.getters.method, cx.rootState.authConfig)) {\n return;\n }\n await cx.dispatch('updateMethod', cx.rootState.authConfig);\n },\n async updateMethod(cx, config) {\n config = AuthUtils.convertLegacyAuthConfig(config);\n await cx.getters.method.close();\n\n const changeListener = async (isLoggedIn, credentials) => {\n if (!isLoggedIn) {\n credentials = null;\n }\n await cx.dispatch('updateCredentials', credentials);\n if (isLoggedIn) {\n await cx.dispatch('executeActions');\n }\n else {\n cx.commit('resetActions');\n }\n };\n \n const storage = new BrowserStorage(true);\n storage.set('authConfig', config);\n\n const newAuth = await Auth.create(config, changeListener, router);\n cx.commit('setMethod', newAuth);\n },\n async requestLogin(cx) {\n if (cx.getters.isLoggedIn) {\n return;\n }\n cx.commit('setInProgress');\n try {\n await cx.getters.method.login();\n } catch(error) {\n handleAuthError(cx, error);\n }\n },\n async finalizeLogin(cx, credentials = null) {\n cx.commit('setInProgress', false);\n try {\n await cx.getters.method.confirmLogin(credentials);\n } catch(error) {\n handleAuthError(cx, error);\n }\n },\n async abortLogin(cx) {\n cx.commit('setInProgress', false);\n },\n async requestLogout(cx) {\n if (!cx.getters.isLoggedIn) {\n return;\n }\n cx.commit('setInProgress');\n await cx.getters.method.logout();\n },\n async finalizeLogout(cx) {\n cx.commit('setInProgress', false);\n try {\n await cx.getters.method.confirmLogout();\n } catch(error) {\n handleAuthError(cx, error);\n }\n },\n // Format the value and add it to query parameters or headers\n async updateCredentials(cx, value = null) {\n cx.commit('setCredentials', value);\n const intent = cx.getters.method.updateStore(value);\n if (intent.query) {\n cx.commit('setQueryParameter', intent.query, { root: true });\n }\n else if (intent.header) {\n cx.commit('setRequestHeader', intent.header, { root: true });\n }\n else if (intent.cookie) {\n const cookie = new Cookies(true);\n cookie.setItem(intent.cookie.key, intent.cookie.value);\n }\n },\n async executeActions(cx) {\n for (let callback of cx.state.actions) {\n try {\n const p = callback();\n if (p instanceof Promise) {\n p.catch(error => handleAuthError(cx, error));\n }\n } catch (error) {\n handleAuthError(cx, error);\n }\n }\n cx.commit('resetActions');\n }\n }\n };\n}\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\n\nimport URI from \"urijs\";\n\nimport i18n from '../i18n';\nimport { stacBrowserSpecialHandling } from \"../rels\";\nimport Utils, { BrowserError } from '../utils';\nimport STAC from '../models/stac';\n\nimport auth from './auth.js';\nimport { addQueryIfNotExists, isAuthenticationError, Loading, processSTAC, proxyUrl, unproxyUrl, stacRequest } from './utils';\nimport { getBest } from '../locale-id';\nimport I18N from '@radiantearth/stac-fields/I18N';\nimport { translateFields, executeCustomFunctions, loadMessages } from '../i18n';\nimport { TYPES } from \"../components/ApiCapabilitiesMixin\";\nimport BrowserStorage from \"../browser-store.js\";\n\nfunction getStore(config, router) {\n // Local settings (e.g. for currently loaded STAC entity)\n const localDefaults = () => ({\n url: '',\n title: config.catalogTitle,\n description: null,\n data: null,\n parents: null,\n globalError: null,\n\n localRequestQueryParameters: {},\n stateQueryParameters: {\n language: null,\n asset: [],\n itemdef: []\n },\n\n apiItems: [],\n apiItemsLink: null,\n apiItemsPagination: {}\n });\n\n const catalogDefaults = () => ({\n queue: [],\n privateQueryParameters: {},\n authActions: [],\n conformsTo: [],\n dataLanguage: null,\n dataLanguages: [],\n\n apiCollections: [],\n apiItemsLoading: {},\n nextCollectionsLink: null\n });\n\n return new Vuex.Store({\n strict: process.env.NODE_ENV !== 'production',\n modules: {\n auth: auth(router)\n },\n state: Object.assign({}, config, localDefaults(), catalogDefaults(), {\n // Global settings\n database: {}, // STAC object, Error object or Loading object or Promise (when loading)\n allowSelectCatalog: !config.catalogUrl,\n globalRequestQueryParameters: config.requestQueryParameters,\n uiLanguage: config.locale\n }),\n getters: {\n loading: state => !state.url || !state.data || state.database[state.url] instanceof Loading,\n getApiItemsLoading: state => data => {\n let id = '';\n if (data instanceof Loading) {\n return true;\n }\n else if (data instanceof STAC) {\n id = data.id;\n }\n else if (typeof data === 'string') {\n id = data;\n }\n return state.apiItemsLoading[id] || false;\n },\n error: state => state.database[state.url] instanceof Error ? state.database[state.url] : null,\n getStac: state => (source, returnErrorObject = false) => {\n if (source instanceof STAC) {\n return source;\n }\n if (Utils.isObject(source) && Utils.hasText(source.href)) {\n source = source.href;\n }\n if (!Utils.hasText(source)) {\n return null;\n }\n let absoluteUrl = Utils.toAbsolute(source, state.url);\n let data = state.database[absoluteUrl];\n if (data instanceof STAC || (returnErrorObject && data instanceof Error)) {\n return data;\n }\n else {\n return null;\n }\n },\n\n displayCatalogTitle: (state, getters) => STAC.getDisplayTitle(getters.root, state.catalogTitle),\n\n isCollection: state => state.data?.isCollection() || false,\n isCatalog: state => state.data?.isCatalog() || false,\n isCatalogLike: state => state.data?.isCatalogLike() || false,\n isItem: state => state.data?.isItem() || false,\n\n root: (_, getters) => getters.getStac(getters.rootLink),\n\n rootLink: state => {\n let link = state.data?.getStacLinkWithRel('root');\n if (link) {\n return link;\n }\n else if (state.catalogUrl) {\n return Utils.createLink(state.catalogUrl, 'root');\n }\n else if (state.url && state.data instanceof STAC && state.data.getLinksWithRels(['conformance', 'service-desc', 'service-doc', 'data', 'search']).length > 0) {\n return Utils.createLink(state.url, 'root');\n }\n else if (state.url) {\n // Fallback: If we detect OGC API like paths, try to guess the paths\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n if (path === 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n }\n return Utils.createLink(uri.toString(), 'root');\n }\n }\n return null;\n },\n parentLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data.getStacLinkWithRel('parent');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (['collections', 'items'].includes(path)) {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'parent');\n }\n }\n\n return null;\n },\n collectionLink: state => {\n if (state.data instanceof STAC) {\n let link = state.data?.getStacLinkWithRel('collection');\n if (link) {\n return link;\n }\n }\n\n // Fallback: If we detect OGC API like paths, try to guess the paths\n if (state.url) {\n let uri = URI(state.url);\n let path = uri.segment(-2);\n if (path == 'items') {\n uri.segment(-1, \"\");\n uri.segment(-1, \"\");\n return Utils.createLink(uri.toString(), 'collection');\n }\n }\n\n return null;\n },\n supportsConformance: state => classes => {\n if(!Array.isArray(classes)) {\n return classes;\n }\n let classRegexp = classes\n .map(c => c.replaceAll('*', '[^/]+').replace(/\\/?#/, '/?#'))\n .join('|');\n let regexp = new RegExp('^(' + classRegexp + ')$');\n return Boolean(state.conformsTo.find(uri => uri.match(regexp)));\n },\n supportsExtension: state => schemaUri => {\n return Utils.supportsExtension(state.data, schemaUri);\n },\n\n canSearch: (state, getters) => {\n return getters.canSearchCollections || getters.canSearchItems;\n },\n canSearchItems: (state, getters) => {\n return getters.supportsConformance(TYPES.Items.BasicFilters);\n },\n canSearchCollections: (state, getters) => {\n return getters.supportsConformance(TYPES.Collections.BasicFilters);\n },\n\n items: state => {\n if (state.apiItems.length > 0) {\n return state.apiItems;\n }\n else if (state.data) {\n return state.data.getStacLinksWithRel('item');\n }\n return [];\n },\n catalogs: state => {\n let hasCollections = Boolean(state.data instanceof STAC && state.data.getApiCollectionsLink() && state.apiCollections.length > 0);\n let hasChilds = Boolean(state.data instanceof STAC);\n let showCollections = !state.apiCatalogPriority || state.apiCatalogPriority === 'collections';\n let showChilds = !state.apiCatalogPriority || state.apiCatalogPriority === 'childs';\n let catalogs = [];\n if (hasCollections && showCollections) {\n catalogs = catalogs.concat(state.apiCollections);\n }\n if (hasChilds && showChilds) {\n catalogs = STAC.addMissingChildren(catalogs, state.data);\n }\n return catalogs;\n },\n\n // hasAsset also checks whether the assets have a href and thus are not item asset definitions\n hasAssets: (state, getters) => Boolean(Object.values(getters.assets).find(asset => Utils.isObject(asset) && typeof asset.href === 'string')),\n assets: (state, getters) => {\n if (!Utils.isObject(state.data?.assets)) {\n return {};\n }\n else if (state.showThumbnailsAsAssets) {\n return state.data.assets;\n }\n else {\n let assets = {};\n let thumbnails = getters.thumbnails;\n for (let key in state.data.assets) {\n let asset = state.data.assets[key];\n if (!thumbnails.includes(asset)) {\n assets[key] = asset;\n }\n }\n return assets;\n }\n },\n thumbnails: state => state.data ? state.data.getThumbnails(true) : [],\n additionalLinks: state => state.data ? state.data.getLinksWithOtherRels(stacBrowserSpecialHandling).filter(link => link.rel !== 'preview' || !Utils.canBrowserDisplayImage(link)) : [],\n\n toBrowserPath: (state, getters) => url => {\n if (!Utils.hasText(url)) {\n url = '/';\n }\n\n let absolute = Utils.toAbsolute(unproxyUrl(url, state.stacProxyUrl), state.url, false);\n let relative;\n if (!state.allowSelectCatalog && state.catalogUrl) {\n relative = absolute.relativeTo(state.catalogUrl);\n }\n\n if (typeof relative === 'undefined' || getters.isExternalUrl(absolute, false)) {\n if (!state.allowExternalAccess) {\n return absolute.toString();\n }\n let parts = ['/external'];\n let protocol = absolute.protocol();\n if (protocol !== 'https') {\n parts.push(protocol + ':');\n }\n parts.push(absolute.authority());\n parts.push(absolute.path().replace(/^\\//, ''));\n let path = parts.join('/');\n let q = absolute.query();\n if (q) {\n path += `?${q}`;\n }\n return path;\n }\n else {\n return '/' + relative.toString();\n }\n },\n fromBrowserPath: (state, getters) => url => {\n const externalRE = /^\\/(search\\/)?external\\//;\n if (!Utils.hasText(url) || url === '/') {\n url = state.catalogUrl;\n }\n else if (url.match(externalRE)) {\n let parts = url.replace(externalRE, '').split('/');\n let protocol;\n if (!parts[0].endsWith(':')) {\n protocol = 'https:';\n }\n else {\n protocol = parts.shift();\n }\n url = `${protocol}//${parts.join('/')}`;\n }\n else if (!state.allowSelectCatalog && state.catalogUrl) {\n url = Utils.toAbsolute(url, state.catalogUrl, false);\n }\n return getters.getRequestUrl(url, null, true);\n },\n isExternalUrl: state => (absoluteUrl, whitelist = true) => {\n if (!state.catalogUrl) {\n return false;\n }\n if (!(absoluteUrl instanceof URI)) {\n absoluteUrl = URI(absoluteUrl);\n }\n if (whitelist && Array.isArray(state.allowedDomains) && state.allowedDomains.includes(absoluteUrl.domain())) {\n return false;\n }\n let relative;\n if (absoluteUrl.is(\"relative\")) {\n relative = absoluteUrl;\n }\n else {\n relative = absoluteUrl.relativeTo(state.catalogUrl);\n if (relative.equals(absoluteUrl)) {\n return true;\n }\n }\n let relativeStr = relative.toString();\n return relativeStr.startsWith('//') || relativeStr.startsWith('../');\n },\n getRequestUrl: (state, getters) => (url, baseUrl = null, addLocalQueryParams = false) => {\n let absoluteUrl = Utils.toAbsolute(proxyUrl(url, state.stacProxyUrl), baseUrl ? baseUrl : state.url, false);\n if (!getters.isExternalUrl(absoluteUrl)) {\n // Check whether private params are present and add them if the URL is part of the catalog\n addQueryIfNotExists(absoluteUrl, state.privateQueryParameters);\n // Check if we need to add global request params\n addQueryIfNotExists(absoluteUrl, state.globalRequestQueryParameters);\n if (addLocalQueryParams) {\n // Check if we need to add local request params\n addQueryIfNotExists(absoluteUrl, state.localRequestQueryParameters);\n }\n }\n // If we are proxying a STAC Catalog, replace any URI with the proxied address.\n return absoluteUrl.toString();\n },\n\n acceptedLanguages: state => {\n const languages = {};\n // Implement in ascending order:\n languages['en'] = 0.1;\n if (Array.isArray(state.supportedLocales)) {\n state.supportedLocales.forEach(locale => languages[locale] = 0.2);\n }\n if (Utils.hasText(state.fallbackLocale)) {\n languages[state.fallbackLocale] = 0.5;\n }\n if (Array.isArray(navigator.languages)) {\n navigator.languages.forEach(locale => languages[locale] = 0.7);\n }\n if (Utils.hasText(state.locale)) {\n languages[state.locale] = 1;\n }\n return Object.entries(languages)\n .sort((a,b) => {\n if (a[1] > b[1]) {\n return -1;\n }\n else if (a[1] < b[1]) {\n return 1;\n }\n return 0;\n })\n .map(([l, q]) => q >= 1 ? l : `${l};q=${q}`)\n .join(',');\n }\n },\n mutations: {\n config(state, config) {\n // This should only be called from the config action\n for (let key in config) {\n let value = config[key];\n switch (key) {\n case 'catalogTitle':\n state.catalogTitle = value;\n break;\n case 'catalogUrl':\n if (typeof value === 'function') {\n state.catalogUrl = value();\n }\n else if (typeof value === 'string') {\n state.catalogUrl = value;\n }\n break;\n case 'crossOriginMedia':\n state.crossOriginMedia = ['anonymous', 'use-credentials'].includes(value) ? value : null;\n break;\n case 'cardViewSort':\n switch(value) {\n case 'asc':\n state.cardViewSort = 1;\n break;\n case 'desc':\n state.cardViewSort = -1;\n break;\n default:\n state.cardViewSort = 0;\n }\n break;\n default:\n state[key] = value;\n }\n }\n },\n languages(state, {uiLanguage, dataLanguage}) {\n state.dataLanguage = dataLanguage || null;\n state.uiLanguage = uiLanguage || null;\n },\n setQueryParameter(state, { type, key, value }) {\n type = `${type}QueryParameters`;\n if (typeof value === 'undefined') {\n Vue.delete(state[type], key);\n }\n else {\n Vue.set(state[type], key, value);\n }\n },\n setRequestHeader(state, { key, value }) {\n if (typeof value === 'undefined') {\n Vue.delete(state.requestHeaders, key);\n }\n else {\n Vue.set(state.requestHeaders, key, value);\n }\n },\n requestAuth(state, callback) {\n if (typeof callback === 'function') {\n state.doAuth.push(callback);\n }\n else {\n state.doAuth = [];\n }\n },\n setAuthData(state, value) {\n state.authData = value;\n },\n state(state, newState) {\n state.stateQueryParameters = newState;\n },\n updateState(state, {type, value}) {\n if (value === null || typeof value === 'undefined') {\n Vue.delete(state.stateQueryParameters, type);\n }\n else {\n Vue.set(state.stateQueryParameters, type, value);\n }\n },\n openCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n // need to prevent duplicates because of the way the collapse v-model works\n if (idx === -1) {\n state.stateQueryParameters[type].push(uid);\n }\n },\n closeCollapsible(state, { type, uid }) {\n const idx = state.stateQueryParameters[type].indexOf(uid);\n if (idx > -1) {\n Vue.delete(state.stateQueryParameters[type], idx);\n }\n },\n updateLoading(state, { url, show, loadApi }) {\n let data = state.database[url];\n Vue.set(data, 'show', show || data.show);\n Vue.set(data, 'loadApi', loadApi || data.loadApi);\n },\n loading(state, { url, loading }) {\n Vue.set(state.database, url, loading);\n if (loading.show) {\n state.url = url;\n }\n },\n loaded(state, { url, data }) {\n Vue.set(state.database, url, processSTAC(state, data));\n },\n clear(state, url) {\n Vue.delete(state.database, url);\n },\n resetCatalog(state, clearAll) {\n Object.assign(state, catalogDefaults());\n Object.assign(state, localDefaults());\n if (!state.supportedLocales.includes(state.locale)) {\n state.locale = config.locale;\n }\n if (clearAll) {\n state.catalogUrl = config.catalogUrl;\n state.catalogTitle = config.catalogTitle;\n state.database = {};\n }\n },\n resetPage(state) {\n Object.assign(state, localDefaults());\n },\n setPageMetadata(state, { title, description }) {\n state.title = title;\n if (typeof description !== 'undefined') {\n state.description = description;\n }\n },\n showPage(state, { url, title, description, stac }) {\n if (!stac) {\n stac = state.database[url] || null;\n }\n state.url = url || null;\n state.data = stac instanceof STAC ? stac : null;\n state.description = description;\n\n // Set title\n if (title) {\n state.title = title;\n }\n else {\n state.title = STAC.getDisplayTitle(state.data, state.catalogTitle);\n if (state.data) {\n let description = state.data.getMetadata('description');\n if (Utils.hasText(description)) {\n state.description = description;\n }\n }\n }\n\n if (state.data) {\n let source = state.data.isItem() ? state.data.properties : state.data;\n let languages = Array.isArray(source.languages) ? source.languages.slice() : [];\n if (Utils.isObject(source.language)) {\n languages.unshift(source.language);\n }\n state.dataLanguages = languages.filter(lang => Utils.isObject(lang) && typeof lang.code === 'string');\n }\n },\n errored(state, { url, error }) {\n if (!(error instanceof Error)) {\n error = new Error(error);\n }\n Vue.set(state.database, url, error);\n },\n queue(state, url) {\n state.queue.push(url);\n },\n unqueue(state, url) {\n let i = state.queue.indexOf(url);\n if (i !== -1) {\n state.queue.splice(i, 1);\n }\n },\n removeFromQueue(state, num) {\n state.queue.splice(0, num);\n },\n setConformanceClasses(state, classes) {\n if (Array.isArray(classes)) {\n state.conformsTo = classes;\n }\n },\n setApiItemsLink(state, link) {\n state.apiItemsLink = link;\n },\n toggleApiItemsLoading(state, collectionId = '') {\n if (state.apiItemsLoading[collectionId]) {\n Vue.delete(state.apiItemsLoading, collectionId);\n }\n else {\n Vue.set(state.apiItemsLoading, collectionId, true);\n }\n },\n setApiItems(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.features)) {\n return;\n }\n let apiItems = data.features.map(feature => processSTAC(state, feature));\n\n if (show) {\n state.apiItems = apiItems;\n }\n\n // Handle pagination links\n let pages = Utils.getPaginationLinks(data);\n\n if (show) {\n state.apiItemsPagination = pages;\n }\n\n if (stac instanceof STAC) {\n // ToDo: Prev link only required when state.apiItems is not cached(?) -> cache apiItems?\n stac.setApiData(apiItems, pages.next, pages.prev);\n }\n },\n addApiCollections(state, { data, stac, show }) {\n if (!Utils.isObject(data) || !Array.isArray(data.collections)) {\n return;\n }\n\n let collections = data.collections.map(collection => processSTAC(state, collection));\n let nextLink = Utils.getLinkWithRel(data.links, 'next');\n if (show) {\n state.nextCollectionsLink = nextLink;\n state.apiCollections = state.apiCollections.concat(collections);\n }\n if (stac instanceof STAC) {\n stac.setApiData(collections, nextLink);\n }\n },\n resetApiItems(state, link) {\n state.apiItems = [];\n state.apiItemsLink = link;\n state.apiItemsPagination = {};\n },\n parents(state, parents) {\n state.parents = parents;\n },\n showGlobalError(state, error) {\n if(error) {\n console.trace(error);\n }\n state.globalError = error;\n }\n },\n actions: {\n async config(cx, config) {\n cx.commit('config', config);\n // React on config changes\n for (let key in config) {\n let value = cx.state[key];\n switch (key) {\n case 'catalogUrl':\n if (value) {\n // Load the root catalog data if not available (e.g. after page refresh or external access)\n await cx.dispatch(\"load\", { url: value, loadApi: true });\n }\n break;\n case 'authConfig':\n await cx.dispatch('auth/updateMethod', value);\n break;\n }\n }\n },\n async switchLocale(cx, {locale, userSelected}) {\n await cx.dispatch('config', {locale});\n\n if (cx.state.storeLocale && userSelected) {\n const storage = new BrowserStorage();\n storage.set('locale', locale);\n }\n\n // Locale for UI\n let uiLanguage = getBest(cx.state.supportedLocales, locale, cx.state.fallbackLocale);\n // Locale for data\n let dataLanguageCodes = cx.state.dataLanguages.map(l => l.code);\n let dataLanguageFallback = cx.state.dataLanguages.length > 0 ? cx.state.dataLanguages[0].code : uiLanguage;\n let dataLanguage = getBest(dataLanguageCodes, locale, dataLanguageFallback);\n\n // Load messages\n await loadMessages(uiLanguage);\n\n // Update stac-fields\n I18N.setLocales([uiLanguage, cx.state.fallbackLocale]);\n I18N.setTranslator(translateFields);\n\n // Execute other custom functions required to localize\n await executeCustomFunctions(uiLanguage);\n\n cx.commit('languages', {dataLanguage, uiLanguage});\n cx.commit('setQueryParameter', { type: 'state', key: 'language', value: locale });\n },\n async loadBackground(cx, count) {\n let urls = cx.state.queue.slice(0, count);\n if (urls.length > 0) {\n let promises = [];\n for (let url of urls) {\n promises.push(cx.dispatch('load', { url }));\n }\n cx.commit('removeFromQueue', count);\n return await Promise.all(promises);\n }\n },\n async loadParents(cx) {\n if (!(cx.state.data instanceof STAC)) {\n cx.commit('parents', []);\n return;\n }\n\n let parents = [];\n let stac = cx.state.data;\n while (stac) {\n let parentLink = stac.getLinkWithRel('parent') || stac.getLinkWithRel('root');\n if (!parentLink) {\n break;\n }\n let url = Utils.toAbsolute(parentLink.href, stac.getAbsoluteUrl());\n await cx.dispatch('load', { url, loadApi: true });\n let parentStac = cx.getters.getStac(url, true);\n if (parentStac instanceof Error) {\n cx.commit('parents', parentStac);\n return;\n }\n if (parentStac === stac) {\n break;\n }\n parents.push(parentStac);\n stac = parentStac;\n }\n cx.commit('parents', parents);\n },\n async tryLogin(cx, {url, action}) {\n cx.commit('clear', url);\n cx.commit('errored', { url, error: new BrowserError(i18n.t('authentication.unauthorized')) });\n if (action) {\n cx.commit('auth/addAction', action);\n }\n await cx.dispatch('auth/requestLogin');\n },\n async load(cx, args) {\n let { url, show, loadApi, loadRoot, force, noRetry } = args;\n\n let path = cx.getters.toBrowserPath(url);\n url = Utils.toAbsolute(url, cx.state.url);\n\n // Make sure we have all authentication details\n await cx.dispatch(\"auth/waitForAuth\");\n\n // Load the root catalog data if not available (e.g. after page refresh or external access)\n if (!loadRoot && path !== '/' && cx.state.catalogUrl && !cx.getters.getStac(cx.state.catalogUrl)) {\n await cx.dispatch(\"load\", { url: cx.state.catalogUrl, loadApi: true, loadRoot: true });\n }\n\n if (force) {\n cx.commit('clear', url);\n }\n\n let loading = new Loading(show, loadApi);\n let data = cx.state.database[url];\n if (data instanceof Loading) {\n cx.commit('updateLoading', { url, show, loadApi });\n return;\n }\n else if (!data || data instanceof Error || (data instanceof STAC && data.isPotentiallyIncomplete())) {\n cx.commit('loading', { url, loading });\n try {\n let response = await stacRequest(cx, url);\n if (!Utils.isObject(response.data)) {\n throw new BrowserError(i18n.t('errors.invalidJsonObject'));\n }\n data = new STAC(response.data, url, path);\n cx.commit('loaded', { url, data });\n\n if (show) {\n // If we prefer another language abort redirect to the new language\n let localeLink = data.getLocaleLink(cx.state.dataLanguage);\n if (localeLink) {\n router.replace(cx.getters.toBrowserPath(localeLink.href));\n return;\n }\n }\n\n if (!cx.getters.root) {\n let root = data.getLinkWithRel('root');\n if (root) {\n await cx.dispatch('config', { catalogUrl: Utils.toAbsolute(root.href, url) });\n }\n }\n\n let conformanceLink = data.getStacLinkWithRel('conformance');\n if (Array.isArray(data.conformsTo) && data.conformsTo.length > 0) {\n cx.commit('setConformanceClasses', data.conformsTo);\n }\n else if (conformanceLink) {\n await cx.dispatch('loadOgcApiConformance', conformanceLink);\n }\n } catch (error) {\n if (!noRetry && cx.state.authConfig && isAuthenticationError(error)) {\n await cx.dispatch('tryLogin', {\n url,\n action: () => cx.dispatch('load', Object.assign({noRetry: true, force: true, show: true}, args))\n });\n return;\n }\n console.error(error);\n cx.commit('errored', { url, error });\n }\n }\n\n if (loading.loadApi && data instanceof STAC) {\n // Load API Collections\n if (data.getApiCollectionsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadNextApiCollections', args);\n } catch (error) {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiCollectionsFailed'),\n error\n });\n }\n }\n // Load API Items\n if (data.getApiItemsLink()) {\n let args = { stac: data, show: loading.show };\n try {\n await cx.dispatch('loadApiItems', args);\n } catch (error) {\n cx.commit('showGlobalError', {\n message: i18n.t('errors.loadApiItemsFailed'),\n error\n });\n }\n }\n }\n\n if (loading.show) {\n cx.commit('showPage', { url });\n }\n },\n async loadApiItems(cx, args) {\n let { link, stac, show, filters, noRetry } = args;\n let collectionId = stac instanceof STAC ? stac.id : '';\n cx.commit('toggleApiItemsLoading', collectionId);\n\n try {\n let baseUrl = cx.state.url;\n if (stac instanceof STAC) {\n link = stac.getApiItemsLink();\n baseUrl = stac.getAbsoluteUrl();\n }\n\n link = Utils.addFiltersToLink(link, filters, cx.state.itemsPerPage);\n\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.features)) {\n throw new BrowserError(i18n.t('errors.invalidStacItems'));\n }\n else {\n response.data.features = response.data.features.map(item => {\n try {\n if (!Utils.isObject(item) || item.type !== 'Feature') {\n return null;\n }\n let selfLink = Utils.getLinkWithRel(item.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, baseUrl);\n }\n else if (typeof item.id !== 'undefined') {\n let apiCollectionsLink = cx.getters.root?.getApiCollectionsLink();\n if (baseUrl) {\n url = Utils.toAbsolute(`items/${item.id}`, baseUrl);\n }\n else if (apiCollectionsLink) {\n url = Utils.toAbsolute(`${collectionId}/items/${item.id}`, apiCollectionsLink.href);\n }\n else if (cx.state.catalogUrl) {\n url = Utils.toAbsolute(`collections/${collectionId}/items/${item.id}`, cx.state.catalogUrl);\n }\n else {\n return null;\n }\n }\n else {\n return null;\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(item, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n } catch (error) {\n console.error(error);\n return null;\n }\n }).filter(item => item instanceof STAC);\n if (show) {\n cx.commit('setApiItemsLink', link);\n }\n cx.commit('setApiItems', { data: response.data, stac, show });\n cx.commit('toggleApiItemsLoading', collectionId);\n return response;\n }\n } catch (error) {\n cx.commit('toggleApiItemsLoading', collectionId);\n if (!noRetry && cx.state.authConfig && isAuthenticationError(error)) {\n await cx.dispatch('tryLogin', {\n url: link.href,\n action: () => cx.dispatch('loadApiItems', Object.assign({noRetry: true, force: true}, args))\n });\n return;\n }\n throw error;\n }\n },\n async loadNextApiCollections(cx, args) {\n let { stac, show, noRetry } = args;\n let link;\n if (stac) {\n // First page\n if (cx.state.apiCollections.length > 0) {\n // If we have already loaded collections, skip loading the first page\n return;\n }\n link = stac.getLinkWithRel('data');\n }\n else {\n // Second page and after\n stac = cx.state.data;\n link = cx.state.nextCollectionsLink;\n }\n if (!link) {\n return;\n }\n try {\n let response = await stacRequest(cx, link);\n if (!Utils.isObject(response.data) || !Array.isArray(response.data.collections)) {\n throw new BrowserError(i18n.t('errors.invalidStacCollections'));\n }\n else {\n response.data.collections = response.data.collections.map(collection => {\n let selfLink = Utils.getLinkWithRel(collection.links, 'self');\n let url;\n if (selfLink?.href) {\n url = Utils.toAbsolute(selfLink.href, cx.state.url || stac.getAbsoluteUrl());\n }\n else {\n url = Utils.toAbsolute(`collections/${collection.id}`, cx.state.catalogUrl || stac.getAbsoluteUrl());\n }\n let data = cx.getters.getStac(url);\n if (data) {\n return data;\n }\n else {\n data = new STAC(collection, url, cx.getters.toBrowserPath(url));\n data.markPotentiallyIncomplete();\n cx.commit('loaded', { data, url });\n return data;\n }\n });\n cx.commit('addApiCollections', { data: response.data, stac, show });\n }\n } catch (error) {\n if (!noRetry && cx.state.authConfig && isAuthenticationError(error)) {\n await cx.dispatch('tryLogin', {\n url: link.href,\n action: () => cx.dispatch('loadNextApiCollections', Object.assign({noRetry: true, force: true}, args))\n });\n return;\n }\n throw error;\n }\n },\n async loadOgcApiConformance(cx, link) {\n let response = await stacRequest(cx, link);\n if (Utils.isObject(response.data) && Array.isArray(response.data.conformsTo)) {\n cx.commit('setConformanceClasses', response.data.conformsTo);\n }\n },\n async loadGeoJson(cx, link) {\n try {\n let response = await stacRequest(cx, link);\n return response.data; // Use data with $refs included as fallback anyway\n } catch (error) {\n return null;\n }\n },\n async retryAfterAuth(cx) {\n let errorFn = error => cx.commit('showGlobalError', {\n error,\n message: i18n.t('errors.authFailed')\n });\n\n for (let callback of cx.state.doAuth) {\n try {\n let p = callback();\n if (p instanceof Promise) {\n p.catch(errorFn);\n }\n } catch (error) {\n errorFn(error);\n }\n }\n }\n },\n });\n}\n\nexport default getStore;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-row',[_c('b-col',{attrs:{\"md\":\"12\"}},[_c('Source',{staticClass:\"float-right\",attrs:{\"title\":_vm.title,\"stacUrl\":_vm.url,\"stac\":_vm.data}}),_c('h1',[(_vm.icon)?[_c('img',{staticClass:\"icon mr-2\",attrs:{\"src\":_vm.icon.href,\"alt\":_vm.icon.title,\"title\":_vm.icon.title}})]:_vm._e(),_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.title))])],2),(!_vm.isStacChooser())?_c('p',{staticClass:\"lead\"},[(_vm.containerLink)?_c('i18n',{staticClass:\"in mr-3\",attrs:{\"tag\":\"span\",\"path\":\"in\"},scopedSlots:_vm._u([{key:\"catalog\",fn:function(){return [_c('StacLink',{attrs:{\"data\":_vm.containerLink}})]},proxy:true}],null,false,1458487365)}):_vm._e(),_c('b-button-group',[(_vm.back)?_c('b-button',{attrs:{\"to\":_vm.selfBrowserLink,\"title\":_vm.$t('goBack.description', {type: _vm.type}),\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-arrow-left'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goBack.label')))])],1):_vm._e(),(_vm.parentLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.parentLink.href),\"title\":_vm.parentLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-arrow-90deg-up'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToParent.label')))])],1):_vm._e(),(_vm.collectionLink)?_c('b-button',{attrs:{\"to\":_vm.toBrowserPath(_vm.collectionLink.href),\"title\":_vm.collectionLinkTitle,\"variant\":\"outline-primary\",\"size\":\"sm\"}},[_c('b-icon-folder-symlink'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('goToCollection.label')))])],1):_vm._e(),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.sidebar\",modifiers:{\"sidebar\":true}}],attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.$t('browse')},on:{\"click\":function($event){return _vm.$emit('enableSidebar')}}},[_c('b-icon-book'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('browse')))])],1),(_vm.canSearch)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"to\":_vm.searchBrowserLink,\"title\":_vm.$t('search.title'),\"pressed\":_vm.isSearchPage()}},[_c('b-icon-search'),_vm._v(\" \"),_c('span',{staticClass:\"button-label prio\"},[_vm._v(_vm._s(_vm.$t('search.title')))])],1):_vm._e(),(_vm.canAuthenticate)?_c('b-button',{attrs:{\"variant\":\"outline-primary\",\"size\":\"sm\",\"title\":_vm.authTitle},on:{\"click\":_vm.logInOut}},[_c(_vm.authIcon,{tag:\"component\"}),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.authLabel))])],1):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"share mt-1\"},[_c('b-button-group',[(_vm.showRoot)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-root-btn\"}},[_c('b-icon-box'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.rootTitle))])],1):_vm._e(),(_vm.stacUrl)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-link-btn\",\"title\":_vm.$t('source.detailsAboutSource')}},[_c('b-icon-link'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.label')))])],1):_vm._e(),_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"id\":\"popover-share-btn\",\"title\":_vm.$t('source.share.withOthers')}},[_c('b-icon-share'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.share.label')))])],1),_c('b-dropdown',{attrs:{\"size\":\"sm\",\"variant\":\"outline-primary\",\"right\":\"\",\"title\":_vm.$t('source.language.switch')},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('b-icon-flag'),_vm._v(\" \"),_c('span',{staticClass:\"button-label\"},[_vm._v(_vm._s(_vm.$t('source.language.label', {currentLanguage: _vm.currentLanguage})))])]},proxy:true}])},_vm._l((_vm.languages),function(l){return _c('b-dropdown-item',{key:l.code,staticClass:\"lang-item\",on:{\"click\":function($event){return _vm.switchLocale({locale: l.code, userSelected: true})}}},[(_vm.locale === l.code)?_c('b-icon-check'):_c('b-icon-blank'),_c('span',{staticClass:\"title\"},[_c('span',{attrs:{\"lang\":l.code}},[_vm._v(_vm._s(l.native))]),(l.global && l.global !== l.native)?[_vm._v(\" / \"),_c('span',{attrs:{\"lang\":\"en\"}},[_vm._v(_vm._s(l.global))])]:_vm._e()],2),(_vm.supportsLanguageExt && (!l.ui || !l.data))?_c('b-icon-exclamation-triangle',{staticClass:\"ml-2\",attrs:{\"title\":l.ui ? _vm.$t('source.language.onlyUI') : _vm.$t('source.language.onlyData')}}):_vm._e()],1)}),1)],1),(_vm.showRoot)?_c('b-popover',{attrs:{\"id\":\"popover-root\",\"target\":\"popover-root-btn\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.rootTitle}},[_c('RootStats')],1):_vm._e(),(_vm.stacUrl)?_c('b-popover',{attrs:{\"id\":\"popover-link\",\"target\":\"popover-link-btn\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.title')}},[(_vm.stac)?[(_vm.stacId)?_c('b-row',{staticClass:\"stac-id\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm.$t('source.id')))]),_c('b-col',[_c('code',[_vm._v(_vm._s(_vm.stacId))]),_c('CopyButton',{staticClass:\"ml-2\",attrs:{\"copyText\":_vm.stacId,\"button-props\":{size: 'sm'},\"variant\":\"primary\"}})],1)],1):_vm._e(),(_vm.stacVersion)?_c('b-row',{staticClass:\"stac-version\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm.$t('source.stacVersion')))]),_c('b-col',[_vm._v(_vm._s(_vm.stacVersion))])],1):_vm._e(),_c('b-row',{staticClass:\"stac-valid\"},[_c('b-col',{attrs:{\"cols\":\"4\"}},[_vm._v(_vm._s(_vm.$t('source.valid')))]),_c('b-col',[_c('Validation',{attrs:{\"data\":_vm.stac}})],1)],1),_c('hr')]:_vm._e(),_c('Url',{attrs:{\"id\":\"stacUrl\",\"url\":_vm.stacUrl,\"label\":_vm.$t('source.locatedAt')}})],2):_vm._e(),_c('b-popover',{attrs:{\"id\":\"popover-share\",\"target\":\"popover-share-btn\",\"triggers\":\"focus\",\"placement\":\"bottom\",\"container\":\"stac-browser\",\"title\":_vm.$t('source.share.title')}},[_c('Url',{attrs:{\"id\":\"browserUrl\",\"url\":_vm.browserUrl(),\"label\":_vm.$t('source.share.sharePageWithOthers'),\"open\":false}}),_c('hr'),_c('b-button',{staticClass:\"twitter mr-1\",attrs:{\"href\":_vm.twitterUrl}},[_c('b-icon-twitter'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.twitter')))],1),_c('b-button',{attrs:{\"variant\":\"dark\",\"href\":_vm.mailTo}},[_c('b-icon-envelope'),_vm._v(\" \"+_vm._s(_vm.$t('source.share.email')))],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('b-form-group',{attrs:{\"label\":_vm.label,\"label-for\":_vm.id}},[_c('b-input-group',{attrs:{\"size\":\"sm\"}},[_c('b-form-input',{ref:\"input\",attrs:{\"id\":_vm.id,\"value\":_vm.url,\"readonly\":\"\"}}),_c('b-input-group-append',[_c('CopyButton',{attrs:{\"copyText\":_vm.url,\"variant\":\"primary\"}}),(_vm.open)?_c('b-button',{attrs:{\"href\":_vm.url,\"target\":\"_blank\",\"variant\":\"primary\",\"title\":_vm.$t('open')}},[_c('b-icon-arrow-up-right-square')],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Url.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Url.vue?vue&type=template&id=74684ede&scoped=true\"\nimport script from \"./Url.vue?vue&type=script&lang=js\"\nexport * from \"./Url.vue?vue&type=script&lang=js\"\nimport style0 from \"./Url.vue?vue&type=style&index=0&id=74684ede&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74684ede\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Source.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Source.vue?vue&type=template&id=93db7fbc&scoped=true\"\nimport script from \"./Source.vue?vue&type=script&lang=js\"\nexport * from \"./Source.vue?vue&type=script&lang=js\"\nimport style0 from \"./Source.vue?vue&type=style&index=0&id=93db7fbc&prod&lang=scss\"\nimport style1 from \"./Source.vue?vue&type=style&index=1&id=93db7fbc&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"93db7fbc\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacHeader.vue?vue&type=template&id=6f700824&scoped=true\"\nimport script from \"./StacHeader.vue?vue&type=script&lang=js\"\nexport * from \"./StacHeader.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacHeader.vue?vue&type=style&index=0&id=6f700824&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6f700824\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.authComponent,{tag:\"component\",on:{\"submit\":_vm.submit,\"reset\":_vm.reset}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Authentication.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Authentication.vue?vue&type=template&id=5dbcd191\"\nimport script from \"./Authentication.vue?vue&type=script&lang=js\"\nexport * from \"./Authentication.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/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","\n\n\n\n\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StacBrowser.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StacBrowser.vue?vue&type=template&id=a5605574\"\nimport script from \"./StacBrowser.vue?vue&type=script&lang=js\"\nexport * from \"./StacBrowser.vue?vue&type=script&lang=js\"\nimport style0 from \"./StacBrowser.vue?vue&type=style&index=0&id=a5605574&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/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","import Vue from \"vue\";\nimport StacBrowser from \"./StacBrowser.vue\";\nimport i18n, { loadDefaultMessages } from './i18n';\n\nexport default function init() {\n return loadDefaultMessages().then(() => {\n return new Vue({\n i18n,\n render: h => h(StacBrowser)\n }).$mount(\"#stac-browser\");\n });\n}\n","import Vue from \"vue\";\nimport init from \"./init\";\n\nVue.config.productionTip = false;\n\ninit();\n","import Utils, { geojsonMediaType } from \"../utils\";\nimport Migrate from '@radiantearth/stac-migrate';\nimport { getBest } from '../locale-id';\n\nlet stacObjCounter = 0;\n\n// STAC Entity\nclass STAC {\n\n constructor(data, url, path, migrate = true) {\n this._id = stacObjCounter++;\n this._url = url;\n this._path = path;\n this._apiChildrenListeners = {};\n this._incomplete = false;\n this._apiChildren = {\n list: [],\n prev: false,\n next: false\n };\n\n if (migrate) {\n // Uncomment this line if the old checksum: fields should be converted\n // This is usually not needed so it's not enabled by default to shrink the bundle size\n // Migrate.enableMultihash(require('multihashes'));\n if (data.type === 'FeatureCollection') {\n data.features = data.features.map(item => Migrate.item(item, false));\n }\n else {\n data = Migrate.stac(data, false);\n }\n }\n for (let key in data) {\n if (typeof this[key] === 'undefined') {\n this[key] = data[key];\n }\n }\n }\n\n isPotentiallyIncomplete() {\n return this._incomplete;\n }\n\n markPotentiallyIncomplete() {\n this._incomplete = true;\n }\n\n isItem() {\n return this.type === 'Feature';\n }\n\n isCatalog() {\n return this.type === 'Catalog';\n }\n\n isCatalogLike() {\n return this.isCatalog() || this.isCollection();\n }\n\n isCollection() {\n return this.type === 'Collection';\n }\n\n isItemCollection() {\n return this.type === 'FeatureCollection';\n }\n\n hasApiData() {\n return this._apiChildren.list.length > 0;\n }\n\n setApiDataListener(id, listener = null) {\n if (typeof listener === 'function') {\n this._apiChildrenListeners[id] = listener;\n }\n else {\n delete this._apiChildrenListeners[id];\n }\n }\n\n setApiData(list, next = null, prev = null) {\n if (prev) {\n this._apiChildren.prev = prev;\n }\n if (next) {\n this._apiChildren.next = next;\n }\n this._apiChildren.list = list;\n\n for (let id in this._apiChildrenListeners) {\n try {\n this._apiChildrenListeners[id](this._apiChildren);\n } catch (error) {\n console.error(error);\n }\n }\n }\n\n getFileFormats() {\n let assets = [];\n if ((this.isItem() || this.isCollection()) && Utils.isObject(this.assets)) {\n assets = assets.concat(Object.values(this.assets));\n }\n if (this.isCollection() && Utils.isObject(this.item_assets)) {\n assets = assets.concat(Object.values(this.item_assets));\n }\n return assets\n .filter(asset => Array.isArray(asset.roles) && asset.roles.includes('data') && typeof asset.type === 'string') // Look for data files\n .map(asset => asset.type) // Array shall only contain media types\n .filter((v, i, a) => a.indexOf(v) === i); // Unique values\n }\n\n getChildren(priority = null) {\n if (!this.isCatalogLike()) {\n return [];\n }\n\n let showCollections = !priority || priority === 'collections';\n let showChilds = !priority || priority === 'childs';\n\n let children = [];\n if (showCollections && this._apiChildren.prev) {\n children.push(this._apiChildren.prev);\n }\n if (showCollections && this._apiChildren.list.length > 0) {\n children = this._apiChildren.list.slice(0);\n }\n if (showChilds) {\n children = STAC.addMissingChildren(children, this).concat(this.getLinksWithRels(['item']));\n }\n if (showCollections && this._apiChildren.next) {\n children.push(this._apiChildren.next);\n }\n return children;\n }\n\n static addMissingChildren(catalogs, stac) {\n let links = stac.getStacLinksWithRel('child').filter(link => {\n // Don't add links that are already in collections: https://github.com/radiantearth/stac-browser/issues/103\n // ToDo: The runtime of this can probably be improved\n let absoluteUrl = Utils.toAbsolute(link.href, stac.getAbsoluteUrl());\n return !catalogs.find(collection => collection.getAbsoluteUrl() === absoluteUrl);\n });\n // place the children first to avoid conflicts with the paginated collections\n // where the children are always at the end and can never be reached due to infinite scrolling\n return links.concat(catalogs);\n }\n\n getSearchLink() {\n // The search link MUST be 'application/geo+json' as otherwise it's likely not STAC\n // See https://github.com/opengeospatial/ogcapi-features/issues/832\n let links = Utils.getLinksWithRels(this.links, ['search'])\n .filter(link => Utils.isMediaType(link.type, geojsonMediaType))\n .map(link => Object.assign({}, link, {href: Utils.toAbsolute(link.href, this._url)}));\n // Prefer POST if present\n let post = links.find(link => Utils.hasText(link.method) && link.method.toUpperCase() === 'POST');\n return post || links[0] || null;\n }\n\n getApiCollectionsLink() {\n return this.getStacLinkWithRel('data');\n }\n\n getApiItemsLink() {\n return this.getStacLinkWithRel('items');\n }\n\n getMetadata(field) {\n if (this.isItem()) {\n return this.properties[field];\n }\n else if (this.isCatalogLike()) {\n return this[field];\n }\n return null;\n }\n\n getBrowserPath() {\n return this._path;\n }\n\n getAbsoluteUrl() {\n return this._url;\n }\n\n getLocaleLink(locale, fallbackLocale = null) {\n let links = this.getStacLinksWithRel('alternate')\n .filter(link => Utils.hasText(link.hreflang));\n \n let available;\n if (Array.isArray(this.languages)) {\n available = this.languages.map(l => l.code);\n }\n else {\n available = links.map(link => link.hreflang);\n }\n \n let best = getBest(available, locale, fallbackLocale);\n return links.find(link => link.hreflang === best) || null;\n }\n\n getStacLinksWithRel(rel, allowEmpty = true) {\n return Utils.getLinksWithRels(this.links, [rel])\n .filter(link => Utils.isStacMediaType(link.type, allowEmpty));\n }\n\n getStacLinkWithRel(rel, allowEmpty = true) {\n const links = this.getStacLinksWithRel(rel, allowEmpty);\n if (links.length > 0) {\n return links[0];\n }\n else {\n return null;\n }\n }\n\n getLinkWithRel(rel) {\n return Utils.getLinkWithRel(this.links, rel);\n }\n\n getLinksWithRels(rels) {\n return Utils.getLinksWithRels(this.links, rels);\n }\n\n getLinksWithOtherRels(rels) {\n return Utils.getLinksWithOtherRels(this.links, rels);\n }\n\n getAssetsWithRoles(roles) {\n let matches = [];\n if (Utils.isObject(this.assets)) {\n for (let key in this.assets) {\n let asset = this.assets[key];\n if (Utils.isObject(asset) && typeof asset.href === 'string' && Array.isArray(asset.roles) && asset.roles.find(role => roles.includes(role))) {\n matches.push(asset);\n }\n }\n }\n return matches;\n }\n\n static getDisplayTitle(sources, fallbackTitle = null) {\n if (!Array.isArray(sources)) {\n sources = [sources];\n }\n let stac = sources.find(o => o instanceof STAC);\n let link = sources.find(o => Utils.isObject(o) && !(o instanceof STAC));\n // Get title from STAC item/catalog/collection\n if (stac && Utils.hasText(stac.getTitle())) {\n return stac.getTitle();\n }\n // Get title from link\n else if (link && Utils.hasText(link.title)) {\n return link.title;\n }\n // Use id from STAC item/catalog/collection instead of titles\n else if (stac && Utils.hasText(stac.id)) {\n return stac.id;\n }\n // Use fallback title\n else if (Utils.hasText(fallbackTitle)) {\n return fallbackTitle;\n }\n // Use file or directory name from STAC as title\n else if (stac) {\n return Utils.titleForHref(stac.getAbsoluteUrl(), true);\n }\n // Use file or directory name from link as title\n else if (link && Utils.hasText(link.href)) {\n return Utils.titleForHref(link.href, true);\n }\n // Nothing available, return \"untitled\"\n else {\n return \"Untitled\";\n }\n }\n\n getTitle() {\n return this.getMetadata(\"title\");\n }\n\n _linkToAbsolute(link) {\n return Object.assign({}, link, { href: Utils.toAbsolute(link.href, this.getAbsoluteUrl()) });\n }\n\n getIcons() {\n return this.getLinksWithRels(['icon'])\n .filter(img => Utils.canBrowserDisplayImage(img))\n .map(img => this._linkToAbsolute(img));\n }\n\n /**\n * Get the thumbnails from the assets and links in a STAC entity.\n * \n * @param {boolean} browserOnly - Return only images that can be shown in a browser natively (PNG/JPG/GIF/WEBP).\n * @param {?string} prefer - If not `null` (default), prefers a role over the other. Either `thumbnail` or `overview`.\n * @returns \n */\n getThumbnails(browserOnly = false, prefer = null) { // prefer can be either \n let thumbnails = this.getAssetsWithRoles(['thumbnail', 'overview']);\n // Get from links only if no assets are available as they should usually be the same as in assets\n if (thumbnails.length === 0) {\n thumbnails = this.getLinksWithRels(['preview']);\n }\n // Some old catalogs use just a asset key\n if (thumbnails.length === 0 && Utils.isObject(this.assets) && Utils.isObject(this.assets.thumbnail)) {\n thumbnails = [this.assets.thumbnail];\n }\n if (browserOnly) {\n // Remove all images that can't be displayed in a browser\n thumbnails = thumbnails.filter(img => Utils.canBrowserDisplayImage(img));\n }\n if (prefer && thumbnails.length > 1) {\n // Prefer one role over the other.\n // The two step approach with two filters ensures the same sort bevahiour across all browsers:\n // see https://github.com/radiantearth/stac-browser/issues/370\n let filter = img => img.roles.includes(prefer);\n thumbnails = thumbnails\n .filter(filter)\n .concat(thumbnails.filter(img => !filter(img)));\n }\n return thumbnails.map(img => this._linkToAbsolute(img));\n }\n\n equals(other) {\n if (!Utils.isObject(other)) {\n return false;\n }\n if (this === other) {\n return true;\n }\n if (this.id === other.id && this.type == other.type) {\n return true;\n }\n return false;\n }\n\n}\n\nexport default STAC;\n","// STAC relation types\n\n// STAC hierarchical\nexport const stacHierarchy = [\n 'child',\n 'collection',\n 'item',\n 'parent',\n 'root',\n 'self',\n];\n\n// STAC API Pagination\nexport const stacPagination = [\n 'first',\n 'last',\n 'next',\n 'prev',\n 'previous',\n];\n\n// Queryables\nexport const ogcQueryables = [\n 'queryables', // Old way in STAC (deprecated)\n 'http://www.opengis.net/def/rel/ogc/1.0/queryables', // STAC and OGC APIs\n 'ogc-rel:queryables' // Alternative in OGC APIs\n];\n\n// Rels that STAC Browser can navigate to and display natively (i.e. Collections, Catalogs and Items)\nexport const stacBrowserNavigatesTo = [\n 'canonical', // Links to other catalogs or items v\n 'related',\n 'derived_from',\n 'latest-version', // version extension v\n 'predecessor-version',\n 'successor-version',\n 'source', // label extension,\n 'alternate' // language extension\n].concat(stacHierarchy).concat(stacPagination);\n\n// Rels that are handled in a special way and should not be shown in the link list\nexport const stacBrowserSpecialHandling = [\n 'conformance', // API related v\n 'data',\n 'items',\n 'search',\n 'icon', // Other v\n 'license',\n].concat(stacHierarchy).concat(stacPagination).concat(ogcQueryables);\n\n// OGC APIs\nexport const ogcRelPrefix = 'http://www.opengis.net/def/rel/ogc/1.0/';\n","import axios from \"axios\";\nimport URI from \"urijs\";\nimport Utils from \"../utils\";\n\nexport class Loading {\n\n constructor(show = false, loadApi = false) {\n this.show = Boolean(show);\n this.loadApi = Boolean(loadApi);\n }\n\n}\n\nexport function stacRequestOptions(cx, link) {\n // Convert a URL string to a Link Object\n if (typeof link === 'string') {\n link = {\n href: link\n };\n }\n // Return if the link is not an object or doesn't contain an href\n if (!Utils.isObject(link) || typeof link.href !== 'string') {\n return {};\n }\n\n // Generate URL including query strings\n const url = cx.getters.getRequestUrl(link.href);\n\n // Combine headers\n let headers = {\n 'Accept-Language': cx.getters.acceptedLanguages\n };\n if (Utils.hasText(link.type)) {\n headers.Accept = link.type;\n }\n if (!cx.getters.isExternalUrl(url)) {\n Object.assign(headers, cx.state.requestHeaders);\n }\n if (Utils.isObject(link.headers)) {\n Object.assign(headers, link.headers);\n }\n\n // Combine all options for axios request\n return {\n method: typeof link.method === 'string' ? link.method.toLowerCase() : 'get',\n url,\n headers,\n data: link.body\n // ToDo: Support for merge property from STAC API\n };\n}\n\nexport async function stacRequest(cx, link, axiosOptions = {}) {\n // Get options\n const options = stacRequestOptions(cx, link);\n // Execute the request\n return await axios(Object.assign(options, axiosOptions));\n}\n\n\nexport function unproxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[1], proxy[0]);\n }\n return absoluteUrl;\n}\n\nexport function proxyUrl(absoluteUrl, proxy) {\n if (absoluteUrl instanceof URI) {\n absoluteUrl = absoluteUrl.toString();\n }\n if (typeof absoluteUrl === 'string' && Array.isArray(proxy)) {\n return absoluteUrl.replace(proxy[0], proxy[1]);\n }\n return absoluteUrl;\n}\n\nexport function processSTAC(state, stac) {\n if (typeof state.preprocessSTAC === 'function') {\n stac = state.preprocessSTAC(stac, state);\n }\n return Object.freeze(stac);\n}\n\nexport function isAuthenticationError(error) {\n return [401, 403].includes(error?.response?.status);\n}\n\nexport function addQueryIfNotExists(uri, query) {\n if (Utils.size(query) == 0) {\n return uri;\n }\n for (let key in query) {\n if (!uri.hasQuery(key)) {\n uri.addQuery(key, query[key]);\n }\n }\n return uri;\n}\n","import URI from 'urijs';\nimport removeMd from 'remove-markdown';\nimport { stacPagination } from \"./rels\";\n\nexport const commonFileNames = ['catalog', 'collection', 'item'];\n\nexport const geojsonMediaType = \"application/geo+json\";\n\nexport const schemaMediaType = \"application/schema+json\";\n\nexport const stacMediaTypes = [\n 'application/json',\n geojsonMediaType,\n 'text/json'\n];\n\nexport const browserImageTypes = [\n 'image/gif',\n 'image/jpg',\n 'image/jpeg',\n 'image/apng',\n 'image/png',\n 'image/webp'\n];\n\nexport const cogMediaTypes = [\n \"image/tiff; application=geotiff; profile=cloud-optimized\",\n \"image/vnd.stac.geotiff; cloud-optimized=true\"\n];\n\nexport const geotiffMediaTypes = [\n \"application/geotiff\",\n \"image/tiff; application=geotiff\",\n \"image/vnd.stac.geotiff\",\n].concat(cogMediaTypes);\n\nexport const browserProtocols = [\n 'http',\n 'https'\n];\n\nexport const imageMediaTypes = browserImageTypes.concat(geotiffMediaTypes);\nexport const mapMediaTypes = imageMediaTypes.concat([geojsonMediaType]);\n\nexport class BrowserError extends Error {\n constructor(message) {\n super(message);\n }\n}\n\n/**\n * General utilities\n * \n * @class\n */\nexport default class Utils {\n\n /**\n * Checks whether a variable is a real object or not.\n * \n * This is a more strict version of `typeof x === 'object'` as this example would also succeeds for arrays and `null`.\n * This function only returns `true` for real objects and not for arrays, `null` or any other data types.\n * \n * @param {*} obj - A variable to check.\n * @returns {boolean} - `true` is the given variable is an object, `false` otherwise.\n */\n static isObject(obj) {\n return (typeof obj === 'object' && obj === Object(obj) && !Array.isArray(obj));\n }\n\n /**\n * Computes the size of an array (number of array elements) or object (number of key-value-pairs).\n * \n * Returns 0 for all other data types.\n * \n * @param {*} obj \n * @returns {integer}\n */\n static size(obj) {\n if (typeof obj === 'object' && obj !== null) {\n if (Array.isArray(obj)) {\n return obj.length;\n }\n else {\n return Object.keys(obj).length;\n }\n }\n return 0;\n }\n\n static isStacMediaType(type, allowEmpty = false) {\n return Utils.isMediaType(type, stacMediaTypes, allowEmpty);\n }\n\n static isMediaType(type, types, allowEmpty = false) {\n if (!Array.isArray(types)) {\n types = [types];\n }\n if (allowEmpty && !type) {\n return true;\n }\n else if (typeof type !== 'string') {\n return false;\n }\n else {\n return types.includes(type.toLowerCase());\n }\n }\n\n /**\n * Checks whether a variable is a string and contains at least one character.\n * \n * @param {*} string - A variable to check.\n * @returns {boolean} - `true` is the given variable is an string with length > 0, `false` otherwise.\n */\n static hasText(string) {\n return (typeof string === 'string' && string.length > 0);\n }\n\n static shortenTitle(fullStr, strLen, separator = '…') {\n if (fullStr.length <= strLen) {\n return fullStr;\n }\n\n let sepLen = separator.length;\n let charsToShow = strLen - sepLen;\n let frontChars = Math.ceil(charsToShow/2);\n let backChars = Math.floor(charsToShow/2);\n return fullStr.substr(0, frontChars) + \n separator + \n fullStr.substr(fullStr.length - backChars);\n }\n\n static isGdalVfsUri(url) {\n return typeof url === 'string' && url.startsWith('/vsi') && !url.startsWith('/vsicurl/');\n }\n\n static toAbsolute(href, baseUrl, stringify = true) {\n return Utils.normalizeUri(href, baseUrl, false, stringify);\n }\n\n static normalizeUri(href, baseUrl = null, noParams = false, stringify = true) {\n // Convert vsicurl URLs to normal URLs\n if (typeof href === 'string' && href.startsWith('/vsicurl/')) {\n href = href.replace(/^\\/vsicurl\\//, '');\n }\n // Parse URL and make absolute, if required\n let uri = URI(href);\n // Don't convert GDAL VFS URIs: https://github.com/radiantearth/stac-browser/issues/116\n if (baseUrl && uri.is(\"relative\") && !Utils.isGdalVfsUri(href)) {\n uri = uri.absoluteTo(baseUrl);\n }\n uri.normalize();\n if (noParams) {\n uri.query(\"\");\n uri.fragment(\"\");\n }\n return stringify ? uri.toString() : uri;\n }\n\n static getLinkWithRel(links, rel) {\n return Array.isArray(links) ? links.find(link => Utils.isObject(link) && Utils.hasText(link.href) && link.rel === rel) : null;\n }\n\n static getLinksWithRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && rels.includes(link.rel)) : [];\n }\n\n static getLinksWithOtherRels(links, rels) {\n return Array.isArray(links) ? links.filter(link => Utils.isObject(link) && Utils.hasText(link.href) && !rels.includes(link.rel)) : [];\n }\n\n static removeTrailingSlash(str) {\n return str.replace(/\\/$/, '');\n }\n\n static equalUrl(a, b) {\n try {\n let uri1 = URI(a);\n let uri2 = URI(b);\n // Ignore trailing slash in URL paths\n uri1.path(Utils.removeTrailingSlash(uri1.path()));\n uri2.path(Utils.removeTrailingSlash(uri2.path()));\n return uri1.equals(uri2);\n } catch (error) {\n return false;\n }\n }\n\n static summarizeMd(text, maxLength = null) {\n if (!Utils.hasText(text)) {\n return '';\n }\n // Best-effort approach to remove some CommonMark (Markdown).\n // Likely not perfect, but seems good enough for most cases.\n text = removeMd(text).replaceAll(/[\\r\\n]+/g, ' ');\n if (maxLength > 0 && text.length > maxLength) {\n text = text.substr(0, maxLength) + '…';\n }\n return text;\n }\n\n static scrollTo(el) {\n if (!el) {\n return;\n }\n var rect = el.getBoundingClientRect();\n var isVisible = rect.top < window.innerHeight && rect.bottom >= 0;\n if (!isVisible) {\n el.scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n }\n }\n\n // Convert from UTC to locale time (needed for vue2-datetimepicker)\n // see https://github.com/mengxiong10/vue2-datepicker/issues/388\n static dateFromUTC(dt) {\n if (dt instanceof Date) {\n const value = new Date(dt);\n const offset = value.getTimezoneOffset();\n dt = new Date(value.getTime() + offset * 60 * 1000);\n }\n return dt;\n }\n\n static dateToUTC(dt) {\n if (dt instanceof Date) {\n const offset = new Date().getTimezoneOffset();\n return new Date(dt.getTime() - offset * 60 * 1000);\n }\n return dt;\n }\n\n static formatDatetimeQuery(value) {\n return value.map(dt => {\n if (dt instanceof Date) {\n return dt.toISOString();\n }\n else if (dt) {\n return dt;\n }\n else {\n return '..';\n }\n }).join('/');\n }\n\n static formatSortbyForPOST(value) {\n // POST search requires sortby to be an array of objects containing a property name and sort direction.\n // See spec here: https://api.stacspec.org/v1.0.0-rc.1/item-search/#tag/Item-Search/operation/postItemSearch\n // This function converts the property name to the desired format.\n const sortby = {\n field: '',\n direction: 'asc'\n };\n \n // Check if the value starts with a minus sign (\"-\")\n if (value.startsWith('-')) {\n // sort by descending order\n sortby.field = value.substring(1);\n sortby.direction = 'desc';\n } else {\n //sort by ascending order\n sortby.field = value;\n }\n \n // Put the object in an array\n return [sortby];\n }\n\n static getPaginationLinks(data) {\n let pages = {};\n if (Utils.isObject(data)) {\n let pageLinks = Utils.getLinksWithRels(data.links, stacPagination);\n for (let pageLink of pageLinks) {\n let rel = pageLink.rel === 'previous' ? 'prev' : pageLink.rel;\n pages[rel] = pageLink;\n }\n }\n return pages;\n }\n\n static addFiltersToLink(link, filters = {}, itemsPerPage = null) {\n let isEmpty = value => {\n return (value === null\n || (typeof value === 'number' && !Number.isFinite(value))\n || (typeof value === 'string' && value.length === 0)\n || (typeof value === 'object' && Utils.size(value) === 0));\n };\n\n if (!Utils.isObject(filters)) {\n filters = {};\n }\n else {\n filters = Object.assign({}, filters);\n }\n\n if (typeof filters.limit !== 'number' && typeof itemsPerPage === 'number') {\n filters.limit = itemsPerPage;\n }\n\n if (Utils.hasText(link.method) && link.method.toUpperCase() === 'POST') {\n let body = Object.assign({}, link.body);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n delete body[key];\n continue;\n }\n\n if (key === 'sortby') {\n value = Utils.formatSortbyForPOST(value);\n }\n else if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'filters') {\n Object.assign(body, value.toJSON());\n continue;\n }\n\n body[key] = value;\n }\n return Object.assign({}, link, { body });\n }\n else { // GET\n // Construct new link with search params\n let url = URI(link.href);\n\n for (let key in filters) {\n let value = filters[key];\n if (isEmpty(value)) {\n url.removeQuery(key);\n continue;\n }\n\n if (key === 'datetime') {\n value = Utils.formatDatetimeQuery(value);\n }\n else if (key === 'bbox') {\n value = value.join(',');\n }\n else if ((key === 'collections' || key === 'ids' || key === 'q')) {\n value = value.join(',');\n }\n else if (key === 'filters') {\n let params = value.toText();\n url.setQuery(params);\n continue;\n }\n\n url.setQuery(key, value);\n }\n\n return Object.assign({}, link, { href: url.toString() });\n }\n }\n\n static titleForHref(href, preferFileName = false) {\n let uri = URI(href);\n let auth = uri.authority();\n let file = uri.filename().replace(/^(.{1,})\\.\\w+$/, '$1');\n let dir = uri.directory().replace(/^\\//, '');\n if (auth && file && !preferFileName) {\n let path = uri.path().replace(/^\\//, '');\n if (auth === 'doi.org' && path.startsWith('10.')) {\n return `DOI ${path}`;\n }\n else {\n return `${file} (${auth})`;\n }\n }\n else if (file && !commonFileNames.includes(file)) {\n return file;\n }\n else if (auth) {\n return auth;\n }\n else if (dir) {\n return dir;\n }\n else {\n return href;\n }\n }\n\n static canBrowserDisplayImage(img) {\n if (typeof img.href !== 'string') {\n return false;\n }\n let uri = URI(img.href);\n let protocol = uri.protocol().toLowerCase();\n if (protocol && !browserProtocols.includes(protocol)) {\n return false;\n }\n else if (browserImageTypes.includes(img.type)) {\n return true;\n }\n else if (browserImageTypes.includes('image/' + uri.suffix().toLowerCase())) {\n return true;\n }\n else if (img.type) {\n return false;\n }\n else {\n return true; // If no img.type is given, try to load it anyway: https://github.com/radiantearth/stac-browser/issues/147\n }\n }\n\n // Gets the value at path of object.\n // Drop in replacement for lodash.get\n static getValueFromObjectUsingPath(object, path) {\n if (object === null || typeof object !== 'object') {\n return;\n }\n object = object[path[0]];\n if (typeof object !== 'undefined' && path.length > 1) {\n return this.getValueFromObjectUsingPath(object, path.slice(1));\n }\n return object;\n }\n\n static search(searchterm, target, and = true) {\n if (typeof searchterm !== 'string' || searchterm.length === 0) {\n return false;\n }\n if (Utils.isObject(target)) {\n target = Object.values(target);\n }\n else if (typeof target === 'string') {\n target = [target];\n }\n\n if (!Array.isArray(target)) {\n return false;\n }\n\n let splitChars = /[\\s.,;!&({[)}]]+/g;\n\n // Prepare search terms\n searchterm = searchterm.toLowerCase().split(splitChars);\n\n // Prepare text to search in\n target = target\n .filter(s => typeof s === 'string') // Remove non-strings\n .join(' ') // Merge into a single string\n .replace(splitChars, ' ') // replace split chars with white spaces\n .toLowerCase(); // Lowercase\n\n // Search with \"and\" or \"or\"\n let fn = and ? 'every' : 'some';\n return searchterm[fn](term => target.includes(term));\n }\n\n static createLink(href, rel) {\n return { href, rel };\n }\n\n static supportsExtension(data, pattern) {\n if (!Utils.isObject(data) || !Array.isArray(data['stac_extensions'])) {\n return false;\n }\n let regexp = new RegExp('^' + pattern.replaceAll('*', '[^/]+') + '$');\n return Boolean(data['stac_extensions'].find(uri => regexp.test(uri)));\n }\n\n /**\n * Deep merge two objects.\n * @param target\n * @param ...sources\n */\n static mergeDeep(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n\n if (Utils.isObject(target) && Utils.isObject(source)) {\n for (const key in source) {\n if (Utils.isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n Utils.mergeDeep(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return Utils.mergeDeep(target, ...sources);\n }\n\n}\n","import ErrorAlert from '../components/ErrorAlert.vue';\nimport Loading from '../components/Loading.vue';\nimport Utils, { BrowserError } from '../utils';\nimport URI from 'urijs';\nimport { mapState, mapGetters } from 'vuex';\n\nexport default {\n components: {\n ErrorAlert,\n Loading\n },\n props: {\n path: {\n type: String,\n required: true\n }\n },\n computed: {\n ...mapState([\"allowExternalAccess\", \"url\", \"redirectLegacyUrls\"]),\n ...mapGetters([\"fromBrowserPath\", \"error\", \"loading\"]),\n errorId() {\n if (this.error instanceof Error && this.error.isAxiosError && Utils.isObject(this.error.response)) {\n let res = this.error.response;\n if (Utils.isObject(res.data) && res.data.code) {\n return res.data.code;\n }\n else {\n return res.status;\n }\n }\n return null;\n },\n errorDescription() { \n if (this.error instanceof Error && this.error.isAxiosError && Utils.isObject(this.error.response)) {\n let res = this.error.response;\n if (Utils.isObject(res.data) && typeof res.data.description === 'string') { // STAC API compliant error response\n return res.data.description;\n }\n if (res.status === 401) {\n return this.$t('errors.unauthorized');\n }\n else if (res.status === 403) {\n return this.$t('errors.forbidden');\n }\n else if (res.status === 404) {\n return this.$t('errors.notFound');\n }\n else if (res.status > 500) {\n return this.$t('errors.serverError');\n }\n else if (res.status > 400) {\n return this.$t('errors.badRequest');\n }\n }\n else if (this.error instanceof BrowserError) {\n return this.error.message;\n }\n\n return this.$t('errors.networkError');\n },\n isExternal() {\n return URI(this.path).is(\"absolute\");\n }\n },\n watch: {\n path: {\n immediate: true,\n async handler(path, oldPath) {\n if (path === oldPath) {\n return;\n }\n else if (!this.allowExternalAccess && this.isExternal) {\n return;\n }\n else if (this.redirectLegacyUrls && await this.redirectLegacyUrl(path)) {\n return;\n }\n\n let url = this.fromBrowserPath(path || '/');\n this.$store.dispatch(\"load\", { url, show: true, loadApi: true });\n }\n }\n },\n methods: {\n async redirectLegacyUrl(path) {\n if (!path || path === '/') {\n return false;\n }\n // Split all subpaths and remove the leading item or collection prefixes from the old STAC Browser routes\n let parts = path.split('/').filter(part => part.length > 0 && part !== 'item' && part !== 'collection');\n // Make sure all remaining parts are valid base58, otherwise they likely no legacy URLs\n if (parts.length > 0 && parts.every(part => part.match(/^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]+$/))) {\n // Lazy load base58 so that it's only in the loaded when really needed\n const { decode } = await import('bs58');\n // Decode last path element from base58, the others parts are not relevant for us\n let newPath = decode(parts[parts.length - 1]).toString();\n if (newPath) {\n let uri = URI(newPath);\n // Navigate to new URL\n this.$router.replace({\n // Remove trailing collections or items paths from APIs\n path: '/' + uri.path().replace(/(collections|items)\\/?$/, ''),\n query: uri.query(true)\n });\n return true;\n }\n }\n return false;\n }\n }\n};\n","var map = {\n\t\"./de-CH/config\": [\n\t\t79933,\n\t\t3\n\t],\n\t\"./de-CH/config.json\": [\n\t\t79933,\n\t\t3\n\t],\n\t\"./de-CH/datepicker\": [\n\t\t40895,\n\t\t9,\n\t\t895\n\t],\n\t\"./de-CH/datepicker.js\": [\n\t\t40895,\n\t\t9,\n\t\t895\n\t],\n\t\"./de-CH/default\": [\n\t\t968,\n\t\t9,\n\t\t4490,\n\t\t968\n\t],\n\t\"./de-CH/default.js\": [\n\t\t968,\n\t\t9,\n\t\t4490,\n\t\t968\n\t],\n\t\"./de-CH/duration\": [\n\t\t49637,\n\t\t9,\n\t\t9710,\n\t\t9637\n\t],\n\t\"./de-CH/duration.js\": [\n\t\t49637,\n\t\t9,\n\t\t9710,\n\t\t9637\n\t],\n\t\"./de-CH/validation\": [\n\t\t75270,\n\t\t9,\n\t\t5270\n\t],\n\t\"./de-CH/validation.js\": [\n\t\t75270,\n\t\t9,\n\t\t5270\n\t],\n\t\"./de/config\": [\n\t\t28417,\n\t\t3\n\t],\n\t\"./de/config.json\": [\n\t\t28417,\n\t\t3\n\t],\n\t\"./de/custom\": [\n\t\t45692,\n\t\t3,\n\t\t5692\n\t],\n\t\"./de/custom.json\": [\n\t\t45692,\n\t\t3,\n\t\t5692\n\t],\n\t\"./de/datepicker\": [\n\t\t74801,\n\t\t9,\n\t\t4801\n\t],\n\t\"./de/datepicker.js\": [\n\t\t74801,\n\t\t9,\n\t\t4801\n\t],\n\t\"./de/default\": [\n\t\t62862,\n\t\t9,\n\t\t4490,\n\t\t2862\n\t],\n\t\"./de/default.js\": [\n\t\t62862,\n\t\t9,\n\t\t4490,\n\t\t2862\n\t],\n\t\"./de/duration\": [\n\t\t54511,\n\t\t9,\n\t\t9710,\n\t\t4511\n\t],\n\t\"./de/duration.js\": [\n\t\t54511,\n\t\t9,\n\t\t9710,\n\t\t4511\n\t],\n\t\"./de/fields\": [\n\t\t14490,\n\t\t3,\n\t\t4490\n\t],\n\t\"./de/fields.json\": [\n\t\t14490,\n\t\t3,\n\t\t4490\n\t],\n\t\"./de/texts\": [\n\t\t99581,\n\t\t3,\n\t\t9581\n\t],\n\t\"./de/texts.json\": [\n\t\t99581,\n\t\t3,\n\t\t9581\n\t],\n\t\"./de/validation\": [\n\t\t62816,\n\t\t9,\n\t\t2816\n\t],\n\t\"./de/validation.js\": [\n\t\t62816,\n\t\t9,\n\t\t2816\n\t],\n\t\"./en-GB/config\": [\n\t\t23667,\n\t\t3\n\t],\n\t\"./en-GB/config.json\": [\n\t\t23667,\n\t\t3\n\t],\n\t\"./en-GB/custom\": [\n\t\t78798,\n\t\t3,\n\t\t8798\n\t],\n\t\"./en-GB/custom.json\": [\n\t\t78798,\n\t\t3,\n\t\t8798\n\t],\n\t\"./en-GB/datepicker\": [\n\t\t22605,\n\t\t9,\n\t\t2605\n\t],\n\t\"./en-GB/datepicker.js\": [\n\t\t22605,\n\t\t9,\n\t\t2605\n\t],\n\t\"./en-GB/default\": [\n\t\t63170,\n\t\t9,\n\t\t3170\n\t],\n\t\"./en-GB/default.js\": [\n\t\t63170,\n\t\t9,\n\t\t3170\n\t],\n\t\"./en-GB/duration\": [\n\t\t47843,\n\t\t9,\n\t\t9710,\n\t\t7843\n\t],\n\t\"./en-GB/duration.js\": [\n\t\t47843,\n\t\t9,\n\t\t9710,\n\t\t7843\n\t],\n\t\"./en-GB/fields\": [\n\t\t87400,\n\t\t3,\n\t\t7400\n\t],\n\t\"./en-GB/fields.json\": [\n\t\t87400,\n\t\t3,\n\t\t7400\n\t],\n\t\"./en-GB/texts\": [\n\t\t62963,\n\t\t3,\n\t\t2963\n\t],\n\t\"./en-GB/texts.json\": [\n\t\t62963,\n\t\t3,\n\t\t2963\n\t],\n\t\"./en-GB/validation\": [\n\t\t6492,\n\t\t9,\n\t\t6492\n\t],\n\t\"./en-GB/validation.js\": [\n\t\t6492,\n\t\t9,\n\t\t6492\n\t],\n\t\"./en-US/config\": [\n\t\t92444,\n\t\t3\n\t],\n\t\"./en-US/config.json\": [\n\t\t92444,\n\t\t3\n\t],\n\t\"./en-US/datepicker\": [\n\t\t95558,\n\t\t9,\n\t\t5558\n\t],\n\t\"./en-US/datepicker.js\": [\n\t\t95558,\n\t\t9,\n\t\t5558\n\t],\n\t\"./en-US/default\": [\n\t\t15691,\n\t\t9,\n\t\t5691\n\t],\n\t\"./en-US/default.js\": [\n\t\t15691,\n\t\t9,\n\t\t5691\n\t],\n\t\"./en-US/duration\": [\n\t\t49684,\n\t\t9,\n\t\t9710,\n\t\t9684\n\t],\n\t\"./en-US/duration.js\": [\n\t\t49684,\n\t\t9,\n\t\t9710,\n\t\t9684\n\t],\n\t\"./en-US/validation\": [\n\t\t3155,\n\t\t9,\n\t\t3155\n\t],\n\t\"./en-US/validation.js\": [\n\t\t3155,\n\t\t9,\n\t\t3155\n\t],\n\t\"./en/config\": [\n\t\t11401,\n\t\t3\n\t],\n\t\"./en/config.json\": [\n\t\t11401,\n\t\t3\n\t],\n\t\"./en/custom\": [\n\t\t85300,\n\t\t3,\n\t\t5300\n\t],\n\t\"./en/custom.json\": [\n\t\t85300,\n\t\t3,\n\t\t5300\n\t],\n\t\"./en/datepicker\": [\n\t\t71865,\n\t\t9,\n\t\t1865\n\t],\n\t\"./en/datepicker.js\": [\n\t\t71865,\n\t\t9,\n\t\t1865\n\t],\n\t\"./en/default\": [\n\t\t56886,\n\t\t9,\n\t\t6886\n\t],\n\t\"./en/default.js\": [\n\t\t56886,\n\t\t9,\n\t\t6886\n\t],\n\t\"./en/duration\": [\n\t\t86855,\n\t\t9,\n\t\t9710,\n\t\t6855\n\t],\n\t\"./en/duration.js\": [\n\t\t86855,\n\t\t9,\n\t\t9710,\n\t\t6855\n\t],\n\t\"./en/fields\": [\n\t\t87090,\n\t\t3,\n\t\t7090\n\t],\n\t\"./en/fields.json\": [\n\t\t87090,\n\t\t3,\n\t\t7090\n\t],\n\t\"./en/stac-fields\": [\n\t\t98236,\n\t\t9,\n\t\t8236\n\t],\n\t\"./en/stac-fields.js\": [\n\t\t98236,\n\t\t9,\n\t\t8236\n\t],\n\t\"./en/texts\": [\n\t\t33301,\n\t\t3,\n\t\t3301\n\t],\n\t\"./en/texts.json\": [\n\t\t33301,\n\t\t3,\n\t\t3301\n\t],\n\t\"./en/validation\": [\n\t\t98552,\n\t\t9,\n\t\t8552\n\t],\n\t\"./en/validation.js\": [\n\t\t98552,\n\t\t9,\n\t\t8552\n\t],\n\t\"./es/config\": [\n\t\t17212,\n\t\t3\n\t],\n\t\"./es/config.json\": [\n\t\t17212,\n\t\t3\n\t],\n\t\"./es/custom\": [\n\t\t14581,\n\t\t3,\n\t\t4581\n\t],\n\t\"./es/custom.json\": [\n\t\t14581,\n\t\t3,\n\t\t4581\n\t],\n\t\"./es/datepicker\": [\n\t\t54312,\n\t\t9,\n\t\t4312\n\t],\n\t\"./es/datepicker.js\": [\n\t\t54312,\n\t\t9,\n\t\t4312\n\t],\n\t\"./es/default\": [\n\t\t89113,\n\t\t9,\n\t\t9113\n\t],\n\t\"./es/default.js\": [\n\t\t89113,\n\t\t9,\n\t\t9113\n\t],\n\t\"./es/duration\": [\n\t\t46046,\n\t\t9,\n\t\t9710,\n\t\t6046\n\t],\n\t\"./es/duration.js\": [\n\t\t46046,\n\t\t9,\n\t\t9710,\n\t\t6046\n\t],\n\t\"./es/fields\": [\n\t\t11295,\n\t\t3,\n\t\t1295\n\t],\n\t\"./es/fields.json\": [\n\t\t11295,\n\t\t3,\n\t\t1295\n\t],\n\t\"./es/texts\": [\n\t\t90674,\n\t\t3,\n\t\t674\n\t],\n\t\"./es/texts.json\": [\n\t\t90674,\n\t\t3,\n\t\t674\n\t],\n\t\"./es/validation\": [\n\t\t35893,\n\t\t9,\n\t\t5893\n\t],\n\t\"./es/validation.js\": [\n\t\t35893,\n\t\t9,\n\t\t5893\n\t],\n\t\"./fr-CA/config\": [\n\t\t20995,\n\t\t3\n\t],\n\t\"./fr-CA/config.json\": [\n\t\t20995,\n\t\t3\n\t],\n\t\"./fr-CA/datepicker\": [\n\t\t6997,\n\t\t9,\n\t\t6997\n\t],\n\t\"./fr-CA/datepicker.js\": [\n\t\t6997,\n\t\t9,\n\t\t6997\n\t],\n\t\"./fr-CA/default\": [\n\t\t71082,\n\t\t9,\n\t\t5767,\n\t\t1082\n\t],\n\t\"./fr-CA/default.js\": [\n\t\t71082,\n\t\t9,\n\t\t5767,\n\t\t1082\n\t],\n\t\"./fr-CA/duration\": [\n\t\t27003,\n\t\t9,\n\t\t9710,\n\t\t7003\n\t],\n\t\"./fr-CA/duration.js\": [\n\t\t27003,\n\t\t9,\n\t\t9710,\n\t\t7003\n\t],\n\t\"./fr-CA/validation\": [\n\t\t38228,\n\t\t9,\n\t\t8228\n\t],\n\t\"./fr-CA/validation.js\": [\n\t\t38228,\n\t\t9,\n\t\t8228\n\t],\n\t\"./fr-CH/config\": [\n\t\t1738,\n\t\t3\n\t],\n\t\"./fr-CH/config.json\": [\n\t\t1738,\n\t\t3\n\t],\n\t\"./fr-CH/datepicker\": [\n\t\t81456,\n\t\t9,\n\t\t1456\n\t],\n\t\"./fr-CH/datepicker.js\": [\n\t\t81456,\n\t\t9,\n\t\t1456\n\t],\n\t\"./fr-CH/default\": [\n\t\t44545,\n\t\t9,\n\t\t5767,\n\t\t4545\n\t],\n\t\"./fr-CH/default.js\": [\n\t\t44545,\n\t\t9,\n\t\t5767,\n\t\t4545\n\t],\n\t\"./fr-CH/duration\": [\n\t\t67286,\n\t\t9,\n\t\t9710,\n\t\t7286\n\t],\n\t\"./fr-CH/duration.js\": [\n\t\t67286,\n\t\t9,\n\t\t9710,\n\t\t7286\n\t],\n\t\"./fr-CH/validation\": [\n\t\t82605,\n\t\t9,\n\t\t4986\n\t],\n\t\"./fr-CH/validation.js\": [\n\t\t82605,\n\t\t9,\n\t\t4986\n\t],\n\t\"./fr/config\": [\n\t\t37748,\n\t\t3\n\t],\n\t\"./fr/config.json\": [\n\t\t37748,\n\t\t3\n\t],\n\t\"./fr/custom\": [\n\t\t75197,\n\t\t3,\n\t\t5197\n\t],\n\t\"./fr/custom.json\": [\n\t\t75197,\n\t\t3,\n\t\t5197\n\t],\n\t\"./fr/datepicker\": [\n\t\t37036,\n\t\t9,\n\t\t7036\n\t],\n\t\"./fr/datepicker.js\": [\n\t\t37036,\n\t\t9,\n\t\t7036\n\t],\n\t\"./fr/default\": [\n\t\t1589,\n\t\t9,\n\t\t5767,\n\t\t1589\n\t],\n\t\"./fr/default.js\": [\n\t\t1589,\n\t\t9,\n\t\t5767,\n\t\t1589\n\t],\n\t\"./fr/duration\": [\n\t\t93658,\n\t\t9,\n\t\t9710,\n\t\t3658\n\t],\n\t\"./fr/duration.js\": [\n\t\t93658,\n\t\t9,\n\t\t9710,\n\t\t3658\n\t],\n\t\"./fr/fields\": [\n\t\t48148,\n\t\t3,\n\t\t5767\n\t],\n\t\"./fr/fields.json\": [\n\t\t48148,\n\t\t3,\n\t\t5767\n\t],\n\t\"./fr/texts\": [\n\t\t23418,\n\t\t3,\n\t\t3418\n\t],\n\t\"./fr/texts.json\": [\n\t\t23418,\n\t\t3,\n\t\t3418\n\t],\n\t\"./fr/validation\": [\n\t\t33129,\n\t\t9,\n\t\t3129\n\t],\n\t\"./fr/validation.js\": [\n\t\t33129,\n\t\t9,\n\t\t3129\n\t],\n\t\"./it-CH/config\": [\n\t\t16835,\n\t\t3\n\t],\n\t\"./it-CH/config.json\": [\n\t\t16835,\n\t\t3\n\t],\n\t\"./it-CH/datepicker\": [\n\t\t75862,\n\t\t9,\n\t\t3481\n\t],\n\t\"./it-CH/datepicker.js\": [\n\t\t75862,\n\t\t9,\n\t\t3481\n\t],\n\t\"./it-CH/default\": [\n\t\t77638,\n\t\t9,\n\t\t9476,\n\t\t7638\n\t],\n\t\"./it-CH/default.js\": [\n\t\t77638,\n\t\t9,\n\t\t9476,\n\t\t7638\n\t],\n\t\"./it-CH/duration\": [\n\t\t44567,\n\t\t9,\n\t\t9710,\n\t\t4567\n\t],\n\t\"./it-CH/duration.js\": [\n\t\t44567,\n\t\t9,\n\t\t9710,\n\t\t4567\n\t],\n\t\"./it-CH/validation\": [\n\t\t63048,\n\t\t9,\n\t\t3048\n\t],\n\t\"./it-CH/validation.js\": [\n\t\t63048,\n\t\t9,\n\t\t3048\n\t],\n\t\"./it/config\": [\n\t\t37295,\n\t\t3\n\t],\n\t\"./it/config.json\": [\n\t\t37295,\n\t\t3\n\t],\n\t\"./it/custom\": [\n\t\t5290,\n\t\t3,\n\t\t5290\n\t],\n\t\"./it/custom.json\": [\n\t\t5290,\n\t\t3,\n\t\t5290\n\t],\n\t\"./it/datepicker\": [\n\t\t36147,\n\t\t9,\n\t\t6147\n\t],\n\t\"./it/datepicker.js\": [\n\t\t36147,\n\t\t9,\n\t\t6147\n\t],\n\t\"./it/default\": [\n\t\t23108,\n\t\t9,\n\t\t9476,\n\t\t3108\n\t],\n\t\"./it/default.js\": [\n\t\t23108,\n\t\t9,\n\t\t9476,\n\t\t3108\n\t],\n\t\"./it/duration\": [\n\t\t67905,\n\t\t9,\n\t\t9710,\n\t\t7905\n\t],\n\t\"./it/duration.js\": [\n\t\t67905,\n\t\t9,\n\t\t9710,\n\t\t7905\n\t],\n\t\"./it/fields\": [\n\t\t39476,\n\t\t3,\n\t\t9476\n\t],\n\t\"./it/fields.json\": [\n\t\t39476,\n\t\t3,\n\t\t9476\n\t],\n\t\"./it/texts\": [\n\t\t27519,\n\t\t3,\n\t\t7519\n\t],\n\t\"./it/texts.json\": [\n\t\t27519,\n\t\t3,\n\t\t7519\n\t],\n\t\"./it/validation\": [\n\t\t66346,\n\t\t9,\n\t\t6346\n\t],\n\t\"./it/validation.js\": [\n\t\t66346,\n\t\t9,\n\t\t6346\n\t],\n\t\"./ja/config\": [\n\t\t15203,\n\t\t3\n\t],\n\t\"./ja/config.json\": [\n\t\t15203,\n\t\t3\n\t],\n\t\"./ja/custom\": [\n\t\t79870,\n\t\t3,\n\t\t9870\n\t],\n\t\"./ja/custom.json\": [\n\t\t79870,\n\t\t3,\n\t\t9870\n\t],\n\t\"./ja/datepicker\": [\n\t\t70675,\n\t\t9,\n\t\t675\n\t],\n\t\"./ja/datepicker.js\": [\n\t\t70675,\n\t\t9,\n\t\t675\n\t],\n\t\"./ja/default\": [\n\t\t4964,\n\t\t9,\n\t\t4964\n\t],\n\t\"./ja/default.js\": [\n\t\t4964,\n\t\t9,\n\t\t4964\n\t],\n\t\"./ja/duration\": [\n\t\t87905,\n\t\t9,\n\t\t9710,\n\t\t2667\n\t],\n\t\"./ja/duration.js\": [\n\t\t87905,\n\t\t9,\n\t\t9710,\n\t\t2667\n\t],\n\t\"./ja/fields\": [\n\t\t68376,\n\t\t3,\n\t\t8376\n\t],\n\t\"./ja/fields.json\": [\n\t\t68376,\n\t\t3,\n\t\t8376\n\t],\n\t\"./ja/texts\": [\n\t\t30883,\n\t\t3,\n\t\t883\n\t],\n\t\"./ja/texts.json\": [\n\t\t30883,\n\t\t3,\n\t\t883\n\t],\n\t\"./ja/validation\": [\n\t\t14826,\n\t\t9,\n\t\t4826\n\t],\n\t\"./ja/validation.js\": [\n\t\t14826,\n\t\t9,\n\t\t4826\n\t],\n\t\"./pt-BR/config\": [\n\t\t87503,\n\t\t3\n\t],\n\t\"./pt-BR/config.json\": [\n\t\t87503,\n\t\t3\n\t],\n\t\"./pt-BR/custom\": [\n\t\t54794,\n\t\t3,\n\t\t4794\n\t],\n\t\"./pt-BR/custom.json\": [\n\t\t54794,\n\t\t3,\n\t\t4794\n\t],\n\t\"./pt-BR/datepicker\": [\n\t\t20105,\n\t\t9,\n\t\t105\n\t],\n\t\"./pt-BR/datepicker.js\": [\n\t\t20105,\n\t\t9,\n\t\t105\n\t],\n\t\"./pt-BR/default\": [\n\t\t92294,\n\t\t9,\n\t\t2294\n\t],\n\t\"./pt-BR/default.js\": [\n\t\t92294,\n\t\t9,\n\t\t2294\n\t],\n\t\"./pt-BR/duration\": [\n\t\t44631,\n\t\t9,\n\t\t9710,\n\t\t4631\n\t],\n\t\"./pt-BR/duration.js\": [\n\t\t44631,\n\t\t9,\n\t\t9710,\n\t\t4631\n\t],\n\t\"./pt-BR/fields\": [\n\t\t1524,\n\t\t3,\n\t\t1524\n\t],\n\t\"./pt-BR/fields.json\": [\n\t\t1524,\n\t\t3,\n\t\t1524\n\t],\n\t\"./pt-BR/texts\": [\n\t\t69311,\n\t\t3,\n\t\t9311\n\t],\n\t\"./pt-BR/texts.json\": [\n\t\t69311,\n\t\t3,\n\t\t9311\n\t],\n\t\"./pt-BR/validation\": [\n\t\t70536,\n\t\t9,\n\t\t536\n\t],\n\t\"./pt-BR/validation.js\": [\n\t\t70536,\n\t\t9,\n\t\t536\n\t],\n\t\"./pt/config\": [\n\t\t22356,\n\t\t3\n\t],\n\t\"./pt/config.json\": [\n\t\t22356,\n\t\t3\n\t],\n\t\"./pt/custom\": [\n\t\t2653,\n\t\t3,\n\t\t2653\n\t],\n\t\"./pt/custom.json\": [\n\t\t2653,\n\t\t3,\n\t\t2653\n\t],\n\t\"./pt/datepicker\": [\n\t\t59856,\n\t\t9,\n\t\t9856\n\t],\n\t\"./pt/datepicker.js\": [\n\t\t59856,\n\t\t9,\n\t\t9856\n\t],\n\t\"./pt/default\": [\n\t\t56513,\n\t\t9,\n\t\t6513\n\t],\n\t\"./pt/default.js\": [\n\t\t56513,\n\t\t9,\n\t\t6513\n\t],\n\t\"./pt/duration\": [\n\t\t32438,\n\t\t9,\n\t\t9710,\n\t\t2438\n\t],\n\t\"./pt/duration.js\": [\n\t\t32438,\n\t\t9,\n\t\t9710,\n\t\t2438\n\t],\n\t\"./pt/fields\": [\n\t\t44455,\n\t\t3,\n\t\t4455\n\t],\n\t\"./pt/fields.json\": [\n\t\t44455,\n\t\t3,\n\t\t4455\n\t],\n\t\"./pt/texts\": [\n\t\t29946,\n\t\t3,\n\t\t9946\n\t],\n\t\"./pt/texts.json\": [\n\t\t29946,\n\t\t3,\n\t\t9946\n\t],\n\t\"./pt/validation\": [\n\t\t12685,\n\t\t9,\n\t\t2685\n\t],\n\t\"./pt/validation.js\": [\n\t\t12685,\n\t\t9,\n\t\t2685\n\t],\n\t\"./ro/config\": [\n\t\t99069,\n\t\t3\n\t],\n\t\"./ro/config.json\": [\n\t\t99069,\n\t\t3\n\t],\n\t\"./ro/custom\": [\n\t\t5160,\n\t\t3,\n\t\t5160\n\t],\n\t\"./ro/custom.json\": [\n\t\t5160,\n\t\t3,\n\t\t5160\n\t],\n\t\"./ro/datepicker\": [\n\t\t2929,\n\t\t9,\n\t\t2929\n\t],\n\t\"./ro/datepicker.js\": [\n\t\t2929,\n\t\t9,\n\t\t2929\n\t],\n\t\"./ro/default\": [\n\t\t63022,\n\t\t9,\n\t\t3022\n\t],\n\t\"./ro/default.js\": [\n\t\t63022,\n\t\t9,\n\t\t3022\n\t],\n\t\"./ro/duration\": [\n\t\t65583,\n\t\t9,\n\t\t9710,\n\t\t5583\n\t],\n\t\"./ro/duration.js\": [\n\t\t65583,\n\t\t9,\n\t\t9710,\n\t\t5583\n\t],\n\t\"./ro/fields\": [\n\t\t14758,\n\t\t3,\n\t\t4758\n\t],\n\t\"./ro/fields.json\": [\n\t\t14758,\n\t\t3,\n\t\t4758\n\t],\n\t\"./ro/texts\": [\n\t\t55577,\n\t\t3,\n\t\t5577\n\t],\n\t\"./ro/texts.json\": [\n\t\t55577,\n\t\t3,\n\t\t5577\n\t],\n\t\"./ro/validation\": [\n\t\t90944,\n\t\t9,\n\t\t944\n\t],\n\t\"./ro/validation.js\": [\n\t\t90944,\n\t\t9,\n\t\t944\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(2).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, ids[1] | 16)\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 93731;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de-CH/default.js\": [\n\t\t968,\n\t\t4490,\n\t\t968\n\t],\n\t\"./de/default.js\": [\n\t\t62862,\n\t\t4490,\n\t\t2862\n\t],\n\t\"./en-GB/default.js\": [\n\t\t63170,\n\t\t3170\n\t],\n\t\"./en-US/default.js\": [\n\t\t15691,\n\t\t5691\n\t],\n\t\"./en/default.js\": [\n\t\t56886,\n\t\t6886\n\t],\n\t\"./es/default.js\": [\n\t\t89113,\n\t\t9113\n\t],\n\t\"./fr-CA/default.js\": [\n\t\t71082,\n\t\t5767,\n\t\t1082\n\t],\n\t\"./fr-CH/default.js\": [\n\t\t44545,\n\t\t5767,\n\t\t4545\n\t],\n\t\"./fr/default.js\": [\n\t\t1589,\n\t\t5767,\n\t\t1589\n\t],\n\t\"./it-CH/default.js\": [\n\t\t77638,\n\t\t9476,\n\t\t7638\n\t],\n\t\"./it/default.js\": [\n\t\t23108,\n\t\t9476,\n\t\t3108\n\t],\n\t\"./ja/default.js\": [\n\t\t4964,\n\t\t4964\n\t],\n\t\"./pt-BR/default.js\": [\n\t\t92294,\n\t\t2294\n\t],\n\t\"./pt/default.js\": [\n\t\t56513,\n\t\t6513\n\t],\n\t\"./ro/default.js\": [\n\t\t63022,\n\t\t3022\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 33545;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./de-CH/config.json\": 79933,\n\t\"./de/config.json\": 28417,\n\t\"./en-GB/config.json\": 23667,\n\t\"./en-US/config.json\": 92444,\n\t\"./en/config.json\": 11401,\n\t\"./es/config.json\": 17212,\n\t\"./fr-CA/config.json\": 20995,\n\t\"./fr-CH/config.json\": 1738,\n\t\"./fr/config.json\": 37748,\n\t\"./it-CH/config.json\": 16835,\n\t\"./it/config.json\": 37295,\n\t\"./ja/config.json\": 15203,\n\t\"./pt-BR/config.json\": 87503,\n\t\"./pt/config.json\": 22356,\n\t\"./ro/config.json\": 99069\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 97991;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = function(queue) {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach(function(fn) { fn.r--; });\n\t\tqueue.forEach(function(fn) { fn.r-- ? fn.r++ : fn(); });\n\t}\n}\nvar wrapDeps = function(deps) { return deps.map(function(dep) {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then(function(r) {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, function(e) {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = function(fn) { fn(queue); };\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = function() {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}); };\n__webpack_require__.a = function(module, body, hasAwait) {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise(function(resolve, rej) {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = function(fn) { queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](function() {}); };\n\tmodule.exports = promise;\n\tbody(function(deps) {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = function() { return currentDeps.map(function(d) {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}); }\n\t\tvar promise = new Promise(function(resolve) {\n\t\t\tfn = function() { resolve(getResult); };\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = function(q) { q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))); };\n\t\t\tcurrentDeps.map(function(dep) { dep[webpackQueues](fnQueue); });\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, function(err) { (err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue); });\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"57\":\"5be4327a\",\"105\":\"e2583608\",\"143\":\"17c32b12\",\"224\":\"73380e95\",\"259\":\"5d9423a7\",\"286\":\"9968152f\",\"287\":\"de8bc964\",\"453\":\"cdf3dcef\",\"513\":\"cdf66342\",\"536\":\"1a6dbc5d\",\"537\":\"1e693d0f\",\"572\":\"e8726472\",\"635\":\"3fc71e47\",\"674\":\"628dacf0\",\"675\":\"18ffac5f\",\"771\":\"71d0273d\",\"883\":\"04936a46\",\"895\":\"8187e671\",\"944\":\"52479ee6\",\"967\":\"aedc4196\",\"968\":\"e992ebff\",\"1082\":\"bc8d3aaa\",\"1277\":\"7d6a095f\",\"1295\":\"27f043b7\",\"1456\":\"d1b42447\",\"1524\":\"98e4593a\",\"1589\":\"a8e28692\",\"1802\":\"e793d255\",\"1865\":\"a9fa055a\",\"1935\":\"049809bf\",\"1940\":\"d3c49361\",\"2018\":\"ce075d9e\",\"2294\":\"936b4a9d\",\"2438\":\"9de74d16\",\"2605\":\"1c2993cd\",\"2618\":\"11733eb3\",\"2653\":\"a4273a9b\",\"2667\":\"854d158f\",\"2685\":\"93067bb8\",\"2816\":\"45937916\",\"2862\":\"6af34fc2\",\"2904\":\"e9e7058d\",\"2929\":\"329a3419\",\"2963\":\"2d6fae39\",\"2986\":\"087cf117\",\"3022\":\"f05af57b\",\"3048\":\"24de37f6\",\"3108\":\"2381da32\",\"3129\":\"5db71fda\",\"3147\":\"8c62f1a6\",\"3155\":\"bfefc377\",\"3170\":\"1f0bbce4\",\"3301\":\"a6b90c8a\",\"3418\":\"1583461d\",\"3481\":\"94bedc54\",\"3545\":\"4729f6d7\",\"3611\":\"9beecf13\",\"3621\":\"33cab0e1\",\"3627\":\"35a62045\",\"3658\":\"b69417b4\",\"3665\":\"8d915206\",\"4312\":\"a55046c8\",\"4455\":\"20b19c75\",\"4490\":\"ba7247be\",\"4511\":\"814216f9\",\"4527\":\"9945a88b\",\"4545\":\"12d31611\",\"4567\":\"fd438142\",\"4581\":\"ab8bb64d\",\"4631\":\"3fda2a6b\",\"4648\":\"d62412bc\",\"4748\":\"9cad5d00\",\"4758\":\"81bfed10\",\"4794\":\"be71e110\",\"4801\":\"3edc3a39\",\"4826\":\"14dec5b7\",\"4870\":\"d5037fd1\",\"4905\":\"c253340a\",\"4964\":\"aabf058f\",\"4986\":\"43315b9e\",\"5048\":\"73e94787\",\"5160\":\"0199c3c7\",\"5197\":\"e5331eb8\",\"5262\":\"043c45ae\",\"5270\":\"955a079f\",\"5290\":\"11b823e6\",\"5300\":\"04767d9e\",\"5500\":\"a4789aa8\",\"5528\":\"5cf36dce\",\"5558\":\"1b7ea293\",\"5577\":\"77c30967\",\"5583\":\"a2d41d1b\",\"5691\":\"f24e25d4\",\"5692\":\"e7ac3b0d\",\"5767\":\"72834f18\",\"5833\":\"8137a15b\",\"5876\":\"4dd7f581\",\"5893\":\"6f7d75b8\",\"6046\":\"c4a8b81f\",\"6147\":\"1c9b2abd\",\"6247\":\"acea7c1f\",\"6340\":\"18158e76\",\"6346\":\"dbc5bcff\",\"6492\":\"8dedde79\",\"6513\":\"e0ea7017\",\"6750\":\"7aedfad0\",\"6763\":\"8e2843dd\",\"6780\":\"f53800c2\",\"6855\":\"192625a7\",\"6866\":\"6a34f86e\",\"6886\":\"72674174\",\"6892\":\"e419da08\",\"6935\":\"2ff826c6\",\"6948\":\"0f0902d7\",\"6997\":\"a28a1e59\",\"7003\":\"ca61e641\",\"7012\":\"55ebfa96\",\"7036\":\"af262471\",\"7090\":\"0eb933be\",\"7130\":\"880efce9\",\"7197\":\"f0bb6068\",\"7286\":\"347cbbbe\",\"7303\":\"e09f204d\",\"7312\":\"54428d50\",\"7341\":\"e7260174\",\"7400\":\"1d37f795\",\"7457\":\"db6d398a\",\"7519\":\"2d2eb579\",\"7638\":\"51f8c29a\",\"7659\":\"e86bd86e\",\"7719\":\"749c5ec0\",\"7820\":\"0ee35023\",\"7843\":\"814dcd79\",\"7905\":\"d12be83f\",\"7964\":\"ff8cbcd1\",\"8228\":\"efd83c38\",\"8236\":\"8111695f\",\"8376\":\"d2c8723f\",\"8499\":\"ebf4ff10\",\"8552\":\"d4b5fff9\",\"8648\":\"72d749a6\",\"8775\":\"a495f41e\",\"8798\":\"67d14058\",\"8940\":\"92678f29\",\"9099\":\"2ed3cba3\",\"9113\":\"bbb25f06\",\"9236\":\"a8d872bf\",\"9311\":\"4911b00a\",\"9384\":\"3cccf96f\",\"9476\":\"20e3397d\",\"9581\":\"692a0ccc\",\"9637\":\"618f0cfe\",\"9684\":\"31bdfb18\",\"9710\":\"f06fdbe3\",\"9738\":\"a53cd36a\",\"9813\":\"0e3b02b4\",\"9856\":\"8de9e0e6\",\"9870\":\"7449c477\",\"9891\":\"3c48937a\",\"9946\":\"f6bd18dd\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"143\":\"ac728857\",\"453\":\"f55423e0\",\"513\":\"1c24940f\",\"635\":\"f849b3f1\",\"967\":\"72c8c98f\",\"1802\":\"32ec082e\",\"1940\":\"4149415b\",\"2618\":\"6fac7cd8\",\"3147\":\"45781634\",\"3545\":\"2412eeb4\",\"3611\":\"c6830b09\",\"4748\":\"fc757a13\",\"5528\":\"45781634\",\"6780\":\"0780c10b\",\"6866\":\"081b4583\",\"7130\":\"c4ced7cf\",\"7312\":\"81053aa2\",\"7341\":\"c9b64985\",\"8648\":\"4b50bc38\",\"8775\":\"bbca74ef\",\"8940\":\"f418fe25\",\"9813\":\"63e96376\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"@radiantearth/stac-browser:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/stac-browser/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"143\":1,\"453\":1,\"513\":1,\"635\":1,\"967\":1,\"1802\":1,\"1940\":1,\"2618\":1,\"3147\":1,\"3545\":1,\"3611\":1,\"4748\":1,\"5528\":1,\"6780\":1,\"6866\":1,\"7130\":1,\"7312\":1,\"7341\":1,\"8648\":1,\"8775\":1,\"8940\":1,\"9813\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(453 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_radiantearth_stac_browser\"] = self[\"webpackChunk_radiantearth_stac_browser\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(59222); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["render","_vm","this","_c","_self","directives","name","rawName","value","load","expression","modifiers","class","classes","attrs","isList","hasImage","_b","staticClass","thumbnail","_e","data","catalog","fileFormats","length","description","deprecated","_v","_s","$t","_l","format","key","_f","showKeywordsInCatalogCards","keywords","temporalExtent","domProps","_t","staticRenderFns","components","StacLink","Keywords","filters","summarize","text","Utils","summarizeMd","formatMediaType","shorten","mixins","ThumbnailCardMixin","StacFieldsMixin","formatTemporalExtent","props","type","Object","required","computed","mapState","mapGetters","push","getStac","_this$data","_this$data$extent","_this$data$extent$tem","isCollection","extent","temporal","interval","Array","isArray","getFileFormats","getMetadata","methods","visible","STAC","$store","commit","href","component","title","catalogCount","model","view","callback","$$v","isComplete","catalogs","sort","filterPlaceholder","searchTerm","allKeywords","limitText","selectedKeywords","showPagination","ref","pagination","on","paginate","hasSearchCritera","catalogView","loading","cardsComponent","tag","cardsComponentProps","scopedSlots","_u","fn","hasMore","loadMore","$event","toggle","id","BIconBricks","BIconListTask","String","default","selectedValue","$emit","ViewButtons","columns","get","state","cardViewMode","set","dispatch","Catalog","Loading","Pagination","SearchBox","SortButtons","Multiselect","ViewMixin","collectionsOnly","Boolean","count","Number","$tc","values","some","link","allCatalogs","map","stac","filter","hasKeywords","every","keyword","includes","haystack","concat","search","collator","Intl","Collator","uiLanguage","slice","a","b","compare","getDisplayTitle","reverse","created","cardViewSort","placement","$refs","topPagination","scrollTo","$el","copyColor","preventDefault","stopPropagation","copy","apply","arguments","buttonProps","copyIcon","BIconClipboard","BIconClipboardCheck","BIconClipboardX","copyText","variant","status","startsWith","focus","document","activeElement","Clipboard","error","console","setTimeout","compact","inline","markup","allowHTML","reader","commonmark","writer","safe","smart","parsed","parse","dismissible","message","url","Error","queued","isDeprecated","hasDescription","item","properties","showKeywordsInItemCards","datetime","Registry","require","formatTimestamp","start_datetime","end_datetime","hasText","items","itemCount","api","allowFilter","hasFilters","filtersOpen","filterCount","apiFilters","emitFilter","chunkedItems","showMore","BCollapse","BIconSearch","Item","SearchFilter","showFilters","chunkSize","shownItems","size","watch","mounted","reset","small","fill","stretch","top","first","prev","next","last","tooltip","attributes","icon","displayTitle","fallbackTitle","Function","button","icons","getIcons","find","o","isLink","isStacBrowserLink","isStacMediaType","allowExternalAccess","isExternalUrl","stacBrowserNavigatesTo","rel","obj","to","isObject","assign","target","getBrowserPath","toBrowserPath","privateQueryParameters","uri","URI","addParameters","prefix","queryKey","hasQuery","addQuery","toString","getRequestUrl","fallback","module","exports","catalogUrl","catalogTitle","allowedDomains","detectLocaleFromBrowser","storeLocale","locale","fallbackLocale","supportedLocales","apiCatalogPriority","useTileLayerAsFallback","displayGeoTiffByDefault","buildTileUrlTemplate","asset","encodeURIComponent","stacProxyUrl","pathPrefix","historyMode","showThumbnailsAsAssets","geoTiffResolution","redirectLegacyUrls","itemsPerPage","defaultThumbnailSize","maxPreviewsOnMap","crossOriginMedia","requestHeaders","requestQueryParameters","preprocessSTAC","authConfig","Auth","constructor","options","changeListener","router","getButtonTitle","getLoginLabel","i18n","t","getLogoutLabel","getComponent","getComponentProps","init","login","confirmLogin","credentials","logout","confirmLogout","close","updateStore","_updateStore","defaultName","defaultIn","defaultFormatter","formatter","in_","in","undefined","query","cookie","header","create","config","method","scheme","BasicAuth","ApIKey","OIDC","equals","JSON","stringify","BrowserStorage","enabled","engine","setItem","getItem","removeItem","session","window","sessionStorage","navigator","cookieEnabled","Cookies","NoOp","localStorage","JSON_INDICATOR","remove","clear","_defineProperty","getExpiry","minutes","date","Date","setTime","getTime","epires","toGMTString","expires","parts","split","c","trim","substring","decodeURIComponent","warn","CQL_TEXT","CQL_JSON","CQL_ADV_COMPARISON","TYPES","Items","BasicFilters","CollectionIdFilter","ItemIdFilter","CqlFilters","Sort","FreeText","Global","Collections","conformances","canSort","supportsConformance","canFilterExtents","canFilterFreeText","cql","textMode","jsonMode","advancedComparison","functions","mixin","showThumbnail","isItem","thumbnails","getThumbnails","width","height","src","alt","crossorigin","right","blankColor","AuthUtils","resolveAuth","context","isSupported","schema","convertLegacyAuthConfig","CONFIG_PATH","CONFIG_CLI","STAC_BROWSER_CONFIG","Vue","use","VueI18n","API_LANGUAGE_CONFORMANCE","LOCALE_CONFIG","loadLocaleConfig","CONFIG","messages","languages","postTranslation","path","loadDefaultMessages","Promise","all","loadMessages","async","mergeLocaleMessage","executeCustomFunctions","customizeFiles","customize","p","file","translateFields","vars","te","Fields","stringLocale","keywordPos","indexOf","substr","localeWithoutKeyword","replace","language","shift","retVar","toLowerCase","pop","toUpperCase","country","script","prepareSupported","supported","lgs","forEach","supportedLocale","countries","firstCountry","main","lg","getBest","defaultLocale","getAnyCountry","showLogin","globalError","hideError","sidebar","displayCatalogTitle","browserVersion","proxy","isExternal","errorDescription","errorId","tab","selectedAsset","dataChanged","hasAssets","assets","shownAssets","showAsset","additionalLinks","collectionLink","providers","ignoredMetadataFields","shownAssetsOnMap","shownBandsOnMap","selectedAssetKey","keys","thumbnailRefs","isThumbnail","tabs","bands","meta","toBrowserUrl","store","getters","location","origin","fragment","removeTrailingSlash","addSpatialCoverage","bbox","spatialCoverage","geo","box","join","formatTemporalCoverage","dates","dt","makeAssets","contentUrl","toAbsolute","getAbsoluteUrl","encodingFormat","makeLinks","links","isBasedOn","fallbackDescription","makeProvider","role","roles","email","mail","stacType","container","collection","tc","inX","createBaseSchema","_data$getMetadata","thumbnailUrl","stacUrl","inLanguage","code","license","_data$getLinkWithRel","getLinkWithRel","copyrightHolder","producer","provider","creator","citation","identifier","dateCreated","dateModified","datePublished","version","image","createCatalogSchema","parents","i","findIndex","_data$extent","_data$extent$temporal","_data$extent2","_data$extent2$spatial","temporalCoverage","spatial","associatedMedia","hasPart","dataset","isPartOf","createItemSchema","includedInDataCatalog","start","end","distribution","addSchemaToDocument","doc","element","getElementById","createElement","head","appendChild","innerText","AnonymizedNotice","Assets","BTabs","BTab","CollectionLink","Description","DeprecationNotice","Links","Map","Metadata","Providers","ReadMore","Thumbnails","ShowAssetMixin","immediate","handler","parentLink","cc","mixed","hasCatalogs","hasItems","empty","licenses","temporalExtents","linkPosition","hasThumbnails","mapData","hasItemAssets","item_assets","nextCollectionsLink","loadMoreCollections","isApi","itemPages","apiItemsLoading","paginateItems","filterItems","filtersShown","Catalogs","formatLicense","formatTemporalExtents","stateQueryParameters","getApiItemsLoading","summaries","extents","pages","apiItemsPagination","apiItemsLink","addFiltersToLink","getApiItemsLink","features","rootLink","show","$root","msg","BrowseMixin","getPath","route","params","pathMatch","getRoutes","routes","loadParent","Browse","handleAuthError","cx","root","getStore","namespaced","actions","inProgress","canAuthenticate","rootState","isLoggedIn","mutations","setCredentials","setMethod","addAction","resetActions","setInProgress","waitForAuth","updateMethod","storage","newAuth","requestLogin","finalizeLogin","abortLogin","requestLogout","finalizeLogout","updateCredentials","intent","executeActions","catch","localDefaults","localRequestQueryParameters","itemdef","apiItems","catalogDefaults","queue","authActions","conformsTo","dataLanguage","dataLanguages","apiCollections","Vuex","strict","process","modules","auth","database","allowSelectCatalog","globalRequestQueryParameters","source","returnErrorObject","absoluteUrl","_state$data","isCatalog","_state$data2","isCatalogLike","_state$data3","_state$data4","_","_state$data5","getStacLinkWithRel","createLink","getLinksWithRels","segment","_state$data6","classRegexp","replaceAll","regexp","RegExp","match","supportsExtension","schemaUri","canSearch","canSearchCollections","canSearchItems","getStacLinksWithRel","hasCollections","getApiCollectionsLink","hasChilds","showCollections","showChilds","addMissingChildren","_state$data7","getLinksWithOtherRels","stacBrowserSpecialHandling","canBrowserDisplayImage","relative","absolute","unproxyUrl","relativeTo","protocol","authority","q","fromBrowserPath","externalRE","endsWith","whitelist","domain","is","relativeStr","baseUrl","addLocalQueryParams","proxyUrl","addQueryIfNotExists","acceptedLanguages","entries","l","setQueryParameter","delete","setRequestHeader","requestAuth","doAuth","setAuthData","authData","newState","updateState","openCollapsible","uid","idx","closeCollapsible","updateLoading","loadApi","loaded","processSTAC","resetCatalog","clearAll","resetPage","setPageMetadata","showPage","unshift","lang","errored","unqueue","splice","removeFromQueue","num","setConformanceClasses","setApiItemsLink","toggleApiItemsLoading","collectionId","setApiItems","feature","getPaginationLinks","setApiData","addApiCollections","collections","nextLink","resetApiItems","showGlobalError","trace","switchLocale","userSelected","dataLanguageCodes","dataLanguageFallback","I18N","loadBackground","urls","promises","loadParents","parentStac","tryLogin","action","BrowserError","args","loadRoot","force","noRetry","isPotentiallyIncomplete","response","stacRequest","localeLink","getLocaleLink","conformanceLink","isAuthenticationError","loadApiItems","selfLink","_cx$getters$root","apiCollectionsLink","markPotentiallyIncomplete","loadNextApiCollections","loadOgcApiConformance","loadGeoJson","retryAfterAuth","errorFn","isStacChooser","containerLink","back","selfBrowserLink","parentLinkTitle","collectionLinkTitle","searchBrowserLink","isSearchPage","authTitle","logInOut","authIcon","authLabel","showRoot","rootTitle","currentLanguage","native","global","supportsLanguageExt","ui","stacId","stacVersion","browserUrl","twitterUrl","mailTo","label","open","BFormGroup","BFormInput","BIconArrowUpRightSquare","BInputGroup","BInputGroupAppend","CopyButton","LANGUAGE_EXT","BDropdown","BDropdownItem","BIconBlank","BIconBox","BIconCheck","BIconEnvelope","BIconExclamationTriangle","BIconFlag","BIconLink","BIconShare","BIconTwitter","BPopover","RootStats","Url","Validation","_this$stac","stac_version","_this$stac2","newLang","alternate","uiSupported","dataSupported","mapActions","BIconArrow90degUp","BIconArrowLeft","BIconBook","BIconFolderSymlink","BIconLock","BIconUnlock","Source","authMethod","$route","dataLink","getSearchLink","equalUrl","mapMutations","$router","currentRoute","authComponent","submit","ApiKey","Basic","authComponentProps","beforeCreate","AlertPlugin","ButtonGroupPlugin","ButtonPlugin","BadgePlugin","CardPlugin","LayoutPlugin","SpinnerPlugin","directive","VBToggle","VBVisible","VueRouter","mode","base","Props","Watchers","newValue","Authentication","ErrorAlert","Sidebar","StacHeader","onDataLoaded","detectLocaleFromBrowserFromVueX","supportedLocalesFromVueX","storeLocaleFromVueX","STAC_BROWSER_VERSION","setAttribute","$i18n","documentElement","deep","duplicated","oldRoot","canChange","doReset","doSet","onReady","detectLocale","parseQuery","afterEach","from","resetOp","$on","showError","setInterval","best","_params$state","privateFromHash","hash","private","realKey","localRequest","then","h","StacBrowser","$mount","productionTip","stacObjCounter","migrate","_id","_url","_path","_apiChildrenListeners","_incomplete","_apiChildren","list","Migrate","isItemCollection","hasApiData","setApiDataListener","listener","v","getChildren","priority","children","isMediaType","geojsonMediaType","post","field","available","hreflang","allowEmpty","rels","getAssetsWithRoles","matches","sources","getTitle","titleForHref","_linkToAbsolute","img","browserOnly","prefer","other","stacHierarchy","stacPagination","ogcQueryables","ogcRelPrefix","stacRequestOptions","headers","Accept","body","axiosOptions","axios","freeze","_error$response","commonFileNames","schemaMediaType","stacMediaTypes","browserImageTypes","cogMediaTypes","geotiffMediaTypes","browserProtocols","imageMediaTypes","mapMediaTypes","super","types","string","shortenTitle","fullStr","strLen","separator","sepLen","charsToShow","frontChars","Math","ceil","backChars","floor","isGdalVfsUri","normalizeUri","noParams","absoluteTo","normalize","str","uri1","uri2","maxLength","removeMd","el","rect","getBoundingClientRect","isVisible","innerHeight","bottom","scrollIntoView","behavior","block","dateFromUTC","offset","getTimezoneOffset","dateToUTC","formatDatetimeQuery","toISOString","formatSortbyForPOST","sortby","direction","pageLinks","pageLink","isEmpty","isFinite","limit","toJSON","removeQuery","toText","setQuery","preferFileName","filename","dir","directory","suffix","getValueFromObjectUsingPath","object","searchterm","and","splitChars","s","term","pattern","test","mergeDeep","isAxiosError","res","oldPath","redirectLegacyUrl","part","decode","newPath","webpackAsyncContext","req","__webpack_require__","resolve","e","ids","webpackContext","webpackContextResolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","call","m","webpackQueues","Symbol","webpackExports","webpackError","resolveQueue","d","r","wrapDeps","deps","dep","ret","hasAwait","currentDeps","outerResolve","reject","depQueues","Set","promise","rej","getResult","fnQueue","has","add","err","deferred","O","result","chunkIds","notFulfilled","Infinity","fulfilled","j","n","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","__proto__","ns","def","current","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","reduce","u","miniCssF","g","globalThis","hmd","prop","prototype","hasOwnProperty","dataWebpackPrefix","done","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","bind","toStringTag","nmd","paths","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file