= {}) {\n Object.assign(this, params);\n }\n\n shorten(s: string, symbols = 240): string {\n s = s.slice(0, symbols);\n const prefix = s.length >= symbols ? \"...\" : \"\";\n return `${s}${prefix}`;\n }\n\n getHtml(): string {\n let content = `\n ${this.title}
\n \n ${this.shorten(this.description)}\n
\n\n `;\n if (this.linkHref) {\n content += `\n \n ${this.linkLabel}\n \n `;\n }\n return content;\n }\n}\n\nexport function cityHighlightedData(v: VenueV2): string {\n const title = v.city || \"\";\n const description = \"\";\n const e = i18n.t(\"Explore\");\n const linkLabel = `${e} ${title}`;\n const linkHref = `/city/${v.id}`;\n\n const content = new HighlightedSectionContent({\n title,\n description,\n linkLabel,\n linkHref\n });\n return content.getHtml();\n}\n\nexport function countryHighlightedData(v: VenueV2): string {\n const title = v.name || \"\";\n const description = \"\";\n const e = i18n.t(\"Explore\");\n const linkLabel = `${e} ${title}`;\n const linkHref = `/country/${v.id}`;\n\n const content = new HighlightedSectionContent({\n title,\n description,\n linkLabel,\n linkHref\n });\n return content.getHtml();\n}\n\nexport function venueHighlightedData(v: VenueV2): string {\n const title = v.name || \"\";\n const description = v.description || \"\";\n const e = i18n.t(\"Explore\");\n const linkLabel = `${e} ${title}`;\n const linkHref = `/venues/${v.id}`;\n\n const content = new HighlightedSectionContent({\n title,\n description,\n linkLabel,\n linkHref\n });\n return content.getHtml();\n}\n\nexport function wayfinderHighlightedData(v: WayfinderV2): string {\n const title = v.name || \"\";\n const description = v.description || \"\";\n const e = i18n.t(\"Explore\");\n const linkLabel = `${e} ${title}`;\n const linkHref = `/wayfinders/${v.id}`;\n\n const content = new HighlightedSectionContent({\n title,\n description,\n linkLabel,\n linkHref\n });\n return content.getHtml();\n}\n\nexport function exhibitionHighlightedData(v: ExhibitionV2): string {\n const title = v.name || \"\";\n const description = v.description || \"\";\n const e = i18n.t(\"Explore\");\n const linkLabel = `${e} ${title}`;\n const linkHref = `/exhibitions/${v.id}`;\n\n const content = new HighlightedSectionContent({\n title,\n description,\n linkLabel,\n linkHref\n });\n return content.getHtml();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport {VenueV2, VizguType} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport {GetVenuesRequest, GetVenuesResponse} from \"@/types/api\";\nimport venuesApi from \"@/api/venues\";\nimport {\n cityHighlightedData,\n countryHighlightedData\n} from \"@/utils/highlighted-section\";\nimport {EventKeys} from \"@/store/modules/embedded\";\n\n@Component({\n components: {BasePageBanner, ItemSlideGroup, HighlightedSection}\n})\nexport default class Places extends Vue {\n initialDataLoading = false;\n itemWidth = 220;\n perPage = 20;\n\n venuesCountryList: VenueV2[] = [];\n venuesCityList: VenueV2[] = [];\n\n get hSections() {\n return {\n first: this.firstHighlightedSection,\n second: this.secondHighlightedSection\n };\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.venuesCountryList?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: countryHighlightedData(v)\n });\n }\n\n get secondHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.citiesData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: this.$t(\"New!\"),\n content: cityHighlightedData(v)\n });\n }\n\n get countriesData(): VenueV2[] {\n return this.venuesCountryList;\n }\n\n get citiesData(): VenueV2[] {\n return this.venuesCityList;\n }\n /*\n get countriesData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 1; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleCountry)\n );\n item.item1.id = `country-${i}`;\n data.push(item);\n }\n return data;\n }\n */\n\n /*\n get citiesData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 1; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleCity)\n );\n item.item1.id = `city-${i}`;\n data.push(item);\n }\n return data;\n }\n */\n\n get baseBannerData(): BasePageBannerData {\n return {\n imgUid: \"22408243-3b9c-479d-ad2d-903c25463144\",\n icon: \"venue\",\n title: this.$t(\"Places\"),\n subtitle: this.$t(\n \"Find your favorite places in the world and see all of the art and culture that they have to offer\"\n )\n };\n }\n\n goCountryPage(item: VenueV2) {\n this.$router.push(`/country/${item.id}`);\n }\n\n goCityPage(item: VenueV2) {\n this.$router.push(`/city/${item.id}`);\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadInitialData();\n }\n\n // lifecycle methods\n async created() {\n this.initialDataLoading = true;\n this.initListeners(true);\n await this.loadInitialData();\n this.initialDataLoading = false;\n }\n\n beforeDestroy() {\n this.initListeners(false);\n }\n\n // data load methods\n private async loadInitialData() {\n await Promise.all([\n this.requestPlacesCountry(true),\n this.requestPlacesCity(true)\n ]);\n }\n\n private async requestPlacesCountry(replace = false) {\n const params: GetVenuesRequest = {\n skip: this.venuesCountryList.length,\n take: this.perPage,\n type: VizguType.Country\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n const venues = resp.list.$values;\n if (replace) {\n this.venuesCountryList = venues;\n } else {\n this.venuesCountryList = this.venuesCountryList.concat(venues);\n }\n }\n\n private async requestPlacesCity(replace = false) {\n const params: GetVenuesRequest = {\n skip: this.venuesCityList.length,\n take: this.perPage,\n type: VizguType.City\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n const venues = resp.list.$values;\n if (replace) {\n this.venuesCityList = venues;\n } else {\n this.venuesCityList = this.venuesCityList.concat(venues);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Places.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Places.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Places.vue?vue&type=template&id=e1a3b7c8&\"\nimport script from \"./Places.vue?vue&type=script&lang=ts&\"\nexport * from \"./Places.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),(false)?_c('SelectSlider'):_vm._e(),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"All venues\"))+\" \")]),(false)?_c('div',[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Sort by\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Filters\"))+\" \")])],1):_vm._e()]),_c('div',{staticClass:\"mt-16\"},[_c('ListItemsV2',{key:\"1\",attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.venuesDataV2 && _vm.venuesDataV2.slice(0, 5),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\"},on:{\"onItemHref\":function (item) { return _vm.goVenuePage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [(_vm.venueOpenCloseDate(element))?_c('span',[_vm._v(\" \"+_vm._s(_vm.venueOpenCloseDate(element))+\" \")]):_vm._e()]}},{key:\"location\",fn:function(ref){\nvar element = ref.element;\nreturn [(_vm.venueLocation(element))?_c('span',[_vm._v(\" \"+_vm._s(_vm.venueLocation(element))+\" \")]):_vm._e()]}}])})],1),(_vm.hSections.first)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.first}})],1):_vm._e(),_c('div',[_c('ListItemsV2',{key:\"1\",attrs:{\"data-list\":_vm.venuesDataV2 && _vm.venuesDataV2.slice(5, 10),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\"},on:{\"onItemHref\":function (item) { return _vm.goVenuePage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [(_vm.venueOpenCloseDate(element))?_c('span',[_vm._v(\" \"+_vm._s(_vm.venueOpenCloseDate(element))+\" \")]):_vm._e()]}},{key:\"location\",fn:function(ref){\nvar element = ref.element;\nreturn [(_vm.venueLocation(element))?_c('span',[_vm._v(\" \"+_vm._s(_vm.venueLocation(element))+\" \")]):_vm._e()]}}])})],1),(_vm.hSections.second)?_c('div',{staticClass:\"mt-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.second}})],1):_vm._e(),_c('div',{staticClass:\"mt-16\"},[_c('ListItemsV2',{key:\"1\",attrs:{\"data-list\":_vm.venuesDataV2 && _vm.venuesDataV2.slice(10),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"appendLoadngSkeletons\":_vm.loadMoreSkeletonsCount,\"card-top-icon\":\"place-location\"},on:{\"onItemHref\":function (item) { return _vm.goVenuePage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [(_vm.venueOpenCloseDate(element))?_c('span',[_vm._v(\" \"+_vm._s(_vm.venueOpenCloseDate(element))+\" \")]):_vm._e()]}},{key:\"location\",fn:function(ref){\nvar element = ref.element;\nreturn [(_vm.venueLocation(element))?_c('span',[_vm._v(\" \"+_vm._s(_vm.venueLocation(element))+\" \")]):_vm._e()]}}])})],1),_c('div',{staticClass:\"flex justify-center mt-14\"},[(_vm.hasMore)?_c('v-btn',{staticClass:\"bg-dark text-white rounded-none h-12 w-32\",attrs:{\"loading\":_vm.loaders.loadingMoreVenues,\"depressed\":\"\"},on:{\"click\":function($event){return _vm.requestVenues()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Show more\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inner-container\"},[(_vm.loading)?_c('div',{staticClass:\"grid grid-cols-2 md:flex md:flex-wrap max-w-max gap-y-9 gap-x-5\"},_vm._l((10),function(i){return _c('CardItemSkeleton',{key:i,attrs:{\"width\":_vm.itemWidth}})}),1):_c('div',{staticClass:\"grid grid-cols-2 md:flex md:flex-wrap max-w-max gap-y-9\"},[_vm._l((_vm.dataList),function(element){return _c('div',{key:element.id,staticClass:\"pr-5\"},[_c('v-card',{staticClass:\"cursor-pointer\",attrs:{\"flat\":\"\",\"width\":_vm.itemWidth}},[(_vm.itemImage(element))?_c('div',{staticClass:\"relative\",on:{\"click\":function($event){return _vm.handleItemHref(element)}}},[_c('GUIDImage',{staticClass:\"object-center object-cover w-full rounded-3xl hover:opacity-60\",attrs:{\"image-uid\":_vm.itemImage(element),\"imageAPI\":_vm.imageAPI,\"rounded\":true,\"height\":_vm.imageHeight}}),_c('div',{staticClass:\"absolute top-0 left-0 bg-dark px-3 py-2\"},[_c('v-icon',{staticClass:\"text-white\",attrs:{\"size\":\"20\"}},[_vm._v(_vm._s(_vm.cardTopIcon))])],1)],1):_vm._e(),_c('div',{staticClass:\"ml-3 mt-2\"},[_c('div',{staticClass:\"font-medium tracking-wide md:text-lg text-sm\",on:{\"click\":function($event){return _vm.handleItemHref(element)}}},[_vm._t(\"title\",function(){return [_vm._v(\" \"+_vm._s(element.name)+\" \")]},{\"element\":element})],2),(_vm.useSubtitle)?_c('div',{staticClass:\"text-gray-600 text-sm\"},[_vm._t(\"subtitle\",null,{\"element\":element})],2):_vm._e(),(_vm.useLocation)?_c('div',[_c('v-icon',{staticClass:\"text-primary bg-white\",attrs:{\"size\":\"20\"}},[_vm._v(\"place-location\")]),_c('span',{staticClass:\"font-medium text-sm\"},[_vm._t(\"location\",null,{\"element\":element})],2)],1):_vm._e()])])],1)}),_vm._l((_vm.appendLoadngSkeletons),function(sk){return _c('div',{key:sk,staticClass:\"pr-5\"},[_c('CardItemSkeleton',{attrs:{\"width\":_vm.itemWidth}})],1)})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {BaseDataV2, VizguType} from \"@/types/vizgu\";\n// import {ItemTuple} from \"@/types/homepage\";\nimport {getItemHrefFromBaseData} from \"@/utils/routing\";\nimport {isMobile} from \"@/utils/dom\";\nimport {ImageAPI} from \"@/utils/image-utils\";\nimport CardItemSkeleton from \"./CardItemSkeleton.vue\";\n\n@Component({\n components: {GUIDImage, CardItemSkeleton}\n})\nexport default class ListItems extends Vue {\n @Prop() dataList!: BaseDataV2;\n @Prop({required: false, type: Boolean, default: false}) loading!: boolean;\n @Prop() title!: string;\n @Prop({type: Boolean, required: false, default: true}) useSubtitle!: boolean;\n @Prop({type: Boolean, required: false, default: false}) useLocation!: boolean;\n @Prop() itemWidth!: number;\n @Prop({type: String, required: false, default: \"venue\"}) cardTopIcon!: number;\n @Prop({type: Boolean, default: true}) useVizguTypeRouting!: boolean;\n @Prop({default: undefined, required: false}) contentType!: VizguType;\n @Prop({default: undefined, required: false}) imageSrcHandler!: (\n el: BaseDataV2 | any\n ) => string;\n @Prop({required: false, default: undefined}) imageAPI?: ImageAPI;\n @Prop({required: false, default: 0}) appendLoadngSkeletons!: number;\n\n itemImage(v: BaseDataV2) {\n if (this.imageSrcHandler) {\n return this.imageSrcHandler(v);\n }\n return v?.imageGuids?.$values?.[0] || null;\n }\n\n get imageHeight(): number {\n return isMobile() ? 110 : 150;\n }\n\n handleItemHref(item: BaseDataV2) {\n if (this.useVizguTypeRouting) {\n const r = getItemHrefFromBaseData(item, this.contentType);\n this.$router.push(r);\n } else {\n this.$emit(\"onItemHref\", item);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItemsV2.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItemsV2.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListItemsV2.vue?vue&type=template&id=79e783c2&\"\nimport script from \"./ListItemsV2.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListItemsV2.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VCard,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-slide-group',{staticClass:\"v-slide-select-button max-w-screen-xl h-10 mx-auto\"},_vm._l((_vm.items),function(item,index){return _c('v-slide-item',{key:index,staticClass:\"h-10\"},[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none mx-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(item.label)+\" \")])],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Prop} from \"vue-property-decorator\";\nexport interface SelectItem {\n value: string;\n label: string;\n}\nexport const sampleSelectItems: SelectItem[] = [\n {value: \"all\", label: \"All\"},\n ...Array(30).fill({value: \"aalborg\", label: \"Aalborg\"})\n];\n@Component\nexport default class SelectSlider extends Vue {\n @Prop({type: Array, required: false, default: () => sampleSelectItems})\n items!: SelectItem[];\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSlider.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SelectSlider.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SelectSlider.vue?vue&type=template&id=6aa4267f&\"\nimport script from \"./SelectSlider.vue?vue&type=script&lang=ts&\"\nexport * from \"./SelectSlider.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSlideGroup } from 'vuetify/lib/components/VSlideGroup';\nimport { VSlideItem } from 'vuetify/lib/components/VSlideGroup';\ninstallComponents(component, {VBtn,VSlideGroup,VSlideItem})\n","export type TCountry = {\n name: Country;\n label: string;\n icon: string;\n phoneCode: string;\n};\n\nexport enum Country {\n Denmark = \"Denmark\",\n Switzerland = \"Switzerland\",\n France = \"France\",\n Germany = \"Germany\",\n Sweden = \"Sweden\",\n Netherlands = \"Netherlands\",\n Finland = \"Finland\",\n Canada = \"Canada\",\n Belgium = \"Belgium\",\n Ireland = \"Ireland\",\n Austria = \"Austria\",\n Norway = \"Norway\",\n Luxembourg = \"Luxembourg\",\n Spain = \"Spain\",\n UnitedKingdom = \"UnitedKingdom\",\n UnitedStates = \"UnitedStates\",\n Cyprus = \"Cyprus\",\n Slovenia = \"Slovenia\",\n Australia = \"Australia\",\n NewZealand = \"NewZealand\",\n Iceland = \"Iceland\",\n Bulgaria = \"Bulgaria\",\n Estonia = \"Estonia\",\n Hungary = \"Hungary\",\n Italy = \"Italy\",\n Singapore = \"Singapore\",\n Lithuania = \"Lithuania\",\n Poland = \"Poland\",\n CzechRepublic = \"CzechRepublic\",\n Portugal = \"Portugal\",\n Croatia = \"Croatia\",\n Malta = \"Malta\",\n Slovakia = \"Slovakia\",\n Chile = \"Chile\",\n Japan = \"Japan\",\n Latvia = \"Latvia\",\n Greece = \"Greece\",\n SouthKorea = \"SouthKorea\",\n Serbia = \"Serbia\",\n Moldova = \"Moldova\",\n Romania = \"Romania\",\n Montenegro = \"Montenegro\",\n Armenia = \"Armenia\",\n SouthAfrica = \"SouthAfrica\",\n Uruguay = \"Uruguay\",\n Cuba = \"Cuba\",\n India = \"India\",\n Russia = \"Russia\",\n Ukraine = \"Ukraine\",\n China = \"China\",\n Malaysia = \"Malaysia\",\n CostaRica = \"CostaRica\",\n BosniaandHerzegovina = \"BosniaandHerzegovina\"\n}\n\nconst C = Country;\n\nexport const COUNTRIES = [\n {\n name: C.Denmark,\n label: C.Denmark,\n icon: \"emojione-v1:flag-for-denmark\",\n phoneCode: \"+45\"\n },\n {\n name: C.Switzerland,\n label: C.Switzerland,\n icon: \"emojione-v1:flag-for-switzerland\",\n phoneCode: \"+41\"\n },\n {\n name: C.France,\n label: C.France,\n icon: \"emojione-v1:flag-for-france\",\n phoneCode: \"+33\"\n },\n {\n name: C.Germany,\n label: C.Germany,\n icon: \"emojione-v1:flag-for-germany\",\n phoneCode: \"+49\"\n },\n {\n name: C.Sweden,\n label: C.Sweden,\n icon: \"emojione-v1:flag-for-sweden\",\n phoneCode: \"+46\"\n },\n {\n name: C.Netherlands,\n label: C.Netherlands,\n icon: \"emojione-v1:flag-for-netherlands\",\n phoneCode: \"+31\"\n },\n {\n name: C.Finland,\n label: C.Finland,\n icon: \"emojione-v1:flag-for-finland\",\n phoneCode: \"+358\"\n },\n {\n name: C.Canada,\n label: C.Canada,\n icon: \"emojione-v1:flag-for-canada\",\n phoneCode: \"+1\"\n },\n {\n name: C.Belgium,\n label: C.Belgium,\n icon: \"emojione-v1:flag-for-belgium\",\n phoneCode: \"+32\"\n },\n {\n name: C.Ireland,\n label: C.Ireland,\n icon: \"emojione-v1:flag-for-ireland\",\n phoneCode: \"+353\"\n },\n {\n name: C.Austria,\n label: C.Austria,\n icon: \"emojione-v1:flag-for-austria\",\n phoneCode: \"+43\"\n },\n {\n name: C.Norway,\n label: C.Norway,\n icon: \"emojione-v1:flag-for-norway\",\n phoneCode: \"+47\"\n },\n {\n name: C.Luxembourg,\n label: C.Luxembourg,\n icon: \"emojione-v1:flag-for-luxembourg\",\n phoneCode: \"+352\"\n },\n {\n name: C.Spain,\n label: C.Spain,\n icon: \"emojione-v1:flag-for-spain\",\n phoneCode: \"+34\"\n },\n {\n name: C.UnitedKingdom,\n label: C.UnitedKingdom,\n icon: \"emojione-v1:flag-for-united-kingdom\",\n phoneCode: \"+44\"\n },\n {\n name: C.UnitedStates,\n label: C.UnitedStates,\n icon: \"emojione-v1:flag-for-united-states\",\n phoneCode: \"+1\"\n },\n {\n name: C.Cyprus,\n label: C.Cyprus,\n icon: \"emojione-v1:flag-for-cyprus\",\n phoneCode: \"+357\"\n },\n {\n name: C.Slovenia,\n label: C.Slovenia,\n icon: \"emojione-v1:flag-for-slovenia\",\n phoneCode: \"+386\"\n },\n {\n name: C.Australia,\n label: C.Australia,\n icon: \"emojione-v1:flag-for-australia\",\n phoneCode: \"+61\"\n },\n {\n name: C.NewZealand,\n label: C.NewZealand,\n icon: \"emojione-v1:flag-for-new-zealand\",\n phoneCode: \"+64\"\n },\n {\n name: C.Iceland,\n label: C.Iceland,\n icon: \"emojione-v1:flag-for-iceland\",\n phoneCode: \"+354\"\n },\n {\n name: C.Bulgaria,\n label: C.Bulgaria,\n icon: \"emojione-v1:flag-for-bulgaria\",\n phoneCode: \"+359\"\n },\n {\n name: C.Estonia,\n label: C.Estonia,\n icon: \"emojione-v1:flag-for-estonia\",\n phoneCode: \"+372\"\n },\n {\n name: C.Hungary,\n label: C.Hungary,\n icon: \"emojione-v1:flag-for-hungary\",\n phoneCode: \"+36\"\n },\n {\n name: C.Italy,\n label: C.Italy,\n icon: \"emojione-v1:flag-for-italy\",\n phoneCode: \"+39\"\n },\n {\n name: C.Singapore,\n label: C.Singapore,\n icon: \"emojione-v1:flag-for-singapore\",\n phoneCode: \"+65\"\n },\n {\n name: C.Lithuania,\n label: C.Lithuania,\n icon: \"emojione-v1:flag-for-lithuania\",\n phoneCode: \"+370\"\n },\n {\n name: C.Poland,\n label: C.Poland,\n icon: \"emojione-v1:flag-for-poland\",\n phoneCode: \"+48\"\n },\n {\n name: C.Croatia,\n label: C.Croatia,\n icon: \"emojione-v1:flag-for-croatia\",\n phoneCode: \"+385\"\n },\n {\n name: C.Malta,\n label: C.Malta,\n icon: \"emojione-v1:flag-for-malta\",\n phoneCode: \"+356\"\n },\n {\n name: C.Slovakia,\n label: C.Slovakia,\n icon: \"emojione-v1:flag-for-slovakia\",\n phoneCode: \"+421\"\n },\n {\n name: C.Chile,\n label: C.Chile,\n icon: \"emojione-v1:flag-for-chile\",\n phoneCode: \"+56\"\n },\n {\n name: C.Japan,\n label: C.Japan,\n icon: \"emojione-v1:flag-for-japan\",\n phoneCode: \"+81\"\n },\n {\n name: C.Latvia,\n label: C.Latvia,\n icon: \"emojione-v1:flag-for-latvia\",\n phoneCode: \"+371\"\n },\n {\n name: C.Greece,\n label: C.Greece,\n icon: \"emojione-v1:flag-for-greece\",\n phoneCode: \"+30\"\n },\n {\n name: C.SouthKorea,\n label: C.SouthKorea,\n icon: \"emojione-v1:flag-for-south-korea\",\n phoneCode: \"+82\"\n },\n {\n name: C.Serbia,\n label: C.Serbia,\n icon: \"emojione-v1:flag-for-serbia\",\n phoneCode: \"+381\"\n },\n {\n name: C.Moldova,\n label: C.Moldova,\n icon: \"emojione-v1:flag-for-moldova\",\n phoneCode: \"+373\"\n },\n {\n name: C.Romania,\n label: C.Romania,\n icon: \"emojione-v1:flag-for-romania\",\n phoneCode: \"+40\"\n },\n {\n name: C.Montenegro,\n label: C.Montenegro,\n icon: \"emojione-v1:flag-for-montenegro\",\n phoneCode: \"+382\"\n },\n {\n name: C.Armenia,\n label: C.Armenia,\n icon: \"emojione-v1:flag-for-armenia\",\n phoneCode: \"+374\"\n },\n {\n name: C.SouthAfrica,\n label: C.SouthAfrica,\n icon: \"emojione-v1:flag-for-south-africa\",\n phoneCode: \"+27\"\n },\n {\n name: C.Uruguay,\n label: C.Uruguay,\n icon: \"emojione-v1:flag-for-uruguay\",\n phoneCode: \"+598\"\n },\n {\n name: C.Cuba,\n label: C.Cuba,\n icon: \"emojione-v1:flag-for-cuba\",\n phoneCode: \"+53\"\n },\n {\n name: C.India,\n label: C.India,\n icon: \"emojione-v1:flag-for-india\",\n phoneCode: \"+91\"\n },\n {\n name: C.Russia,\n label: C.Russia,\n icon: \"emojione-v1:flag-for-russia\",\n phoneCode: \"+7\"\n },\n {\n name: C.Ukraine,\n label: C.Ukraine,\n icon: \"emojione-v1:flag-for-ukraine\",\n phoneCode: \"+380\"\n },\n {\n name: C.China,\n label: C.China,\n icon: \"emojione-v1:flag-for-china\",\n phoneCode: \"+86\"\n },\n {\n name: C.Malaysia,\n label: C.Malaysia,\n icon: \"emojione-v1:flag-for-malaysia\",\n phoneCode: \"+60\"\n },\n {\n name: C.CostaRica,\n label: C.CostaRica,\n icon: \"emojione-v1:flag-for-costa-rica\",\n phoneCode: \"+506\"\n },\n {\n name: C.BosniaandHerzegovina,\n label: C.BosniaandHerzegovina,\n icon: \"emojione-v1:flag-for-bosnia-and-herzegovina\",\n phoneCode: \"+387\"\n }\n] as Array;\n","import {BaseDataV2, VenueV2} from \"@/types/vizgu\";\nimport i18n from \"@/plugins/i18n\";\n\nexport {Country, COUNTRIES, TCountry} from \"./data/countries\";\n\nexport function parseXmlDataToString(v: string) {\n v = v.replace(/\\s*<.*?>\\s*/g, \"\");\n v = v.replace(\"\\n\", \"
\n parseXmlDataToString(v.textData)\n );\n return items.join(\"
\");\n }\n return \"\";\n}\n\nconst Day = {\n Monday: i18n.t(\"Monday\"),\n Tuesday: i18n.t(\"Tuesday\"),\n Wednesday: i18n.t(\"Wednesday\"),\n Thursday: i18n.t(\"Thursday\"),\n Friday: i18n.t(\"Friday\"),\n Saturday: i18n.t(\"Saturday\"),\n Sunday: i18n.t(\"Sunday\")\n};\n\nexport function venueHoursOpenCloseNormalize(v: string) {\n return v;\n}\n\nexport function venueHoursOpenCloseList(currentVenue: VenueV2): string[] {\n const nrm = (v: string) => venueHoursOpenCloseNormalize(v);\n const res: string[] = [];\n const hrs = currentVenue.openingHours;\n if (!hrs) {\n return [];\n }\n hrs.monday &&\n hrs.mondayClose &&\n res.push(`${Day.Monday}: ${nrm(hrs.monday)} - ${nrm(hrs.mondayClose)}`);\n hrs.tuesday &&\n hrs.tuesdayClose &&\n res.push(`${Day.Tuesday}: ${nrm(hrs.tuesday)} - ${nrm(hrs.tuesdayClose)}`);\n hrs.wednesday &&\n hrs.wednesdayClose &&\n res.push(\n `${Day.Wednesday}: ${nrm(hrs.wednesday)} - ${nrm(hrs.wednesdayClose)}`\n );\n hrs.thursday &&\n hrs.thursdayClose &&\n res.push(\n `${Day.Thursday}: ${nrm(hrs.thursday)} - ${nrm(hrs.thursdayClose)}`\n );\n hrs.friday &&\n hrs.fridayClose &&\n res.push(`${Day.Friday}: ${nrm(hrs.friday)} - ${nrm(hrs.fridayClose)}`);\n hrs.saturday &&\n hrs.saturdayClose &&\n res.push(\n `${Day.Saturday}: ${nrm(hrs.saturday)} - ${nrm(hrs.saturdayClose)}`\n );\n hrs.sunday &&\n hrs.sundayClose &&\n res.push(`${Day.Sunday}: ${nrm(hrs.sunday)} - ${nrm(hrs.sundayClose)}`);\n return res;\n}\n\nexport function venueTodayOpenClose(currentVenue: VenueV2): string | null {\n // TODO: improve further\n const open = currentVenue?.openingHours?.wednesday?.substring(0, 5);\n const close = currentVenue?.openingHours?.wednesdayClose?.substring(0, 5);\n const l = i18n.t(\"Open today\");\n if (open && close) {\n return `${l} ${open} - ${close}`;\n }\n // opening info\n const openingInfo = currentVenue?.openingInfo?.displayText;\n return openingInfo || null;\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItemsV2 from \"@/components/ListItemsV2.vue\";\n// import {ItemTuple} from \"@/types/homepage\";\nimport {BaseDataV2, VenueV2} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\nimport venuesApi from \"@/api/venues\";\nimport {GetVenuesRequest, GetVenuesResponse} from \"@/types/api\";\nimport {venueHighlightedData} from \"@/utils/highlighted-section\";\nimport {EventKeys} from \"@/store/modules/embedded\";\nimport {venueTodayOpenClose} from \"@/utils/data\";\n\n@Component({\n components: {BasePageBanner, ListItemsV2, HighlightedSection, SelectSlider}\n})\nexport default class Venues extends Vue {\n totalItems = 0;\n perPage = 20;\n itemWidth = 200;\n initialDataLoaded = false;\n\n venuesList: VenueV2[] = [];\n popularVenue: VenueV2 | null = null;\n\n loaders = {\n loadingMoreVenues: false\n };\n\n get loadMoreSkeletonsCount() {\n return this.loaders.loadingMoreVenues ? 10 : 0;\n }\n\n l = this.$t(\"Open today\");\n\n venueLocation(currentVenue: VenueV2): string | null {\n // const address = currentVenue?.address || \"\";\n // const country = \", \" + currentVenue?.country || \"\";\n // return `${address}${country}`;\n return currentVenue?.country || null;\n }\n\n get hasMore() {\n return this.totalItems > this.venuesList.length;\n }\n\n get popularDescription(): string | null {\n return this.popularVenue?.description || null;\n }\n\n get popularCity(): string | null {\n return this.popularVenue?.city || null;\n }\n\n get popularImgSrc(): string | undefined {\n return this.popularVenue?.imageGuids.$values[0];\n }\n\n get hSections() {\n return {\n first: this.firstHighlightedSection,\n second: this.secondHighlightedSection\n };\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.venuesList?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: venueHighlightedData(v)\n });\n }\n\n get secondHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.venuesList?.[1];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"New!\",\n content: venueHighlightedData(v)\n });\n }\n\n /*\n exampleVenue: ItemTuple = {\n item1: {\n name: \"Koldinghus\",\n position: null,\n canReview: false,\n extra: null,\n like: null,\n id: \"123\",\n imageGuids: [\"9f3de6ba-22eb-4a51-bc07-6ff7bfd15531\"],\n isLocked: true,\n rating: 4.5,\n thumbImageURL: null,\n vizguType: VizguType.Venue\n },\n item2: 1\n };\n */\n\n venueOpenCloseDate(currentVenue: VenueV2) {\n return venueTodayOpenClose(currentVenue);\n }\n\n /*\n get venuesData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 0; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleVenue)\n );\n item.item1.id = `venue-${i}`;\n data.push(item);\n }\n return data;\n }\n */\n\n get venuesDataV2(): BaseDataV2[] {\n return this.venuesList;\n }\n\n get baseBannerData(): BasePageBannerData {\n return {\n imgUid: \"fdab8a01-0184-485d-8373-19989bf550f5\",\n icon: \"venue\",\n title: this.$t(\"Venues\"),\n subtitle: this.$t(\n \"Find all the coolest venues in the world and see all the art and culture they have to offer\"\n )\n };\n }\n\n goVenuePage(item: BaseDataV2) {\n this.$router.push(`/venues/${item.extra || item.id}`);\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadInitialData();\n }\n\n // lifecycle methods\n created() {\n this.initListeners(true);\n this.loadInitialData();\n }\n beforeDestroy() {\n this.initListeners(false);\n }\n\n // data load methods\n private async loadInitialData() {\n await this.requestVenues(true);\n this.initialDataLoaded = true;\n }\n\n private async requestVenues(replace = false) {\n if (replace && !this.hasMore && this.initialDataLoaded) {\n return;\n }\n try {\n !replace && (this.loaders.loadingMoreVenues = true);\n const params: GetVenuesRequest = {\n skip: this.venuesList.length,\n take: this.perPage\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n this.totalItems = resp.count;\n if (replace) {\n this.venuesList = resp.list.$values;\n } else {\n this.venuesList = this.venuesList.concat(resp.list.$values);\n }\n } finally {\n this.loaders.loadingMoreVenues = false;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Venues.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Venues.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Venues.vue?vue&type=template&id=e487f530&\"\nimport script from \"./Venues.vue?vue&type=script&lang=ts&\"\nexport * from \"./Venues.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),(false)?_c('SelectSlider'):_vm._e(),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"All events\"))+\" \")]),(false)?_c('div',[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Sort by\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Filters\"))+\" \")])],1):_vm._e()]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{key:\"1\",attrs:{\"data-list\":_vm.eventsData.slice(0, 3),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"event\"},on:{\"onItemHref\":function (item) { return _vm.goEventPage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 6 Jan 2022 \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Copenhagen \")]}}])})],1),_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"imageTooltipText\":\"Popular!\",\"imageTopIcon\":\"place-location\"}},[_c('h2',[_vm._v(\" Popular right now! \")]),_c('div',{staticClass:\"text-sm max-w-sm\"},[_vm._v(\" Visit Denmarks capitol, a place of great art and culture: Copenhagen \")]),_c('div',{staticClass:\"font-roboto text-sm\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"City\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"event\")]),_c('span',[_vm._v(\"Copenhagen\")])],1),_c('div',{staticClass:\"hidden md:flex flex-row cursor-pointer items-center\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\"22 \"+_vm._s(_vm.$t(\"events & activities\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$next\")])],1)])],1),_c('div',[_c('ListItems',{key:\"1\",attrs:{\"data-list\":_vm.eventsData.slice(0, 6),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"event\"},on:{\"onItemHref\":function (item) { return _vm.goEventPage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 6 Jan 2022 \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Copenhagen \")]}}])})],1),_c('div',{staticClass:\"mt-16\"},[_c('HighlightedSection',{attrs:{\"imageTooltipText\":_vm.$t('Popular!'),\"imageTopIcon\":\"place-location\",\"hideImageTooltip\":true}},[_c('h2',[_vm._v(\" Events to check out \")]),_c('div',{staticClass:\"text-sm max-w-sm\"}),_c('div',{staticClass:\"font-roboto text-sm\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"Country\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"event\")]),_c('span',[_vm._v(\"Denmark\")])],1),_c('div',{staticClass:\"hidden md:flex flex-row cursor-pointer items-center\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\"287 \"+_vm._s(_vm.$t(\"events & activities\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$next\")])],1)])],1),_c('div',{staticClass:\"flex justify-center mt-14\"},[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none h-12 w-32\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Show more\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-wrap max-w-max gap-y-9\"},_vm._l((_vm.dataList),function(element){return _c('div',{key:element.item1.id,staticClass:\"pr-5\"},[_c('v-card',{staticClass:\"cursor-pointer\",attrs:{\"flat\":\"\",\"width\":_vm.itemWidth}},[_c('div',{staticClass:\"relative\",on:{\"click\":function($event){return _vm.handleItemHref(element)}}},[_c('GUIDImage',{staticClass:\"object-center object-cover w-full rounded-3xl hover:opacity-60\",attrs:{\"image-uid\":element.item1.imageGuids[0],\"rounded\":true,\"height\":150}}),_c('div',{staticClass:\"absolute top-0 left-0 bg-dark px-3 py-2\"},[_c('v-icon',{staticClass:\"text-white\",attrs:{\"size\":\"20\"}},[_vm._v(_vm._s(_vm.cardTopIcon))])],1)],1),_c('div',{staticClass:\"ml-3 mt-2\"},[_c('div',{staticClass:\"font-medium tracking-wide text-lg\",on:{\"click\":function($event){return _vm.handleItemHref(element)}}},[_vm._v(\" \"+_vm._s(element.item1.name)+\" \")]),(_vm.useSubtitle)?_c('div',{staticClass:\"text-gray-600 text-sm\"},[_vm._t(\"subtitle\",null,{\"element\":element})],2):_vm._e(),(_vm.useLocation)?_c('div',[_c('v-icon',{staticClass:\"text-primary bg-white\",attrs:{\"size\":\"20\"}},[_vm._v(\"place-location\")]),_c('span',{staticClass:\"font-medium text-sm\"},[_vm._t(\"location\")],2)],1):_vm._e()])])],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {BaseData} from \"@/types/vizgu\";\nimport {ItemTuple} from \"@/types/homepage\";\n\n@Component({\n components: {GUIDImage}\n})\nexport default class ListItems extends Vue {\n @Prop() dataList!: ItemTuple[];\n @Prop() title!: string;\n @Prop({type: Boolean, required: false, default: true}) useSubtitle!: boolean;\n @Prop({type: Boolean, required: false, default: false}) useLocation!: boolean;\n @Prop() itemWidth!: number;\n @Prop({type: String, required: false, default: \"venue\"}) cardTopIcon!: number;\n\n handleItemHref(item: ItemTuple) {\n this.$emit(\"onItemHref\", item);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItems.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItems.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListItems.vue?vue&type=template&id=86284d4e&\"\nimport script from \"./ListItems.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListItems.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VCard,VIcon})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItems from \"@/components/ListItems.vue\";\nimport {ItemTuple} from \"@/types/homepage\";\nimport {BaseData, VizguType} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\n\n@Component({\n components: {BasePageBanner, ListItems, HighlightedSection, SelectSlider}\n})\nexport default class Events extends Vue {\n itemWidth = 340;\n\n exampleEvent: ItemTuple = {\n item1: {\n name: \"The Great Library of Nineveh with Irving Finkel\",\n position: null,\n canReview: false,\n extra: null,\n like: null,\n id: \"123\",\n imageGuids: [\"9f3de6ba-22eb-4a51-bc07-6ff7bfd15531\"],\n isLocked: true,\n rating: 4.5,\n thumbImageURL: null,\n vizguType: VizguType.Event\n },\n item2: 1\n };\n\n get eventsData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 0; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleEvent)\n );\n item.item1.id = `event-${i}`;\n data.push(item);\n }\n return data;\n }\n\n baseBannerData: BasePageBannerData = {\n imgUid: \"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\n icon: \"event\",\n title: \"Events\",\n subtitle: `Find and book the most exciting and cool art\n and culture events around the world!\n `\n };\n\n goEventPage(item: ItemTuple) {\n this.$router.push(\"/event\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Events.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Events.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Events.vue?vue&type=template&id=cb146fa2&\"\nimport script from \"./Events.vue?vue&type=script&lang=ts&\"\nexport * from \"./Events.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData,\"subtitle-class\":\"mt-7 text-white text-2xl max-w-4xl\"}}),(false)?_c('SelectSlider'):_vm._e(),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"All wayfinders\"))+\" \")]),(false)?_c('div',[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Sort by\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Filters\"))+\" \")])],1):_vm._e()]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.wayfindersData.slice(0, 5),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"wayfinder\"},on:{\"onItemHref\":function (item) { return _vm.goWayfinderPage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.durationLabel(element))+\" \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Kolding \")]}}])})],1),(_vm.hSections.first)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.first}})],1):_vm._e(),_c('div',[_c('ListItems',{attrs:{\"data-list\":_vm.wayfindersData.slice(5, 10),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"wayfinder\"},on:{\"onItemHref\":function (item) { return _vm.goWayfinderPage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.durationLabel(element))+\" \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Kolding \")]}}])})],1),(_vm.hSections.second)?_c('div',{staticClass:\"mt-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.second}})],1):_vm._e(),_c('div',{staticClass:\"mt-14\"},[_c('ListItems',{attrs:{\"data-list\":_vm.wayfindersData.slice(10),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"appendLoadngSkeletons\":_vm.loadMoreSkeletonsCount,\"card-top-icon\":\"wayfinder\"},on:{\"onItemHref\":function (item) { return _vm.goWayfinderPage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.durationLabel(element))+\" \")]}},{key:\"location\",fn:function(ref){return undefined}}])})],1),(_vm.hasMore)?_c('div',{staticClass:\"flex justify-center mt-14\"},[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none h-12 w-32\",attrs:{\"loading\":_vm.loaders.loadingMoreWayfinders,\"depressed\":\"\"},on:{\"click\":function($event){return _vm.requestWayfinders()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Show more\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import HttpClient from \"./client\";\nimport {GetWayfindersResponse, GetWayfindersRequest} from \"@/types/api\";\nimport {WayfinderV2} from \"@/types/vizgu\";\nimport {embeddedStore} from \"@/store\";\n\nclass WayfindersApi extends HttpClient {\n public getWayfinders = async (\n params: GetWayfindersRequest\n ): Promise => {\n params.language = embeddedStore.apiLocaleFromI18n;\n const {data} = await this.client.get(\n \"/wayfinder/list\",\n {params: params}\n );\n return data;\n };\n public getWayfinder = async (id: string): Promise => {\n const {data} = await this.client.get(\"/wayfinder\", {\n params: {\n id: id,\n language: embeddedStore.apiLocaleFromI18n\n }\n });\n return data;\n };\n}\n\nconst wayfindersApi = new WayfindersApi();\nexport default wayfindersApi;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItems from \"@/components/ListItemsV2.vue\";\nimport {BaseDataV2, WayfinderV2} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\nimport wayfindersApi from \"@/api/wayfinders\";\nimport {GetWayfindersRequest, GetWayfindersResponse} from \"@/types/api\";\nimport {wayfinderHighlightedData} from \"@/utils/highlighted-section\";\nimport {EventKeys} from \"@/store/modules/embedded\";\n\n@Component({\n components: {BasePageBanner, ListItems, HighlightedSection, SelectSlider}\n})\nexport default class Wayfinders extends Vue {\n totalItems = 0;\n perPage = 10;\n itemWidth = 200;\n initialDataLoaded = false;\n\n showMoreWayfinders = false;\n\n wayfinderList: WayfinderV2[] = [];\n\n loaders = {\n loadingMoreWayfinders: false\n };\n\n get loadMoreSkeletonsCount() {\n return this.loaders.loadingMoreWayfinders ? 10 : 0;\n }\n\n durationLabel(e: BaseDataV2) {\n return \"\";\n }\n\n get hasMore() {\n return this.totalItems > this.wayfinderList.length;\n }\n\n get wayfindersData(): WayfinderV2[] {\n return this.wayfinderList;\n }\n\n get hSections() {\n return {\n first: this.firstHighlightedSection,\n second: this.secondHighlightedSection\n };\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.wayfinderList?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: wayfinderHighlightedData(v)\n });\n }\n\n get secondHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.wayfinderList?.[1];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"New!\",\n content: wayfinderHighlightedData(v)\n });\n }\n\n get baseBannerData(): BasePageBannerData {\n return {\n imgUid: \"3b716bdd-0a7e-4365-854f-2321b0f7946f\",\n icon: \"wayfinder\",\n title: this.$t(\"Wayfinders\"),\n subtitle: this.$t(\n \"Wayfinders are an exciting way to be guided around cities or wayfinders with cool stories around every corner - and sometimes even involves AR experiences!\"\n )\n };\n }\n\n goWayfinderPage(item: BaseDataV2) {\n this.$router.push(`/wayfinders/${item.id}`);\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadInitialData();\n }\n\n // lifecycle methods\n created() {\n this.initListeners(true);\n this.loadInitialData();\n }\n\n beforeDestroy() {\n this.initListeners(false);\n }\n\n // data load methods\n private async loadInitialData() {\n await this.requestWayfinders(true);\n this.initialDataLoaded = true;\n }\n\n private async requestWayfinders(replace = false) {\n if (!replace && !this.hasMore && this.initialDataLoaded) {\n return;\n }\n try {\n !replace && (this.loaders.loadingMoreWayfinders = true);\n const params: GetWayfindersRequest = {\n skip: this.wayfinderList.length,\n take: this.perPage\n };\n const resp: GetWayfindersResponse = await wayfindersApi.getWayfinders(\n params\n );\n this.totalItems = resp.count;\n const data: WayfinderV2[] = resp.list.$values;\n if (replace) {\n this.wayfinderList = data;\n } else {\n this.wayfinderList = this.wayfinderList.concat(data);\n }\n this.totalItems = resp.count;\n } finally {\n this.loaders.loadingMoreWayfinders = false;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wayfinders.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wayfinders.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Wayfinders.vue?vue&type=template&id=4ced8dcc&\"\nimport script from \"./Wayfinders.vue?vue&type=script&lang=ts&\"\nexport * from \"./Wayfinders.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),(false)?_c('SelectSlider'):_vm._e(),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"All exhibitions\"))+\" \")]),(false)?_c('div',[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Sort by\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Filters\"))+\" \")])],1):_vm._e()]),_c('div',{staticClass:\"mt-16\"},[_c('ListItemsV2',{key:\"1\",attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.exhibitionsDataV2 && _vm.exhibitionsDataV2.slice(0, 3),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"exhibition\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.exhibitionDatePeriod(element))+\" \")]}},{key:\"location\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.exhibitionLocation(element))+\" \")]}}])})],1),(_vm.hSections.first)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.first}})],1):_vm._e(),_c('div',[_c('ListItemsV2',{key:\"1\",attrs:{\"data-list\":_vm.exhibitionsDataV2 && _vm.exhibitionsDataV2.slice(3, 6),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"exhibition\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.exhibitionDatePeriod(element))+\" \")]}},{key:\"location\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.exhibitionLocation(element))+\" \")]}}])})],1),(_vm.hSections.second)?_c('div',{staticClass:\"mt-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.second}})],1):_vm._e(),_c('div',{staticClass:\"mt-12\"},[_c('ListItemsV2',{key:\"1\",attrs:{\"data-list\":_vm.exhibitionsDataV2 && _vm.exhibitionsDataV2.slice(6),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"appendLoadngSkeletons\":_vm.loadMoreSkeletonsCount,\"card-top-icon\":\"exhibition\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.exhibitionDatePeriod(element))+\" \")]}},{key:\"location\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.exhibitionLocation(element))+\" \")]}}])})],1),(!_vm.showMoreExhibitions)?_c('div',{staticClass:\"flex justify-center mt-14\"},[(_vm.hasMore)?_c('v-btn',{staticClass:\"bg-dark text-white rounded-none h-12 w-32\",attrs:{\"loading\":_vm.loaders.loadingMoreExhibitions,\"depressed\":\"\"},on:{\"click\":function($event){return _vm.requestExhibitions()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Show more\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import HttpClient from \"./client\";\nimport {GetExhibitionsResponse, GetExhibitionsRequest} from \"@/types/api\";\nimport {ExhibitionV2} from \"@/types/vizgu\";\nimport {embeddedStore} from \"@/store\";\n\nclass ExhibitionsApi extends HttpClient {\n public getCurrentExhibitions = async (\n params: GetExhibitionsRequest\n ): Promise => {\n const {data} = await this.client.get(\n \"/exhibition/ListCurrent\",\n {params: params}\n );\n return data;\n };\n public getExhibitions = async (\n params: GetExhibitionsRequest\n ): Promise => {\n params.language = embeddedStore.apiLocaleFromI18n;\n const {data} = await this.client.get(\n \"/exhibition/list\",\n {params: params}\n );\n return data;\n };\n public getFutureExhibitions = async (): Promise => {\n const {data} = await this.client.get(\n \"/exhibition/ListFuture\"\n );\n return data;\n };\n public getPopularExhibitions = async (): Promise => {\n const {data} = await this.client.get(\n \"/exhibition/ListPopular\"\n );\n return data;\n };\n public getExhibition = async (id: string): Promise => {\n const {data} = await this.client.get(\"/exhibition\", {\n params: {\n language: embeddedStore.apiLocaleFromI18n,\n id: id\n }\n });\n return data;\n };\n}\n\nconst exhibitionsApi = new ExhibitionsApi();\nexport default exhibitionsApi;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItemsV2 from \"@/components/ListItemsV2.vue\";\nimport {BaseDataV2, ExhibitionV2} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\nimport {GetExhibitionsRequest, GetExhibitionsResponse} from \"@/types/api\";\nimport exhibitionsApi from \"@/api/exhibitions\";\nimport {parseDateToString} from \"@/utils/datetime\";\nimport {exhibitionHighlightedData} from \"@/utils/highlighted-section\";\nimport {EventKeys} from \"@/store/modules/embedded\";\n\n@Component({\n components: {\n BasePageBanner,\n ListItemsV2,\n HighlightedSection,\n SelectSlider\n }\n})\nexport default class Exhibitions extends Vue {\n itemWidth = 340;\n perPage = 10;\n totalItems = 0;\n showMoreExhibitions = false;\n initialDataLoaded = false;\n\n loaders = {\n loadingMoreExhibitions: false\n };\n\n exhibitionList: ExhibitionV2[] = [];\n popularExhibition: ExhibitionV2 | null = null;\n\n get loadMoreSkeletonsCount() {\n return this.loaders.loadingMoreExhibitions ? 10 : 0;\n }\n\n get hSections() {\n return {\n first: this.firstHighlightedSection,\n second: this.secondHighlightedSection\n };\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.exhibitionList?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: exhibitionHighlightedData(v)\n });\n }\n\n get secondHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.exhibitionList?.[1];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"New!\",\n content: exhibitionHighlightedData(v)\n });\n }\n\n get hasMore() {\n return this.totalItems > this.exhibitionList.length;\n }\n\n get exhibitionsDataV2(): BaseDataV2[] {\n return this.exhibitionList;\n }\n\n get popularDescription(): string {\n return this.popularExhibition?.description || \"\";\n }\n\n get popularVenueName(): string | null {\n return this.popularExhibition?.venueName || null;\n }\n\n get popularImgSrc(): string | undefined {\n return this.popularExhibition?.imageGuids.$values[0];\n }\n\n exhibitionLocation(exhibition: ExhibitionV2) {\n return exhibition.venueName ?? \"\";\n }\n\n // TODO: remove further\n toggleShowMoreExhibitions() {\n this.showMoreExhibitions = !this.showMoreExhibitions;\n }\n\n exhibitionDatePeriod(exhibition: ExhibitionV2) {\n if (!exhibition.begin || !exhibition.end) {\n return \"\";\n }\n const begin = new Date(exhibition.begin);\n const end = new Date(exhibition.end);\n const beginString = parseDateToString(begin);\n const endString = parseDateToString(end);\n return `${beginString} - ${endString}`;\n }\n\n get baseBannerData(): BasePageBannerData {\n return {\n imgUid: \"42f405b6-f1e1-4791-8185-ad46a8ce4dca\",\n icon: \"exhibition\",\n title: this.$t(\"Exhibitions\"),\n subtitle: this.$t(\n \"Experience the coolest art exhibitions all over the world. Experince art up close!\"\n )\n };\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadInitialData();\n }\n // lifecycle methods\n created() {\n this.initListeners(true);\n this.loadInitialData();\n }\n\n beforeDestroy() {\n this.initListeners(false);\n }\n\n private async loadInitialData() {\n await this.requestExhibitions(true);\n this.initialDataLoaded = true;\n }\n\n private async requestExhibitions(replace = false) {\n if (!replace && !this.hasMore && this.initialDataLoaded) {\n return;\n }\n try {\n !replace && (this.loaders.loadingMoreExhibitions = true);\n const params: GetExhibitionsRequest = {\n skip: this.exhibitionList.length,\n take: this.perPage,\n end: new Date().toISOString()\n };\n const resp: GetExhibitionsResponse = await exhibitionsApi.getExhibitions(\n params\n );\n this.totalItems = resp.count;\n const rExhibitons = resp.list.$values;\n this.totalItems = resp.count;\n if (replace) {\n this.exhibitionList = rExhibitons;\n } else {\n this.exhibitionList = this.exhibitionList.concat(rExhibitons);\n }\n } finally {\n this.loaders.loadingMoreExhibitions = false;\n }\n // this.popularExhibition = resp.popular;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Exhibitions.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Exhibitions.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Exhibitions.vue?vue&type=template&id=140ac368&\"\nimport script from \"./Exhibitions.vue?vue&type=script&lang=ts&\"\nexport * from \"./Exhibitions.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData,\"subtitleClass\":\"mt-7 text-white text-2xl max-w-4xl\"}}),_c('SelectSlider'),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" All artworks \")]),_c('div',[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" Sort by \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" Filters \")])],1)]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{key:\"1\",attrs:{\"data-list\":_vm.artworksData.slice(0, 5),\"title\":'Countries',\"item-width\":_vm.itemWidth,\"card-top-icon\":\"artwork\",\"useLocation\":false},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" P.S Kroyer \")]}}])})],1),_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"imageTooltipText\":\"New!\",\"imageTopIcon\":\"artwork\"}},[_c('h2',[_vm._v(\" Newest sculpture in Kolding \")]),_c('div',{staticClass:\"text-sm max-w-sm\"},[_vm._v(\" A brand new sculpture decipting the II world war by Dan Marrino \")]),_c('div',{staticClass:\"font-roboto text-sm\"},[_c('span',[_vm._v(\"City\")]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"artwork\")]),_c('span',[_vm._v(\"Copenhagen\")])],1),_c('div',{staticClass:\"hidden md:flex flex-row cursor-pointer items-center\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\"22 artworks & activities\")]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$next\")])],1)])],1),_c('div',[_c('ListItems',{key:\"1\",attrs:{\"data-list\":_vm.artworksData.slice(0, 10),\"title\":'Countries',\"item-width\":_vm.itemWidth,\"card-top-icon\":\"artwork\",\"useLocation\":false},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" P.S Kroyer \")]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItems from \"@/components/ListItems.vue\";\nimport {ItemTuple} from \"@/types/homepage\";\nimport {BaseData, VizguType} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\n\n@Component({\n components: {BasePageBanner, ListItems, HighlightedSection, SelectSlider}\n})\nexport default class Artworks extends Vue {\n itemWidth = 200;\n\n exampleArtwork: ItemTuple = {\n item1: {\n name: \"Sommeraften ved Skagens strand\",\n position: null,\n canReview: false,\n extra: null,\n like: null,\n id: \"123\",\n imageGuids: [\"9f3de6ba-22eb-4a51-bc07-6ff7bfd15531\"],\n isLocked: true,\n rating: 4.5,\n thumbImageURL: null,\n vizguType: VizguType.Artwork\n },\n item2: 1\n };\n\n get artworksData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 0; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleArtwork)\n );\n item.item1.id = `artwork-${i}`;\n data.push(item);\n }\n return data;\n }\n\n baseBannerData: BasePageBannerData = {\n imgUid: \"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\n icon: \"artwork\",\n title: \"Artworks\",\n subtitle: `Find new exciting artwork and sculptures, and learn the amazing stories behind some of the biggest works around the world\n `\n };\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artworks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artworks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Artworks.vue?vue&type=template&id=5ed6a1f7&\"\nimport script from \"./Artworks.vue?vue&type=script&lang=ts&\"\nexport * from \"./Artworks.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),_c('SelectSlider'),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" All artists \")]),_c('div',[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" Sort by \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" Filters \")])],1)]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{key:\"1\",attrs:{\"data-list\":_vm.artistsData.slice(0, 5),\"title\":'All artists',\"item-width\":_vm.itemWidth,\"card-top-icon\":\"artist\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return undefined}},{key:\"location\",fn:function(ref){return undefined}}])})],1),_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"imageTooltipText\":\"New!\",\"imageTopIcon\":\"artist\"}},[_c('h2',[_vm._v(\" Learn about Frida Hahlo! \")]),_c('div',{staticClass:\"text-sm max-w-sm\"},[_vm._v(\" Learn about the iconic artist from Mexico, and her incredible story \")]),_c('div',{staticClass:\"font-roboto text-sm\"},[_c('span',[_vm._v(\"City\")]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"artist\")]),_c('span',[_vm._v(\"Copenhagen\")])],1),_c('div',{staticClass:\"hidden md:flex flex-row cursor-pointer items-center\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\"22 artists & activities\")]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$next\")])],1)])],1),_c('div',[_c('ListItems',{key:\"1\",attrs:{\"data-list\":_vm.artistsData.slice(0, 10),\"title\":'Countries',\"item-width\":_vm.itemWidth,\"card-top-icon\":\"artist\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return undefined}},{key:\"location\",fn:function(ref){return undefined}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItems from \"@/components/ListItems.vue\";\nimport {ItemTuple} from \"@/types/homepage\";\nimport {BaseData, VizguType} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\n\n@Component({\n components: {BasePageBanner, ListItems, HighlightedSection, SelectSlider}\n})\nexport default class Artists extends Vue {\n itemWidth = 200;\n\n exampleArtist: ItemTuple = {\n item1: {\n name: \"Dea Trier Morch\",\n position: null,\n canReview: false,\n extra: null,\n like: null,\n id: \"123\",\n imageGuids: [\"9f3de6ba-22eb-4a51-bc07-6ff7bfd15531\"],\n isLocked: true,\n rating: 4.5,\n thumbImageURL: null,\n vizguType: VizguType.Artist\n },\n item2: 1\n };\n\n get artistsData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 0; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleArtist)\n );\n item.item1.id = `artist-${i}`;\n data.push(item);\n }\n return data;\n }\n\n baseBannerData: BasePageBannerData = {\n imgUid: \"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\n icon: \"artist\",\n title: \"Artists\",\n subtitle: `Find and learn about artists, and all of their artwork, from all around the world`\n };\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artists.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artists.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Artists.vue?vue&type=template&id=66665d0f&\"\nimport script from \"./Artists.vue?vue&type=script&lang=ts&\"\nexport * from \"./Artists.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),_c('SelectSlider'),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" All cities \")]),_c('div',{staticClass:\"hidden\"},[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Sort by\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Filters\"))+\" \")])],1)]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{key:\"1\",attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.citiesData.slice(0, 5),\"title\":_vm.$t('All cities'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\",\"useLocation\":false,\"contentType\":_vm.cityType},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(element.city)+\" \")]}},{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 22 \"+_vm._s(_vm.$t(\"venues & activities\"))+\" \")]}}])})],1),_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"imageTooltipText\":\"New!\",\"imageTopIcon\":\"place-location\"}},[_c('h2',[_vm._v(\" Learn about Frida Hahlo! \")]),_c('div',{staticClass:\"text-sm max-w-sm\"},[_vm._v(\" Learn about the iconic city from Mexico, and her incredible story \")]),_c('div',{staticClass:\"font-roboto text-sm\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"City\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"city\")]),_c('span',[_vm._v(\"Copenhagen\")])],1),_c('div',{staticClass:\"hidden md:flex flex-row cursor-pointer items-center\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\"22 \"+_vm._s(_vm.$t(\"cities & activities\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$next\")])],1)])],1),_c('div',[_c('ListItems',{key:\"1\",attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.citiesData.slice(10),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\",\"useLocation\":false,\"contentType\":_vm.cityType},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(element.city)+\" \")]}},{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 34 \"+_vm._s(_vm.$t(\"artworks\"))+\" \")]}}])},[_vm._v(\" > \")])],1),_c('div',{staticClass:\"flex justify-center mt-14\"},[(_vm.hasMore)?_c('v-btn',{staticClass:\"bg-dark text-white rounded-none h-12 w-32\",attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.requestPlacesCity()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Show more\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItems from \"@/components/ListItemsV2.vue\";\nimport {ItemTuple} from \"@/types/homepage\";\nimport {BaseData, VenueV2, VizguType} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\nimport {GetVenuesRequest, GetVenuesResponse} from \"@/types/api\";\nimport venuesApi from \"@/api/venues\";\n\n@Component({\n components: {BasePageBanner, ListItems, HighlightedSection, SelectSlider}\n})\nexport default class Cities extends Vue {\n totalItems = 0;\n itemWidth = 200;\n perPage = 20;\n initialDataLoaded = false;\n venuesCityList: VenueV2[] = [];\n\n exampleCity: ItemTuple = {\n item1: {\n name: \"Copenhagen\",\n position: null,\n canReview: false,\n extra: null,\n like: null,\n id: \"123\",\n imageGuids: [\"9f3de6ba-22eb-4a51-bc07-6ff7bfd15531\"],\n isLocked: true,\n rating: 4.5,\n thumbImageURL: null,\n vizguType: VizguType.City\n },\n item2: 1\n };\n\n get citiesData(): VenueV2[] {\n return this.venuesCityList;\n }\n\n get hasMore(): boolean {\n return this.totalItems > this.venuesCityList.length;\n }\n\n get cityType(): VizguType {\n return VizguType.City;\n }\n /*\n get citiesData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 0; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleCity)\n );\n item.item1.id = `city-${i}`;\n data.push(item);\n }\n return data;\n }\n */\n\n baseBannerData: BasePageBannerData = {\n imgUid: \"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\n icon: \"place-location\",\n title: \"Cities\",\n subtitle: `Explore cities - find new and exciting artwork and activities in all the coolest cities around the world`\n };\n\n // lifecycle methods\n created() {\n this.loadInitialData();\n }\n\n // data load methods\n private async loadInitialData() {\n await this.requestPlacesCity(true);\n this.initialDataLoaded = true;\n }\n private async requestPlacesCity(replace = false) {\n if (!replace && !this.hasMore && this.initialDataLoaded) {\n return;\n }\n const params: GetVenuesRequest = {\n skip: this.venuesCityList.length,\n take: this.perPage\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n this.totalItems = resp.count;\n const venues = resp.list.$values;\n if (replace) {\n this.venuesCityList = venues;\n } else {\n this.venuesCityList = this.venuesCityList.concat(venues);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cities.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cities.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Cities.vue?vue&type=template&id=08792929&\"\nimport script from \"./Cities.vue?vue&type=script&lang=ts&\"\nexport * from \"./Cities.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),_c('SelectSlider'),_c('div',{staticClass:\"flex flex-wrap gap-3 justify-between mt-16 inner-container\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"All countries\"))+\" \")]),_c('div',{staticClass:\"hidden\"},[_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Sort by\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1),_c('v-btn',{staticClass:\"bg-dark text-white rounded-none w-28 h-10 ml-3\",attrs:{\"depressed\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Filters\"))+\" \")])],1)]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{key:\"1\",attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.countriesData.slice(0, 5),\"title\":_vm.$t('All countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\",\"useLocation\":false,\"useVizguTypeRouting\":false},on:{\"onItemHref\":function (item) { return _vm.goCountryPage(item); }},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(element.name)+\" \")]}},{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 287 \"+_vm._s(_vm.$t(\"venues and activities\"))+\" \")]}}])})],1),_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"imageTooltipText\":\"New!\",\"imageTopIcon\":\"place-location\"}},[_c('h2',[_vm._v(\" Learn about Frida Hahlo! \")]),_c('div',{staticClass:\"text-sm max-w-sm\"},[_vm._v(\" Learn about the iconic country from Mexico, and her incredible story \")]),_c('div',{staticClass:\"font-roboto text-sm\"},[_c('span',[_vm._v(_vm._s(_vm.$t(\"City\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"country\")]),_c('span',[_vm._v(\"Copenhagen\")])],1),_c('div',{staticClass:\"hidden md:flex flex-row cursor-pointer items-center\"},[_c('div',{staticClass:\"text-xs\"},[_vm._v(\"22 \"+_vm._s(_vm.$t(\"countries & activities\")))]),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$next\")])],1)])],1),_c('div',[_c('ListItems',{key:\"1\",attrs:{\"loading\":!_vm.initialDataLoaded,\"data-list\":_vm.countriesData.slice(5),\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\",\"useLocation\":false,\"useVizguTypeRouting\":false},on:{\"onItemHref\":function (item) { return _vm.goCountryPage(item); }},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(element.name)+\" \")]}},{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 287 \"+_vm._s(_vm.$t(\"venues and activities\"))+\" \")]}}])})],1),_c('div',{staticClass:\"flex justify-center mt-14\"},[(_vm.hasMore)?_c('v-btn',{staticClass:\"bg-dark text-white rounded-none h-12 w-32\",attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.requestPlacesCountry()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Show more\"))+\" \"),_c('v-icon',{staticClass:\"text-white ml-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\"$dropdown\")])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ListItems from \"@/components/ListItemsV2.vue\";\nimport {ItemTuple} from \"@/types/homepage\";\nimport {BaseData, VenueV2, VizguType} from \"@/types/vizgu\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport HighlightedSection from \"@/components/HighlightedSection.vue\";\nimport SelectSlider from \"@/components/SelectSlider.vue\";\nimport {GetVenuesRequest, GetVenuesResponse} from \"@/types/api\";\nimport venuesApi from \"@/api/venues\";\n\n@Component({\n components: {BasePageBanner, ListItems, HighlightedSection, SelectSlider}\n})\nexport default class Countries extends Vue {\n venuesCountryList: VenueV2[] = [];\n totalItems = 0;\n itemWidth = 200;\n perPage = 20;\n initialDataLoaded = false;\n\n exampleCity: ItemTuple = {\n item1: {\n name: \"Denmark\",\n position: null,\n canReview: false,\n extra: null,\n like: null,\n id: \"123\",\n imageGuids: [\"9f3de6ba-22eb-4a51-bc07-6ff7bfd15531\"],\n isLocked: true,\n rating: 4.5,\n thumbImageURL: null,\n vizguType: VizguType.City\n },\n item2: 1\n };\n\n get hasMore() {\n return this.totalItems > this.venuesCountryList.length;\n }\n\n get countriesData(): VenueV2[] {\n return this.venuesCountryList;\n }\n /*\n get countriesData(): ItemTuple[] {\n // sample data for now\n const data: ItemTuple[] = [];\n for (let i = 0; i < 10; i++) {\n const item: ItemTuple = JSON.parse(\n JSON.stringify(this.exampleCity)\n );\n item.item1.id = `country-${i}`;\n data.push(item);\n }\n return data;\n }\n */\n goCountryPage(item: VenueV2) {\n this.$router.push(`/country/${item.id}`);\n }\n\n baseBannerData: BasePageBannerData = {\n imgUid: \"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\n icon: \"place-location\",\n title: \"Countries\",\n subtitle: `Explore countries - find new and exciting artwork and activities in all the coolest countries around the world`\n };\n\n // lifecycle methods\n created() {\n this.loadInitialData();\n }\n\n // data load methods\n private async loadInitialData() {\n await this.requestPlacesCountry(true);\n this.initialDataLoaded = true;\n }\n\n private async requestPlacesCountry(replace = false) {\n if (!replace && !this.hasMore && this.initialDataLoaded) {\n return;\n }\n const params: GetVenuesRequest = {\n skip: this.venuesCountryList.length,\n take: this.perPage,\n type: VizguType.Country\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n const venues = resp.list.$values;\n this.totalItems = resp.count;\n if (replace) {\n this.venuesCountryList = venues;\n } else {\n this.venuesCountryList = this.venuesCountryList.concat(venues);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Countries.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Countries.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Countries.vue?vue&type=template&id=cd331154&\"\nimport script from \"./Countries.vue?vue&type=script&lang=ts&\"\nexport * from \"./Countries.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.currentVenue)?_c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1),(_vm.currentVenue)?_c('div',{staticClass:\"relative\"},[_c('GUIDImage',{attrs:{\"image-uid\":_vm.venueImgSrc,\"height\":450,\"rounded\":false,\"darken\":\"\"}}),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"venue\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.$t(\"Venue\")))])],1),_c('div',{staticClass:\"text-white absolute bottom-14 z-1 flex flex-col space-y-2 align-start\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.venueName)+\" \")]),(_vm.todayOpenClose)?_c('div',{staticClass:\"bg-dark py-2 px-4 max-w-max whitespace-nowrap\"},[_vm._v(\" \"+_vm._s(_vm.todayOpenClose)+\" \")]):(_vm.openingInfo)?_c('div',{staticClass:\"bg-dark py-2 px-4 max-w-max whitespace-nowrap\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"open\"))+\" \"+_vm._s(_vm.openingInfo)+\" \")]):_vm._e(),_c('div',{staticClass:\"bg-dark text-white z-1 py-2 px-4 cursor-pointer select-none max-w-max\",on:{\"click\":function($event){return _vm.openMobile()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"open in app\"))+\" \")])])])],1):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"md:grid grid-cols-3 justify-items-center py-5 md:py-10\"},[_c('div',{staticClass:\"col-start-2\"},[_c('v-tabs',{staticClass:\"flex flex-col w-min navigation-tabs overflow-hidden\",attrs:{\"background-color\":\"transparent\"}},_vm._l((_vm.tabItems),function(tab){return _c('v-tab',{key:tab.title,staticClass:\"w-min normal-case\",on:{\"click\":function($event){return _vm.$vuetify.goTo(tab.route, null)}}},[_vm._v(\" \"+_vm._s(tab.title)+\" \")])}),1)],1),_c('div',{staticClass:\"hidden md:flex md:flex-row ml-auto\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":function($event){return _vm.shareLink()}}},[_vm._v(\"share\")]),(_vm.likeFeature)?_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1)])]),_c('div',{attrs:{\"id\":\"tickets\"}},[(_vm.pickTicketProps)?_c('PickTicket',{attrs:{\"props\":_vm.pickTicketProps}}):_vm._e()],1),_c('div',{staticClass:\"mb-10 mt-5\",attrs:{\"id\":\"events\"}},[(_vm.eventsTicketsList.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.eventsTicketsList,\"title\":_vm.$t('Events'),\"item-width\":384,\"card-top-icon\":\"menu-ticket\",\"show-view-all\":false,\"imageAPI\":_vm.eventsImageAPI,\"imageSrcHandler\":function (e) { return e.mainImage; },\"useVizguTypeRouting\":false},on:{\"onItemHref\":function (item) {\n _vm.goEventPage(item);\n }},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\n var element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(element.name)+\" \")]}}],null,false,1027871827)})],1):_vm._e()]),(_vm.hSections.first)?_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.first}}):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-col pb-4 w-full\",attrs:{\"id\":\"about\"}},[_c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.description)}})]),_c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"Opening hours\")))]),_vm._l((_vm.openingHours),function(day){return _c('div',{key:day,staticClass:\"text-sm\"},[_vm._v(\" \"+_vm._s(day)+\" \")])})],2)]),_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1),(_vm.venueExhibitions.length > 0 || true)?_c('ItemSlideGroupV2',{attrs:{\"id\":\"exhibitions\",\"data-list\":_vm.venueExhibitions,\"title\":_vm.exhibitionsTitle,\"item-width\":384}}):_vm._e(),_c('div',{staticClass:\"mt-8\"}),(_vm.showMedia)?_c('div',{staticClass:\"inner-container mt-4\"},[_c('div',{attrs:{\"id\":\"media\"}},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center py-8\"},[_c('div',{staticClass:\"w-full md:w-1/3 md:pr-10 md:text-left text-center\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"Intro Video to\"))+\" \"+_vm._s(_vm.venueName)+\"!\")]),_c('div',{staticClass:\"py-5\"},[_vm._v(\" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut auctor eget tortor ut pellentesque. Suspendisse potenti. \")])]),_c('div',{staticClass:\"w-full md:w-2/3\"},[_c('VideoCard',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.venueName)+\" \")]},proxy:true}],null,false,1476604218)})],1)])]),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),(_vm.venueLocation)?_c('div',{attrs:{\"id\":\"location\"}},[_c('h3',{staticClass:\"py-4 cursor-pointer\"},[_vm._v(_vm._s(_vm.$t(\"Location\")))]),_c('div',{staticClass:\"cursor-pointer\"},[_vm._v(_vm._s(_vm.venueLocation))])]):_vm._e()],1):_vm._e(),_c('div',{},[_c('div',{staticClass:\"h-full rounded-3xl overflow-hidden\"},[(_vm.mapConfig)?_c('GMap',{attrs:{\"props\":_vm.mapConfig}}):_vm._e()],1)])],1):(_vm.isVenueLoading)?_c('div',{staticClass:\"inner-container py-12 text-center text-2xl\"},[_vm._v(\" \"+_vm._s(_vm.loadingLabel)+\" \")]):_c('div',{staticClass:\"inner-container py-12 text-center text-2xl\"},[_vm._v(\" \"+_vm._s(_vm.notFoundLabel)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"relative bg-lightgray rounded-3xl h-64\"},[_c('div',{staticClass:\"absolute bottom-0 left-0 bg-dark px-12 py-4 rounded-r-lg rounded-bl-3xl\"},[_c('div',{staticClass:\"text-white\"},[_vm._v(\"10:22\")])]),_c('div',{staticClass:\"flex items-center justify-center h-full\"},[_c('v-icon',{attrs:{\"x-large\":\"\",\"color\":\"white\"}},[_vm._v(\"video\")])],1)]),_c('v-card-title',{staticClass:\"font-bold text-sm\"},[_vm._t(\"title\",function(){return [_vm._v(\" Founder To Be Named speaks on the exhibitions at ARoS \")]})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({})\nexport default class VideoCard extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VideoCard.vue?vue&type=template&id=fa1a7ed4&\"\nimport script from \"./VideoCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./VideoCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VCard,VCardTitle,VIcon})\n","import {Route} from \"vue-router\";\nimport {embeddedStore as context} from \"@/store\";\n\nexport function copyClipboard(msg: string) {\n navigator.clipboard.writeText(msg);\n}\n\nexport function copyCurrentRouteClipboard(r: Route) {\n const msg = `${window.location.origin}${r.fullPath}`;\n copyClipboard(msg);\n context.setClipboardSnackbar(true);\n}\n","import {VizguTypeLink} from \"@/types/vizgu\";\n\nconst mobileLinkBaseUrl = \"https://appbackend.vizgu.com/link/GetLink\";\n\nexport function getMobileLinkFor(p: {type: VizguTypeLink; id: string}) {\n const {type, id} = p;\n return `${mobileLinkBaseUrl}?type=${type}&id=${id}`;\n}\n\nexport function openMobileLinkFor(p: {type: VizguTypeLink; id: string}) {\n const {type, id} = p;\n const link = getMobileLinkFor({type, id});\n window.open(link, \"_blank\")?.focus();\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mapVisible),expression:\"mapVisible\"}],ref:\"map\",style:(_vm.mapStyle),attrs:{\"id\":\"map\"}}),_c('v-text-field',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showSearch),expression:\"showSearch\"}],attrs:{\"solo\":\"\",\"flat\":\"\",\"required\":\"\",\"id\":\"location\",\"rules\":[function (v) { return !!v || _vm.$t('Location is required'); }]},model:{value:(_vm.location),callback:function ($$v) {_vm.location=$$v},expression:\"location\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport {MapPoint} from \"@/types/vizgu\";\n\ninterface WindowWithGMaps {\n initMap: () => void;\n}\n\nexport interface GMapProps {\n apiKey: string;\n showSearch?: boolean;\n mapPoints: Array;\n input: string;\n mapStyles: Array;\n markerIcon?: any;\n height?: string;\n zoom?: number;\n activePoint?: MapPoint | null;\n setActivePoint?: (p: MapPoint) => void;\n markerConfig?: {\n path?: string;\n fillColor: string;\n scale?: number;\n };\n}\n\nconst DefaultZoom = 16;\n\n@Component({\n components: {}\n})\nexport default class GMap extends Vue {\n @Prop() props!: GMapProps;\n\n get mapStyle() {\n return {\n height: this.props.height || \"256px\"\n };\n }\n\n get apiKey() {\n return this.props.apiKey;\n }\n get showSearch() {\n return this.props.showSearch;\n }\n get mapPoints() {\n return this.props.mapPoints;\n }\n get input() {\n return this.props.input;\n }\n get mapStyles() {\n return this.props.mapStyles;\n }\n\n get markerConfig() {\n return this.props.markerConfig;\n }\n\n get markerIcon() {\n return this.props.markerIcon;\n }\n\n get zoom() {\n return this.props.zoom;\n }\n\n location = \"\";\n map!: google.maps.Map;\n markers: Array = [];\n marker!: google.maps.Marker;\n infoWindow!: google.maps.InfoWindow;\n listeners: Array = [];\n\n get mapVisible() {\n return this.mapPoints.length > 0;\n }\n\n assertMapIsCreated() {\n const config: google.maps.MapOptions = {\n disableDefaultUI: true,\n gestureHandling: \"none\",\n styles: this.mapStyles || []\n };\n if (!this.map) {\n this.map = new window.google.maps.Map(\n this.$refs[\"map\"] as HTMLElement,\n config\n );\n const icon = this.markerIcon\n ? Object.assign({}, this.markerIcon)\n : undefined;\n if (icon && icon.path === \"circle\") {\n icon.path = window.google.maps.SymbolPath.CIRCLE;\n }\n this.marker = new window.google.maps.Marker({\n map: this.map,\n icon: icon\n });\n this.infoWindow = new window.google.maps.InfoWindow();\n }\n }\n\n findMarketFromPoint(p: MapPoint): google.maps.Marker | undefined {\n return this.markers.find(m => {\n const pos = m.getPosition();\n return pos?.lng() == p.lng && pos?.lat() == p.lat;\n });\n }\n\n getPointFromMarker(m: google.maps.Marker): MapPoint {\n const pos = m.getPosition();\n return {\n lat: pos?.lat() || 0,\n lng: pos?.lng() || 0,\n title: m.getTitle() || \"\"\n };\n }\n\n onMarkerClick(marker: google.maps.Marker) {\n this.props.setActivePoint\n ? this.props.setActivePoint(this.getPointFromMarker(marker))\n : this.setInfoWindowFromMarker(marker);\n }\n\n get markerIconDefault() {\n return {\n path:\n this.markerConfig?.path ||\n \"M84.312 137.088c1.944-2.606 4.77-4.377 7.866-5.37 24.183-7.761 41.697-30.543 41.697-57.438 0-33.292-26.835-60.28-59.938-60.28C40.836 14 14 40.988 14 74.28c0 26.895 17.514 49.677 41.697 57.438 3.096.993 5.923 2.764 7.866 5.37l7.629 10.23a3.425 3.425 0 0 0 5.491 0l7.629-10.23Z\",\n fillColor: this.markerConfig?.fillColor || \"#5AD69F\",\n fillOpacity: 1.0,\n strokeWeight: 0,\n // rotation: 0,\n scale: this.markerConfig?.scale || 0.2,\n anchor: new window.google.maps.Point(0, 20)\n };\n }\n\n drawMapMarkers() {\n this.mapPoints.forEach(p => {\n const marker = new window.google.maps.Marker({\n title: p.title,\n position: {lat: p.lat || 0, lng: p.lng || 0},\n clickable: true,\n optimized: false,\n icon: this.markerIconDefault,\n // icon: \"/ext/icons/venue.svg\",\n // label: p.title,\n map: this.map\n });\n marker.setVisible(true);\n marker.addListener(\"click\", () => this.onMarkerClick(marker));\n this.markers.push(marker);\n });\n }\n\n setInfoWindowFromMarker(marker: google.maps.Marker) {\n this.infoWindow.close();\n const content = marker.getTitle();\n this.infoWindow.setContent(content);\n this.infoWindow.open(this.map, marker);\n }\n\n initMap() {\n if (this.mapPoints.length > 0) {\n this.assertMapIsCreated();\n // this.marker.setVisible(false);\n\n this.map.setZoom(this.zoom || DefaultZoom);\n this.drawMapMarkers();\n\n const latlng = {\n lat: this.markers[0].getPosition()?.lat() || 0,\n lng: this.markers[0].getPosition()?.lng() || 0\n } as google.maps.LatLngLiteral;\n this.map.setCenter(latlng);\n\n window.google.maps.event.addListenerOnce(this.map, \"idle\", () => {\n this.$emit(\"gmap-loaded\");\n });\n }\n }\n\n initLocationSearch() {\n const options = {\n fields: [\"formatted_address\", \"geometry\", \"name\"]\n } as google.maps.places.AutocompleteOptions;\n const autocomplete = new window.google.maps.places.Autocomplete(\n document.getElementById(\"location\") as HTMLInputElement,\n options\n );\n this.listeners.push(\n autocomplete.addListener(\"place_changed\", () => {\n const place = autocomplete.getPlace();\n if (place && place.geometry) {\n let lat = 0;\n let lng = 0;\n const zoom = DefaultZoom;\n if (place.geometry.viewport) {\n lat = place.geometry.viewport.getCenter().lat();\n lng = place.geometry.viewport.getCenter().lng();\n } else if (place.geometry.location) {\n lat = place.geometry.location.lat();\n lng = place.geometry.location.lng();\n }\n this.$emit(\n \"location-changed\",\n place.formatted_address,\n place.name || \"\",\n this.location,\n {lat, lng, zoom} as MapPoint\n );\n }\n })\n );\n }\n\n @Watch(\"props.activePoint\")\n onActivePointChange() {\n const m = this.props.activePoint\n ? this.findMarketFromPoint(this.props.activePoint)\n : undefined;\n m && this.setInfoWindowFromMarker(m);\n }\n\n @Watch(\"mapPoints\")\n setMapToPoint(newPoints?: MapPoint, oldPoints?: MapPoint) {\n if (JSON.stringify(newPoints) != JSON.stringify(oldPoints)) {\n this.initMap();\n }\n }\n\n initMapAndLocationSearch() {\n this.location = this.input;\n this.initMap();\n this.initLocationSearch();\n }\n\n async initGoogleMapsScript(callback: () => void) {\n const script = document.createElement(\"script\");\n script.src =\n \"https://maps.googleapis.com/maps/api/js?callback=initMap&libraries=places&key=\" +\n this.apiKey;\n const w = (window as unknown) as WindowWithGMaps;\n w.initMap = callback;\n document.body.appendChild(script);\n }\n\n mounted() {\n if (!window.google.maps) {\n this.initGoogleMapsScript(this.initMapAndLocationSearch);\n } else {\n this.initMapAndLocationSearch();\n }\n }\n\n beforeDestroy() {\n this.listeners.forEach(listener => {\n window.google.maps.event.removeListener(listener);\n });\n }\n}\n","import {\n LocaleString,\n Location,\n Image,\n LocaleValue,\n VizDate,\n VizInterval\n} from \"./common\";\nimport {LOCALES} from \"@/plugins/i18n\";\nimport {Tickets} from \"./tickets\";\n\nexport enum EventType {\n Public = \"Public\"\n}\n\nexport enum EventCategory {\n Vernissage = \"Vernissage\",\n Guide = \"Guide\",\n Concert = \"Concert\",\n Request = \"Request\",\n RequestLocationRent = \"RequestLocationRent\",\n RequestWithPayment = \"RequestWithPayment\",\n EntranceTicket = \"EntranceTicket\",\n EntranceTicketKombi = \"EntranceTicketKombi\",\n GroupedTicketMin15People = \"GroupedTicketMin15People\",\n GroupedTicketKombiMin15People = \"GroupedTicketKombiMin15People\",\n IntroductionMax40People = \"IntroductionMax40People\",\n GuidedTourMax15People = \"GuidedTourMax15People\",\n CombiTicket5p5 = \"CombiTicket5p5\",\n BookResercher = \"BookResercher\",\n SchoolClass = \"SchoolClass\"\n}\n\nexport type Experience = {\n summary: string;\n description: string;\n mainImage: Image;\n};\n\nexport type EventInfo = {\n bring: string[];\n notAllowed: string[];\n additional: unknown[]; // TODO\n includes: unknown[]; // TODO\n audio: unknown[]; // TODO\n duration: string;\n};\n\nexport type Occurrence = {\n id: string;\n start: VizDate;\n end: VizDate;\n allDay: boolean;\n recurring: boolean;\n repeat: {\n periodicity: string;\n daysOfWeek: unknown[]; // TODO\n };\n interval: VizInterval;\n};\n\nexport type GeneralInfo = {\n name: LocaleString;\n type: EventType;\n category: EventCategory;\n display: string;\n languages: LOCALES[];\n venues: string[];\n location: Location;\n schoolClasses: unknown[]; // TODO\n};\n\nexport interface VizEvent {\n eventId: string;\n generalInfo?: GeneralInfo;\n experience?: LocaleValue;\n eventInfo?: EventInfo;\n occurrence: Occurrence[] | Occurrence;\n tickets: Tickets;\n defaultLanguage?: LOCALES;\n duration: string;\n}\n\nexport type GetEventsRequest = {\n orgId?: string;\n query?: {\n venue?: string;\n category?: string;\n buyCurrency?: string;\n };\n};\n\nexport type GetEventDetailsRequest = {\n id: string;\n query?: {\n buyCurrency?: string;\n };\n};\n\nexport type GetOrgEventsRequest = {\n orgId: string;\n};\n\nexport type GetEventTicketsRequest = {\n month?: string;\n buyCurrency?: string;\n};\n\nexport type EventsResult = VizEvent[];\n\nexport type EventTicketsResult = {\n month: string;\n series: VizEvent[];\n};\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GMap.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GMap.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GMap.vue?vue&type=template&id=48a7dc62&\"\nimport script from \"./GMap.vue?vue&type=script&lang=ts&\"\nexport * from \"./GMap.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VTextField})\n","import {LocaleString} from \"./common\";\n\nexport enum TicketType {\n Paid = \"Paid\",\n Free = \"Free\"\n}\n\nexport interface Ticket {\n name: string;\n translatedNames: LocaleString;\n quantity: number;\n age: string; // TODO enum?\n price: number;\n vat: number;\n totalPrice: number;\n type: TicketType;\n sellRestrictions: unknown; // TODO\n}\n\nexport interface Tickets {\n capacity: number;\n available: number;\n list: Ticket[];\n}\n","import {ApiClient} from \"./client\";\nimport {\n GetEventsRequest,\n EventsResult,\n VizEvent,\n EventTicketsResult,\n GetEventTicketsRequest,\n GetEventDetailsRequest\n} from \"@/types/api.newviz/events\";\n\nclass EventsApi extends ApiClient {\n public getEvents = async (\n params: GetEventsRequest = {}\n ): Promise => {\n const orgId = params.orgId || this.vizguOrgId;\n const {query} = params;\n const {data} = await this.client.get(\n `/events/organizations/${orgId}`,\n {baseURL: this.currentApi, params: query}\n );\n return data;\n };\n public getEvent = async (\n params: GetEventDetailsRequest\n ): Promise => {\n const {id, query} = params;\n const {data} = await this.client.get(`/events/${id}/public`, {\n baseURL: this.currentApi,\n params: query\n });\n return data;\n };\n public getEventTickets = async (\n eventId: string,\n params: GetEventTicketsRequest\n ): Promise => {\n const {data} = await this.client.get(\n `/events/${eventId}/series`,\n {baseURL: this.currentApi, params}\n );\n return data;\n };\n}\n\nconst eventsApi = new EventsApi();\nexport default eventsApi;\n","import {LocaleString, LOCALES} from \"@/plugins/i18n\";\nimport {embeddedStore} from \"@/store\";\n\nexport function stringFromLocale(v: LocaleString): string {\n const currentLocale = embeddedStore.currentLocale;\n if (Object.keys(v).includes(currentLocale.code)) {\n return v[currentLocale.code];\n } else {\n return Object.values(v)[0];\n }\n}\n\nexport function stringFromLocaleSpecific(\n v: LocaleString,\n l: LOCALES\n): string | undefined {\n if (!Object.keys(v).includes(l)) {\n return undefined;\n }\n return v[l];\n}\n","import {Ticket, TicketType} from \"@/types/api.newviz/tickets\";\nimport {LocaleString, LOCALES} from \"@/plugins/i18n\";\nimport {stringFromLocale, stringFromLocaleSpecific} from \"@/utils/i18n\";\n\nexport class VTicket implements Ticket {\n name!: string;\n translatedNames!: LocaleString;\n quantity!: number;\n age!: string; // TODO enum?\n price!: number;\n vat!: number;\n totalPrice!: number;\n type!: TicketType;\n sellRestrictions: unknown; // TODO\n\n // locale fields\n count = 0;\n\n get nameLocale(): string {\n return stringFromLocale(this.translatedNames);\n }\n\n nameDefaultOrCurrentLocale(l?: LOCALES): string {\n if (!l) {\n return this.nameLocale;\n }\n return stringFromLocaleSpecific(this.translatedNames, l) || this.nameLocale;\n }\n\n constructor(v: Partial) {\n Object.assign(this, v);\n }\n\n add() {\n this.count += 1;\n }\n remove() {\n this.count -= 1;\n }\n\n // TODO\n get ticketPrice() {\n return this.price;\n }\n\n get priceWithCount() {\n return this.count > 0 ? this.ticketPrice * this.count : this.ticketPrice;\n }\n\n isPaid() {\n return this.type == TicketType.Paid;\n }\n\n isFree() {\n return this.type == TicketType.Free;\n }\n}\n","import {\n VizEvent,\n Experience,\n EventInfo,\n Occurrence,\n GeneralInfo\n} from \"@/types/api.newviz/events\";\nimport {LocaleValue} from \"@/types/api.newviz/common\";\nimport {LOCALES} from \"@/plugins/i18n\";\nimport {dateTimeLabelFromDate} from \"@/utils/datetime\";\nimport {VTicket} from \"./ticket\";\nimport {stringFromLocale} from \"@/utils/i18n\";\n\nexport type VizEventTickets = {\n month: string;\n series: VEvent[];\n};\n\nexport type VTickets = {\n capacity: number;\n available: number;\n list: VTicket[];\n};\n\nexport class VEvent implements VizEvent {\n eventId!: string;\n generalInfo?: GeneralInfo;\n experience?: LocaleValue;\n eventInfo?: EventInfo;\n occurrence!: Occurrence[] | Occurrence;\n tickets!: VTickets;\n defaultLanguage?: LOCALES;\n duration!: string;\n\n private PLACEHOLDER_IMAGE = \"d2c04f18-0490-4419-9f4b-622a90fd59d6\";\n\n constructor(v: Partial) {\n Object.assign(this, v);\n if (v.tickets) {\n v.tickets.list = v.tickets.list.map(t => new VTicket(t));\n }\n }\n\n get name(): string {\n // TODO improve\n const name = this.generalInfo?.name;\n return name ? stringFromLocale(name) : \"\";\n }\n\n get date(): string | undefined {\n return this.firstOccurrence?.start?.date;\n }\n\n get mainImage(): string {\n const first = Object.values(this?.experience || {})?.[0];\n return first?.mainImage?.fileId || this.PLACEHOLDER_IMAGE;\n }\n\n get firstOccurrence() {\n return Array.isArray(this.occurrence)\n ? this.occurrence[0]\n : this.occurrence;\n }\n\n get startDate() {\n return this.firstOccurrence.start.date;\n }\n\n startDateTimeLabel() {\n return dateTimeLabelFromDate(\n this.firstOccurrence.start.moment,\n this.firstOccurrence.start.tzId\n );\n }\n\n get locationLabel() {\n return this.generalInfo?.location.address || \"\";\n }\n\n get selectTimeLabel() {\n // TODO translation\n const allDayLabel = \"All day\";\n return this.firstOccurrence.allDay\n ? allDayLabel\n : this.firstOccurrence.start.time;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.styles.container)},[_c('div',{staticClass:\"text-white inner-container py-12\"},[_c('div',{staticClass:\"text-3xl font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Buy tickets\")))]),_c('div',{staticClass:\"text-lg font-medium\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Select date & time\"))+\" \")]),_c('div',{staticClass:\"flex-col md:flex-row flex items-center gap-3 md:gap-6 mt-3\"},[_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"border-none w-full md:w-auto\",style:(_vm.styles.selection),attrs:{\"x-large\":\"\"}},'v-btn',attrs,false),on),[_c('div',{staticClass:\"flex gap-3\"},[_c('v-icon',{staticClass:\"w-5 h-5\"},[_vm._v(\"calendar\")]),(_vm.selectedDate == null)?_c('div',{staticClass:\"text-black\"},[_vm._v(\" \"+_vm._s(_vm.labels.chooseDate)+\" \")]):_vm._e(),_c('div',{staticClass:\"flex text-black\"},[_vm._v(\" \"+_vm._s(_vm.selectedDate)+\" \")])],1)])]}}])},[_c('div',{staticClass:\"text-black\"},[_c('v-date-picker',{attrs:{\"allowed-dates\":_vm.allowDateChecker,\"reactive\":\"\",\"no-title\":\"\",\"color\":\"success\"},on:{\"update:picker-date\":_vm.onDatePickerChange,\"input\":_vm.onDatePick},model:{value:(_vm.selectedDate),callback:function ($$v) {_vm.selectedDate=$$v},expression:\"selectedDate\"}})],1)]),_c('div',[_c('v-select',{staticClass:\"md:w-52\",attrs:{\"disabled\":!_vm.selectedEvent,\"value\":_vm.selectedEvent ? _vm.selectedEvent.selectTimeLabel : null,\"items\":_vm.timeVariants,\"prepend-inner-icon\":\"clock\",\"hide-details\":\"\",\"solo\":\"\",\"placeholder\":\"Select time\"},on:{\"input\":_vm.selectEventByTime}})],1),(false)?_c('v-btn',{staticClass:\"bg-dark text-white border-none font-semibold w-full md:w-auto mt-3 md:mt-0\",attrs:{\"loading\":_vm.loaders.findTicket,\"disabled\":!_vm.canFindTicket,\"x-large\":\"\"},on:{\"click\":function($event){return _vm.findTickets()}}},[_vm._v(_vm._s(_vm.labels.findTickets))]):_vm._e()],1),_c('div',{staticClass:\"mt-3\"},[_c('div',{staticClass:\"font-medium text-lg mb-2\"},[_vm._v(\" \"+_vm._s(_vm.labels.chooseVisiters)+\" \")]),_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"w-full md:max-w-md overflow-hidden\",style:(_vm.styles.selection),attrs:{\"x-large\":\"\",\"solo\":\"\",\"aria-multiline\":\"\"}},'v-btn',attrs,false),on),[(_vm.tickets.filter(function (v) { return v.count > 0; }).length == 0)?_c('div',{staticClass:\"text-black\"},[_vm._v(\" \"+_vm._s(_vm.labels.chooseVisiters)+\" \")]):_vm._e(),_c('div',{staticClass:\"flex flex-row md:max-w-sm overflow-hidden overflow-ellipsis w-max gap-2\"},_vm._l((_vm.tickets.filter(function (t) { return t.count > 0; })),function(ticket,i){return _c('div',{key:i,staticClass:\"flex flex-row flex-shrink text-black w-max gap-1\"},[_c('v-icon',{staticClass:\"w-5 h-5\"},[_vm._v(\"group\")]),_c('div',[_vm._v(_vm._s(ticket.nameLocale)+\" x \"+_vm._s(ticket.count))])],1)}),0),_c('v-icon',{staticClass:\"w-7 h-7\",attrs:{\"right\":\"\"}},[_vm._v(\"menu-down\")])],1)]}}])},[_c('v-list',{staticClass:\"px-3\",style:(_vm.styles.ticketsList)},[_vm._l((_vm.tickets),function(ticket,i){return _c('v-list-item',{key:i,staticClass:\"block text-black\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},[_c('v-divider',{staticClass:\"my-2\"}),_c('div',{staticClass:\"flex justify-between flex-1 items-center\"},[_c('span',[_vm._v(\" \"+_vm._s(ticket.nameLocale)+\" \")]),_c('span',{staticClass:\"flex items-center justify-end\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"depressed\":\"\",\"rounded\":\"\",\"disabled\":ticket.count == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return ticket.remove()}}},[_c('v-icon',{staticClass:\"h-9 w-9\",attrs:{\"size\":\"12\"}},[_vm._v(\"minus-sign\")])],1),_c('span',{staticClass:\"border-2 border-black border-solid px-3 rounded-xl\"},[_vm._v(_vm._s(ticket.count)+\" \")]),_c('v-btn',{attrs:{\"icon\":\"\",\"depressed\":\"\",\"rounded\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return ticket.add()}}},[_c('v-icon',{staticClass:\"h-9 w-9\",attrs:{\"size\":\"12\"}},[_vm._v(\"plus-sign\")])],1)],1)])],1)}),_c('v-list-item',{staticClass:\"block\"},[_c('v-divider',{staticClass:\"my-2\"}),_c('span',{staticClass:\"text-graytext\"})],1)],2)],1)],1),(_vm.selectedEvent)?_c('div',{staticClass:\"text-black mt-6 bg-lightgray p-2\"},[_c('div',{staticClass:\"bg-white flex flex-col md:flex-row gap-3\"},[_c('div',{staticClass:\"pt-8 pb-3 md:py-8 px-8 flex-shrink\"},[_c('div',{staticClass:\"overflow-ellipsis text-lg font-normal max-w-md\"},[_vm._v(\" \"+_vm._s(_vm.eventName)+\" \")]),_c('div',{staticClass:\"flex flex-col md:flex-row gap-3 items-start md:items-center mt-3\"},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(_vm._s(_vm.eventDateTime))]),_c('div',{staticClass:\"font-medium text-sm flex items-center\"},[_c('v-icon',{staticClass:\"w-4 h-4 text-black\"},[_vm._v(\"place-location\")]),_c('span',{staticClass:\"overflow-ellipsis whitespace-nowrap\"},[_vm._v(_vm._s(_vm.eventLocation))])],1)])]),_c('div',{staticClass:\"pb-4 md:py-8 px-8 flex-1 flex flex-col md:flex-row gap-12 justify-between min-w-max\"},[_c('div',{staticClass:\"w-full md:w-56 flex-1\"},[_c('span',{staticClass:\"font-semibold text-lg\"},[_vm._v(_vm._s(_vm.$t(\"Price breakdown\")))]),_vm._l((_vm.tickets.filter(function (v) { return v.count > 0; })),function(ticket,i){return _c('div',{key:i,staticClass:\"flex gap-2 justify-between w-auto\"},[_c('span',[_vm._v(_vm._s(ticket.nameLocale)+\" x \"+_vm._s(ticket.count))]),(ticket.isPaid)?_c('span',{staticClass:\"font-semibold whitespace-nowrap\"},[_vm._v(_vm._s(ticket.priceWithCount)+\" \"+_vm._s(_vm.ticketsCurrency))]):(ticket.isFree)?_c('span',{staticClass:\"font-semibold whitespace-nowrap\"},[_vm._v(\" \"+_vm._s(_vm.labels.free))]):_vm._e()])})],2),_c('div',[_c('div',{staticClass:\"font-semibold text-xl hidden md:block text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Total\"))+\" \")]),_c('div',{staticClass:\"flex justify-between items-center\"},[_c('div',{staticClass:\"font-semibold text-2xl md:hidden text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Total\"))+\" \")]),_c('div',{staticClass:\"md:mt-3 text-3xl font-semibold text-right\"},[_vm._v(\" \"+_vm._s(_vm.totalPrice)+\" \"+_vm._s(_vm.ticketsCurrency)+\" \")])]),_c('div',{staticClass:\"text-right\"},[_vm._v(_vm._s(_vm.$t(\"inkl moms\")))])])])]),_c('div',{staticClass:\"mt-4 py-2 px-7\"},[_c('div',{staticClass:\"flex w-full justify-end\"},[_c('v-btn',{staticClass:\"bg-dark text-white w-full md:w-48\",attrs:{\"x-large\":\"\",\"loading\":_vm.loaders.addCart,\"disabled\":_vm.isAddCartDisabled},on:{\"click\":function($event){return _vm.addToCart()}}},[_vm._v(_vm._s(_vm.addCartLabel))])],1)])]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {VEvent, VizEventTickets} from \"@/models/events\";\nimport {cartStore, embeddedStore} from \"@/store\";\nimport {stringFromLocale} from \"@/utils/i18n\";\nimport {Component, Prop, Watch, Vue} from \"vue-property-decorator\";\n\nexport type PickTicketProps = {\n event: VEvent;\n eventTickets: VizEventTickets[];\n onUpdatePickerDate: (pickerDate: string) => Promise;\n onAddCart: (selectedEvent: VEvent) => Promise;\n onCurrencyUpdate?: () => Promise;\n};\n\n@Component({\n // components: {}\n})\nexport default class PickTicket extends Vue {\n @Prop({required: true}) props!: PickTicketProps;\n /*\n TODO:\n - tickets count available logic\n - fix UI glitches\n */\n\n selectedDate: string | null = null;\n selectedTime: string | null = null;\n selectedEvent: VEvent | null = null;\n\n loaders = {\n findTicket: false,\n addCart: false\n };\n\n @Watch(\"currentCurrency\")\n onCurrencyChange() {\n this.reset();\n if (this.props.onCurrencyUpdate) {\n this.props.onCurrencyUpdate();\n }\n }\n\n get currentCurrency() {\n return cartStore.currentCurrency;\n }\n\n selectEvent(e: VEvent | null) {\n this.selectedEvent = e;\n }\n\n reset() {\n this.selectedDate = null;\n this.selectedTime = null;\n this.selectedEvent = null;\n // this.selectEvent(null);\n }\n\n get selectedEventConfig() {\n const e = this.selectedEvent;\n if (!e) {\n return null;\n }\n // date = e.occurrence\n return {\n dateLabel: e.startDateTimeLabel(),\n locationLabel: this.event.locationLabel\n };\n }\n\n get isAddCartDisabled() {\n if (this.tickets.filter(t => t.count > 0).length == 0) {\n return true;\n }\n return false;\n }\n\n onDatePick() {\n this.selectedDateEvents && this.selectEvent(this.selectedDateEvents[0]);\n }\n\n async onDatePickerChange(pickerDate: string) {\n const pickerDateFullFmt = `${pickerDate}-1`;\n await this.props.onUpdatePickerDate(pickerDateFullFmt);\n this.onDatePick();\n }\n\n get allowedDatesStrings(): string[] {\n const t = this.props.eventTickets;\n if (!t) {\n return [];\n }\n const dates: string[] = [];\n const items = t.map(v => v.series);\n items.forEach(monthItem =>\n monthItem.forEach(ev => {\n const o = Array.isArray(ev.occurrence)\n ? ev.occurrence[0]\n : ev.occurrence;\n !dates.includes(o.start.date) && dates.push(o.start.date);\n })\n );\n return dates;\n }\n\n get selectedDateEvents(): VEvent[] | null {\n const t = this.props.eventTickets;\n const d = this.selectedDate;\n if (!d || !t) {\n return null;\n }\n let yearMonth: any = d.replaceAll(\"0\", \"\").split(\"-\");\n yearMonth.splice(yearMonth.length - 1, 1);\n yearMonth = yearMonth.join(\"-\");\n const monthItems =\n t.find(v => v.month.replaceAll(\"0\", \"\") == yearMonth)?.series || null;\n if (!monthItems) {\n return null;\n }\n const dateItems = monthItems.filter(v => {\n const o = Array.isArray(v.occurrence) ? v.occurrence[0] : v.occurrence;\n return o.start.date == this.selectedDate;\n });\n return dateItems.length > 0 ? dateItems : null;\n }\n\n allowDateChecker(date: string) {\n return this.allowedDatesStrings.includes(date);\n }\n\n get ticketsCurrency() {\n return cartStore.currentCurrency;\n }\n\n get timeVariants() {\n return this.selectedDateEvents\n ? this.selectedDateEvents.map(v => v.selectTimeLabel)\n : [];\n }\n\n selectEventByTime(v: string) {\n if (!this.selectedDateEvents) {\n return;\n }\n this.selectEvent(\n this.selectedDateEvents.find(e => e.selectTimeLabel == v) || null\n );\n }\n\n get totalPrice() {\n let price = 0;\n this.tickets\n .filter(v => v.count > 0)\n .map(v => v.priceWithCount)\n .forEach(p => (price += p));\n return price;\n }\n\n styles = {\n container: {\n background: `linear-gradient(270.1deg, #E0C1B6 -13.97%, #967E76 111.63%), #232323`\n },\n ticketsList: {\n width: \"auto\"\n // minWidth: \"200px\"\n },\n selection: {\n minWidth: \"280px\"\n }\n };\n\n get labels() {\n return {\n chooseVisiters: this.$t(\"Choose visiters\"),\n chooseDate: this.$t(\"Choose date\"),\n findTickets: this.$t(\"Find tickets\"),\n addToCart: this.$t(\"Add to cart\"),\n addingToCart: this.$t(\"Adding to cart\"),\n free: this.$t(\"Free\")\n };\n }\n\n get addCartLabel() {\n return this.loaders.addCart\n ? this.labels.addingToCart\n : this.labels.addToCart;\n }\n\n get canFindTicket() {\n // const hasVisiters = this.tickets.find(v => v.count > 0) != undefined;\n const hasDate = this.selectedDate != null;\n return hasDate;\n }\n\n get tickets() {\n return this.selectedEvent?.tickets?.list || [];\n }\n\n get event() {\n return this.props.event;\n }\n\n // TODO\n get eventName() {\n const name = this.event.generalInfo?.name;\n if (!name) {\n return \"\";\n }\n return stringFromLocale(name);\n }\n\n get eventDateTime() {\n return this.selectedEventConfig?.dateLabel || \"\";\n }\n\n get eventLocation() {\n return this.selectedEventConfig?.locationLabel;\n }\n\n // TODO\n async findTickets() {\n this.loaders.findTicket = true;\n setTimeout(() => (this.loaders.findTicket = false), 1000);\n }\n\n // TODO\n async addToCart() {\n if (!this.selectedEvent) {\n return;\n }\n this.loaders.addCart = true;\n this.selectedEvent.defaultLanguage = this.event.defaultLanguage;\n try {\n await this.props.onAddCart(this.selectedEvent);\n } catch (e) {\n embeddedStore.notifyError(\"Error while adding item to cart\");\n } finally {\n this.loaders.addCart = false;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PickTicket.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PickTicket.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PickTicket.vue?vue&type=template&id=0ce60a5f&\"\nimport script from \"./PickTicket.vue?vue&type=script&lang=ts&\"\nexport * from \"./PickTicket.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\ninstallComponents(component, {VBtn,VDatePicker,VDivider,VIcon,VList,VListItem,VMenu,VSelect})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {ExhibitionV2, MapPoint, VenueV2, VizguTypeLink} from \"@/types/vizgu\";\nimport ItemSlideGroupV2 from \"@/components/ItemSlideGroupV2.vue\";\n// import {ItemTuple} from \"@/types/homepage\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport venuesApi from \"@/api/venues\";\nimport {cartStore, embeddedStore} from \"@/store\";\nimport {GetExhibitionsRequest, GetExhibitionsResponse} from \"@/types/api\";\nimport exhibitionsApi from \"@/api/exhibitions\";\nimport {exhibitionHighlightedData} from \"@/utils/highlighted-section\";\nimport {copyCurrentRouteClipboard} from \"@/utils/clipboard\";\nimport {EventKeys} from \"@/store/modules/embedded\";\nimport {parseBaseContentText, venueHoursOpenCloseList} from \"@/utils/data\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport {TranslateResult} from \"vue-i18n\";\nimport {openMobileLinkFor} from \"@/utils/mobileLink\";\nimport GMap, {GMapProps} from \"@/components/GMap.vue\";\nimport {\n EventCategory,\n EventsResult,\n GetEventsRequest,\n GetEventTicketsRequest\n} from \"@/types/api.newviz/events\";\nimport eventsApi from \"@/api.newviz/events\";\nimport {VEvent, VizEventTickets} from \"@/models/events\";\nimport {ImageAPI} from \"@/utils/image-utils\";\nimport PickTicket, {PickTicketProps} from \"@/components/PickTicket.vue\";\nimport {VCart} from \"@/models/cart\";\nimport {format} from \"date-fns\";\n\nexport interface TabItem {\n title: string | TranslateResult;\n route: string;\n}\n\n@Component({\n components: {\n HighlightedSection,\n VideoCard,\n ItemSlideGroupV2,\n GUIDImage,\n GMap,\n ItemSlideGroup,\n PickTicket\n }\n})\nexport default class VenuePage extends Vue {\n likeFeature = false;\n currentEntraceEvent: VEvent | null = null;\n currentEntraceEventTickets: VizEventTickets[] = [];\n\n currentVenue: VenueV2 | null = null;\n venueExhibitions: ExhibitionV2[] = [];\n showMedia = false;\n eventsTicketsList: VEvent[] = [];\n\n exhibitionsTake = 20;\n\n eventsImageAPI = ImageAPI.NewViz;\n\n @Watch(\"$route.params.id\")\n onIdChange() {\n window.scrollTo(0, 0);\n this.loadApiData();\n }\n\n shareLink() {\n copyCurrentRouteClipboard(this.$route);\n }\n\n get pickTicketProps(): PickTicketProps | undefined {\n if (!this.currentEntraceEvent) {\n return undefined;\n }\n return {\n event: this.currentEntraceEvent,\n eventTickets: this.currentEntraceEventTickets,\n onUpdatePickerDate: async (pickerDate: string) => {\n await this.loadEntranceEventTickets(false, {month: pickerDate});\n },\n onAddCart: async (selectedEvent: VEvent) => {\n await VCart.createOrAdd(selectedEvent);\n },\n onCurrencyUpdate: async () => {\n await this.loadEntranceEventTickets(true);\n }\n };\n }\n\n openMobile() {\n openMobileLinkFor({\n type: VizguTypeLink.Venue,\n id: this.currentVenue?.id || \"\"\n });\n }\n\n goEventPage(v: VEvent) {\n embeddedStore.setCurrentEvent(v); // TODO remove once get event by id api available\n this.$router.push(`/events/${v.eventId}`);\n }\n\n // labels\n get loadingLabel() {\n return this.$t(\"Loading...\");\n }\n get notFoundLabel() {\n return this.$t(\"Not found\");\n }\n // eof labels\n\n get hSections() {\n return {first: this.firstHighlightedSection};\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.venueExhibitions?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: exhibitionHighlightedData(v)\n });\n }\n\n get exhibitionsTitle(): string {\n return `${this.$t(\"All exhibitons for\")} ${this.venueName} !`;\n }\n\n get venueImgSrc(): string {\n return this.currentVenue?.imageGuids.$values[0] || \"\";\n }\n\n get venueName(): string {\n return this.currentVenue?.name || \"\";\n }\n\n get openingHours(): string[] {\n // return [\"Monday - Saturday: 9:00 AM - 6:00 PM\", \"Sunday: closed\"];\n return this.currentVenue ? venueHoursOpenCloseList(this.currentVenue) : [];\n }\n\n get openingInfo(): string | null {\n return this.currentVenue?.openingInfo?.displayText || null;\n }\n\n get venueLocation(): string | null {\n const address = this.currentVenue?.address;\n const country = \", \" + this.currentVenue?.country || \"\";\n if (address && country) {\n return `${address}${country}`;\n }\n return null;\n }\n\n get todayOpenClose(): string | null {\n const open = this.currentVenue?.openingHours?.wednesday?.substring(0, 5);\n const close = this.currentVenue?.openingHours?.wednesdayClose?.substring(\n 0,\n 5\n );\n if (open && close) {\n return `${open} - ${close}`;\n }\n return null;\n }\n\n get tabItems(): TabItem[] {\n return [\n {\n title: this.$t(\"Tickets\"),\n route: \"#tickets\"\n },\n {\n title: this.$t(\"Events\"),\n route: \"#events\"\n },\n {\n title: this.$t(\"About\"),\n route: \"#about\"\n },\n {\n title: this.$t(\"exhibitions\"),\n route: \"#exhibitions\"\n },\n {\n title: this.$t(\"media\"),\n route: \"#media\"\n },\n {\n title: this.$t(\"location\"),\n route: \"#location\"\n }\n ];\n }\n\n get description(): string {\n return this.currentVenue ? parseBaseContentText(this.currentVenue) : \"\";\n }\n\n get isVenueLoading() {\n return embeddedStore.currentVenueLoading;\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadApiData();\n }\n\n get venueMapPoint() {\n return this.currentVenue?.position;\n }\n\n get mapConfig(): GMapProps | undefined {\n if (!this.venueMapPoint) {\n return undefined;\n }\n const mapStyles: google.maps.MapTypeStyle = {\n stylers: []\n };\n const mapPoints: MapPoint[] = [\n {\n lat: this.venueMapPoint.latitude || 0,\n lng: this.venueMapPoint.longitude || 0,\n title: this.currentVenue?.name || \"\"\n }\n ];\n\n return {\n apiKey: \"AIzaSyAWkPa63y66oU6Mzfkrnmc77Ns_nbH6eoI\", // TODO add to env or get from api?\n mapPoints,\n input: \"\",\n mapStyles: [mapStyles],\n height: \"370px\",\n zoom: 16\n };\n }\n\n // lifecycle methods\n async created() {\n this.initListeners(true);\n await this.loadApiData();\n }\n beforeDestroy() {\n this.initListeners(false);\n }\n // eof lifecycle methods\n private async loadApiData() {\n embeddedStore.setCurrentVenueLoading(true);\n embeddedStore.setCurrentVenue(null);\n const id: string = this.$route.params.id;\n await this.requestVenue(id);\n\n await Promise.all([\n this.loadVenueEvents(),\n this.getSliderExhibitions(),\n this.loadVenueEntranceEvent()\n ]);\n\n await this.loadEntranceEventTickets();\n }\n\n // data load methods\n private async requestVenue(id: string) {\n const resp: VenueV2 = await venuesApi.getVenue(id);\n this.currentVenue = resp;\n embeddedStore.setCurrentVenue(resp);\n embeddedStore.setCurrentVenueLoading(false);\n }\n\n private async getSliderExhibitions() {\n const params: GetExhibitionsRequest = {\n skip: 0,\n take: this.exhibitionsTake,\n venueID: this.currentVenue?.id\n };\n const resp: GetExhibitionsResponse = await exhibitionsApi.getExhibitions(\n params\n );\n this.venueExhibitions = resp.list.$values;\n }\n\n private async loadVenueEvents() {\n const params: GetEventsRequest = {\n // orgId: this.currentVenue?.id\n query: {\n venue: this.currentVenue?.id,\n category: [\n EventCategory.EntranceTicket,\n EventCategory.EntranceTicketKombi\n ].join(\",\"),\n buyCurrency: cartStore.currentCurrency\n }\n };\n const resp: EventsResult = await eventsApi.getEvents(params);\n this.eventsTicketsList = resp.map(v => new VEvent(v));\n }\n\n private async loadVenueEntranceEvent() {\n const params: GetEventsRequest = {\n query: {\n venue: this.currentVenue?.id,\n buyCurrency: cartStore.currentCurrency\n }\n };\n const resp: EventsResult = await eventsApi.getEvents(params);\n const items = resp.map(v => new VEvent(v));\n items.length > 0 && (this.currentEntraceEvent = items[0]);\n }\n\n private async loadEntranceEventTickets(\n replace = false,\n params: Partial = {}\n ) {\n if (!this.currentEntraceEvent) {\n return;\n }\n\n const currentDate = format(new Date(), \"yyy-MM-dd\");\n const hasMonth = (date: string) => {\n const dFmt = format(new Date(date), \"yyy-M\");\n return (\n this.currentEntraceEventTickets.find(v => v.month == dFmt) != undefined\n );\n };\n\n if (replace) {\n this.currentEntraceEventTickets = [];\n }\n\n if (!replace && this.currentEntraceEventTickets) {\n if (params.month && hasMonth(params.month)) {\n return;\n } else if (!params.month && hasMonth(currentDate)) {\n return;\n }\n }\n const query: GetEventTicketsRequest = {\n buyCurrency: cartStore.currentCurrency,\n ...params\n };\n const resp = await eventsApi.getEventTickets(\n this.currentEntraceEvent?.eventId,\n query\n );\n this.currentEntraceEventTickets.push({\n month: resp.month,\n series: resp.series.map(v => new VEvent(v))\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Venue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Venue.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Venue.vue?vue&type=template&id=e89a5c0a&\"\nimport script from \"./Venue.vue?vue&type=script&lang=ts&\"\nexport * from \"./Venue.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VDivider,VIcon,VTab,VTabs})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1),(_vm.currentExhibition)?_c('div',{staticClass:\"relative bg-dark\"},[(_vm.currentExhibition)?_c('GUIDImage',{attrs:{\"image-uid\":_vm.exhibitionImgSrc,\"height\":450,\"rounded\":false}}):_vm._e(),_c('div',{staticClass:\"inner-container mt-4\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"exhibition\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.$t(\"Exhibition\")))])],1),_c('div',{staticClass:\"bg-dark text-white absolute bottom-14 z-1 py-2 px-4 cursor-pointer\",on:{\"click\":function($event){return _vm.openMobile()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"open in app\"))+\" \")])])],1):_vm._e()]),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-row pt-4 items-center\"},[_c('div',[_c('h2',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.exhibitionName)+\" \")])]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":_vm.shareLink}},[_vm._v(\"share\")]),(_vm.likeFeature)?_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1)],1),(_vm.ratingFeature)?_c('Rating',{staticClass:\"pb-1\",attrs:{\"with-number\":true}}):_vm._e(),_c('div',{staticClass:\"flex flex-col md:flex-row\"},_vm._l((_vm.exhibitionInfo),function(item){return _c('div',{key:item.title,staticClass:\"font-medium md:mr-5\"},[(item.icon)?_c('v-icon',{staticClass:\"text-primary\",attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\" \"+_vm._s(item.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(item.title)+\" \")],1)}),0),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.aboutDescription)}}),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),(_vm.showBaseMedia)?_c('div',{staticClass:\"flex flex-col md:flex-row items-center py-8\"},[_c('div',{staticClass:\"w-full md:w-1/3 md:pr-10 md:text-left text-center\"},[_c('h2',[_vm._v(\"Intro Video to \"+_vm._s(_vm.exhibitionName))]),_c('div',{staticClass:\"py-5\"},[_vm._v(\" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut auctor eget tortor ut pellentesque. Suspendisse potenti. \")])]),_c('div',{staticClass:\"w-full md:w-2/3\"},[_c('VideoCard',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.exhibitionName)+\" \")]},proxy:true}],null,false,4042143420)})],1),_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1):_vm._e(),(_vm.showAdditionalMedia)?_c('div',[_c('VideoList',{attrs:{\"title\":'More media'}}),_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1):_vm._e()],1),(_vm.showReviews)?_c('div',[_c('h2',{staticClass:\"text-center py-4\"},[_vm._v(\"Critics reviews!\")]),_c('div',{staticClass:\"flex flex-col bg-lightgray py-5\"},[_c('div',{staticClass:\"m-auto font-bold text-3xl py-2 text-green\"},[_vm._v(\"4,2\")]),_c('Rating',{staticClass:\"m-auto\"})],1),_c('div',{staticClass:\"text-center\"},[_c('v-menu',{staticClass:\"m-auto\",attrs:{\"offset-y\":\"\",\"open-on-hover\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Sort by \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"menu-down\")])],1)]}}],null,false,1997559963)},[_c('v-list',_vm._l((3),function(index){return _c('v-list-item',{key:index},[_c('v-list-item-title',[_vm._v(\"Highest rating\")])],1)}),1)],1)],1),_c('div',{staticClass:\"inner-container\"},[_c('Review',{staticClass:\"py-4 md:mr-32\"}),_c('div',{staticClass:\"text-center\"},[_c('v-btn',{staticClass:\"rounded-none bg-dark text-white text-s\",attrs:{\"depressed\":\"\"}},[_vm._v(\" See all reviews \")])],1)],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"flex flex-row\"},[_c('div',{staticClass:\"w-1/4 md:w-min\"},[_c('v-avatar',{staticClass:\"my-4 md:m-4 self-center\",attrs:{\"size\":\"62\"}},[_c('img',{attrs:{\"alt\":\"user\",\"src\":\"https://www.w3schools.com/howto/img_avatar.png\"}})])],1),_c('div',{staticClass:\"w-3/4 md:w-max md:px-4\"},[_c('Rating'),_c('v-card-title',{staticClass:\"pl-0 py-1\"},[_vm._v(\"Ce esse dolor sit ametd\")]),_c('v-card-text',{staticClass:\"pl-0 whitespace-pre-wrap\"},[_vm._v(\" \"+_vm._s(_vm.reviewText)+\" \")])],1)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex flex-row items-center w-min\"},[_c('v-rating',{staticClass:\"pl-0 m-auto\",attrs:{\"empty-icon\":\"star-outline\",\"full-icon\":\"star\",\"value\":3,\"large\":\"\",\"readonly\":\"\"}}),_c('div',{staticClass:\"p-1 text-green\",class:[_vm.withNumber ? 'block' : 'hidden']},[_vm._v(\" 4,2 \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {}\n})\nexport default class Rating extends Vue {\n @Prop() withNumber!: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rating.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rating.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Rating.vue?vue&type=template&id=1132f87e&\"\nimport script from \"./Rating.vue?vue&type=script&lang=ts&\"\nexport * from \"./Rating.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VRating } from 'vuetify/lib/components/VRating';\ninstallComponents(component, {VRating})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport Rating from \"@/components/Rating.vue\";\n\n@Component({\n components: {Rating}\n})\nexport default class Review extends Vue {\n get reviewText(): string {\n return `Lorem ipsum dolor sit amet, consectetur adipiscing elit. In at porttitor odio, eu tristique tortor. Phasellus et faucibus nisi. Etiam in quam eget orci faucibus eleifend eu convallis velit.\n\nSuspendisse eget gravida enim.Nam mollis velit tellus, posuere accumsan ante consectetur sed. Praesent sed sem vitae est malesuada lacinia egestas a arcu. Proin sed tempus diam. In eleifend cursus lorem ut posuere. Phasellus elit arcu, tincidunt id sapien vitae. Maecenas fermentum, nisi non finibus venenatis, ante diam maximus nisl, et pellentesque nulla sem nec est. Nunc sagittis mattis lorem, in commodo metus rutrum sed.\n\nPellentesque id maximus sem, et vestibulum libero. Pellentesque quis imperdiet urna. Vivamus interdum, Mauris in diam sed tellus imperdiet convallis at eget lacus.`;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Review.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Review.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Review.vue?vue&type=template&id=46f68660&\"\nimport script from \"./Review.vue?vue&type=script&lang=ts&\"\nexport * from \"./Review.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\ninstallComponents(component, {VAvatar,VCard,VCardText,VCardTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"hidden md:flex flex-row items-center cursor-pointer w-min\",on:{\"click\":function($event){return _vm.$router.push('/')}}},[_c('v-icon',{attrs:{\"small\":\"\",\"m-4\":\"\"}},[_vm._v(\"$prev\")]),_c('div',{staticClass:\"text-xs px-2 whitespace-nowrap\"},[_vm._v(\" National Gallery \")])],1),_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"mx-4\",attrs:{\"small\":\"\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"mx-4\",attrs:{\"small\":\"\"}},[_vm._v(\"heart\")])],1),_c('v-img',{staticClass:\"object-center object-cover w-full rounded-3xl my-4\",attrs:{\"height\":\"350\",\"src\":\"https://picsum.photos/id/11/500/300\"}},[_c('v-container',{staticClass:\"absolute flex h-full w-full\"},[_c('div',{staticClass:\"grid grid-cols-3 justify-items-center items-center self-end w-full mb-3 md:mx-4\"},[_c('div',{staticClass:\"col-start-2 min-w-max flex flex-row items-center bg-dark px-3 py-3 justify-self-center rounded-3xl\"},[_c('Rating'),_c('div',{staticClass:\"p-1 text-green\"},[_vm._v(\"4,2\")]),_c('v-spacer',{staticClass:\"md:hidden\"}),_c('AvatarGroup',{staticClass:\"md:ml-16\"})],1),_c('v-btn',{staticClass:\"hidden md:block bg-dark rounded-xl text-white ml-auto px-6 justify-end\",attrs:{\"right\":\"\"}},[_vm._v(\"View all images\")])],1)])],1),_c('div',{staticClass:\"flex flex-row py-2\"},[_c('h1',[_vm._v(\"Lorem ipsum dolor sit amet, consectetur adipiscing elit\")]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"self-center justify-self-end m-4\",attrs:{\"small\":\"\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"self-center justify-self-end m-4\",attrs:{\"small\":\"\"}},[_vm._v(\"heart\")])],1)],1),_c('v-btn',{staticClass:\"bg-dark rounded-xl text-white depressed\",attrs:{\"right\":\"\"}},[_vm._v(\"Constant exhibition ipsum dolor sit amet\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex -space-x-2 overflow-hidden\"},[_vm._l((4),function(i){return _c('v-avatar',{key:i,staticClass:\"ring-2 ring-black\",attrs:{\"size\":\"32\"}},[_c('img',{attrs:{\"alt\":\"user\",\"src\":\"https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80\"}})])}),_c('v-avatar',{staticClass:\"ring-2 ring-black bg-lightgray\",attrs:{\"size\":\"32\"}},[_c('div',{staticClass:\"text-white\"},[_vm._v(\"+25\")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({})\nexport default class AvatarGroup extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AvatarGroup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AvatarGroup.vue?vue&type=template&id=49094e0c&scoped=true&\"\nimport script from \"./AvatarGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./AvatarGroup.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49094e0c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\ninstallComponents(component, {VAvatar})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport Rating from \"@/components/Rating.vue\";\nimport AvatarGroup from \"@/components/AvatarGroup.vue\";\n\n@Component({\n components: {AvatarGroup, Rating}\n})\nexport default class ExhibitionCard extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExhibitionCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExhibitionCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ExhibitionCard.vue?vue&type=template&id=cccf1b24&\"\nimport script from \"./ExhibitionCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ExhibitionCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VContainer,VIcon,VImg,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"flex items-center justify-between py-4 md:pr-5\"},[_c('h2',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{staticClass:\"text-primary cursor-pointer\"},[_vm._v(\" view all \")])]),_c('v-slide-group',{staticClass:\"v-slide-group-absolute-button\"},_vm._l((7),function(i){return _c('v-slide-item',{key:i,staticClass:\"pr-8\"},[_c('v-card',{attrs:{\"flat\":\"\"}},[_c('v-img',{staticClass:\"relative bg-lightgray rounded-3xl\",attrs:{\"height\":\"150\",\"width\":\"384\"}},[_c('div',{staticClass:\"absolute bottom-0 left-0 bg-dark px-7 py-2 rounded-r-lg rounded-bl-3xl\"},[_c('div',{staticClass:\"text-white\"},[_vm._v(\"10:22\")])])]),_c('v-card-title',{staticClass:\"font-bold\"},[_vm._v(\"Founder\")])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport VideoCard from \"./VideoCard.vue\";\n\n@Component({\n components: {VideoCard, GUIDImage}\n})\nexport default class VideoList extends Vue {\n @Prop() title!: string;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VideoList.vue?vue&type=template&id=1e3a18fa&\"\nimport script from \"./VideoList.vue?vue&type=script&lang=ts&\"\nexport * from \"./VideoList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSlideGroup } from 'vuetify/lib/components/VSlideGroup';\nimport { VSlideItem } from 'vuetify/lib/components/VSlideGroup';\ninstallComponents(component, {VCard,VCardTitle,VImg,VSlideGroup,VSlideItem})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport Review from \"@/components/Review.vue\";\nimport Rating from \"@/components/Rating.vue\";\nimport ExhibitionCard from \"@/components/ExhibitionCard.vue\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport VideoList from \"@/components/VideoList.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {embeddedStore} from \"@/store\";\nimport {ExhibitionV2, VizguTypeLink} from \"@/types/vizgu\";\nimport exhibitionsApi from \"@/api/exhibitions\";\nimport {copyCurrentRouteClipboard} from \"@/utils/clipboard\";\nimport {EventKeys} from \"@/store/modules/embedded\";\nimport {parseBaseContentText} from \"@/utils/data\";\nimport {parseDateToString} from \"@/utils/datetime\";\nimport {openMobileLinkFor} from \"@/utils/mobileLink\";\n\nexport interface InformationItem {\n icon: string | null;\n title: string;\n}\n\n@Component({\n components: {\n VideoList,\n ExhibitionCard,\n Rating,\n Review,\n ItemSlideGroup,\n VideoCard,\n GUIDImage\n }\n})\nexport default class Exhibition extends Vue {\n likeFeature = false;\n ratingFeature = false;\n\n showBaseMedia = false;\n showAdditionalMedia = false;\n showReviews = false;\n\n @Watch(\"$route.params.id\")\n onIdChange() {\n window.scrollTo(0, 0);\n this.loadApiData();\n }\n\n openMobile() {\n openMobileLinkFor({\n type: VizguTypeLink.Exhibition,\n id: this.currentExhibition?.id || \"\"\n });\n }\n\n get exhibitionInfo(): InformationItem[] {\n const r = [];\n this.exhibitionDateStart &&\n r.push({icon: \"calendar\", title: this.exhibitionDateStart || \"\"});\n this.exhibitionDateEnd &&\n r.push({icon: \"calendar\", title: this.exhibitionDateEnd || \"\"});\n return r;\n }\n\n get exhibitionDateStart(): string | null {\n const dateStart = this.currentExhibition?.begin;\n if (dateStart) {\n try {\n return parseDateToString(new Date(dateStart));\n } catch {\n return null;\n }\n }\n return null;\n }\n\n get exhibitionDateEnd(): string | null {\n const dateStart = this.currentExhibition?.end;\n if (dateStart) {\n try {\n return parseDateToString(new Date(dateStart));\n } catch {\n return null;\n }\n }\n return null;\n }\n\n shareLink() {\n copyCurrentRouteClipboard(this.$route);\n }\n\n currentExhibition: ExhibitionV2 | null = null;\n\n get exhibitionName(): string {\n return this.currentExhibition?.name || \"\";\n }\n\n get exhibitionLocation(): string {\n return this.currentExhibition?.venueName || \"\";\n }\n\n get exhibitionImgSrc(): string {\n return this.currentExhibition?.imageGuids.$values[0] || \"\";\n }\n\n get aboutDescription(): string {\n return this.currentExhibition\n ? parseBaseContentText(this.currentExhibition)\n : \"\";\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadApiData();\n }\n\n async created() {\n this.initListeners(true);\n this.loadApiData();\n }\n\n beforeDestroy() {\n this.initListeners(false);\n }\n // eof lifecycle methods\n\n private async loadApiData() {\n embeddedStore.setCurrentExhibition(null);\n const id: string = this.$route.params.id;\n await this.requestExhibition(id);\n }\n\n // data load methods\n private async requestExhibition(id: string) {\n const resp: ExhibitionV2 = await exhibitionsApi.getExhibition(id);\n this.currentExhibition = resp;\n embeddedStore.setCurrentExhibition(resp);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Exhibition.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Exhibition.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Exhibition.vue?vue&type=template&id=fb22a89e&\"\nimport script from \"./Exhibition.vue?vue&type=script&lang=ts&\"\nexport * from \"./Exhibition.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VDivider,VIcon,VList,VListItem,VListItemTitle,VMenu,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{},[(_vm.currentEvent)?_c('div',[_c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":function($event){return _vm.shareLink()}}},[_vm._v(\"share\")]),(_vm.showLike)?_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1),_c('div',{staticClass:\"relative bg-dark\"},[_c('GUIDImage',{attrs:{\"image-uid\":_vm.currentEvent.mainImage,\"imageAPI\":_vm.eventImageAPI,\"height\":450,\"rounded\":false}}),_c('div',{staticClass:\"inner-container mt-4\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"event\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.$t(\"Event\")))])],1),_c('div',{staticClass:\"bg-dark text-white absolute bottom-14 z-1 py-2 px-4\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"open in app to start wayfinder\"))+\" \")])])],1)]),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-row pt-4 items-center\"},[_c('h2',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.currentEvent.name)+\" \")]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":function($event){return _vm.shareLink()}}},[_vm._v(\"share\")]),(_vm.showLike)?_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1)],1),(false)?_c('Rating',{staticClass:\"pb-1\",attrs:{\"with-number\":true}}):_vm._e(),_c('div',{staticClass:\"flex flex-col md:flex-row md:items-center\"},_vm._l((_vm.eventInfo),function(item){return _c('div',{key:item.title,staticClass:\"font-medium md:mr-5\"},[(item.icon)?_c('v-icon',{staticClass:\"text-primary\",attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\" \"+_vm._s(item.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(item.title)+\" \")],1)}),0),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),(false)?_c('div',{staticClass:\"pb-4\"},[_c('h3',{staticClass:\"pb-4\"},[_vm._v(\"Available tickets\")]),_vm._l((_vm.availableTickets),function(ticket,i){return _c('v-row',{key:i,attrs:{\"align\":\"start\",\"dense\":\"\"}},[_c('v-col',{attrs:{\"md\":\"3\"}},[_vm._v(\" \"+_vm._s(ticket.name)+\" \")]),_c('v-col',{attrs:{\"md\":\"2\"}},[_vm._v(_vm._s(ticket.price))])],1)})],2):_vm._e()],1),(_vm.pickTicketProps)?_c('PickTicket',{attrs:{\"props\":_vm.pickTicketProps}}):_vm._e(),(_vm.currentEvent.description)?_c('div',{staticClass:\"flex flex-col pb-4 inner-container\"},[_c('div',{staticClass:\"w-full md:w-9/12 md:pr-48\"},[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{},[_vm._v(_vm._s(_vm.currentEvent.description))])]),(false)?_c('div',{staticClass:\"w-full md:w-3/12\"},[_c('h3',{staticClass:\"py-4\"},[_vm._v(\"Important information\")])]):_vm._e()]):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1),(_vm.showCritics)?_c('div',[_c('h2',{staticClass:\"text-center py-4\"},[_vm._v(\"Critics reviews!\")]),(false)?_c('div',{staticClass:\"flex flex-col bg-lightgray py-5\"},[_c('div',{staticClass:\"m-auto font-bold text-3xl py-2 text-green\"},[_vm._v(\"4,2\")]),_c('Rating',{staticClass:\"m-auto\"})],1):_vm._e(),(false)?_c('div',{staticClass:\"text-center\"},[_c('v-menu',{staticClass:\"m-auto\",attrs:{\"offset-y\":\"\",\"open-on-hover\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" Sort by \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"menu-down\")])],1)]}}],null,false,1997559963)},[_c('v-list',_vm._l((3),function(index){return _c('v-list-item',{key:index},[_c('v-list-item-title',[_vm._v(\"Highest rating\")])],1)}),1)],1)],1):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('Review',{staticClass:\"py-4 md:mr-32\"}),_c('div',{staticClass:\"text-center\"},[_c('v-btn',{staticClass:\"rounded-none bg-dark text-white text-s\",attrs:{\"depressed\":\"\"}},[_vm._v(\" See all reviews \")])],1)],1)]):_vm._e()],1):_c('div',{staticClass:\"inner-container py-12 text-center text-2xl\"},[_vm._v(\" LOADING... \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex items-center justify-between py-4 md:pr-5\"},[_c('h2',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{staticClass:\"text-primary cursor-pointer\",on:{\"click\":function($event){return _vm.goViewAllPage()}}},[_vm._v(\" \"+_vm._s(_vm.viewAllLabel)+\" \")])]),_c('v-slide-group',{staticClass:\"v-slide-group-absolute-button\"},_vm._l((_vm.dataList),function(element){return _c('v-slide-item',{key:element.item1.id,staticClass:\"pr-5\"},[_c('v-card',{staticClass:\"cursor-pointer\",attrs:{\"flat\":\"\",\"width\":_vm.itemWidth}},[_c('div',{staticClass:\"relative\",on:{\"click\":function($event){return _vm.handleItemHref(element)}}},[_c('GUIDImage',{staticClass:\"object-center object-cover w-full rounded-3xl hover:opacity-60\",attrs:{\"image-uid\":element.item1.imageGuids[0],\"rounded\":true,\"height\":150}}),_c('div',{staticClass:\"absolute top-0 left-0 bg-dark px-3 py-2\"},[_c('v-icon',{attrs:{\"size\":_vm.iconSize}},[_vm._v(_vm._s(_vm.cardTopIcon))])],1)],1),_c('div',{staticClass:\"ml-3 mt-2\"},[_c('div',{staticClass:\"font-medium tracking-wide text-lg\",on:{\"click\":function($event){return _vm.handleItemHref(element)}}},[_vm._v(\" \"+_vm._s(element.item1.name)+\" \")]),(_vm.useSubtitle)?_c('div',{staticClass:\"text-gray-600 text-sm\"},[_vm._t(\"subtitle\",function(){return [_vm._v(_vm._s(_vm.artworksLabel(element)))]},{\"element\":element})],2):_vm._e(),(_vm.useLocation)?_c('div',[_c('v-icon',{staticClass:\"text-primary bg-white\",attrs:{\"size\":\"20\"}},[_vm._v(\"place-location\")]),_c('span',{staticClass:\"font-medium text-sm\"},[_vm._t(\"location\")],2)],1):_vm._e()])])],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {BaseData} from \"@/types/vizgu\";\nimport {ItemTuple} from \"@/types/homepage\";\n\n@Component({\n components: {GUIDImage}\n})\nexport default class ItemSlideGroup extends Vue {\n @Prop() dataList!: ItemTuple[];\n @Prop() title!: string;\n @Prop({type: Boolean, required: false, default: true}) useSubtitle!: boolean;\n @Prop({type: Boolean, required: false, default: false}) useLocation!: boolean;\n @Prop() itemWidth!: number;\n @Prop({type: String, required: false, default: \"venue\"}) cardTopIcon!: number;\n @Prop({type: Number, required: false, default: 20}) iconSize!: number;\n @Prop({type: String, required: false, default: \"\"}) viewAllHref!: string;\n\n // labels\n get viewAllLabel() {\n return this.$t(\"view all\");\n }\n artworksLabel(e: BaseData) {\n const c = e.artworksCount;\n if (!c) {\n return \"\";\n }\n const l = this.$t(\"artworks\");\n return `${c} ${l}`;\n }\n get awayLabel() {\n return this.$t(\"away\");\n }\n // eof labels\n\n handleItemHref(item: ItemTuple) {\n this.$emit(\"onItemHref\", item);\n }\n\n goViewAllPage() {\n this.$router.push(this.viewAllHref);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemSlideGroup.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemSlideGroup.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ItemSlideGroup.vue?vue&type=template&id=412af6c7&\"\nimport script from \"./ItemSlideGroup.vue?vue&type=script&lang=ts&\"\nexport * from \"./ItemSlideGroup.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSlideGroup } from 'vuetify/lib/components/VSlideGroup';\nimport { VSlideItem } from 'vuetify/lib/components/VSlideGroup';\ninstallComponents(component, {VCard,VIcon,VSlideGroup,VSlideItem})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"hidden md:flex flex-row items-center cursor-pointer w-min\",on:{\"click\":function($event){return _vm.$router.push('/')}}},[_c('v-icon',{attrs:{\"small\":\"\",\"m-4\":\"\"}},[_vm._v(\"$prev\")]),_c('div',{staticClass:\"text-xs px-2 whitespace-nowrap\"},[_vm._v(\" Events \")])],1),_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"mx-4 text-primary\",attrs:{\"small\":\"\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"mx-4 text-primary\",attrs:{\"small\":\"\"}},[_vm._v(\"heart\")])],1),_c('v-img',{staticClass:\"object-center object-cover w-full rounded-3xl my-4\",attrs:{\"height\":\"350\",\"src\":\"https://picsum.photos/id/11/500/300\"}},[_c('v-container',{staticClass:\"absolute flex h-full w-full\"},[_c('div',{staticClass:\"grid grid-cols-3 justify-items-center items-center self-end w-full mb-3 md:mx-4\"},[_c('div',{staticClass:\"col-start-2 min-w-max flex flex-row items-center bg-dark px-3 py-3 justify-self-center rounded-3xl\"},[_c('Rating'),_c('div',{staticClass:\"p-1 text-green\"},[_vm._v(\"4,2\")]),_c('v-spacer',{staticClass:\"md:hidden\"}),_c('AvatarGroup',{staticClass:\"md:ml-16\"})],1),_c('v-btn',{staticClass:\"hidden md:block bg-dark rounded-xl text-white ml-auto px-6 justify-end\",attrs:{\"right\":\"\"}},[_vm._v(\"View all images\")])],1)])],1),_c('div',{staticClass:\"flex flex-row py-2\"},[_c('div',{staticClass:\"text-4xl\"},[_vm._v(\" A space to be: a musical celebration of Edmund de Waal's 'library of exile' \")]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1)],1),_c('div',{staticClass:\"flex flex-col md:flex-row\"},_vm._l((_vm.eventInfo),function(item){return _c('div',{key:item.title,staticClass:\"text-primary md:mr-5\"},[_c('v-icon',{staticClass:\"text-primary\",attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\" \"+_vm._s(item.icon)+\" \")]),_vm._v(\" \"+_vm._s(item.title)+\" \")],1)}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport Rating from \"@/components/Rating.vue\";\nimport AvatarGroup from \"@/components/AvatarGroup.vue\";\n\nexport interface InformationItem {\n icon: string | null;\n title: string;\n}\n\n@Component({\n components: {AvatarGroup, Rating}\n})\nexport default class EventInfoBox extends Vue {\n get eventInfo(): InformationItem[] {\n return [\n {\n icon: \"calendar\",\n title: \"18 Jan 2022\"\n },\n {\n icon: \"clock\",\n title: \"2 hrs (lorem ipsum dolor sit amet)\"\n },\n {\n icon: \"place-location\",\n title: \"Tondervej 60, 6000 Koldingg\"\n }\n ];\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventInfoBox.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventInfoBox.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EventInfoBox.vue?vue&type=template&id=fcd51316&\"\nimport script from \"./EventInfoBox.vue?vue&type=script&lang=ts&\"\nexport * from \"./EventInfoBox.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VContainer,VIcon,VImg,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroup.vue\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport EventInfoBox, {InformationItem} from \"@/components/EventInfoBox.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport Rating from \"@/components/Rating.vue\";\nimport Review from \"@/components/Review.vue\";\nimport PickTicket, {PickTicketProps} from \"@/components/PickTicket.vue\";\nimport {cartStore, embeddedStore} from \"@/store\";\nimport {GetEventTicketsRequest, VizEvent} from \"@/types/api.newviz/events\";\nimport eventsApi from \"@/api.newviz/events\";\nimport {VEvent, VizEventTickets} from \"@/models/events\";\nimport {VCart} from \"@/models/cart\";\nimport {ImageAPI} from \"@/utils/image-utils\";\nimport {copyCurrentRouteClipboard} from \"@/utils/clipboard\";\nimport {format} from \"date-fns\";\n\nexport interface TicketType {\n name: string;\n price: string;\n}\n\n@Component({\n components: {\n EventInfoBox,\n VideoCard,\n ItemSlideGroup,\n GUIDImage,\n Rating,\n Review,\n PickTicket\n }\n})\nexport default class Event extends Vue {\n currentEvent: VEvent | null = null;\n currentEventTickets: VizEventTickets[] = [];\n\n eventImageAPI = ImageAPI.NewViz;\n\n showCritics = false;\n showLike = false;\n\n @Watch(\"$route.params.id\")\n onIdChange() {\n window.scrollTo(0, 0);\n this.loadApiData();\n }\n\n get cart(): VCart | null {\n return cartStore.cart;\n }\n\n shareLink() {\n copyCurrentRouteClipboard(this.$route);\n }\n\n get availableTickets(): TicketType[] {\n return [\n {\n name: \"Adults (18-64)\",\n price: \"60 DKK\"\n },\n {\n name: \"Adults (18-64)\",\n price: \"60 DKK\"\n },\n {\n name: \"Senior discount (65+)\",\n price: \"45 DKK\"\n }\n ];\n }\n get eventInfo(): InformationItem[] {\n const e = this.currentEvent;\n return [\n {\n icon: \"calendar\",\n title: e?.date || \"\"\n },\n {\n icon: \"clock\",\n title: e?.duration || \"\"\n },\n {\n icon: \"place-location\",\n title: e?.generalInfo?.location?.address || \"\"\n }\n ];\n }\n get items(): string[] {\n return [\"Foo\", \"Bar\", \"Fizz\", \"Buzz\"];\n }\n get description(): string {\n return `Lorem ipsum dolor sit amet, consectetur adipiscing elit. In at porttitor odio, eu tristique tortor. Phasellus et faucibus nisi. Etiam in quam eget orci faucibus eleifend eu convallis velit.\n\nSuspendisse eget gravida enim.Nam mollis velit tellus, posuere accumsan ante consectetur sed. Praesentsed sem vitae est malesuada lacinia egestas a arcu.\nProin sed tempus diam.\n\nQuisque ut semper ipsum. In hac habitasse platea dictumst. In eleifend\ncursus lorem ut posuere. Phasellus elit arcu, tincidunt id sapien vitae,\nfinibus hendrerit nulla. Maecenas fermentum, nisi non finibus venenatis,\nante diam maximus nisl, et pellentesque nulla sem nec est. Nunc sagittis\nmattis lorem, in commodo metus rutrum sed.`;\n }\n\n get pickTicketProps(): PickTicketProps | undefined {\n if (!this.currentEvent) {\n return undefined;\n }\n return {\n event: this.currentEvent,\n eventTickets: this.currentEventTickets,\n onUpdatePickerDate: async (pickerDate: string) => {\n await this.loadEventTickets(false, {month: pickerDate});\n },\n onAddCart: async (selectedEvent: VEvent) => {\n await VCart.createOrAdd(selectedEvent);\n },\n onCurrencyUpdate: async () => {\n await this.loadEventTickets(true);\n }\n };\n }\n\n // lifecycle methods\n async created() {\n // this.initListeners(true);\n await this.loadApiData();\n }\n // eof lifecycle methods\n private async loadApiData() {\n embeddedStore.setCurrentEventLoading(true);\n embeddedStore.setCurrentEvent(null);\n const id: string = this.$route.params.id;\n await this.requestEvent(id);\n await this.loadEventTickets();\n }\n\n // data load methods\n private async requestEvent(id: string) {\n const resp: VizEvent = await eventsApi.getEvent({\n id\n });\n embeddedStore.setCurrentEvent(new VEvent(resp));\n this.currentEvent = embeddedStore.currentEvent;\n embeddedStore.setCurrentEventLoading(false);\n }\n\n private async loadEventTickets(\n replace = false,\n params: Partial = {}\n ) {\n if (!this.currentEvent) {\n return;\n }\n\n const currentYearMonth = format(new Date(), \"yyy-MM-dd\");\n const hasMonth = (date: string) => {\n const dFmt = format(new Date(date), \"yyy-M\");\n return this.currentEventTickets.find(v => v.month == dFmt) != undefined;\n };\n\n if (replace) {\n this.currentEventTickets = [];\n }\n\n if (!replace && this.currentEventTickets) {\n if (params.month && params.month && hasMonth(params.month)) {\n return;\n } else if (!params.month && hasMonth(currentYearMonth)) {\n return;\n }\n }\n const query: GetEventTicketsRequest = {\n buyCurrency: cartStore.currentCurrency,\n ...params\n };\n const resp = await eventsApi.getEventTickets(\n this.currentEvent?.eventId,\n query\n );\n this.currentEventTickets.push({\n month: resp.month,\n series: resp.series.map(v => new VEvent(v))\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Event.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Event.vue?vue&type=template&id=d33c7cae&\"\nimport script from \"./Event.vue?vue&type=script&lang=ts&\"\nexport * from \"./Event.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VDivider,VIcon,VList,VListItem,VListItemTitle,VMenu,VRow,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1),_c('div',{staticClass:\"relative bg-dark\"},[(_vm.currentWayfinder)?_c('GUIDImage',{attrs:{\"image-uid\":_vm.wayfinderImageSrc,\"height\":450,\"rounded\":false}}):_vm._e(),_c('div',{staticClass:\"inner-container mt-4\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"wayfinder\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.$t(\"Wayfinder\")))])],1),_c('div',{staticClass:\"bg-dark text-white absolute bottom-14 z-1 py-2 px-4 cursor-pointer select-none\",on:{\"click\":function($event){return _vm.openMobile()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"open in app to start wayfinder\"))+\" \")])])],1),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-row pt-4 items-center\"},[_c('h2',[_vm._v(\" \"+_vm._s(_vm.wayfinderName)+\" \")]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":_vm.shareLink}},[_vm._v(\"share\")]),(_vm.likeFeature)?_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1)],1),(_vm.ratingFeature)?_c('Rating',{staticClass:\"pb-1\",attrs:{\"with-number\":true}}):_vm._e(),_c('div',{staticClass:\"flex flex-col md:flex-row md:items-center\"},_vm._l((_vm.eventInfo),function(item){return _c('div',{key:item.title,staticClass:\"font-medium md:mr-5\"},[_c('v-icon',{staticClass:\"text-primary\",attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\" \"+_vm._s(item.icon)+\" \")]),_vm._v(\" \"+_vm._s(item.title)+\" \")],1)}),0),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.aboutDescription)}}),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),_c('div',{staticClass:\"my-10\"},[(_vm.currentWayfinder)?_c('WayfinderStops',{attrs:{\"props\":_vm.wayfinderStopsProps}}):_vm._e()],1),(_vm.showMapTour)?_c('div',{staticClass:\"flex flex-col md:flex-row pb-4\"},[_c('div',{staticClass:\"w-full md:w-6/12\"},[_c('h3',{staticClass:\"py-4\"},[_vm._v(\"Stops on the tour\")]),_c('v-timeline',{attrs:{\"dense\":\"\"}},_vm._l((3),function(i){return _c('v-timeline-item',{key:i,attrs:{\"small\":\"\"}},[_c('div',{staticClass:\"flex flex-row items-center\"},[_c('v-img',{staticClass:\"w-12 h-12 flex-initial rounded-lg mr-2\",attrs:{\"src\":\"https://picsum.photos/id/11/500/300\"}}),_c('div',[_c('div',[_vm._v(\" Rundvisning for børn og voksne \")]),_c('div',{staticClass:\"text-sm font-light\"},[_vm._v(\"Venue · 0.5 km\")])])],1)])}),1)],1),_vm._m(0)]):_vm._e()],1),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.similarWayfinders,\"title\":'Wayfinders like this',\"item-width\":224}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-full md:w-6/12\"},[_c('h3',{staticClass:\"py-4\"},[_vm._v(\"See on map\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"flex flex-col md:flex-row gap-2\"},[_c('div',{staticClass:\"md:w-1/2\"},[_c('div',{staticClass:\"flex flex-col gap-1 max-h-96 overflow-hidden overflow-y-scroll\"},_vm._l((_vm.enabledStopPoints),function(stop,i){return _c('div',{key:i,staticClass:\"flex row flex-nowrap items-center gap-3 m-0 cursor-pointer hover:bg-lightgray rounded-lg p-2\",on:{\"click\":function($event){return _vm.onStopItemClick(stop)}}},[(_vm.stopImages(stop).length > 0)?_c('img',{staticClass:\"w-12 h-12 rounded-xl\",attrs:{\"src\":_vm.thumbImg(_vm.stopImages(stop)[0])}}):_vm._e(),_c('div',{},[_vm._v(\" \"+_vm._s(stop.name)+\" \")])])}),0)]),_c('div',{staticClass:\"h-full md:w-1/2 rounded-3xl overflow-hidden\"},[(true)?_c('GMap',{attrs:{\"props\":_vm.mapConfig}}):_vm._e()],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nexport interface WayfinderStopsProps {\n wayfinder: Wayfinder;\n}\n\nimport {\n MapPoint,\n WayfinderPoint,\n WayfinderV2 as Wayfinder\n} from \"@/types/vizgu\";\nimport {Component, Vue, Prop} from \"vue-property-decorator\";\nimport GMap, {GMapProps} from \"@/components/GMap.vue\";\nimport {thumbnailImageUri} from \"@/utils/image-utils\";\n@Component({\n components: {GMap}\n})\nexport default class WayfinderStops extends Vue {\n @Prop({}) props!: WayfinderStopsProps;\n\n activePoint: MapPoint | null = null;\n setActivePoint(p: MapPoint) {\n this.activePoint = p;\n }\n\n get wayfinder() {\n return this.props.wayfinder;\n }\n\n get stopPoints() {\n return this.wayfinder.wayfinderPoints.$values;\n }\n\n get enabledStopPoints() {\n return this.wayfinder.wayfinderPoints.$values.filter(v => !v.isHidden);\n }\n\n stopImages(v: WayfinderPoint) {\n return v.imageGuids.$values;\n }\n\n thumbImg(guid: string) {\n return thumbnailImageUri(guid);\n }\n\n mapPointFromWayfinderPoint(p: WayfinderPoint): MapPoint {\n return {\n lat: p.position.latitude || 0,\n lng: p.position.longitude || 0,\n title: p.name || \"\"\n };\n }\n\n onStopItemClick(stop: WayfinderPoint) {\n this.setActivePoint(this.mapPointFromWayfinderPoint(stop));\n }\n\n get mapConfig(): GMapProps {\n const mapStyles: google.maps.MapTypeStyle = {\n stylers: []\n };\n const mapPoints: MapPoint[] = this.enabledStopPoints.map(\n (p: WayfinderPoint) => {\n return {\n lat: p.position.latitude || 0,\n lng: p.position.longitude || 0,\n title: p.name\n };\n }\n );\n\n return {\n apiKey: \"AIzaSyAWkPa63y66oU6Mzfkrnmc77Ns_nbH6eoI\", // TODO add to env or get from api?\n mapPoints,\n input: \"\",\n mapStyles: [mapStyles],\n height: \"370px\",\n zoom: 16,\n activePoint: this.activePoint,\n setActivePoint: this.setActivePoint\n };\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WayfinderStops.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WayfinderStops.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WayfinderStops.vue?vue&type=template&id=44eb5098&\"\nimport script from \"./WayfinderStops.vue?vue&type=script&lang=ts&\"\nexport * from \"./WayfinderStops.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {InformationItem} from \"@/components/EventInfoBox.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport Rating from \"@/components/Rating.vue\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport {VizguTypeLink, WayfinderV2} from \"@/types/vizgu\";\nimport wayfindersApi from \"@/api/wayfinders\";\nimport {embeddedStore} from \"@/store\";\nimport {parseDateToString} from \"@/utils/datetime\";\nimport {GetWayfindersRequest, GetWayfindersResponse} from \"@/types/api\";\nimport {copyCurrentRouteClipboard} from \"@/utils/clipboard\";\nimport {EventKeys} from \"@/store/modules/embedded\";\nimport {parseBaseContentText} from \"@/utils/data\";\nimport {openMobileLinkFor} from \"@/utils/mobileLink\";\nimport WayfinderStops, {\n WayfinderStopsProps\n} from \"@/components/WayfinderStops.vue\";\n\n@Component({\n components: {Rating, GUIDImage, ItemSlideGroup, WayfinderStops}\n})\nexport default class Wayfinder extends Vue {\n likeFeature = false;\n ratingFeature = false;\n showMapTour = false;\n currentWayfinder: WayfinderV2 | null = null;\n\n similarWayfinderTake = 20;\n similarWayfinders: WayfinderV2[] = [];\n\n shareLink() {\n copyCurrentRouteClipboard(this.$route);\n }\n\n openMobile() {\n openMobileLinkFor({\n type: VizguTypeLink.Wayfinder,\n id: this.currentWayfinder?.id || \"\"\n });\n }\n\n @Watch(\"$route.params.id\")\n async onIdChange() {\n window.scrollTo(0, 0);\n embeddedStore.setCurrentWayfinder(null);\n const id: string = this.$route.params.id;\n await this.requestWayfinder(id);\n await this.getSliderSimilarWayfinders();\n }\n\n get eventInfo(): InformationItem[] {\n return [\n /*\n {\n icon: \"clock\",\n title: \"3 hrs\"\n },\n */\n {\n icon: \"calendar\",\n title: this.wayfinderDateStart\n }\n /*\n {\n icon: \"place-location\",\n title: ''\n }\n */\n ];\n }\n\n get wayfinderStopsProps(): WayfinderStopsProps | undefined {\n if (!this.currentWayfinder) {\n return undefined;\n }\n return {wayfinder: this.currentWayfinder};\n }\n\n get aboutDescription(): string {\n return this.currentWayfinder\n ? parseBaseContentText(this.currentWayfinder)\n : \"\";\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadApiData();\n }\n\n // lifecycle methods\n async created() {\n this.initListeners(true);\n await this.loadApiData();\n }\n beforeDestroy() {\n this.initListeners(false);\n }\n // eof lifecycle methods\n\n async loadApiData() {\n embeddedStore.setCurrentWayfinder(null);\n const id: string = this.$route.params.id;\n await this.requestWayfinder(id);\n await this.getSliderSimilarWayfinders();\n }\n\n get wayfinderName(): string {\n return this.currentWayfinder?.name || \"\";\n }\n\n get wayfinderDateStart(): string {\n const dateStart = this.currentWayfinder?.begin;\n if (dateStart) {\n // catcher in case of invalid string for Date parsing\n try {\n return parseDateToString(new Date(dateStart));\n } catch {\n return \"No date yet\";\n }\n }\n return \"No date yet\";\n }\n\n get wayfinderImageSrc(): string {\n const defaultImgSrc = \"e17fb04a-e32f-4041-92f1-abf608dbb73c\";\n return this.currentWayfinder?.imageGuids.$values[0] || defaultImgSrc;\n }\n\n // data load methods\n private async requestWayfinder(id: string) {\n const resp: WayfinderV2 = await wayfindersApi.getWayfinder(id);\n this.currentWayfinder = resp;\n embeddedStore.setCurrentWayfinder(resp);\n }\n\n private async getSliderSimilarWayfinders() {\n const params: GetWayfindersRequest = {\n skip: 0,\n take: this.similarWayfinderTake\n };\n const resp: GetWayfindersResponse = await wayfindersApi.getWayfinders(\n params\n );\n this.similarWayfinders = resp.list.$values;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wayfinder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Wayfinder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Wayfinder.vue?vue&type=template&id=6382598b&\"\nimport script from \"./Wayfinder.vue?vue&type=script&lang=ts&\"\nexport * from \"./Wayfinder.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTimeline } from 'vuetify/lib/components/VTimeline';\nimport { VTimelineItem } from 'vuetify/lib/components/VTimeline';\ninstallComponents(component, {VDivider,VIcon,VImg,VSpacer,VTimeline,VTimelineItem})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1),_c('div',{staticClass:\"relative bg-dark\"},[_c('GUIDImage',{attrs:{\"image-uid\":\"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\"height\":450,\"rounded\":false}}),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"artwork\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.$t(\"Artwork\")))])],1),_c('div',{staticClass:\"bg-dark text-white absolute bottom-14 z-1 py-2 px-4\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"open in app to start wayfinder\"))+\" \")])])],1)]),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-row pt-4 items-center\"},[_c('div',{staticClass:\"text-4xl\"},[_vm._v(\" Badende drenge en sommeraften ved Skagens strand \")]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1)],1),_c('div',{staticClass:\"flex flex-col md:flex-row\"},_vm._l((_vm.eventInfo),function(item){return _c('div',{key:item.title,staticClass:\"text-primary md:mr-5\"},[(item.icon)?_c('v-icon',{staticClass:\"text-primary\",attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\" \"+_vm._s(item.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(item.title)+\" \")],1)}),0)]),_c('Divider'),_c('div',{staticClass:\"flex flex-col md:flex-row pb-4 w-full inner-container\"},[_c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{},[_vm._v(_vm._s(_vm.description))])]),_vm._m(0)]),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center py-8\"},[_vm._m(1),_c('div',{staticClass:\"w-full md:w-2/3\"},[_c('VideoCard')],1)])]),_c('divider'),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.moreFromArtist,\"title\":'More from artist',\"item-width\":224}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(\"Details\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(\" Title: Badende drenge en sommeraften ved Skagens strand \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-full md:w-1/3 md:pr-10 md:text-left text-center\"},[_c('h2',[_vm._v(\"Learn about the artwork\")]),_c('div',{staticClass:\"py-5\"},[_vm._v(\" Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut auctor eget tortor ut pellentesque. Suspendisse potenti. \")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-4 bg-gray\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {}\n})\nexport default class Divider extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Divider.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Divider.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Divider.vue?vue&type=template&id=07039d22&\"\nimport script from \"./Divider.vue?vue&type=script&lang=ts&\"\nexport * from \"./Divider.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\ninstallComponents(component, {VDivider})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\nimport ItemSlideGroup from \"@/components/ItemSlideGroup.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {InformationItem} from \"@/components/EventInfoBox.vue\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport Divider from \"@/components/Divider.vue\";\nimport {getSampleBaseDataList} from \"@/types/vizgu\";\n\n@Component({\n components: {ItemSlideGroup, GUIDImage, VideoCard, Divider}\n})\nexport default class Artwork extends Vue {\n get eventInfo(): InformationItem[] {\n return [\n {\n icon: \"brush\",\n title: \"P.S Krøyer, 1961\"\n }\n ];\n }\n\n get moreFromArtist() {\n return getSampleBaseDataList();\n }\n\n get description(): string {\n return `Lorem ipsum dolor sit amet, consectetur adipiscing elit. In at porttitor\nodio, eu tristique tortor. Phasellus et faucibus nisi. Etiam in quam eget\norci faucibus eleifend eu convallis velit.\n\nSuspendisse eget gravida enim.Nam mollis velit tellus, posuere accumsan ante consectetur sed. Praesent\nsed sem vitae est malesuada lacinia egestas a arcu. Proin sed tempus diam.\n\nQuisque ut semper ipsum. In hac habitasse platea dictumst. In eleifend\ncursus lorem ut posuere. Phasellus elit arcu, tincidunt id sapien vitae,\nfinibus hendrerit nulla. Maecenas fermentum, nisi non finibus venenatis,\nante diam maximus nisl, et pellentesque nulla sem nec est. Nunc sagittis\nmattis lorem, in commodo metus rutrum sed.\n\nPellentesque id maximus sem, et\nvestibulum libero. Pellentesque quis imperdiet urna. Vivamus interdum,\nMauris in diam sed tellus imperdiet convallis at eget lacus.`;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artwork.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artwork.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Artwork.vue?vue&type=template&id=77e4c060&\"\nimport script from \"./Artwork.vue?vue&type=script&lang=ts&\"\nexport * from \"./Artwork.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VIcon,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1),_c('div',{staticClass:\"relative bg-dark\"},[_c('GUIDImage',{attrs:{\"image-uid\":\"880e5455-df64-46d8-804f-cc9694eec43c\",\"height\":450,\"rounded\":false}}),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-2\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"artist\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(\"Artist\")])],1)])],1)]),_c('div',{staticClass:\"inner-container mt-4\"},[_c('div',{staticClass:\"flex flex-row pt-4 items-center\"},[_c('h2',{staticClass:\"font-semibold\"},[_vm._v(\" Anna Ancher \")]),_c('v-spacer'),_c('div',{staticClass:\"hidden md:flex md:flex-row\"},[_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"mx-4 my-1 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1)],1),_c('div',{staticClass:\"flex flex-col md:flex-row\"},_vm._l((_vm.eventInfo),function(item){return _c('div',{key:item.title,staticClass:\"text-primary md:mr-5\"},[(item.icon)?_c('v-icon',{staticClass:\"text-primary\",attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(\" \"+_vm._s(item.icon)+\" \")]):_vm._e(),_vm._v(\" \"+_vm._s(item.title)+\" \")],1)}),0),_c('v-divider',{staticClass:\"md:mx-16 my-4\"}),_c('div',{staticClass:\"flex flex-col pb-4 w-full\"},[_c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{},[_vm._v(_vm._s(_vm.description))])])]),_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.moreFromArtist,\"title\":'By the artist artist',\"item-width\":224}}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.moreFromArtist,\"title\":'Part of exhibitions',\"item-width\":384}}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.moreFromArtist,\"title\":'Artists like this',\"item-width\":224}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\nimport ItemSlideGroup from \"@/components/ItemSlideGroup.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {InformationItem} from \"@/components/EventInfoBox.vue\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport {getSampleBaseDataList} from \"@/types/vizgu\";\n\n@Component({\n components: {ItemSlideGroup, GUIDImage, VideoCard}\n})\nexport default class Artist extends Vue {\n get eventInfo(): InformationItem[] {\n return [\n {\n icon: \"brush\",\n title: \"P.S Krøyer, 1961\"\n }\n ];\n }\n\n get moreFromArtist() {\n return getSampleBaseDataList();\n }\n\n get description(): string {\n return `Lorem ipsum dolor sit amet, consectetur adipiscing elit. In at porttitor\nodio, eu tristique tortor. Phasellus et faucibus nisi. Etiam in quam eget\norci faucibus eleifend eu convallis velit.\n\nSuspendisse eget gravida enim.Nam mollis velit tellus, posuere accumsan ante consectetur sed. Praesent\nsed sem vitae est malesuada lacinia egestas a arcu. Proin sed tempus diam.\n\nQuisque ut semper ipsum. In hac habitasse platea dictumst. In eleifend\ncursus lorem ut posuere. Phasellus elit arcu, tincidunt id sapien vitae,\nfinibus hendrerit nulla. Maecenas fermentum, nisi non finibus venenatis,\nante diam maximus nisl, et pellentesque nulla sem nec est. Nunc sagittis\nmattis lorem, in commodo metus rutrum sed.\n\nPellentesque id maximus sem, et\nvestibulum libero. Pellentesque quis imperdiet urna. Vivamus interdum,\nMauris in diam sed tellus imperdiet convallis at eget lacus.`;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artist.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Artist.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Artist.vue?vue&type=template&id=434833e1&\"\nimport script from \"./Artist.vue?vue&type=script&lang=ts&\"\nexport * from \"./Artist.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VDivider,VIcon,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-img',{attrs:{\"src\":_vm.image}}),_c('div',{staticClass:\"inner-container\"},[_c('h2',{staticClass:\"py-8\"},[_vm._v(\"Support\")]),_c('div',{staticClass:\"footer-tabs mb-10\"},[_c('v-tabs',{attrs:{\"vertical\":!_vm.isMobile},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_vm._l((_vm.supportSubpages),function(tab){return _c('v-tab',{key:tab.title,staticClass:\"font-raleway justify-start h-7 text-primary pl-0 pr-14\",attrs:{\"to\":tab.route}},[_vm._v(_vm._s(tab.title))])}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{staticClass:\"w-full md:w-2/3\",attrs:{\"value\":\"contact\"}},[_c('ContactContainer')],1),_c('v-tab-item',{attrs:{\"value\":\"legal-notice\"}},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"Legal notice\")))]),_c('v-divider',{staticClass:\"w-full md:w-2/3\"}),_vm._l((_vm.legalNoticeInfo),function(item){return _c('v-list-item',{key:item.header,staticClass:\"px-0\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(_vm._s(item.header))]),_c('v-list-item-subtitle',{staticClass:\"text-primary whitespace-pre-line\"},[_vm._v(_vm._s(item.info))])],1)],1)})],2),_c('v-tab-item',{staticClass:\"w-full md:w-2/3\",attrs:{\"value\":\"privacy-policy\"}},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"Privacy Policy\")))]),_c('v-divider')],1),_c('v-tab-item',{staticClass:\"w-full md:w-2/3\",attrs:{\"value\":\"terms\"}},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"Terms and Conditions\")))]),_c('v-divider')],1),_c('v-tab-item',{staticClass:\"w-full md:w-2/3\",attrs:{\"value\":\"sitemap\"}},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"Sitemap\")))]),_c('v-divider')],1)],1)],2)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(_vm._s(_vm.$t(\"Contact\")))]),_c('v-divider'),_c('v-list-item',{staticClass:\"px-0\",attrs:{\"two-line\":\"\"},on:{\"click\":_vm.toggleSendEmail}},[_c('v-list-item-icon',{staticClass:\"m-0 mr-4 self-center\"},[_c('v-icon',{attrs:{\"size\":\"24\"}},[_vm._v(\"mail-letter\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Send an email\")))]),_c('v-list-item-subtitle',{staticClass:\"text-primary\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Get in touch with our costumer service team\"))+\" \")])],1),_c('v-icon',{class:{'rotate-45 transform': _vm.isOpen.sendEmail},attrs:{\"x-small\":\"\"}},[_vm._v(\"plus\")])],1),(_vm.isOpen.sendEmail && _vm.emailFormSent)?_c('div',{staticClass:\"py-6 text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Your request successfully sent!\"))+\" \")]):_vm._e(),(_vm.isOpen.sendEmail && !_vm.emailFormSent)?_c('div',{staticClass:\"py-4\"},[_c('div',{},[_c('div',{staticClass:\"flex gap-6\"},[_c('div',{staticClass:\"w-full\"},[_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"First name\"))+\" \")]),_c('v-text-field',{staticClass:\"w-full mt-2\",attrs:{\"flat\":\"\",\"solo\":\"\",\"placeholder\":_vm.$t('First name'),\"hide-details\":\"true\"},model:{value:(_vm.emailForm.firstName),callback:function ($$v) {_vm.$set(_vm.emailForm, \"firstName\", $$v)},expression:\"emailForm.firstName\"}})],1),_c('div',{staticClass:\"w-full\"},[_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Last name\"))+\" \")]),_c('v-text-field',{staticClass:\"w-full mt-2\",attrs:{\"flat\":\"\",\"solo\":\"\",\"placeholder\":_vm.$t('Last name'),\"hide-details\":\"true\"},model:{value:(_vm.emailForm.lastName),callback:function ($$v) {_vm.$set(_vm.emailForm, \"lastName\", $$v)},expression:\"emailForm.lastName\"}})],1)]),_c('div',{staticClass:\"flex gap-6\"},[_c('div',{staticClass:\"w-full\"},[_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"E-mail\"))+\" \")]),_c('v-text-field',{staticClass:\"w-full mt-2\",attrs:{\"flat\":\"\",\"solo\":\"\",\"placeholder\":_vm.$t('Your email'),\"hide-details\":\"true\"},model:{value:(_vm.emailForm.email),callback:function ($$v) {_vm.$set(_vm.emailForm, \"email\", $$v)},expression:\"emailForm.email\"}})],1),_c('div',{staticClass:\"w-full\"},[_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Company (Optional)\"))+\" \")]),_c('v-text-field',{staticClass:\"w-full mt-2\",attrs:{\"flat\":\"\",\"solo\":\"\",\"placeholder\":_vm.$t('Optional'),\"hide-details\":\"true\"},model:{value:(_vm.emailForm.company),callback:function ($$v) {_vm.$set(_vm.emailForm, \"company\", $$v)},expression:\"emailForm.company\"}})],1)]),_c('div',{staticClass:\"w-full\"},[_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Your issue\"))+\" \")]),_c('v-textarea',{staticClass:\"w-full mt-2\",attrs:{\"li\":\"\",\"flat\":\"\",\"solo\":\"\",\"placeholder\":_vm.$t('Enter message here'),\"hide-details\":\"true\"},model:{value:(_vm.emailForm.issue),callback:function ($$v) {_vm.$set(_vm.emailForm, \"issue\", $$v)},expression:\"emailForm.issue\"}})],1),_c('div',{staticClass:\"mt-3\",on:{\"click\":function($event){return _vm.onEmailSend()}}},[_c('v-btn',{staticClass:\"bg-dark text-white py-6 rounded-none\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Send message\"))+\" \")])],1)])]):_vm._e(),_c('v-divider'),(false)?_c('v-list-item',{staticClass:\"px-0\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-icon',{staticClass:\"m-0 mr-4 self-center\"},[_c('v-icon',{staticClass:\"text-dark\",attrs:{\"size\":\"24\"}},[_vm._v(\"phone\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Call costumer service\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-primary\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Talk to us over the phone 24/7\"))+\" \")])],1),_c('v-btn',{staticClass:\"rounded-none bg-dark text-white px-1\",attrs:{\"icon\":\"\",\"depressed\":\"\"}},[_c('v-icon',{staticClass:\"h-9 w-9\",attrs:{\"size\":\"20\"}},[_vm._v(\"$next\")])],1)],1):_vm._e(),_c('v-divider'),(false)?_c('v-list-item',{staticClass:\"px-0\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-icon',{staticClass:\"m-0 mr-4 self-center\"},[_c('v-icon',{attrs:{\"size\":\"24\"}},[_vm._v(\"whatsapp\")])],1),_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Message us using\"))+\" WhatsApp \")]),_c('v-list-item-subtitle',{staticClass:\"text-primary\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"We currently support chat only\"))+\" \")])],1),_c('v-btn',{staticClass:\"rounded-none bg-dark text-white px-1\",attrs:{\"icon\":\"\",\"depressed\":\"\"}},[_c('v-icon',{staticClass:\"h-9 w-9\",attrs:{\"size\":\"20\"}},[_vm._v(\"$next\")])],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import HttpClient from \"./client\";\nimport {AxiosResponse} from \"axios\";\n\nclass HubspotApi extends HttpClient {\n baseApiUrl = \"https://api.hsforms.com\";\n submitFormUrl = \"/submissions/v3/integration/submit/\";\n portalId = \"4178182\";\n formGuid = \"a05c71c3-35b2-4841-bf8a-14fc77fe2cbc\";\n public submitForm = async (\n formData: Array>\n ): Promise> => {\n const result = await this.client.post(\n `${this.submitFormUrl}/${this.portalId}/${this.formGuid}`,\n {fields: formData},\n {baseURL: this.baseApiUrl}\n );\n return result;\n };\n}\n\nconst hubspotApi = new HubspotApi();\nexport default hubspotApi;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport hubspotApi from \"@/api/hubspot\";\nimport {Component, Vue} from \"vue-property-decorator\";\n@Component\nexport default class ContactContainer extends Vue {\n emailFormSent = false;\n isOpen = {\n sendEmail: false\n };\n\n emailForm = {\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n company: \"\",\n issue: \"\"\n };\n\n resetEmailForm() {\n this.emailForm = {\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n company: \"\",\n issue: \"\"\n };\n }\n\n toggleSendEmail() {\n this.isOpen.sendEmail = !this.isOpen.sendEmail;\n }\n\n onEmailSend() {\n // this.validateForm()\n // if (this.isFormValid)\n this.sendForm();\n }\n\n get formData(): Array> {\n return [\n {name: \"firstName\", value: this.emailForm.firstName},\n {name: \"lastName\", value: this.emailForm.lastName},\n {name: \"email\", value: this.emailForm.email},\n // {name: \"company\", value: this.emailForm.company},\n {name: \"issue\", value: this.emailForm.issue}\n ];\n }\n\n async sendForm() {\n const result = await hubspotApi.submitForm(this.formData);\n if (result.status == 200) {\n this.emailFormSent = true;\n this.resetEmailForm();\n } else {\n // handle error\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactContainer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactContainer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactContainer.vue?vue&type=template&id=766702d0&\"\nimport script from \"./ContactContainer.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactContainer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VDivider,VIcon,VListItem,VListItemContent,VListItemIcon,VListItemSubtitle,VTextField,VTextarea})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport {TabItem} from \"@/views/Venue.vue\";\nimport ContactContainer from \"@/components/support/ContactContainer.vue\";\nimport {supportSubpages} from \"@/utils/footer\";\nimport {TranslateResult} from \"vue-i18n\";\nimport {isMobile} from \"@/utils/dom\";\n\n@Component({\n components: {ContactContainer},\n data: () => ({\n image: require(\"@/assets/images/footer/support.png\"),\n tab: \"\"\n })\n})\nexport default class Support extends Vue {\n get supportSubpages(): TabItem[] {\n return supportSubpages;\n }\n\n get isMobile() {\n return isMobile();\n }\n\n get legalNoticeInfo(): {header: string | TranslateResult; info: string}[] {\n return [\n {\n header: this.$t(\"Website Host\"),\n info: \"Vizgu Aps\\n Jernbanegade 2 2b\\n 6000 Kolding\\n Denmark\"\n },\n\n {\n header: this.$t(\"Management\"),\n info: \"Esmir Juhl Ibricic\"\n },\n\n {\n header: this.$t(\"Company Registration\"),\n info: \"Denmark\"\n },\n {\n header: \"VAT Reg No\",\n info: \"DK36536969\"\n }\n ];\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Support.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Support.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Support.vue?vue&type=template&id=12890152&\"\nimport script from \"./Support.vue?vue&type=script&lang=ts&\"\nexport * from \"./Support.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VDivider,VImg,VListItem,VListItemContent,VListItemSubtitle,VTab,VTabItem,VTabs,VTabsItems})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-img',{attrs:{\"src\":_vm.image}}),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-row\"},[_c('div',{staticClass:\"w-3/5 pr-24\"},[_c('h2',{staticClass:\"py-8\"},[_vm._v(_vm._s(_vm.$t(\"Give a Vizgu Gift card\")))]),_c('div',{staticClass:\"font-semibold font-raleway text-lg mb-8\"},[_vm._v(\" \"+_vm._s(_vm.giftcardDescription)+\" \")]),_c('v-form',{staticClass:\"pb-8\"},[_c('div',[_c('p',{staticClass:\"font-raleway font-semibold text-md mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Value of gift card\"))+\" \")]),_c('v-select',{staticClass:\"rounded-none\",attrs:{\"solo\":\"\",\"flat\":\"\",\"items\":_vm.items}})],1),_c('div',[_c('p',{staticClass:\"font-raleway font-semibold text-md mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Add a personal message\"))+\" \")]),_c('v-textarea',{attrs:{\"filled\":\"\",\"solo\":\"\",\"flat\":\"\",\"auto-grow\":\"\",\"label\":_vm.$t('Hi, this is a giftcard for you'),\"rows\":\"8\"}})],1),_c('v-btn',{attrs:{\"depressed\":\"\",\"color\":\"rounded-none bg-dark text-white mr-3\"}},[_c('div',{staticClass:\"text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Preview card\"))+\" \")])]),_c('v-btn',{attrs:{\"depressed\":\"\",\"color\":\"rounded-none bg-dark text-white\"}},[_c('div',{staticClass:\"text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Buy giftcard\"))+\" \")])])],1)],1),_c('div',{staticClass:\"w-2/5 bg-lightgray text-right pl-20\"},[_c('h3',{staticClass:\"py-8\"},[_vm._v(_vm._s(_vm.$t(\"Unforgettable gifts made easy\")))]),_c('div',{staticClass:\"space-y-12\"},[_c('v-list-item',{staticClass:\"px-0\"},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Instant gifting\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-primary whitespace-normal\"},[_vm._v(_vm._s(_vm.$t( \"Buy in advance or in-the-moment; your gift card is available immediately after purchase. Give it through email, mail, or wrapped up with a bow.\" ))+\" \")])],1),_c('v-list-item-icon',{staticClass:\"m-0 mr-4 ml-8 self-center\"},[_c('v-icon',{attrs:{\"size\":\"48\"}},[_vm._v(\"gift-box\")])],1)],1),_c('v-list-item',{staticClass:\"px-0\"},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Flexible selection\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-primary whitespace-normal\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"There aren’t restrictions on where you can spend your gift card. Choose from over 60,000 tours, activities, and attractions in over 3,600 global destinations.\" ))+\" \")])],1),_c('v-list-item-icon',{staticClass:\"m-0 mr-4 ml-8 self-center\"},[_c('v-icon',{attrs:{\"size\":\"48\"}},[_vm._v(\"gift-reward\")])],1)],1),_c('v-list-item',{staticClass:\"px-0\"},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Unforgettable experiences\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-primary whitespace-normal\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Unlock the best that the world has to offer. Tickets, top sites, one-of-a-kind local tours; discover something unexpected with us.\" ))+\" \")])],1),_c('v-list-item-icon',{staticClass:\"m-0 mr-4 ml-8 self-center\"},[_c('v-icon',{attrs:{\"size\":\"48\"}},[_vm._v(\"ticket\")])],1)],1)],1)])])]),_c('div',{staticClass:\"bg-dark\"},[_c('div',{staticClass:\"inner-container text-white py-12\"},[_c('div',{staticClass:\"w-1/2\"},[_c('h3',[_vm._v(_vm._s(_vm.$t(\"Got a question?\")))]),_c('v-divider',{staticClass:\"bg-white\"}),_c('div',{staticClass:\"space-y-4 pt-8\"},[_c('v-list-item',{staticClass:\"px-0 text-white whitespace-normal\"},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-white font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Do I need to choose a specific experience?\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-white\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Nope! Just select an amount and let the giftee pick their perfect experience.\" )))])],1)],1),_c('v-divider',{staticClass:\"bg-white\"}),_c('v-list-item',{staticClass:\"px-0 text-white whitespace-normal\"},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-white font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Do I need to choose a specific experience?\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-white\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Nope! Just select an amount and let the giftee pick their perfect experience.\" )))])],1)],1),_c('v-divider',{staticClass:\"bg-white\"}),_c('v-list-item',{staticClass:\"px-0 text-white whitespace-normal\"},[_c('v-list-item-content',[_c('v-list-item-subtitle',{staticClass:\"text-white font-bold\"},[_vm._v(_vm._s(_vm.$t(\"Do I need to choose a specific experience?\"))+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-white\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Nope! Just select an amount and let the giftee pick their perfect experience.\" )))])],1)],1)],1)],1)])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {TranslateResult} from \"vue-i18n\";\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {},\n data: () => ({\n image: require(\"@/assets/images/footer/giftcard.png\")\n })\n})\nexport default class GiftCard extends Vue {\n get giftcardDescription(): string | TranslateResult {\n return this.$t(\n \"Give the ones you love unforgettable art and culture experiences and make memories to last a lifetime.\"\n );\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiftCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GiftCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GiftCard.vue?vue&type=template&id=59932e6e&\"\nimport script from \"./GiftCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./GiftCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VDivider,VForm,VIcon,VImg,VListItem,VListItemContent,VListItemIcon,VListItemSubtitle,VSelect,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-img',{attrs:{\"src\":_vm.image}}),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"md:px-32\"},[_c('h1',{staticClass:\"text-center mt-8 font-raleway md:px-24 text-2xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Become part of the community or assemble your own app\"))+\" \")]),_c('v-divider'),_c('div',{staticClass:\"text-center my-4\"},[_vm._v(\" Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. \")])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {},\n data: () => ({\n image: require(\"@/assets/images/footer/partner.png\")\n })\n})\nexport default class BecomePartner extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BecomePartner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BecomePartner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BecomePartner.vue?vue&type=template&id=1458d762&\"\nimport script from \"./BecomePartner.vue?vue&type=script&lang=ts&\"\nexport * from \"./BecomePartner.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VDivider,VImg})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"bg-lightorange\"},[_c('v-img',{staticClass:\"object-center w-full max-h-56 block md:hidden\",attrs:{\"height\":\"400\",\"width\":\"\",\"src\":_vm.images.mainBanner}}),_c('v-img',{staticClass:\"object-center w-full hidden md:block\",attrs:{\"height\":\"400\",\"contain\":\"\",\"width\":\"\",\"src\":_vm.images.mainBanner}})],1),_c('div',{staticClass:\"bg-dark text-white text-center\"},[_c('h1',{staticClass:\"font-raleway text-xl md:text-3xl py-7 md:py-10\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"About Vizgu\"))+\" \")])]),_c('div',{},[_c('div',{staticClass:\"text-center\"},[_c('div',{staticClass:\"mt-9 text-lg inner-container\"},[_c('div',{staticClass:\"font-medium text-lg md:text-xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu: the modern visitor journey\"))+\" \")]),_c('div',{staticClass:\"font-medium text-lg md:text-xlu mt-4\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"We co-create tomorrow’s cultural experience today!\"))+\" \")]),_c('div',{staticClass:\"font-light text-sm md:text-base mt-2\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"At Vizgu we believe, if we are to change the way we work with art, culture and experience design - we have to do it together. Our customers are the experts we are the techies and together we develop products that truly meets the needs of many!\" ))+\" \")]),_c('div',{staticClass:\"font-light mt-6 text-sm md:text-base\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With a passion for co-creation and art – is where it all began!\" ))+\" \")])]),_c('div',{staticClass:\"my-12 md:my-16 flex flex-col md:flex-row mb-24 inner-container\"},[_c('div',{staticClass:\"md:w-1/2 mx-1 md:hidden mb-7\"},[_c('v-img',{staticClass:\"m-auto\",attrs:{\"src\":_vm.cocreation,\"width\":\"250px\"}})],1),_c('div',{staticClass:\"w-full md:w-1/2 text-2xl font-raleway text-left\"},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(_vm._s(_vm.$t(\"Our unique approach:\")))]),_c('div',{staticClass:\"font-semibold text-greentext\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Co - creation\"))+\" \")]),_c('div',{staticClass:\"text-graytext text-base py-5\"},[_vm._v(\" Vizgu \"+_vm._s(_vm.$t( \"is a company that can be described with the following word:\" ))+\" \")]),_c('v-icon',{attrs:{\"size\":\"24\"}},[_vm._v(\"quote\")]),_c('div',{staticClass:\"text-base\"},[_c('b',[_vm._v(_vm._s(_vm.$t(\"Co-creation\")))]),_vm._v(\", \"+_vm._s(_vm.$t( \"in the context of a business, refers to a product or a service design process in which input from customers, plays a central role from beginning to and end.\" ))+\" \")])],1),_c('div',{staticClass:\"md:w-1/2 mx-12 hidden md:block\"},[_c('v-img',{attrs:{\"src\":_vm.cocreation,\"width\":\"400px\"}})],1)]),_c('v-divider',{staticClass:\"my-10 inner-container\"}),_c('div',{staticClass:\"font-light inner-container\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"Vizgu is founded by two brothers from Denmark; Esmir (Older) Mensur (Younger), and their two close friends Peter & Peter. The reason they founded Vizgu was due to the lack of accessibility and information regarding art and culture\" ))+\" \")]),_c('div',{staticClass:\"mt-5\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"They quickly realized that it was not the institutions whom didn’t have the information- it was the technology vendors whom they were working with. They simply did not have products that fit their curation, operation or commercialization process.\" ))+\" \")]),_c('div',{staticClass:\"font-medium mt-5\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"But where there is a problem - a solution always lurks around the corner!\" ))+\" \")])]),_c('div',{staticClass:\"text-center py-10 bg-lightgray text-black font-semibold text-lg md:text-2xl mt-12\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"So, how did we develop Vizgu?\"))+\" \")]),_c('div',{staticClass:\"mt-16 inner-container text-center mx-auto\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.$t( \"Well, we started inviting Curators, Directors, Market & Communication experts, AR, etc. And we asked them a simple question:\" ))+\" \")]),_c('div',{staticClass:\"italic mt-10 text-xl font-light max-w-2xl mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"How to we go from analogue to digital? And how to we co-create a product that can eliminate many of the issues they are facing in this transition\" ))+\" \")])]),_c('div',{staticClass:\"mt-12 md:mt-28 hidden md:block\"},[_c('div',{},[_c('div',{},[_c('v-img',{staticClass:\"object-contain max-w-screen-xl mx-auto\",attrs:{\"src\":_vm.images.launchBanner.main}})],1)])]),_c('div',{staticClass:\"md:hidden bg-dark\"},[_c('div',{},[_c('div',{},[_c('v-img',{staticClass:\"object-contain mx-auto\",attrs:{\"src\":_vm.images.launchBanner.mobileMain}})],1)])]),_c('div',{staticClass:\"inner-container flex flex-col md:flex-row gap-3 items-center mt-12 md:mt-7\"},[_c('div',{staticClass:\"flex flex-col items-start\"},[_c('div',{staticClass:\"text-lg md:text-3xl font-bold text-center md:text-left max-w-md tracking-wide\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Vizgu is a platform where you can manage all processes from Curation to commercialization all in one suite!\" ))+\" \")]),_c('div',{staticClass:\"md:hidden\"},[_c('div',{staticClass:\"w-full\"},[_c('v-img',{staticClass:\"w-full\",attrs:{\"width\":\"300px\",\"contain\":\"\",\"src\":_vm.images.platform.main}})],1)]),_c('div',{staticClass:\"mt-10 mx-auto md:mx-0\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Want to know more about Vizgu?\"))+\" \")]),_c('div',{staticClass:\"mt-5 mx-auto md:mx-0\"},[_c('v-btn',{staticClass:\"bg-dark text-white\",on:{\"click\":function($event){return _vm.setSignUpModalOpen(true)}}},[_vm._v(\" \"+_vm._s(_vm.signUpLabel)+\" \"),_c('v-icon',{staticClass:\"ml-1\",attrs:{\"size\":\"18px\"}},[_vm._v(\"heart-filled\")])],1)],1)]),_c('div',{staticClass:\"hidden md:block\"},[_c('div',{},[_c('v-img',{attrs:{\"width\":\"569px\",\"src\":_vm.images.platform.main}})],1)])]),_c('div',{staticClass:\"inner-container mt-14 font-light\"},[_c('p',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"To support Vizgu, our community and marketplace - we had to ensure to have a platform in place which added value to not only 1 specific operational unit at a museum, city, or cultural institution- but all organizational pillars from front/back-office operations to collection management, curation, commerce, leadership and communication.\" ))+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"Not only does the platform give you access to features such as web shop, ticket system, tour guide management etc. (Hop on the Platform page for detailed info, friend) - we will be featuring you on our marketplace - from web shop to ticket sales - boosting your exposure, revenue, and visitor count.\" ))+\" \")])]),_c('v-divider',{staticClass:\"my-16 inner-container\"}),_c('div',{staticClass:\"text-center py-10 bg-lightgray text-black font-medium text-xl md:text-3xl mt-12\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"The team behind Vizgu\"))+\" \")]),_c('div',{staticClass:\"inner-container mt-20\"},[_c('div',{staticClass:\"my-4 font-raleway font-normal font-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The team behind Vizgu are people deeply passionate about technology, storytelling and digitalization of the world. We are a team of individuals whom have been working with business-critical applications, app development & design for many years!\" ))+\" \")]),_c('div',{staticClass:\"my-4 font-raleway font-normal font-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"We enable each other with the skillset we have — and most importantly trust in the decisions which are beign made — with great respect towards the individuals area of expertise.\" ))+\" \")]),_c('div',{staticClass:\"font-medium\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Together we aim to co-create tomorrow, today!\"))+\" \")]),_c('div',{staticClass:\"grid grid-cols-2 md:flex md:flex-row flex-grow-0 flex-wrap max-w-2xl my-14 justify-center mx-auto\"},_vm._l((_vm.teamMembers),function(member){return _c('v-card',{key:member.name,attrs:{\"flat\":\"\"}},[_c('v-avatar',{attrs:{\"size\":\"120\"}},[_c('v-img',{attrs:{\"src\":member.image}})],1),_c('v-list-item',{},[_c('v-list-item-content',{staticClass:\"font-raleway space-y-1 flex flex-col\"},[_c('v-list-item-subtitle',{staticClass:\"text-primary font-bold max-w-max\"},[_vm._v(_vm._s(member.name)+\" \")]),_c('v-list-item-subtitle',{staticClass:\"font-medium max-w-max text-primary\"},[_vm._v(_vm._s(member.secondRole)+\" \")]),_c('v-list-item-subtitle',{staticClass:\"text-primary font-medium max-w-max\"},[_vm._v(_vm._s(member.role)+\" \")])],1)],1)],1)}),1)])],1)]),_c('IntroSignUpModal',{attrs:{\"isOpen\":_vm.isSignUpModalOpen,\"setOpen\":_vm.setSignUpModalOpen}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{},[_c('v-dialog',{attrs:{\"max-width\":\"700\"},model:{value:(_vm.isModalOpen),callback:function ($$v) {_vm.isModalOpen=$$v},expression:\"isModalOpen\"}},[_c('div',{staticClass:\"p-5 xl:p-12 w-full bg-gray2 xl:py-16 h-full overflow-y-scroll md:overflow-y-hidden\"},[_c('div',{staticClass:\"font-bold text-2xl md:text-3xl max-w-md\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"It’s a really cool platform, I think you should ask for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-3 font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Enter your information to learn about the amazing platform of tomorrow\" ))+\" \")]),_c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"flex flex-col md:flex-row gap-4\"},[_c('div',{staticClass:\"flex-grow\"},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"First name\"))+\" \")]),_c('v-text-field',{staticClass:\"w-full mt-2\",attrs:{\"background-color\":\"#fff\",\"flat\":\"\",\"solo\":\"\",\"hide-details\":\"true\"},model:{value:(_vm.form.firstName),callback:function ($$v) {_vm.$set(_vm.form, \"firstName\", $$v)},expression:\"form.firstName\"}})],1),_c('div',{staticClass:\"flex-grow\"},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Last name\"))+\" \")]),_c('v-text-field',{staticClass:\"w-full mt-2\",attrs:{\"background-color\":\"#fff\",\"flat\":\"\",\"solo\":\"\",\"hide-details\":\"true\"},model:{value:(_vm.form.lastName),callback:function ($$v) {_vm.$set(_vm.form, \"lastName\", $$v)},expression:\"form.lastName\"}})],1)]),_c('div',{staticClass:\"flex flex-col gap-4 mt-4\"},[_c('div',{},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"E-mail\"))+\" \")]),_c('v-text-field',{staticClass:\"mt-2\",attrs:{\"background-color\":\"#fff\",\"flat\":\"\",\"solo\":\"\",\"hide-details\":\"true\"},model:{value:(_vm.form.email),callback:function ($$v) {_vm.$set(_vm.form, \"email\", $$v)},expression:\"form.email\"}})],1)])]),_c('v-btn',{staticClass:\"bg-green3 h-12 text-white rounded-none mt-5 w-64 font-medium\",attrs:{\"loading\":_vm.loaders.sendingForm,\"depressed\":\"\"},on:{\"click\":function($event){return _vm.onFormSend()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Contact me, please!\"))+\" \")])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport hubspotApi from \"@/api/hubspot\";\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {}\n})\nexport default class IntroSignUpModal extends Vue {\n @Prop({required: true, type: Boolean, default: false}) isOpen!: boolean;\n @Prop({required: true, type: Function}) setOpen!: (isOpen: boolean) => void;\n\n formSended = false;\n\n loaders = {\n sendingForm: false\n };\n\n get isModalOpen() {\n return this.isOpen;\n }\n\n set isModalOpen(v: boolean) {\n this.setOpen(v);\n }\n\n form = {\n firstName: \"\",\n lastName: \"\",\n email: \"\"\n };\n\n get formData(): Array> {\n return [\n {name: \"email\", value: this.form.email},\n {name: \"firstName\", value: this.form.firstName},\n {name: \"lastName\", value: this.form.lastName},\n {name: \"role\", value: \"Client\"}\n ];\n }\n\n onFormSend() {\n this.sendForm();\n }\n\n async sendForm() {\n this.loaders.sendingForm = true;\n try {\n const result = await hubspotApi.submitForm(this.formData);\n if (result.status == 200) {\n this.formSended = true;\n }\n } finally {\n this.loaders.sendingForm = false;\n this.setOpen(false);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroSignUpModal.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IntroSignUpModal.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./IntroSignUpModal.vue?vue&type=template&id=04f18fe8&\"\nimport script from \"./IntroSignUpModal.vue?vue&type=script&lang=ts&\"\nexport * from \"./IntroSignUpModal.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VDialog,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport IntroSignUpModal from \"@/components/IntroSignUpModal.vue\";\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {\n IntroSignUpModal\n }\n})\nexport default class AboutUs extends Vue {\n isSignUpModalOpen = false;\n setSignUpModalOpen(isOpen: boolean) {\n this.isSignUpModalOpen = isOpen;\n }\n\n get signUpLabel() {\n return this.$t(\"Sign up for an introduction letter\");\n }\n\n get cocreation(): string {\n return require(\"@/assets/images/footer/co-creation.png\");\n }\n\n images = {\n mainBanner: require(\"@/assets/images/aboutus/main-banner.png\"),\n launchBanner: {\n main: require(\"@/assets/images/aboutus/launch-main.png\"),\n logo: require(\"@/assets/images/aboutus/launch-logo.png\"),\n desktop: require(\"@/assets/images/aboutus/launch-desktop.png\"),\n mobile: require(\"@/assets/images/aboutus/launch-mobile.png\"),\n mobileMain: require(\"@/assets/images/aboutus/launch-vizgu-mobile.png\")\n },\n platform: {\n main: require(\"@/assets/images/aboutus/platform-main.png\")\n }\n };\n\n get teamMembers(): {\n name: string;\n role: string;\n secondRole: string;\n image: string;\n }[] {\n return [\n {\n name: \"Esmir Juhl Ibricic\",\n role: \"CEO\",\n secondRole: \"Co - founder\",\n image: require(\"@/assets/images/footer/team/esmir.png\")\n },\n {\n name: \"Peter Madsen\",\n role: \"Backend developer\",\n secondRole: \"Co - founder\",\n image: require(\"@/assets/images/footer/team/peter-madsen.png\")\n },\n {\n name: \"Peter Krusager\",\n role: \"Backend developer\",\n secondRole: \"Co - founder\",\n image: require(\"@/assets/images/footer/team/peter-krusager.png\")\n },\n {\n name: \"Mensur Ibricic\",\n role: \"Co - creation & strategy\",\n secondRole: \"Co - founder\",\n image: require(\"@/assets/images/footer/team/mensur.png\")\n },\n {\n name: \"Alicia Busborg\",\n role: \"& UI designer\",\n secondRole: \"Video editor\",\n image: require(\"@/assets/images/footer/team/alicia-busborg.png\")\n }\n ];\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AboutUs.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AboutUs.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AboutUs.vue?vue&type=template&id=049fa284&\"\nimport script from \"./AboutUs.vue?vue&type=script&lang=ts&\"\nexport * from \"./AboutUs.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\ninstallComponents(component, {VAvatar,VBtn,VCard,VDivider,VIcon,VImg,VListItem,VListItemContent,VListItemSubtitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"bg-lightgray md:h-96 h-64 w-full relative overflow-hidden\"},[_c('v-img',{staticClass:\"hidden md:block object-center w-full h-full\",attrs:{\"contain\":\"\",\"width\":\"\",\"src\":_vm.images.mainBanner}}),_c('v-img',{staticClass:\"block md:hidden object-center w-full h-full\",attrs:{\"cover\":\"\",\"width\":\"\",\"height\":\"260px\",\"src\":_vm.images.mainBanner}})],1),_c('div',{staticClass:\"bg-dark text-white text-center\"},[_c('h1',{staticClass:\"font-raleway py-10\"},[_vm._v(_vm._s(_vm.$t(\"Join the Journey\")))])]),_c('div',{staticClass:\"inner-container text-center max-w-5xl mt-16 font-light\"},[_c('p',{staticClass:\"text-2xl text-orange font-medium\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Professionals & Researchers\"))+\" \")]),_c('p',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"Talent is the back bone of every successful company, which is why we are always on the lookout for exceptional talent and team players!\" ))+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"At Vizgu we always strive to better ourselves by continuously striving to learn from each other.\" ))+\" \")]),_c('p',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"Should you wish to explore avenues of co-creation or if you feel that you can contribute to our team, please do not hesitate to reach out to us.\" ))+\" \")]),_c('div',{staticClass:\"font-medium mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Send us your CV and lets us have a chat!\"))+\" \")]),_c('v-divider',{staticClass:\"my-16\"})],1),_c('div',{staticClass:\"inner-container text-center max-w-5xl mt-16 font-light\"},[_c('p',{staticClass:\"text-2xl text-orange font-medium\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"The future generation\"))+\" \")]),_c('p',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"The future is bright and the future is you!\"))+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t( \"If you are writing a thesis within Curation Technology, Anthology, Arts & Culture feel free to reach out to us. We are more than happy to assist you with research and industry acumen.\" ))+\" \")])]),_c('div',{staticClass:\"text-center bg-lightgray py-14 mt-20\"},[_c('div',{staticClass:\"inner-container max-w-2xl \"},[_c('div',{staticClass:\"font-bold text-2xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Our values\"))+\" \")]),_c('div',{staticClass:\"font-light mt-5\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Vizgu is a company built on firm values. Values that foster enablement, trust respect and diversity.\" ))+\" \")])])]),_c('div',{staticClass:\"inner-container mt-16 md:mt-24 flex flex-col gap-14 mb-10\"},_vm._l((_vm.advantages),function(v,i){return _c('div',{key:i,class:[\n 'flex gap-7 flex-col',\n v.align,\n i % 2 == 0 ? 'md:flex-row' : 'md:flex-row-reverse'\n ]},[_c('div',[_c('div',{staticClass:\"font-bold text-2xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(v.title)+\" \")]),_c('div',{staticClass:\"mt-5\"},[_vm._v(\" \"+_vm._s(v.description)+\" \")])]),_c('div',{},[_c('v-img',{staticClass:\"object-center w-full h-40 md:h-60\",attrs:{\"width\":\"\",\"contain\":\"\",\"src\":v.imgSrc}})],1)])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {TranslateResult} from \"vue-i18n\";\nimport {Component, Vue} from \"vue-property-decorator\";\n\ninterface Advantage {\n title: string | TranslateResult;\n description: string | TranslateResult;\n imgSrc: string;\n align: string;\n}\n\n@Component({})\nexport default class Careers extends Vue {\n get images() {\n return {\n mainBanner: require(\"@/assets/images/footer/careers/main-banner.png\"),\n sub1: require(\"@/assets/images/footer/careers/sub-1.jpg\"),\n sub2: require(\"@/assets/images/footer/careers/sub-2.jpg\"),\n sub3: require(\"@/assets/images/footer/careers/sub-3.jpg\")\n };\n }\n\n advantages: Advantage[] = [\n {\n title: this.$t(\"Mutual Respect\"),\n description: this.$t(\n \"Treat people as you want to be treated. Narcissistic behaviour has no place within our company. We operate in a safe environment where you can be yourself regardless of what other people may think.\"\n ),\n imgSrc: this.images.sub1,\n align: \"md:items-end\"\n },\n {\n title: this.$t(\"Trust & Enablement\"),\n description: this.$t(\n \"We enable each other with the skillsets we have - and most importantly trust in the decisions being made - with great respect towards the individuals of expertise.\"\n ),\n imgSrc: this.images.sub2,\n align: \"md:items-center\"\n },\n {\n title: this.$t(\"Diversity\"),\n description: this.$t(\n \"We are all children of mother earth. Diversity is what makes us great. Vizgu is a safe space for all regardless of identity, sex and origin.\"\n ),\n imgSrc: this.images.sub3,\n align: \"md:items-center\"\n }\n ];\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Careers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Careers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Careers.vue?vue&type=template&id=989a5000&\"\nimport script from \"./Careers.vue?vue&type=script&lang=ts&\"\nexport * from \"./Careers.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VDivider,VImg})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"bg-lightblue2 pt-4\"},[_c('v-img',{staticClass:\"block object-center object-contain w-full max-h-56 inner-container md:hidden\",attrs:{\"height\":\"400\",\"src\":_vm.media.mainBanner}}),_c('v-img',{staticClass:\"hidden object-center object-contain w-full inner-container md:block\",attrs:{\"height\":\"350\",\"contain\":\"\",\"src\":_vm.media.mainBanner}})],1),_c('div',{staticClass:\"bg-dark text-white text-center\"},[_c('h1',{staticClass:\"font-raleway py-7 text-xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"We co-create tomorrow’s cultural experience, today!\"))+\" \")])]),_c('div',{staticClass:\"inner-container max-w-5xl flex flex-col gap-10\"},[_c('div',[_c('h2',{staticClass:\"pt-14 whitespace-pre-line text-xl md:text-2xl text-center md:text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Take control of all critical workflows, from \\n Curation to Commercialization! all in one place\" ))+\" \")]),_c('h1',{staticClass:\"pb-8\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")])]),_c('div',{staticClass:\"relative font-light\"},[_c('div',{},[_c('div',{staticClass:\"text-xl md:text-3xl font-bold md:text-center text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Before, During & After\"))+\" \")]),_c('div',{staticClass:\"mt-4\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t( \"In collaboration with visitors and experts from technology, tourism, curation, city marketing, and culture, we've crafted an efficient way to map visitor journeys. Our unique approach inspired the development of our App, Marketplace, and Platform, designed to meet the needs of modern visitors and embrace emerging tech trends.\" ))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t( \"Outdated systems and IT vendors dictating workflows won't cut it anymore. Our product portfolio, built on a deep understanding of business-critical operations across museums, city marketing, curation, e-commerce, and tour guide management, breaks free from these limitations.\" ))+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t( \"Vizgu's modular design ensures you only pay for the features you need, making it easy to adapt at your own pace and eliminate lengthy onboarding cycles and change management projects.\" ))+\" \")]),_c('p',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Embrace our mantra: Co-creating tomorrow, today!\"))+\" \")])])])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center\"},[_c('v-img',{staticClass:\"object-left mr-auto md:m-auto\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '170px' : '240px',\"src\":_vm.media.info1}}),_c('div',{staticClass:\"max-w-lg md:ml-auto mt-6 md:mt-0\"},[_c('div',{staticClass:\"max-w-sm md:ml-auto text-xl md:text-3xl font-bold md:text-right text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"E-commerce, Ticketing, Web shop, Revenue share\"))+\" \")]),_c('div',{staticClass:\"font-bold md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Streamline Your Sales with Vizgu!\"))+\" \")]),_c('p',{staticClass:\"mt-6 md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Our e-commerce solutions are tailored to your unique workflows and operations, offering time-gated, hybrid, and dynamic pricing options for tickets. But we don't stop there. Vizgu transforms visitor traffic management, bidding farewell to long queues and costly bottlenecks.\" ))+\" \")]),_c('p',{staticClass:\"md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Our seamless processes ensure smooth transitions from ticket sales to entry, while our smart system encourages visitors to explore merchandise when they're most likely to purchase. Curious how? Reach out to us and discover how Vizgu makes curation and commercialization both efficient and engaging, without being intrusive!\" ))+\" \")])])],1)])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{},[_c('div',{staticClass:\"flex flex-col-reverse md:flex-row\"},[_c('div',{staticClass:\"max-w-lg mr-auto\"},[_c('div',{staticClass:\"max-w-sm text-xl md:text-3xl font-bold md:text-left text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"User Experience & Digital Guides\"))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"At the heart of our innovative approach lies a deep understanding of human behavior and emotions, combined with cutting-edge technology. We create immersive and engaging experiences that not only delight users but also drive results.\" ))+\" \")]),_c('p',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Storytelling Meets Functionality: By blending captivating narratives with intuitive design, we keep users engaged and motivated, turning even the most complex stories into enjoyable experiences.\" ))+\" \")]),_c('p',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Our commitment to inclusivity ensures that our digital guides are user-friendly for individuals of all abilities, ages, and backgrounds.\" ))+\" \")]),_c('p',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Our interactive digital guides encourage users to explore, learn, and create memorable moments, fostering a deep connection with your brand.\" ))+\" \")]),_c('p',{staticClass:\"text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Data-Driven Results: We track user behavior and analyze performance metrics, empowering you to make informed decisions and optimize your digital strategy continuously. Sounds cool? Well reach out for a demo!\" ))+\" \")])]),_c('v-img',{staticClass:\"object-left\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '200px' : '240px',\"src\":_vm.media.info2}})],1)])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center\"},[_c('v-img',{staticClass:\"object-left mr-auto md:m-auto\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '170px' : '240px',\"src\":_vm.media.info3}}),_c('div',{staticClass:\"max-w-lg md:ml-auto mt-6 md:mt-0\"},[_c('div',{staticClass:\"max-w-sm md:ml-auto text-xl md:text-3xl font-bold md:text-right text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Tour guide management\"))+\" \")]),_c('p',{staticClass:\"mt-6 md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Welcome to the future of tour guide management! Our innovative module simplifies the entire process, from scheduling and resource allocation to performance tracking and customer feedback.\" ))+\" \")]),_c('p',{staticClass:\"md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Key features of our Tour Guide Management & Automation module include:\" ))+\" \")]),_c('p',{staticClass:\"md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Intelligent Scheduling: Automatically assign guides to tours based on availability, expertise, and language proficiency, ensuring a seamless visitor experience.\" ))+\" \")]),_c('p',{staticClass:\"md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Resource Optimization: Our system helps you manage guide rosters, identify understaffed tours, and reallocate resources to minimize downtime and maximize efficiency.\" ))+\" \")]),_c('p',{staticClass:\"md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Automated Communications: Keep your guides informed with automated updates on schedules, route changes, and visitor preferences, ensuring a smooth and well-prepared tour experience.\" ))+\" \")]),_c('p',{staticClass:\"md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Seamless Integration: Connect our module with your existing booking and ticketing systems to create a unified, end-to-end solution for tour management.\" ))+\" \")]),_c('p',{staticClass:\"md:text-right font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Elevate your guided experiences with our Tour Guide Management & Automation module, and watch your visitor satisfaction soar!\" ))+\" \")])])],1)])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{},[_c('div',{staticClass:\"flex flex-col-reverse md:flex-row\"},[_c('div',{staticClass:\"max-w-lg mr-auto\"},[_c('div',{staticClass:\"max-w-sm text-xl md:text-3xl font-bold md:text-left text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"City marketing\"))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Introducing the Data-Driven City Marketing Revolution: Engage, Inspire, and Amaze!\" ))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Imagine a vibrant, captivating narrative that showcases the unique spirit of your city, attracting visitors and locals alike. Welcome to our data-driven City Marketing revolution!\" ))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Our innovative approach combines cutting-edge technology, immersive storytelling, and AI-powered insights to spotlight your city's hidden gems and iconic landmarks. We create dynamic, shareable content that sparks curiosity and inspires exploration.\" ))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With personalized push notifications, we keep your audience engaged and informed about upcoming events, promotions, and local experiences tailored to their interests.\" ))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Get ready to transform your city into a must-visit destination, and let's make it the talk of the town. Join us in redefining City Marketing and make your city shine like never before!\" ))+\" \")])]),_c('v-img',{staticClass:\"object-left\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '200px' : '260px',\"src\":_vm.media.info4}})],1)])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center\"},[_c('v-img',{staticClass:\"object-left mr-auto md:m-auto\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '170px' : '240px',\"src\":_vm.media.info5}}),_c('div',{staticClass:\"max-w-lg md:ml-auto mt-6 md:mt-0\"},[_c('div',{staticClass:\"max-w-sm md:ml-auto text-xl md:text-3xl font-bold md:text-right text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Operations module\"))+\" \")]),_c('p',{staticClass:\"mt-6 md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Business critical workflows and administrative burdens. At Vizgu we understand your business -which is why we also understand how to identify bottlenecks which foster double entry work and administrative burdens across the entire organizational pillars. Intrigued? Well, reach out and ask for a demo!\" ))+\" \")])])],1)])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{},[_c('div',{staticClass:\"flex flex-col-reverse md:flex-row\"},[_c('div',{staticClass:\"max-w-lg mr-auto\"},[_c('div',{staticClass:\"max-w-sm text-xl md:text-3xl font-bold md:text-left text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Data & API Integration\"))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Introducing the Future of Data Management: Cost-effective, Customized Dashboards!\" ))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"In today's data-driven world, organizations, cities, museums, and destinations are all rich in data, but often struggle with the costly process of aggregation and visualization. Say farewell to pricey consultants deciphering charts for you. Our expert team is here to help you create meaningful dashboards tailored to your professional needs and organizational KPIs.\" ))+\" \")]),_c('p',{staticClass:\"mt-6 text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Leveraging our API-first approach, we seamlessly connect fragmented systems into a unified, easy-to-understand central hub. Ready to revolutionize your data management? Contact us for a demo and experience the difference!\" ))+\" \")])]),_c('v-img',{staticClass:\"object-left\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '200px' : '260px',\"src\":_vm.media.info6}})],1)])]),_c('div',{staticClass:\"relative font-light mt-4\"},[_c('div',{staticClass:\"flex flex-col\"},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center\"},[_c('v-img',{staticClass:\"object-left mr-auto md:m-auto\",attrs:{\"contain\":\"\",\"max-width\":_vm.isMobile ? '170px' : '250px',\"src\":_vm.media.info7}}),_c('div',{staticClass:\"max-w-lg md:ml-auto mt-6 md:mt-0\"},[_c('div',{staticClass:\"max-w-md md:ml-auto text-xl md:text-3xl font-bold md:text-right text-green3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Special Co-Creation Projects\"))+\" \")]),_c('p',{staticClass:\"mt-1 md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Discover Collective Creativity: Special Co-Creation Projects!\" ))+\" \")]),_c('p',{staticClass:\"mt-4 md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Embrace collaboration by uniting diverse minds to create tailored, innovative solutions for your unique challenges. Experience the synergy of experts, stakeholders, and end-users working together, driving constant improvement.\" ))+\" \")]),_c('p',{staticClass:\"mt-4 md:text-right\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Unlock your organization's full potential with our Special Co-Creation Projects today!\" ))+\" \")]),_c('p',{staticClass:\"mt-4 md:text-right font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"And remember our mantra: Co-creating tomorrow, today!\"))+\" \")])])],1)])])]),_c('div',{staticClass:\"mt-1 md:mt-32\"},[_c('div',{staticClass:\"max-w-5xl inner-container flex flex-col items-center\"},[_c('div',{staticClass:\"text-xl md:text-3xl font-bold\",domProps:{\"innerHTML\":_vm._s(_vm.l.rolePickerTitle)}}),_c('div',{staticClass:\"max-w-sm text-center mt-3 font-normal text-xl\",domProps:{\"innerHTML\":_vm._s(\n _vm.$t(\n 'Click on one of the personas you see to read about what Vizgu can do for you & your institution'\n )\n )}}),_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"flex-1 md:flex-none border-2 py-4 mt-5 bg-green3 px-10\",attrs:{\"color\":\"rounded-none text-white\"}},on),[_c('div',{staticClass:\"flex flex-row items-center justify-between\"},[_c('div',{staticClass:\"text-md text-white font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.chooseRoleTitle)+\" \")]),_c('v-icon',{attrs:{\"right\":\"\",\"small\":\"\",\"color\":\"white\"}},[_vm._v(\" menu-down \")])],1)])]}}])},[_c('v-list',_vm._l((_vm.roles),function(role,indx){return _c('v-list-item',{key:indx,on:{\"click\":function($event){return _vm.setRole(role)}}},[_c('v-list-item-title',[_vm._v(_vm._s(role.title))])],1)}),1)],1)],1),(_vm.currentRole)?_c('div',{staticClass:\"relative bg-dark text-white mt-24 py-10\"},[_c('div',{staticClass:\"flex flex-col md:flex-row gap-5 inner-container py-5 items-center\"},[_c('div',{staticClass:\"w-full md:w-1/2 font-light\"},[_c('div',{staticClass:\"font-semibold text-xl md:text-2xl font-raleway mt-6 md:mt-0\"},[_vm._v(\" \"+_vm._s(_vm.currentRole.title)+\" \")]),_c('div',{staticClass:\"whitespace-pre-line mt-8 md:mt-0\",domProps:{\"innerHTML\":_vm._s(_vm.currentRole.description)}})]),_c('div',{staticClass:\"w-full md:w-1/2\"},[_c('v-img',{staticClass:\"object-right md:hidden\",attrs:{\"contain\":\"\",\"height\":\"320px\",\"src\":_vm.currentRole.image()}}),_c('v-img',{staticClass:\"object-right hidden md:block\",attrs:{\"contain\":\"\",\"height\":\"350px\",\"src\":_vm.currentRole.image()}})],1)])]):_vm._e()]),_c('v-divider',{staticClass:\"max-w-5xl inner-container my-24\"}),_c('div',{staticClass:\"mx-auto inner-container max-w-5xl text-center\"},[_c('div',{staticClass:\"text-lg md:text-2xl mx-auto text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"A powerful platform co-created with our customers; Curators, Museum Directors, City Marketeers and Guides.\" ))+\" \")]),_c('div',{staticClass:\"font-light mt-5\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The Platform is designed to eliminate administrative burdens & automate business critical workflows.\" ))+\" \")]),_c('div',{staticClass:\"mt-12 font-bold text-md md:text-lg max-w-xs mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The platform works as a stand-alone or in combination with Vizgu native APP\" ))+\" \")])]),_c('div',{staticClass:\"mt-2 md:mt-20\"},[_c('PlatformContactForm')],1),_c('div',{staticClass:\"mt-28\"},[_c('div',{staticClass:\"bg-lightgray text-center py-8\"},[_c('h1',{staticClass:\"font-raleway text-2xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform & APP\"))+\" \")]),_c('div',{staticClass:\"text-graytext\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform works in perfect unison with the Vizgu app\"))+\" \")])])]),_c('div',{staticClass:\"mt-10 md:mt-28 inner-container max-w-5xl text-center\"},[_c('div',{staticClass:\"font-medium text-xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Get the best of both worlds!\"))+\" \")]),_c('div',{staticClass:\"mt-5\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The platform covers all critical worksflows from curation to commercialisation.\" ))+\" \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$t( \"The APP is an extension of the services with supporting features such as:\" ))+\" \")])]),_c('div',{staticClass:\"flex gap-5 inner-container mt-8 md:mt-20 justify-around flex-wrap\"},_vm._l((_vm.featureCards),function(title,indx){return _c('div',{key:indx,staticClass:\"block p-5 h-20 w-36 shadow-xl\"},[_c('div',{},[_vm._v(_vm._s(title))])])}),0),_c('div',{staticClass:\"text-xl text-center mt-12 md:mt-20\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"And much more...\"))+\" \")]),_c('div',{staticClass:\"mt-12 md:mt-0\"},[_c('v-img',{staticClass:\"object-center object-contain w-full inner-container\",attrs:{\"width\":_vm.isMobile ? '100%' : '900px',\"contain\":\"\",\"src\":_vm.media.desktopPhoneStack}})],1),_c('div',{staticClass:\"inner-container max-w-5xl text-center mt-16\"},[_c('div',{staticClass:\"text-xl md:text-3xl font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The app changes look and feel based on where you are and what you are visiting.\" ))+\" \")]),_c('div',{staticClass:\"mt-6 font-light text-md md:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"At Vizgu we respect your design and identity - which is why our app works as if you had your own native app for your own institution.\" ))+\" \")])]),_c('div',{staticClass:\"mt-10 md:mt-20\"},[_c('v-img',{staticClass:\"object-center object-contain w-full inner-container\",attrs:{\"width\":_vm.isMobile ? '100%' : '800px',\"contain\":\"\",\"src\":_vm.media.phoneStack1}})],1),_c('div',{staticClass:\"flex justify-center\",on:{\"click\":function($event){return _vm.toggleCases()}}},[_c('v-btn',{staticClass:\"border-2 py-5 mt-20\",attrs:{\"outlined\":\"\",\"color\":\"rounded-none text-white\"}},[_c('div',{staticClass:\"text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Read more about the individual cases\"))+\" \")])])],1),(_vm.showCases)?_c('div',{staticClass:\"bg-dark text-white mt-28\"},[_c('div',{staticClass:\"flex justify-center py-10 md:py-16\"},[_c('v-btn',{staticClass:\"bg-dark text-white mx-auto py-5\",on:{\"click\":function($event){return _vm.toggleCases()}}},[_c('div',{staticClass:\"flex flex-row items-center justify-center\"},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" menu-up \")])],1)])],1),_c('div',{staticClass:\"flex flex-col md:grid md:grid-cols-2 items-center w-5/6 mx-auto\"},_vm._l((_vm.casesData),function(card,indx){return _c('div',{key:indx,staticClass:\"flex flex-col md:flex-row\"},[_c('v-img',{staticClass:\"object-contain w-full inner-container hidden md:block\",attrs:{\"width\":\"430\",\"contain\":\"\",\"src\":card.imgSrc}}),_c('div',{staticClass:\"mt-8 md:mt-20\"},[_c('div',{staticClass:\"font-semibold text-3xl text-center md:text-left\"},[_vm._v(\" \"+_vm._s(card.title)+\" \")]),_c('v-img',{staticClass:\"object-contain w-full inner-container md:hidden\",attrs:{\"width\":\"350\",\"contain\":\"\",\"src\":card.imgSrc}}),_c('div',{staticClass:\"mt-2\",domProps:{\"innerHTML\":_vm._s(card.description)}})],1)],1)}),0),_c('div',{staticClass:\"flex flex-col md:flex-row w-4/6 mx-auto\"},[_c('div',{staticClass:\"mt-12 md:mt-20 md:w-1/2\"},[_c('div',{staticClass:\"font-semibold text-3xl 2xl:text-5xl text-center md:text-left\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu is now in Holland!\"))+\" \")]),_c('div',{staticClass:\"mt-4 text-xl 2xl:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Reach out to us to hear more about our recent projects in Delft & Hoorn\" ))+\" \")])]),_c('v-img',{staticClass:\"object-contain w-full inner-container md:block mt-10 md:mt-0\",attrs:{\"width\":_vm.isMobile ? '100%' : 800,\"contain\":\"\",\"src\":_vm.caseBannerImg}})],1),_c('div',{staticClass:\"flex justify-center py-16\"},[_c('v-btn',{staticClass:\"bg-dark text-white mx-auto py-5\",on:{\"click\":function($event){return _vm.toggleCases()}}},[_c('div',{staticClass:\"flex flex-row items-center justify-center\"},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" menu-up \")])],1)])],1)]):_vm._e(),_c('div',{staticClass:\"mt-16 md:mt-24\"},[_c('PlatformFAQ')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inner-container max-w-5xl\"},[_c('div',{},[_c('div',{},[_c('v-img',{staticClass:\"mix-blend-screen\",attrs:{\"src\":_vm.media.icons1,\"height\":_vm.iconsHeight.top,\"contain\":\"\",\"min-height\":\"150\"}}),(!_vm.formSended)?_c('div',{staticClass:\"border-black rounded-3xl border-solid overflow-hidden flex flex-col\",style:(_vm.formWindowStyle)},[(!_vm.isActive)?_c('div',{staticClass:\"cursor-pointer bg-white flex flex-col items-center h-full justify-center\",on:{\"click\":function($event){return _vm.toggleActive()}}},[_c('div',{staticClass:\"bg-green bg-opacity-30 relative rounded-full w-20 h-20 flex items-center justify-center flex-grow-0\"},[_c('v-icon',{staticClass:\"text-green2 w-8 h-8\"},[_vm._v(\"touch2\")])],1),_c('div',{staticClass:\"font-italic font-light text-3xl mt-5\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"click me\"))+\" \")])]):_vm._e(),_c('contact-inner-form',{attrs:{\"is-active\":_vm.isActive},on:{\"send\":function (email) { return _vm.handleSend(email); }}})],1):_vm._e(),(_vm.formSended)?_c('div',{staticClass:\"border-black rounded-3xl border-solid overflow-hidden relative bg-lightblue2\",style:(_vm.formWindowStyle)},[_c('div',{staticClass:\"absolute top-1/4 text-2xl md:text-3xl max-w-sm left-12 md:left-36\"},[_c('span',{staticClass:\"font-semibold\"},[_vm._v(_vm._s(_vm.sentTitleFirst))]),_c('span',[_vm._v(_vm._s(_vm.sentTitleLast))])]),_c('div',{staticClass:\"bottom-0 left-0 absolute\"},[_c('v-img',{attrs:{\"src\":_vm.media.sentImage,\"height\":\"190\",\"contain\":\"\"}})],1)]):_vm._e(),_c('v-img',{staticClass:\"mix-blend-screen\",attrs:{\"src\":_vm.media.icons2,\"height\":_vm.iconsHeight.bottom,\"contain\":\"\",\"position\":\"top center\"}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isActive)?_c('div',{staticClass:\"p-5 md:p-12 w-full bg-gray2 md:py-16 h-full overflow-y-auto md:overflow-y-hidden\"},[_c('div',{staticClass:\"font-bold text-2xl md:text-3xl max-w-md\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"It’s a really cool platform, I think you should ask for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-3 font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Enter your information to learn about the amazing platform of tomorrow\" ))+\" \")]),_c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"flex flex-col md:flex-row gap-4\"},[_c('div',{},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Role\"))+\" \")]),_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({staticClass:\"flex-1 md:flex-none h-12 w-64 mt-2 bg-white\",attrs:{\"outlined\":\"\",\"color\":\"rounded-none text-white\"}},'v-btn',attrs,false),on),[_c('div',{staticClass:\"flex flex-row justify-between\"},[_c('div',{staticClass:\"text-md truncate w-56 text-start\"},[_vm._v(\" \"+_vm._s(_vm.form.title)+\" \")]),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\" menu-down \")])],1)])]}}],null,false,3987982753)},[_c('v-list',_vm._l((_vm.roles),function(role,indx){return _c('v-list-item',{key:indx,on:{\"click\":function () { return (_vm.form.title = role); }}},[_c('v-list-item-title',[_vm._v(_vm._s(role))])],1)}),1)],1)],1),_c('div',{},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"First name\"))+\" \")]),_c('v-text-field',{staticClass:\"w-64 mt-2\",attrs:{\"background-color\":\"#fff\",\"flat\":\"\",\"solo\":\"\",\"hide-details\":\"true\"},model:{value:(_vm.form.firstName),callback:function ($$v) {_vm.$set(_vm.form, \"firstName\", $$v)},expression:\"form.firstName\"}})],1)]),_c('div',{staticClass:\"flex flex-col md:flex-row gap-4 mt-4\"},[_c('div',{},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Last name\"))+\" \")]),_c('v-text-field',{staticClass:\"w-64 mt-2\",attrs:{\"background-color\":\"#fff\",\"flat\":\"\",\"solo\":\"\",\"hide-details\":\"true\"},model:{value:(_vm.form.lastName),callback:function ($$v) {_vm.$set(_vm.form, \"lastName\", $$v)},expression:\"form.lastName\"}})],1),_c('div',{},[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"E-mail\"))+\" \")]),_c('v-text-field',{staticClass:\"w-64 mt-2\",attrs:{\"background-color\":\"#fff\",\"flat\":\"\",\"solo\":\"\",\"hide-details\":\"true\"},model:{value:(_vm.form.email),callback:function ($$v) {_vm.$set(_vm.form, \"email\", $$v)},expression:\"form.email\"}})],1)])]),_c('v-btn',{staticClass:\"bg-green3 h-12 text-white rounded-none mt-5 w-64 font-medium\",attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.onEmailSend()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Contact me, please!\"))+\" \")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export type Role = {\n title: string;\n description: string;\n image(): string;\n};\n\nexport const roleList: Role[] = [\n {\n title: \"I’m a curator\",\n description:\n \"Manage your collection. Create digital guides. Engage with your audience in real time. A platform designed with curators - Vizgu is your creative toolbox- allowing you to create a digital, inclusive & playful layer to your exhibitions. \\n\\n Engage with your audience in real time with push invites and notifications. Imagine this: A visitor is walking in your museum park- suddenly a notification pops up: Hello Friend. In 15 minutes, there is a 15-minute presentation on our new exhibition by the artist himself, come and join us and get a free coffee. That is called real-time crowd nudging and is of course co-created with curators and experienced designers.\",\n\n image: () => require(\"@/assets/images/footer/platform/role-curator.png\")\n },\n {\n title: \"I’m a Museum Director\",\n description:\n \"As a Museum Director,\\n Get a comprehensive view of all essential processes - from donations to real-time data dashboards - expertly designed with your unique workflows in mind. \\n\\n Vizgu offers complete oversight of critical workflows through tailored dashboards at both institutional and municipal levels, empowering you to make informed decisions and drive success. \\n\\n Embrace the power of Vizgu and elevate your museum management experience today!\",\n image: () => require(\"@/assets/images/footer/platform/role-director.png\")\n },\n {\n title: \"I work with Guides (people)\",\n description:\n \"Empower Your Guides with Vizgu Platform: Streamlined Management & Booking! \\n\\n Our powerful people management tool, co-created with guides and cultural institutions, revolutionizes the guide booking process. Automate everything from booking to payment, all in one platform. \\n\\n Easily build your guide database, communicate, and book with them in one convenient location. Say farewell to lengthy wait and response times, as Vizgu automates the entire process for you.\",\n image: () =>\n require(\"@/assets/images/footer/platform/role-work-with-guides.png\")\n },\n\n {\n title: \"I tell stories about my city and it’s heritage\",\n description:\n \"Share Your City's or Institutions Heritage with Vizgu: Engaging, Immersive Storytelling! \\n Let Vizgu bring your city's & institutions’ stories to life through digital guides featuring Augmented Reality, audio, and Geo Location triggers. Let your visitors dive into a captivating experience! \\n Not only do our guides enrich visitor journeys, but they also gather real-time data on city & institution usage by both citizens and tourists, providing invaluable insights for future improvements.\",\n image: () =>\n require(\"@/assets/images/footer/platform/role-story-teller.png\")\n },\n\n {\n title:\n \"I am a city marketing Professional within Art, Culture and City Marketing:\",\n\n description:\n \"Unleash Your Marketing Potential: Art, Culture & City Marketing Unified! \\n\\n Harness the power of Vizgu Platform, designed specifically for art, culture, and city marketing professionals. \\n\\n Our platform enables Marketing, Curation, Operation, and PR teams to collaborate seamlessly, eliminating the need for multiple applications. Created with input from experts like you, Vizgu empowers your team to excel in your industry.\",\n image: () => require(\"@/assets/images/footer/platform/role-marketing.png\")\n },\n\n {\n title: \"I help collecting donations\",\n description:\n \"Revolutionize Your Fundraising: Collect Donations Effortlessly! \\n\\n Seeking a cost-effective way to manage donations? Vizgu Platform offers a seamless solution, integrating a donation feature on your website and within our app through our API. \\n\\n Picture this: Collect donations on your homepage, and prompt Vizgu users for non-intrusive donations upon exiting your location. This approach has proven successful in helping museums and other institutions fund specific projects. Our donation feature supports both corporate and private contributions, simplifying your fundraising process.\",\n image: () =>\n require(\"@/assets/images/footer/platform/role-help-donations.png\")\n },\n {\n title: \"I develop Podcasts and guides!\",\n description:\n \"Elevate Your Podcasts & Guides: Storytelling Meets Cutting-Edge Tech! \\n\\n If you're into storytelling and digital curation, Vizgu offers the ultimate platform to captivate your audience. Share your incredible stories through the Vizgu app and marketplace, leaving pod walk apps behind. \\n\\n Our toolbox includes AR, Mixed Reality, Audio, Geofencing, and more, providing an unmatched user experience in digital curation. Vizgu is your go-to solution for taking your podcasts and guides to new heights!\",\n image: () =>\n require(\"@/assets/images/footer/platform/role-develop-guides.png\")\n },\n {\n title: \"I am responsible for tickets, E-commerce & commercial activities\",\n\n description:\n \"Unlock the Ultimate Ticketing & E-commerce Experience! Transform your ticketing, e-commerce, and commercial activities with our cutting-edge solutions designed specifically for your needs. Streamline processes, maximize revenue, and enhance visitor satisfaction with ease. \\n\\n Key benefits: \\n Customizable Ticketing: Time-gated, hybrid, and dynamic pricing options for a tailored visitor experience. \\n Seamless E-commerce: Boost sales with an intuitive platform that drives merchandise and upsells effortlessly. \\n\",\n image: () => require(\"@/assets/images/footer/platform/role-ecommerce.png\")\n },\n\n {\n title: \"I work with Memberships\",\n\n description:\n \"Maximize Memberships & Retention: Dynamic Management for Private & Corporate Communities! \\n\\n Elevate your membership strategy with personalized engagement, exclusive perks, and seamless communication. Our solution simplifies membership management for both private and corporate sectors, fostering loyalty and long-term commitment. \\n\\n Transform your community and watch it thrive. Contact us today!\",\n image: () => require(\"@/assets/images/footer/platform/role-membership.png\")\n }\n];\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport hubspotApi from \"@/api/hubspot\";\nimport {roleList} from \"@/data\";\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\n\n@Component({})\nexport default class PlatformContactForm extends Vue {\n @Prop({type: Boolean, default: false}) isActive!: boolean;\n\n setActive(v: boolean) {\n this.isActive = v;\n }\n\n toggleActive() {\n this.setActive(!this.isActive);\n }\n\n get roles(): string[] {\n return roleList.map(v => this.$t(v.title).toString());\n }\n\n // roles = [\"Curator\", \"Director\"];\n\n form = {\n title: this.roles[0],\n firstName: \"\",\n lastName: \"\",\n email: \"\"\n };\n\n get formData(): Array> {\n return [\n {name: \"email\", value: this.form.email},\n {name: \"firstName\", value: this.form.firstName},\n {name: \"lastName\", value: this.form.lastName},\n {name: \"role\", value: this.form.title}\n ];\n }\n\n onEmailSend() {\n // this.validateForm()\n // if (this.isFormValid)\n this.sendForm();\n }\n\n async sendForm() {\n const email = this.form.email;\n console.log(email);\n const result = await hubspotApi.submitForm(this.formData);\n if (result.status == 200) {\n this.$emit(\"send\", email);\n } else {\n // handle error\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactInnerForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactInnerForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactInnerForm.vue?vue&type=template&id=53603c9a&\"\nimport script from \"./ContactInnerForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactInnerForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemTitle,VMenu,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {isMobile} from \"@/utils/dom\";\nimport {Component, Vue} from \"vue-property-decorator\";\nimport ContactInnerForm from \"@/components/ContactInnerForm.vue\";\nimport {is} from \"date-fns/locale\";\n@Component({\n components: {ContactInnerForm}\n})\nexport default class PlatformContactForm extends Vue {\n isActive = false;\n formSended = false;\n email = \"\";\n\n get iconsHeight() {\n return {\n top: isMobile() ? \"105\" : \"170\",\n bottom: isMobile() ? \"220\" : \"300\"\n };\n }\n\n setActive(v: boolean) {\n this.isActive = v;\n }\n toggleActive() {\n this.setActive(!this.isActive);\n }\n\n handleSend(email: string) {\n console.log(\"handled!\", email);\n this.email = email;\n this.formSended = true;\n }\n\n get sentTitleFirst() {\n const f = this.$t(\"We’ve just sent you an Email to\");\n return `${f} ${this.email}. `;\n }\n get sentTitleLast() {\n const l = this.$t(\"Start your journey with vizgu today!\");\n return l;\n }\n\n media = {\n icons1: require(\"@/assets/images/footer/platform/form-icons1.png\"),\n icons2: require(\"@/assets/images/footer/platform/form-icons2.png\"),\n sentImage: require(\"@/assets/images/aboutus-v2/form-sent.png\")\n };\n\n get formWindowStyle() {\n return {\n height: isMobile() ? \"100%\" : \"500px\",\n minHeight: isMobile() ? \"80vh\" : \"auto\",\n borderWidth: \"8px\"\n };\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformContactForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformContactForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlatformContactForm.vue?vue&type=template&id=ddd93b5a&\"\nimport script from \"./PlatformContactForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlatformContactForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VIcon,VImg})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{},[_c('div',{staticClass:\"bg-lightgray text-center py-8\"},[_c('h1',{staticClass:\"font-raleway text-2xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"FAQ\"))+\" \")])]),_c('div',{staticClass:\"mt-10\"},[_c('div',{},[_c('div',{staticClass:\"max-w-5xl inner-container\"},[_c('v-expansion-panels',{attrs:{\"flat\":\"\"}},_vm._l((_vm.items),function(item,indx){return _c('v-expansion-panel',{key:indx,staticClass:\"border-solid border-0 border-b-2 border-gray pb-3\"},[_c('v-expansion-panel-header',{staticClass:\"pt-7 pb-4 px-0 min-h-0\",attrs:{\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_c('div',{staticClass:\"flex gap-6 items-center\"},[_c('v-icon',{class:{'rotate-45 transform': open},attrs:{\"x-small\":\"\"}},[_vm._v(\"plus\")]),_c('div',{staticClass:\"w-full font-normal text-lg md:text-xl\"},[_vm._v(\" \"+_vm._s(item.title)+\" \")])],1)]}}],null,true)}),_c('v-expansion-panel-content',{},[_c('div',{staticClass:\"font-light mt-5\"},[_vm._v(\" \"+_vm._s(item.description)+\" \")])])],1)}),1)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {TranslateResult} from \"vue-i18n\";\nimport {Component, Vue} from \"vue-property-decorator\";\n\ntype QuestionTyle = {\n title: string | TranslateResult;\n description: string | TranslateResult;\n};\n\n@Component\nexport default class PlatformFAQComponent extends Vue {\n get items(): QuestionTyle[] {\n return [\n {\n title: this.$t(\"How do you implement Vizgu?\"),\n description: this.$t(\n \"At Vizgu we develop out products with API first approach. Meaning our solutions are easy to implement and do not require large teams nor project management skills from customer side. Typically, and depending on the maturity level on software– we implement within 1 to 3 weeks. With test and go-live.\"\n )\n },\n {\n title: this.$t(\n \"Do I need the use the Vizgu APP as part of the Platform?\"\n ),\n description: this.$t(\n \"The app is an extension of Vizgu services offerings – and is not required. However, we do suggest that you push your offerings trough the app- as it is used by many guests, tourists, art & culture enthusiasts.\"\n )\n },\n {\n title: this.$t(\n \"If I have a ticketing system, can I use your guide management?\"\n ),\n description: this.$t(\n \"Our entire feature portfolio in Vizgu Platform & APP work as standalone or in unison. We don’t want you to buy stuff you don’t need. <3\"\n )\n },\n {\n title: this.$t(\n \"Can you integrate with my collection management system?\"\n ),\n description: this.$t(\n \"Yes. Vizgu API supports collection management systems.\"\n )\n },\n {\n title: this.$t(\"Do you have donation features?\"),\n description: this.$t(\n \"Yes. Vizgu offers a standalone donation feature - for web and in app.\"\n )\n },\n {\n title: this.$t(\n \"Can I manage and communicate with my members via Vizgu?\"\n ),\n description: this.$t(\n \"Yes. With Vizgu you can use our entire suite or just use our membership feature. The membership feature supports: Digital Membership card. Physical Card- all cards communicate with ticketing systems and POS systems.\"\n )\n },\n {\n title: this.$t(\n \"I have a special project- but none of the features I need are not listed.\"\n ),\n description: this.$t(\n \"Please reach out to us - Vizgu is built with co-creation and if we feel your project has the possibility to help many other professionals - we are more than willing to co-create the features with you.\"\n )\n }\n ];\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformFAQ.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformFAQ.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlatformFAQ.vue?vue&type=template&id=cbc31060&\"\nimport script from \"./PlatformFAQ.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlatformFAQ.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PlatformContactForm from \"@/components/PlatformContactForm.vue\";\nimport PlatformFAQ from \"@/components/PlatformFAQ.vue\";\nimport {Role, roleList} from \"@/data\";\nimport {isMobile} from \"@/utils/dom\";\nimport {TranslateResult} from \"vue-i18n\";\nimport {Component, Vue} from \"vue-property-decorator\";\n\ntype Feature = {\n title: string | TranslateResult;\n description?: string | TranslateResult;\n subFeatures?: Array<{title: string | TranslateResult}>;\n};\n\ntype CaseItem = {\n title: string | TranslateResult;\n description?: string | TranslateResult;\n imgSrc: string;\n};\n\n@Component({components: {PlatformContactForm, PlatformFAQ}})\nexport default class PlatformV3 extends Vue {\n showCases = false;\n currentRole: Role | null = null;\n featureCards: Array = [\n this.$t(\"In-APP purchases\"),\n this.$t(\"Tour Guide booking\"),\n this.$t(\"Digital AR guides\"),\n this.$t(\"3D audio guides\"),\n this.$t(\"Tickets\"),\n this.$t(\"Mixed reality guides\"),\n this.$t(\"Object detection\")\n ];\n\n get l() {\n return {\n rolePickerTitle: this.$t(\n \"Help us understand who you are\"\n )\n };\n }\n\n get isMobile() {\n return isMobile();\n }\n\n platformMediaPath(file: string) {\n return require(`@/assets/images/footer/platform/${file}`);\n }\n\n mediaPath(file: string) {\n return require(`@/assets/images/aboutus/${file}`);\n }\n\n mediaPathV2(file: string) {\n return require(`@/assets/images/aboutus-v2/${file}`);\n }\n\n media = {\n mainBanner: this.mediaPathV2(\"main-banner.png\"),\n info1: this.mediaPathV2(\"info-1.png\"),\n info2: this.mediaPathV2(\"info-2.png\"),\n info3: this.mediaPathV2(\"info-3.png\"),\n info4: this.mediaPathV2(\"info-4.png\"),\n info5: this.mediaPathV2(\"info-5.png\"),\n info6: this.mediaPathV2(\"info-6.png\"),\n info7: this.mediaPathV2(\"info-7.png\"),\n forOurClients: this.platformMediaPath(\"desktop-tablet-stack.png\"),\n desktopPhoneStack: this.platformMediaPath(\"desktop-phone-stack.png\"),\n phoneStack1: this.platformMediaPath(\"phone-stack1.png\"),\n forAudience: this.platformMediaPath(\"first-launch-1.png\")\n };\n\n get caseBannerImg() {\n return require(\"@/assets/images/footer/platform/viz-in-holland.png\");\n }\n\n get casesData(): CaseItem[] {\n return [\n {\n imgSrc: require(\"@/assets/images/footer/platform/phone-folkentinget.png\"),\n title: this.$t(\"Folketinget\"),\n description: this.$t(\n \"The Danish Parliament requested a curation and collection app with object detection for internal use. We co-created the app with them and were subsequently awarded top scores for test, delivery, and project management. Part of the project was to allow our APIs for object detection to work with their collection system – for a seamless integration and workflow. After the internal project was completed. The Danish Parliament requested to be part of our Vizgu Official Community APP and thereby presenting their collection for the public to see.\"\n )\n },\n {\n imgSrc: require(\"@/assets/images/footer/platform/phone-cadw.png\"),\n title: this.$t(\"CADW\"),\n description: this.$t(\n \"CADW had an old and outdated app- with great features but lack of maintenance and costs too high to continue the service. We were approached due to a recommendation and subsequently entered a co-creation project in implementing the best parts of the old version into Vizgu Community app. When visiting one of the 100+ locations- the Vizgu Community APP will change UI to fit CADW design and Identity and thus giving them the value of having their own app - combined with the value of being part of Vizgu’s growing community for all things art and cultural heritage! Furthermore, we updated their existing AR games to fit the current standards and expectations.\"\n )\n },\n {\n imgSrc: require(\"@/assets/images/footer/platform/phone-kolding.png\"),\n title: this.$t(\"Museum Kolding\"),\n description: this.$t(\n \"Museum Kolding wanted to extend the visit beyond the walls of the cell and museum. Together we co-created a digital AR experience – where we made a 3D model of the PR & Communication Director. The city of Kolding is now a living and breathing city with a digital layer.\"\n )\n },\n {\n imgSrc: require(\"@/assets/images/footer/platform/phone-varde.png\"),\n title: this.$t(\"Varde\"),\n description: this.$t(\n \"The municipality of Varde has one of the largest and most expensive sculptures and public art in Denmark- due to patronage from a local and successful real estate entrepreneur. We co-created digital guides, Facebook video campaigns, and continue to maintain the page to fit the municipality’s cultural goals going forward. Next stop is co-creating a new guide - based on data and findings from current.\"\n )\n }\n ];\n }\n\n get roles(): Role[] {\n return roleList.map(v => {\n return {\n title: this.$t(v.title).toString(),\n description: this.$t(v.description).toString(),\n image: v.image\n };\n });\n }\n\n features: Feature[] = [\n {\n title: this.$t(\"Boost revenue\"),\n description: this.$t(\n \"Ticket system, Booking System for guides, Event Management, Revenue sharing, Generate new and creative revenue streams!\"\n ),\n subFeatures: [\n {title: this.$t(\"Tickets\")},\n {title: this.$t(\"Webshop/Ticket Cross Sell\")},\n {title: this.$t(\"Digital Guides\")},\n {title: this.$t(\"Cross Sell Optimization\")},\n {title: this.$t(\"Tour Guides\")},\n {title: this.$t(\"Revenue Share\")},\n {title: this.$t(\"Hybrid Tickets\")},\n {title: this.$t(\"Time Slot Pricing\")},\n {title: this.$t(\"Predicted Sales Based on Interest\")},\n {title: this.$t(\"Collaboration Tickets\")},\n {title: this.$t(\"Donation Feature\")},\n {title: this.$t(\"Become a Memember (Subscribtion)\")},\n {title: this.$t(\"Destination Marketing\")},\n {title: this.$t(\"One-stop-shop for e-commerce\")},\n {title: this.$t(\"Donate\")}\n ]\n },\n {\n title: this.$t(\"User experience\"),\n description: this.$t(\n \"Augmented reality guides, Donations, Tickets, 3D audio guides. Co-create content with your audience.\"\n ),\n subFeatures: [\n {title: this.$t(\"Digital Guides\")},\n {title: this.$t(\"Tailored Content\")},\n {title: this.$t(\"Real time Nudging\")},\n {title: this.$t(\"Crowd Control\")},\n {title: this.$t(\"Push Notifications\")},\n {title: this.$t(\"Heat Maps\")},\n {title: this.$t(\"Indentify Traffik for Exhibtion Design\")},\n {title: this.$t(\"Tailored Content Based on Interest\")},\n {\n title: this.$t(\n \"Push Notifications for Members (Engange with Members in real time)\"\n )\n },\n {title: this.$t(\"Object Detection\")},\n {title: this.$t(\"Augmented Reality Guides\")},\n {title: this.$t(\"Geo Fencing / Geo Trigger Guides\")},\n {\n title: this.$t(\n \"Combine - AR, Audio, Geo Fencing/ Geo Trigger - Ultimate Digital Guide\"\n )\n },\n {title: this.$t(\"Co-Creation\")},\n {\n title: this.$t(\n \"Ed-Tech - Engage the future generation in art and Culture\"\n )\n },\n {title: this.$t(\"Pop Up Notifications\")},\n {\n title: this.$t(\n \"Put your phone in the pocket and let it tell you about your sorroundings\"\n )\n },\n {title: this.$t(\"Non Intrusive Sales\")},\n {title: this.$t(\"Real Time Insight in customer behaviour\")},\n {title: this.$t(\"Location & Detection combined\")}\n ]\n },\n {\n title: this.$t(\"Operations Module\"),\n description: this.$t(\n \"Automate booking flow, People Management, Membership management.\"\n ),\n subFeatures: [\n {title: this.$t(\"Collection System Integration\")},\n {title: this.$t(\"Business Critical Porcess Autimation\")},\n {title: this.$t(\"Reporting/ Business Intelligence\")},\n {title: this.$t(\"Front Office Automation\")},\n {title: this.$t(\"Back office Automation\")},\n {title: this.$t(\"KPI Based Reporting\")},\n {title: this.$t(\"Real-time Insight\")},\n {title: this.$t(\"Real-time Data\")},\n {title: this.$t(\"People Management\")},\n {title: this.$t(\"Payroll Managemet\")},\n {title: this.$t(\"Calednar Sync\")}\n ]\n },\n {\n title: this.$t(\"Data\"),\n description: this.$t(\"\"),\n subFeatures: [\n {title: this.$t(\"Real-Time Data\")},\n {title: this.$t(\"Heat Maps\")},\n {title: this.$t(\"Indentify Traffic\")},\n {title: this.$t(\"How well do you know your visitor?\")},\n {title: this.$t(\"Before, During, After\")},\n {\n title: this.$t(\n \"Predict Traffic from Insitution level to city and municipal level\"\n )\n },\n {title: this.$t(\"Data Ownership\")},\n {title: this.$t(\"Real Time Nudging - Via Data & Insights\")}\n ]\n },\n {\n title: this.$t(\"Special Co-Creation Projects\"),\n description: this.$t(\"\"),\n subFeatures: [\n {title: this.$t(\"Ed-Tech Co-creation\")},\n {title: this.$t(\"Public Private Innovation & Co-creation\")}\n ]\n },\n {\n title: this.$t(\"API Integration\"),\n description: this.$t(\"\"),\n subFeatures: [\n {title: this.$t(\"CMS\")},\n {title: this.$t(\"ERP\")},\n {title: this.$t(\"CRM\")},\n {title: this.$t(\"Mail Chimp\")},\n {title: this.$t(\"Clearing/Merchents\")},\n {title: this.$t(\"Google Analytics Pixel\")},\n {title: this.$t(\"Facebook\")}\n ]\n }\n ];\n\n setRole(v: Role) {\n this.currentRole = v;\n }\n\n toggleCases() {\n this.showCases = !this.showCases;\n }\n\n get content() {\n return {\n featuresTitle: this.$t(\n \"The Vizgu platform is an agile and easy to use platform, developed with our unique co-creation approach. Check out some of the highlighted features below!\"\n )\n };\n }\n\n get chooseRoleTitle() {\n return this.currentRole\n ? this.currentRole.title\n : this.$t(\"Choose a persona\");\n }\n\n get ownModelImage(): string {\n return require(\"@/assets/images/footer/platform/own-model.png\");\n }\n get packageImage(): string {\n return require(\"@/assets/images/footer/platform/package.png\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformV3.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformV3.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlatformV3.vue?vue&type=template&id=b8af3d3e&\"\nimport script from \"./PlatformV3.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlatformV3.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\ninstallComponents(component, {VBtn,VDivider,VIcon,VImg,VList,VListItem,VListItemTitle,VMenu})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":function($event){return _vm.shareLink()}}},[_vm._v(\"share\")]),(_vm.likeFeature)?_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1),(_vm.countryVenue)?_c('div',{staticClass:\"relative\"},[_c('GUIDImage',{attrs:{\"image-uid\":_vm.bannerImgSrc,\"height\":450,\"rounded\":false}}),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-1\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"place-location\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.$t(\"Country\")))])],1),_c('div',{staticClass:\"text-white absolute bottom-14 z-1 flex flex-col space-y-2 align-start\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.countryName)+\" \")]),_c('div',{staticClass:\"bg-dark py-2 px-4 whitespace-nowrap\"},[_vm._v(\" \"+_vm._s(_vm.venuesCount)+\" \"+_vm._s(_vm.$t(\"venues & activities\"))+\" \")])])])],1):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"md:grid grid-cols-3 justify-items-center py-5 md:py-10\"},[_c('div',{staticClass:\"col-start-2\"},[_c('v-tabs',{staticClass:\"flex flex-col w-min navigation-tabs overflow-hidden\",attrs:{\"background-color\":\"transparent\"}},_vm._l((_vm.tabItems),function(tab){return _c('v-tab',{key:tab.title,staticClass:\"w-min normal-case\",on:{\"click\":function($event){return _vm.$vuetify.goTo(tab.route, null)}}},[_vm._v(\" \"+_vm._s(tab.title)+\" \")])}),1)],1),_c('div',{staticClass:\"hidden md:flex md:flex-row ml-auto\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":function($event){return _vm.shareLink()}}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1)])]),(_vm.hSections.first)?_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.first}}):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-col pb-4 w-full md:mt-6\",attrs:{\"id\":\"about\"}},[_c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.description)}})])]),_c('v-divider',{staticClass:\"md:mx-16 my-6\"})],1),(_vm.museumsData.length > 0)?_c('div',{staticClass:\"pt-4\",attrs:{\"id\":\"venues\"}},[_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.museumsData,\"title\":_vm.$t('Museums') + ' ' + _vm.inCountryLabel,\"item-width\":_vm.museumCardWidth,\"card-top-icon\":\"venue\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){\nvar element = ref.element;\nreturn [_vm._v(\" \"+_vm._s(_vm.venueOpenCloseDate(element))+\" \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Kolding \")]}}],null,false,3526515787)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e(),(_vm.exhibitionsData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.exhibitionsData,\"title\":_vm.$t('Popular Exhibitions') + ' ' + _vm.inCountryLabel,\"item-width\":_vm.exhibitionCardWidth,\"card-top-icon\":\"exhibition\",\"useLocation\":false},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" \"+_vm._s(\"\")+\" \")]}}],null,false,1862963806)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e(),(_vm.hSections.second)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.second}})],1):_vm._e(),(_vm.eventsData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"id\":\"events\",\"data-list\":_vm.eventsData,\"title\":_vm.$t('Top events in') + ' ' + _vm.inCountryLabel,\"item-width\":_vm.eventCardWidth,\"card-top-icon\":\"event\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" \"+_vm._s(\"\")+\" \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" \"+_vm._s(\"\")+\" \")]}}],null,false,2891578544)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e(),(_vm.citiesData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.citiesData,\"title\":_vm.$t('Cities'),\"item-width\":_vm.cityCardWidth,\"card-top-icon\":\"place-location\",\"useLocation\":false},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 22 \"+_vm._s(_vm.$t(\"venues && activities\"))+\" \")]}}],null,false,1474421594)}),(_vm.artistsData.length > 0)?_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1):_vm._e()],1):_vm._e(),(_vm.artistsData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.artistsData,\"title\":_vm.$t('Famous artists from') + ' ' + _vm.inCountryLabel,\"item-width\":_vm.artistCardWidth,\"card-top-icon\":\"artist\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 24 \"+_vm._s(_vm.$t(\"artworks\"))+\" \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" \"+_vm._s(_vm.$t(\"From\"))+\" Denmark \")]}}],null,false,2336091151)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e(),(_vm.hSections.third)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.third}})],1):_vm._e(),(_vm.wayfindersData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"id\":\"wayfinders\",\"data-list\":_vm.wayfindersData,\"title\":_vm.$t('Popular wayfinders') + ' ' + _vm.inCountryLabel,\"item-width\":_vm.wayfinderCardWidth,\"card-top-icon\":\"wayfinder\",\"iconSize\":15},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" \"+_vm._s(\"\")+\" \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" \"+_vm._s(\"\")+\" \")]}}],null,false,2891578544)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {\n BaseDataV2,\n ExhibitionV2,\n VenueV2,\n VizguType,\n WayfinderV2\n} from \"@/types/vizgu\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport venuesApi from \"@/api/venues\";\nimport {\n GetExhibitionsRequest,\n GetExhibitionsResponse,\n GetVenuesRequest,\n GetVenuesResponse,\n GetWayfindersRequest,\n GetWayfindersResponse\n} from \"@/types/api\";\nimport exhibitionsApi from \"@/api/exhibitions\";\nimport wayfindersApi from \"@/api/wayfinders\";\nimport {\n exhibitionHighlightedData,\n venueHighlightedData,\n wayfinderHighlightedData\n} from \"@/utils/highlighted-section\";\nimport {copyCurrentRouteClipboard} from \"@/utils/clipboard\";\nimport {embeddedStore} from \"@/store\";\nimport {EventKeys} from \"@/store/modules/embedded\";\nimport {parseBaseContentText, venueTodayOpenClose} from \"@/utils/data\";\nimport {TranslateResult} from \"vue-i18n\";\n\nexport interface TabItem {\n title: string | TranslateResult;\n route: string;\n}\n\n@Component({\n components: {HighlightedSection, VideoCard, ItemSlideGroup, GUIDImage}\n})\nexport default class Country extends Vue {\n likeFeature = false;\n\n smallCardWidth = 220;\n wideCardWidth = 364;\n museumCardWidth = this.smallCardWidth;\n exhibitionCardWidth = this.wideCardWidth;\n eventCardWidth = this.wideCardWidth;\n cityCardWidth = this.smallCardWidth;\n artistCardWidth = this.smallCardWidth;\n wayfinderCardWidth = this.smallCardWidth;\n\n countryVenue: VenueV2 | null = null;\n\n venuesCount = 0;\n\n initialDataLoaded = false;\n\n slidersSettings = {\n perPage: 20\n };\n\n slidersData = {\n museums: [] as BaseDataV2[],\n popularExhibitions: [] as BaseDataV2[],\n topEvents: [] as BaseDataV2[],\n cities: [] as BaseDataV2[],\n artists: [] as BaseDataV2[],\n wayfinders: [] as BaseDataV2[]\n };\n\n @Watch(\"$route.params.id\")\n onIdChange() {\n window.scrollTo(0, 0);\n this.loadApiData();\n }\n\n venueOpenCloseDate(currentVenue: VenueV2) {\n return venueTodayOpenClose(currentVenue);\n }\n\n shareLink() {\n copyCurrentRouteClipboard(this.$route);\n }\n\n get hSections() {\n return {\n first: this.firstHighlightedSection,\n second: this.secondHighlightedSection,\n third: this.thirdHighlightedSection\n };\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.museumsData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: venueHighlightedData(v as VenueV2)\n });\n }\n\n get secondHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.exhibitionsData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"New!\",\n content: exhibitionHighlightedData(v as ExhibitionV2)\n });\n }\n\n get thirdHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.wayfindersData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"Popular!\",\n content: wayfinderHighlightedData(v as WayfinderV2)\n });\n }\n\n get tabItems(): TabItem[] {\n return [\n {\n title: this.$t(\"About\"),\n route: \"#about\"\n },\n {\n title: this.$t(\"Venues\"),\n route: \"#venues\"\n },\n {\n title: this.$t(\"Events\"),\n route: \"#events\"\n },\n {\n title: this.$t(\"Wayfinders\"),\n route: \"#wayfinders\"\n }\n ];\n }\n\n get bannerImgSrc() {\n return this.countryVenue?.imageGuids.$values[0] || \"\";\n }\n\n get inCountryLabel() {\n return `${this.$t(\"in\")} ${this.countryName}`;\n }\n\n get countryName() {\n return this.countryVenue?.name || \"\";\n }\n\n get museumsData(): BaseDataV2[] {\n return this.slidersData.museums;\n // return getSampleBaseDataList();\n }\n get exhibitionsData(): BaseDataV2[] {\n return this.slidersData.popularExhibitions;\n // return getSampleBaseDataList();\n }\n get eventsData(): BaseDataV2[] {\n return this.slidersData.topEvents;\n // return getSampleBaseDataList();\n }\n get citiesData(): BaseDataV2[] {\n return this.slidersData.cities;\n // return getSampleBaseDataList();\n }\n get artistsData(): BaseDataV2[] {\n return this.slidersData.artists;\n // return getSampleBaseDataList();\n }\n get wayfindersData(): BaseDataV2[] {\n return this.slidersData.wayfinders;\n // return getSampleBaseDataList();\n }\n\n get description(): string {\n return this.countryVenue ? parseBaseContentText(this.countryVenue) : \"\";\n }\n\n get isVenueLoading() {\n return embeddedStore.currentVenueLoading;\n }\n\n addVenuesCount(v: unknown) {\n try {\n const s = `${v}`;\n const r = parseInt(s);\n if (isNaN(r)) {\n return;\n }\n this.venuesCount += r;\n } catch {\n return;\n }\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadApiData();\n }\n\n // lifecycle methods\n async created() {\n this.initListeners(true);\n await this.loadApiData();\n }\n\n beforeDestroy() {\n this.initListeners(false);\n }\n // eof lifecycle methods\n\n // data load methods\n\n async loadApiData() {\n embeddedStore.setCurrentVenueLoading(true);\n embeddedStore.setCurrentVenue(null);\n const id: string = this.$route.params.id;\n await this.requestVenue(id);\n await this.requestSlidersData();\n }\n\n private async requestSlidersData() {\n this.getSliderMuseums();\n this.getSliderCities();\n this.getSliderExhibitions();\n this.getSliderWayfinders();\n }\n\n private async requestVenue(id: string) {\n const resp: VenueV2 = await venuesApi.getVenue(id);\n this.countryVenue = resp;\n embeddedStore.setCurrentVenue(resp);\n embeddedStore.setCurrentVenueLoading(false);\n }\n\n private async getSliderMuseums() {\n const params: GetVenuesRequest = {\n take: this.slidersSettings.perPage,\n country: this.countryName\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n this.addVenuesCount(resp.count);\n this.slidersData.museums = resp.list.$values;\n }\n\n private async getSliderCities() {\n const params: GetVenuesRequest = {\n take: this.slidersSettings.perPage,\n country: this.countryName,\n type: VizguType.City\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n this.slidersData.cities = resp.list.$values;\n }\n\n private async getSliderExhibitions() {\n const params: GetExhibitionsRequest = {\n skip: 0,\n take: this.slidersSettings.perPage,\n country: this.countryName\n };\n const resp: GetExhibitionsResponse = await exhibitionsApi.getExhibitions(\n params\n );\n this.addVenuesCount(resp.count);\n this.slidersData.popularExhibitions = resp.list.$values;\n }\n\n private async getSliderWayfinders() {\n const params: GetWayfindersRequest = {\n skip: 0,\n take: this.slidersSettings.perPage,\n country: this.countryName\n };\n const resp: GetWayfindersResponse = await wayfindersApi.getWayfinders(\n params\n );\n this.slidersData.wayfinders = resp.list.$values;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Country.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Country.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Country.vue?vue&type=template&id=0b147363&\"\nimport script from \"./Country.vue?vue&type=script&lang=ts&\"\nexport * from \"./Country.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VDivider,VIcon,VTab,VTabs})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"md:hidden flex justify-center items-center\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"share\")]),_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")])],1),(_vm.cityVenue)?_c('div',{staticClass:\"relative\"},[(_vm.cityVenue)?_c('GUIDImage',{attrs:{\"image-uid\":_vm.bannerImgSrc,\"height\":450,\"rounded\":false}}):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"bg-dark absolute flex flex-row items-center top-0 z-1 text-white py-2 px-4\"},[_c('v-icon',{staticClass:\"text-white mr-1\",attrs:{\"small\":\"\",\"color\":\"white\"}},[_vm._v(\"place-location\")]),_c('div',{staticClass:\"text-s\"},[_vm._v(_vm._s(_vm.countryName))])],1),_c('div',{staticClass:\"text-white absolute bottom-14 z-1 flex flex-col space-y-2 align-start\"},[_c('h2',{staticClass:\"text-4xl\"},[_vm._v(\" \"+_vm._s(_vm.cityName)+\" \")]),_c('div',{staticClass:\"bg-dark py-2 px-4 whitespace-nowrap\"},[_vm._v(\" 45 \"+_vm._s(_vm.$t(\"venues & activities\"))+\" \")])])])],1):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"md:grid grid-cols-3 justify-items-center py-5 md:py-10\"},[_c('div',{staticClass:\"col-start-2\"},[_c('v-tabs',{staticClass:\"flex flex-col-reverse w-min navigation-tabs overflow-hidden\",attrs:{\"background-color\":\"transparent\"}},_vm._l((_vm.tabItems),function(tab){return _c('v-tab',{key:tab.title,staticClass:\"w-min normal-case\",on:{\"click\":function($event){return _vm.$vuetify.goTo(tab.route, null)}}},[_vm._v(\" \"+_vm._s(tab.title)+\" \")])}),1)],1),_c('div',{staticClass:\"hidden md:flex md:flex-row ml-auto\"},[_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"},on:{\"click\":_vm.shareLink}},[_vm._v(\"share\")]),(_vm.likeFeature)?_c('v-icon',{staticClass:\"m-4 text-primary\",attrs:{\"size\":\"20\"}},[_vm._v(\"heart\")]):_vm._e()],1)])]),(_vm.hSections.first)?_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.first}}):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('div',{staticClass:\"flex flex-col pb-4 w-full md:mt-6\",attrs:{\"id\":\"about\"}},[_c('div',[_c('h3',{staticClass:\"py-4\"},[_vm._v(_vm._s(_vm.$t(\"About\")))]),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.description)}})])]),_c('v-divider',{staticClass:\"md:mx-16 my-6\"})],1),_c('div',{staticClass:\"pt-4\",attrs:{\"id\":\"venues\"}}),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.museumsData,\"title\":_vm.$t('Venues') + ' in Kolding',\"item-width\":_vm.museumCardWidth,\"card-top-icon\":\"venue\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" Open today 10:00 - 18:00 \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Kolding \")]}}])}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1),_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.exhibitionsData,\"title\":_vm.$t('Top Exhibitions') + ' in Kolding',\"item-width\":_vm.exhibitionCardWidth,\"card-top-icon\":\"exhibition\",\"useLocation\":false},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 24 Sep 2020 - 24 Jan 2021 \")]}}])}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1),(_vm.hSections.second)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.second}})],1):_vm._e(),(_vm.eventsData.length > 0)?_c('ItemSlideGroup',{attrs:{\"id\":\"events\",\"data-list\":_vm.eventsData,\"title\":_vm.$t('Events') + ' in Kolding',\"item-width\":_vm.eventCardWidth,\"card-top-icon\":\"event\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 6 Jan 2022 \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Copenhagen \")]}}],null,false,3071091283)}):_vm._e(),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1),_c('div',{staticClass:\"inner-container\"},[_c('div',{attrs:{\"id\":\"media\"}},[_c('div',{staticClass:\"flex flex-col md:flex-row items-center py-8\"},[_vm._m(0),_c('div',{staticClass:\"w-full md:w-2/3\"},[_c('VideoCard',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Founder To Be Named speaks on the exhibitions Jesper Just: Circuits (Interpassivities) \")]},proxy:true}])})],1)])]),_c('v-divider',{staticClass:\"md:mx-16 my-4\"})],1),(_vm.artistsData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.artistsData,\"title\":_vm.$t('Artists') + ' from Kolding',\"item-width\":_vm.artistCardWidth,\"card-top-icon\":\"artist\"},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 24 artworks \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" From Denmark \")]}}],null,false,2459421999)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e(),(_vm.hSections.third)?_c('div',{staticClass:\"my-16\"},[_c('HighlightedSection',{attrs:{\"data\":_vm.hSections.third}})],1):_vm._e(),(_vm.wayfindersData.length > 0)?_c('div',[_c('ItemSlideGroup',{attrs:{\"id\":\"wayfinders\",\"data-list\":_vm.wayfindersData,\"title\":_vm.$t('Wayfinders') + ' in Kolding',\"item-width\":_vm.wayfinderCardWidth,\"card-top-icon\":\"wayfinder\",\"iconSize\":15},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return [_vm._v(\" 6 hrss 30 mins \")]}},{key:\"location\",fn:function(ref){return [_vm._v(\" Kolding \")]}}],null,false,796812458)}),_c('div',{staticClass:\"inner-container\"},[_c('v-divider',{staticClass:\"md:mx-16 my-12 inner-container\"})],1)],1):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-full md:w-1/3 md:pr-10 md:text-left text-center\"},[_c('h2',[_vm._v(\"Learn about the newest Museum in Kolding!\")]),_c('div',{staticClass:\"py-5\"},[_vm._v(\" In this video the CEO and founder explains the vision behind ARoS, and how it manages to bring a lot of cool art to life! \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {BaseDataV2, ExhibitionV2, VenueV2, WayfinderV2} from \"@/types/vizgu\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport VideoCard from \"@/components/VideoCard.vue\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport HighlightedSection, {\n HighlightedSectionData\n} from \"@/components/HighlightedSection.vue\";\nimport venuesApi from \"@/api/venues\";\nimport {embeddedStore} from \"@/store\";\nimport {\n GetExhibitionsRequest,\n GetExhibitionsResponse,\n GetVenuesRequest,\n GetVenuesResponse,\n GetWayfindersRequest,\n GetWayfindersResponse\n} from \"@/types/api\";\nimport exhibitionsApi from \"@/api/exhibitions\";\nimport wayfindersApi from \"@/api/wayfinders\";\nimport {\n exhibitionHighlightedData,\n venueHighlightedData,\n wayfinderHighlightedData\n} from \"@/utils/highlighted-section\";\nimport {copyCurrentRouteClipboard} from \"@/utils/clipboard\";\nimport {EventKeys} from \"@/store/modules/embedded\";\nimport {parseBaseContentText} from \"@/utils/data\";\nimport {TranslateResult} from \"vue-i18n\";\n\nexport interface TabItem {\n title: string | TranslateResult;\n route: string;\n}\n\n@Component({\n components: {HighlightedSection, VideoCard, ItemSlideGroup, GUIDImage}\n})\nexport default class City extends Vue {\n likeFeature = false;\n smallCardWidth = 220;\n wideCardWidth = 364;\n museumCardWidth = this.smallCardWidth;\n exhibitionCardWidth = this.wideCardWidth;\n eventCardWidth = this.wideCardWidth;\n cityCardWidth = this.smallCardWidth;\n artistCardWidth = this.smallCardWidth;\n wayfinderCardWidth = this.smallCardWidth;\n\n cityVenue: VenueV2 | null = null;\n\n initialDataLoaded = false;\n slidersSettings = {\n perPage: 20\n };\n\n slidersData = {\n venues: [] as BaseDataV2[],\n topExhibitions: [] as BaseDataV2[],\n events: [] as BaseDataV2[],\n artists: [] as BaseDataV2[],\n wayfinders: [] as BaseDataV2[]\n };\n\n @Watch(\"$route.params.id\")\n onIdChange() {\n window.scrollTo(0, 0);\n this.loadApiData();\n }\n\n shareLink() {\n copyCurrentRouteClipboard(this.$route);\n }\n\n get hSections() {\n return {\n first: this.firstHighlightedSection,\n second: this.secondHighlightedSection,\n third: this.thirdHighlightedSection\n };\n }\n\n get firstHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.museumsData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n content: venueHighlightedData(v as VenueV2)\n });\n }\n\n get secondHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.exhibitionsData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"New!\",\n content: exhibitionHighlightedData(v as ExhibitionV2)\n });\n }\n\n get thirdHighlightedSection(): HighlightedSectionData | undefined {\n const v = this.wayfindersData?.[0];\n if (!v) {\n return undefined;\n }\n return new HighlightedSectionData({\n imageSrc: v.imageGuids.$values[0],\n imageTooltipText: \"Popular!\",\n content: wayfinderHighlightedData(v as WayfinderV2)\n });\n }\n\n get countryName(): string {\n return this.cityVenue?.country || \"\";\n }\n\n get cityName(): string {\n return this.cityVenue?.city || \"\";\n }\n\n get tabItems(): TabItem[] {\n return [\n {\n title: this.$t(\"About\"),\n route: \"#about\"\n },\n {\n title: this.$t(\"Venues\"),\n route: \"#venues\"\n },\n {\n title: this.$t(\"Events\"),\n route: \"#events\"\n },\n {\n title: this.$t(\"Wayfinders\"),\n route: \"#wayfinders\"\n }\n ];\n }\n\n get bannerImgSrc() {\n return this.cityVenue?.imageGuids.$values[0] || \"\";\n }\n\n get museumsData(): BaseDataV2[] {\n return this.slidersData.venues;\n // return getSampleBaseDataList();\n }\n get exhibitionsData(): BaseDataV2[] {\n return this.slidersData.topExhibitions;\n // return getSampleBaseDataList();\n }\n get eventsData(): BaseDataV2[] {\n return this.slidersData.events;\n // return getSampleBaseDataList();\n }\n get artistsData(): BaseDataV2[] {\n return this.slidersData.artists;\n // return getSampleBaseDataList();\n }\n get wayfindersData(): BaseDataV2[] {\n return this.slidersData.wayfinders;\n // return getSampleBaseDataList();\n }\n\n get description(): string {\n return this.cityVenue ? parseBaseContentText(this.cityVenue) : \"\";\n }\n\n initListeners(enable: boolean) {\n if (enable) {\n window.addEventListener(EventKeys.locale, this.onLocaleEvent);\n } else {\n window.removeEventListener(EventKeys.locale, this.onLocaleEvent);\n }\n }\n\n onLocaleEvent() {\n this.loadApiData();\n }\n\n async created() {\n this.initListeners(true);\n await this.loadApiData();\n }\n\n beforeDestroy() {\n this.initListeners(false);\n }\n\n async loadApiData() {\n embeddedStore.setCurrentVenueLoading(true);\n embeddedStore.setCurrentVenue(null);\n const id: string = this.$route.params.id;\n await this.requestVenue(id);\n }\n\n private async requestVenue(id: string) {\n const resp: VenueV2 = await venuesApi.getVenue(id);\n this.cityVenue = resp;\n embeddedStore.setCurrentVenue(resp);\n embeddedStore.setCurrentVenueLoading(false);\n this.requestSlidersData();\n }\n\n private async requestSlidersData() {\n this.getSliderMuseums();\n this.getSliderExhibitions();\n this.getSliderWayfinders();\n }\n\n private async getSliderMuseums() {\n const params: GetVenuesRequest = {\n take: this.slidersSettings.perPage,\n city: this.cityName\n };\n const resp: GetVenuesResponse = await venuesApi.getVenues(params);\n this.slidersData.venues = resp.list.$values;\n }\n\n private async getSliderExhibitions() {\n const params: GetExhibitionsRequest = {\n skip: 0,\n take: this.slidersSettings.perPage,\n city: this.cityName\n };\n const resp: GetExhibitionsResponse = await exhibitionsApi.getExhibitions(\n params\n );\n this.slidersData.topExhibitions = resp.list.$values;\n }\n\n private async getSliderWayfinders() {\n const params: GetWayfindersRequest = {\n skip: 0,\n take: this.slidersSettings.perPage,\n city: this.cityName\n };\n const resp: GetWayfindersResponse = await wayfindersApi.getWayfinders(\n params\n );\n this.slidersData.wayfinders = resp.list.$values;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./City.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./City.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./City.vue?vue&type=template&id=0678de94&\"\nimport script from \"./City.vue?vue&type=script&lang=ts&\"\nexport * from \"./City.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\ninstallComponents(component, {VDivider,VIcon,VTab,VTabs})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"min-h-screen mt-4 md:mt-8\"},[_c('div',{staticClass:\"inner-container\"},[_c('h2',{staticClass:\"text-md md:text-3xl\"},[_vm._v(\" Search results for \\\"\"+_vm._s(_vm.inputSearch)+\"\\\" \")])]),_c('div',{staticClass:\"mt-10\"},[_c('ListItems',{attrs:{\"data-list\":_vm.resultsList,\"item-width\":_vm.itemWidth},on:{\"onItemHref\":function (item) { return _vm.goHrefItemPage(item); }},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(ref){return undefined}},{key:\"location\",fn:function(ref){return undefined}}])})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport ListItems from \"@/components/ListItemsV2.vue\";\nimport {GetGeneralDataTitleSearch} from \"@/types/api\";\nimport {BaseDataV2} from \"@/types/vizgu\";\nimport searchApi from \"@/api/search\";\nimport {getItemHrefFromBaseData} from \"@/utils/routing\";\n\n@Component({\n components: {ListItems}\n})\nexport default class Search extends Vue {\n itemWidth = 200;\n isLoadingData = false;\n inputSearch = \"\";\n resultsList: BaseDataV2[] = [];\n\n goHrefItemPage(item: BaseDataV2) {\n const link = getItemHrefFromBaseData(item);\n this.$router.push(link);\n }\n\n // lifecycle methods\n created() {\n this.inputSearch = this.$route.query.q.toString() || \"\";\n if (this.inputSearch.trim().length > 0) {\n this.requestDataTitleSearch();\n }\n }\n // data load methods\n async requestDataTitleSearch() {\n try {\n this.isLoadingData = true;\n const resp: GetGeneralDataTitleSearch = await searchApi.generalDataTitleSearch(\n this.inputSearch\n );\n this.resultsList = resp.$values;\n } catch (e) {\n // TODO handle error\n } finally {\n this.isLoadingData = false;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Search.vue?vue&type=template&id=a2b4ea04&\"\nimport script from \"./Search.vue?vue&type=script&lang=ts&\"\nexport * from \"./Search.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('BasePageBanner',{attrs:{\"data\":_vm.baseBannerData}}),_c('div',[(false)?_c('div',{staticClass:\"mt-16\"},[(_vm.eventsVenues.length > 0)?_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.eventsVenues,\"title\":_vm.$t('Tickets to venues'),\"item-width\":320,\"card-top-icon\":\"place-location\",\"viewAllHref\":'/tickets',\"useVizguTypeRouting\":false},on:{\"onItemHref\":function (item) {}}}):_vm._e()],1):_vm._e(),(false)?_c('div',{staticClass:\"mt-16\"},[(_vm.eventsTicketsList.length > 0)?_c('ItemSlideGroup',{attrs:{\"data-list\":_vm.eventsTicketsList,\"title\":_vm.$t('Tickets to events'),\"item-width\":320,\"card-top-icon\":\"place-location\",\"viewAllHref\":'/tickets',\"imageSrcHandler\":function (e) { return e.mainImage; },\"useVizguTypeRouting\":false},on:{\"onItemHref\":function (item) {\n _vm.goEventPage(item);\n }},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\n var element = ref.element;\nreturn [_vm._v(_vm._s(element.name))]}}],null,false,125261171)}):_vm._e()],1):_vm._e()]),_c('div',{staticClass:\"mt-16\"},[_c('ListItems',{key:\"1\",attrs:{\"loading\":_vm.loading.initial,\"data-list\":_vm.eventsTicketsList,\"title\":_vm.$t('Countries'),\"item-width\":_vm.itemWidth,\"card-top-icon\":\"place-location\",\"imageSrcHandler\":function (e) { return e.mainImage; },\"imageAPI\":_vm.eventImageAPI,\"useVizguTypeRouting\":false},on:{\"onItemHref\":function (item) {\n _vm.goEventPage(item);\n }},scopedSlots:_vm._u([{key:\"title\",fn:function(ref){\n var element = ref.element;\nreturn [_vm._v(_vm._s(element.name))]}}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport BasePageBanner, {\n BasePageBannerData\n} from \"@/components/BasePageBanner.vue\";\nimport ItemSlideGroup from \"@/components/ItemSlideGroupV2.vue\";\nimport eventsApi from \"@/api.newviz/events\";\nimport {EventsResult, GetEventsRequest} from \"@/types/api.newviz/events\";\nimport {GetVenuesResponse} from \"@/types/api\";\nimport venuesApi from \"@/api/venues\";\nimport {VenueV2} from \"@/types/vizgu\";\nimport {cartStore, embeddedStore} from \"@/store\";\nimport {VEvent} from \"@/models/events\";\nimport ListItems from \"@/components/ListItemsV2.vue\";\nimport {ImageAPI} from \"@/utils/image-utils\";\n\n@Component({\n components: {ItemSlideGroup, BasePageBanner, GUIDImage, ListItems}\n})\nexport default class Tickets extends Vue {\n eventImageAPI = ImageAPI.NewViz;\n itemWidth = 200;\n loading = {\n initial: false,\n events: false\n };\n eventsTicketsList: VEvent[] = [];\n eventsVenues: VenueV2[] = [];\n get baseBannerData(): BasePageBannerData {\n return {\n imgUid: \"d2c04f18-0490-4419-9f4b-622a90fd59d6\",\n icon: \"ticket-white\",\n title: this.$t(\"Tickets\"),\n subtitle: this.$t(\n \"Find and buy tickets to interesting venues & exciting events all around the world!\"\n )\n };\n }\n\n get isLoading() {\n return this.loading.initial;\n }\n\n goEventPage(v: VEvent) {\n embeddedStore.setCurrentEvent(v); // TODO remove once get event by id api available\n this.$router.push(`/events/${v.eventId}`);\n }\n\n venueForEvent(e: VEvent): VenueV2 | undefined {\n const matched = this.eventsVenues.find(v =>\n e.generalInfo?.venues.includes(v.id)\n );\n if (!matched) {\n return undefined;\n }\n return matched;\n }\n\n venueImage(v?: VenueV2) {\n if (!v) {\n return \"d2c04f18-0490-4419-9f4b-622a90fd59d6\";\n }\n return v.imageGuids.$values[0];\n }\n\n created() {\n this.loadInitialData();\n }\n\n // data load methods\n private async loadInitialData() {\n this.loading.initial = true;\n await this.requestEvents();\n // await this.requestEventsVenues();\n this.loading.initial = false;\n }\n\n private async requestEvents() {\n // TODO cleanup & finalize\n const params: GetEventsRequest = {\n query: {\n buyCurrency: cartStore.currentCurrency\n }\n };\n const resp: EventsResult = await eventsApi.getEvents(params);\n this.eventsTicketsList = resp.map(v => new VEvent(v));\n }\n\n private async requestEventsVenues() {\n // TODO cleanup & finalize\n const venueIds: string[] = [];\n this.eventsTicketsList.forEach(\n e =>\n e.generalInfo &&\n !venueIds.includes(e.generalInfo.venues[0]) &&\n venueIds.push(e.generalInfo.venues[0])\n /*\n e.generalInfo.venues.forEach(id => {\n !venueIds.includes(id) && venueIds.push(id);\n })\n */\n );\n if (venueIds.length == 0) {\n return;\n }\n const params = {venueIds: venueIds};\n const resp: GetVenuesResponse = await venuesApi.getVenuesByIds(params);\n this.eventsVenues = resp.list.$values;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tickets.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tickets.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tickets.vue?vue&type=template&id=6ac40f3b&\"\nimport script from \"./Tickets.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tickets.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inner-container\"},[_c('div',[_c('div',{staticClass:\"text-dark text-2xl md:text-4xl font-bold mt-5\",style:(_vm.styles.title)},[_vm._v(\" \"+_vm._s(_vm.$t(\"SHOPPING CART\"))+\" \")]),_c('v-divider',{staticClass:\"bg-dark my-2 border-2 rounded-2xl\"})],1),(!_vm.cart || _vm.cart.items.length == 0)?_c('EmptyCart'):_c('div',{},[_c('div',{staticClass:\"md:flex md:gap-8\"},[_c('div',{staticClass:\"md:flex-grow\"},[_c('div',{staticClass:\"bg-gray3 tracking-wider p-4 mt-6\",domProps:{\"innerHTML\":_vm._s(_vm.cartRemainTimeLabel)}}),_c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"text-lg font-medium tracking-widest\"},[_vm._v(\" \"+_vm._s(_vm.reviewOrderLabel)+\" \")])]),_c('div',{staticClass:\"mt-5\"},_vm._l((_vm.cart.items),function(item,i){return _c('CartItem',{key:i,attrs:{\"item\":item,\"isLoading\":_vm.isLoading},on:{\"onRemove\":function($event){return _vm.removeCartItem(item)}}})}),1),_c('div',{staticClass:\"border-solid border border-gray3 p-4 mt-6 hidden md:block\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"We accept\"))+\" \")]),_c('div',{staticClass:\"flex gap-3 items-center mt-2\"},_vm._l((_vm.payments),function(payment,i){return _c('div',{key:i},[_c('img',{attrs:{\"src\":payment.icon}})])}),0)]),(false)?_c('v-expansion-panels',{staticClass:\"block mt-8\",attrs:{\"accordion\":\"\"}},[_c('v-expansion-panel',{staticClass:\"border-solid border border-gray3 no-shadow px-4\"},[_c('v-expansion-panel-header',{staticClass:\"pt-0 pb-0 px-0 min-h-0 border-none\",attrs:{\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar open = ref.open;\nreturn [_c('div',{staticClass:\"flex gap-6 items-center justify-between py-3\"},[_c('div',{staticClass:\"flex gap-2 w-full\"},[_c('div',{staticClass:\"font-normal tracking-wider\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Add coupon?\"))+\" \")]),_c('div',{staticClass:\"text-graytext\"},[_vm._v(\"(\"+_vm._s(_vm.$t(\"Optional\"))+\")\")])]),_c('v-icon',{class:{\n 'rotate-180 transform': open,\n 'w-6 h-8 text-black': true\n }},[_vm._v(\"menu-down\")])],1)]}}],null,false,3117550093)}),_c('v-expansion-panel-content',{staticClass:\"py-3\"},[_c('div',{},[_c('div',{staticClass:\"tracking-wider font-normal\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Type coupon here\"))+\" \")]),_c('div',{staticClass:\"flex gap-2 mt-3\"},[_c('v-text-field',{staticClass:\"bg-white\",attrs:{\"solo\":\"\",\"flat\":\"\",\"required\":\"\",\"id\":\"coupon-input\"},model:{value:(_vm.coupon),callback:function ($$v) {_vm.coupon=$$v},expression:\"coupon\"}}),_c('v-btn',{staticClass:\"bg-dark text-white\",attrs:{\"height\":\"48px\",\"disabled\":!_vm.coupon,\"flat\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Redeem\"))+\" \")])],1)])])],1)],1):_vm._e()],1),_c('div',{staticClass:\"border-solid border border-gray3 px-4 py-7 mt-6 bg-white\"},[_c('div',{staticClass:\"text-xl font-semibold tracking-widest\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"SUMMARY\"))+\" \")]),_c('div',{staticClass:\"mt-3\"},[_vm._l((_vm.cart.allEventItems),function(item,i){return _c('div',{key:i,staticClass:\"flex gap-1 justify-between w-auto text-sm\"},[_c('span',{staticClass:\"text-graytext\"},[_vm._v(_vm._s(item.name)+\" x \"+_vm._s(item.quantity))]),_c('span',{},[_vm._v(_vm._s(item.totalPrice)+\" \"+_vm._s(_vm.ticketsCurrency))])])}),_c('v-divider',{staticClass:\"my-4\"}),_c('div',{staticClass:\"flex gap-2 justify-between font-medium\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"Total (inkl. moms)\"))+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.cartTotalAmount)+\" \")])])],2),_c('div',{staticClass:\"mt-7\"},[_c('v-btn',{staticClass:\"w-full bg-dark text-white rounded-none\",attrs:{\"loading\":_vm.isLoading,\"x-large\":\"\"},on:{\"click\":function($event){return _vm.goCheckoutClick()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Checkout\"))+\" \")]),_c('v-btn',{staticClass:\"w-full rounded-none bg-white border-solid border border-dark mt-3\",attrs:{\"loading\":_vm.isLoading,\"x-large\":\"\"},on:{\"click\":function($event){return _vm.continueShoppingClick()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Continue shopping\"))+\" \")])],1)])]),_c('div',{staticClass:\"border-solid border border-gray3 p-4 mt-6 md:hidden\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"We accept\"))+\" \")]),_c('div',{staticClass:\"flex gap-3 items-center mt-2\"},_vm._l((_vm.payments),function(payment,i){return _c('div',{key:i},[_c('img',{attrs:{\"src\":payment.icon}})])}),0)])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"bg-gray3 px-5 md:px-20 py-10 md:py-12\"},[_c('div',{staticClass:\"flex gap-6 md:gap-12 items-center\"},[_c('div',{staticClass:\"bg-white rounded-full w-24 h-24 md:w-56 md:h-56 relative flex-shrink-0\"},[_c('v-icon',{staticClass:\"text-primary absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2\",attrs:{\"size\":_vm.styles.icon.sizeIcon}},[_vm._v(\"cart\")])],1),_c('div',{staticClass:\"tracking-widest\"},[_c('div',{staticClass:\"text-2xl font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Your cart is empty.\"))+\" \")]),_c('div',{staticClass:\"text-md font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Check out some of our cool events or venues and book tickets!\"))+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {isMobile} from \"@/utils/dom\";\nimport {Component, Vue} from \"vue-property-decorator\";\n@Component({components: {}})\nexport default class EmptyCart extends Vue {\n get styles() {\n return {\n icon: {\n sizeIcon: isMobile() ? \"50\" : \"120\"\n }\n };\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyCart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmptyCart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmptyCart.vue?vue&type=template&id=1054b630&\"\nimport script from \"./EmptyCart.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmptyCart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{},[_c('div',{staticClass:\"border border-solid border-1 border-gray2 flex gap-2 relative\"},[_c('GUIDImage',{staticClass:\"w-max\",attrs:{\"image-uid\":\"e17fb04a-e32f-4041-92f1-abf608dbb73c\",\"height\":\"118\",\"width\":\"103\",\"rounded\":false}}),_c('div',{staticClass:\"p-3\"},[_c('v-btn',{staticClass:\"hidden md:block absolute top-0 right-0\",attrs:{\"text\":\"\",\"disabled\":_vm.isLoading},on:{\"click\":function($event){return _vm.removeFromCart()}}},[_vm._v(\" delete \")]),_c('div',{staticClass:\"absolute top-0 right-0 md:hidden\"},[_c('v-menu',{staticClass:\"m-auto\",attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._g(_vm._b({attrs:{\"text\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"dots\")])],1)]}}])},[_c('v-list',_vm._l((1),function(item,i){return _c('v-list-item',{key:i},[_c('v-list-item-title',[_vm._v(\"Delete\")])],1)}),1)],1)],1),_c('div',{staticClass:\"text-base font-medium\"},[_vm._v(\" \"+_vm._s(_vm.eventName)+\" \")]),_c('div',{staticClass:\"text-sm font-normal mt-1\"},[_vm._v(\" \"+_vm._s(_vm.item.dateLabel)+\" \")]),(false)?_c('div',{staticClass:\"mt-2\"},_vm._l((_vm.tickets.filter(function (v) { return v.count > 0; })),function(ticket,i){return _c('div',{key:i,staticClass:\"flex gap-1 justify-between w-auto text-sm\"},[_c('span',[_vm._v(_vm._s(ticket.name)+\" x \"+_vm._s(ticket.count))]),_c('span',{},[_vm._v(_vm._s(ticket.PriceWithCount())+\" \"+_vm._s(_vm.ticketsCurrency))])])}),0):_vm._e()],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {VCartItem} from \"@/models/cart\";\n@Component({components: {GUIDImage}})\nexport default class CartItem extends Vue {\n @Prop({required: true}) item!: VCartItem;\n @Prop({required: false, default: false}) isLoading!: boolean;\n\n get eventName() {\n return this.item.event.name;\n }\n\n removeFromCart() {\n this.$emit(\"onRemove\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CartItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CartItem.vue?vue&type=template&id=ba79cc78&\"\nimport script from \"./CartItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./CartItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemTitle,VMenu})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport EmptyCart from \"@/components/EmptyCart.vue\";\nimport {VTicket} from \"@/models/ticket\";\nimport {cartStore, embeddedStore} from \"@/store\";\nimport {VCart, VCartItem} from \"@/models/cart\";\nimport CartItem from \"@/components/CartItem.vue\";\n@Component({components: {GUIDImage, EmptyCart, CartItem}})\nexport default class Cart extends Vue {\n placeholderImageUid = \"e17fb04a-e32f-4041-92f1-abf608dbb73c\";\n coupon = \"\";\n\n loading = {\n global: false\n };\n\n get ticketsCurrency() {\n return cartStore.currentCurrency;\n }\n\n setGlobalLoading() {\n this.loading.global = true;\n }\n\n unsetGlobalLoading() {\n this.loading.global = false;\n }\n\n get isLoading() {\n return this.loading.global;\n }\n\n get timeNow(): Date {\n return embeddedStore.timeNow;\n }\n\n get cart(): VCart | null {\n return cartStore.cart;\n }\n\n async removeCartItem(item: VCartItem) {\n this.setGlobalLoading();\n try {\n await this.cart?.removeItem(item.id);\n } catch (e) {\n cartStore.setCurrentCart(null);\n } finally {\n this.unsetGlobalLoading();\n }\n }\n\n // TODO\n tickets: VTicket[] = [];\n\n get styles() {\n return {\n title: {\n letterSpacing: \"0.3rem\"\n }\n };\n }\n\n get labels() {\n return {\n holdTime: this.$t(\"We’ll hold your ticket spot for\"),\n reviewOrder: this.$t(\"Review your order\"),\n product: this.$t(\"Product\")\n .toString()\n .toLowerCase(),\n adults: \"Adults\",\n child: \"Child\",\n senior: \"Senior\"\n };\n }\n\n get cartRemainTimeLabel() {\n const timeLeftLabel = this.cart?.timeLeftLabel || \"\";\n return `${this.labels.holdTime} - ${timeLeftLabel} minutes`;\n }\n\n get reviewOrderLabel() {\n const count = this.cart?.items.length || 0;\n return `${this.labels.reviewOrder} (${count} ${this.labels.product})`;\n }\n\n paymentImagePath(name: string) {\n const path = `@/assets/images/payments/${name}`;\n return require(path);\n }\n get payments() {\n return [\n {icon: require(\"@/assets/images/payments/visa.png\")},\n {icon: require(\"@/assets/images/payments/master-1.png\")},\n {icon: require(\"@/assets/images/payments/master-2.png\")},\n {icon: require(\"@/assets/images/payments/nets.png\")},\n {icon: require(\"@/assets/images/payments/dk.png\")},\n {icon: require(\"@/assets/images/payments/mobile-pay.png\")}\n ];\n }\n\n // TODO\n get cartTotalAmount() {\n const price = this.cart?.totalPrice.gross || 0;\n return `${price} ${this.ticketsCurrency}`;\n }\n\n continueShoppingClick() {\n // TODO checks here\n this.$router.push(\"/tickets\");\n }\n\n goCheckoutClick() {\n // TODO checks here\n this.$router.push(\"/checkout\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Cart.vue?vue&type=template&id=70a3f360&\"\nimport script from \"./Cart.vue?vue&type=script&lang=ts&\"\nexport * from \"./Cart.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inner-container\"},[_c('div',[_c('div',{staticClass:\"text-dark text-2xl md:text-4xl font-bold mt-5\",style:(_vm.styles.title)},[_vm._v(\" \"+_vm._s(_vm.$t(\"CHECKOUT\"))+\" \")]),_c('v-divider',{staticClass:\"bg-dark my-2 border-2 rounded-2xl\"})],1),_c('div',{staticClass:\"md:flex md:gap-8 mt-6\"},[_c('div',{staticClass:\"md:flex-grow\"},[_c('div',{staticClass:\"flex gap-6 flex-wrap\"},_vm._l((_vm.stages),function(stage,i){return _c('div',{key:i,staticClass:\"flex items-center gap-2 flex-grow-0\"},[_c('div',{class:[\n 'w-7 h-7 flex relative justify-center items-center flex-grow-0 rounded-full',\n stage.isCurrent ? 'bg-dark' : 'bg-gray4'\n ]},[(stage.isChecked)?_c('v-icon',{attrs:{\"x-small\":\"\"}},[_vm._v(\"checkmark-white\")]):_vm._e(),(!stage.isChecked)?_c('span',{staticClass:\"text-white\"},[_vm._v(_vm._s(i + 1))]):_vm._e()],1),_c('div',{class:[\n 'font-medium tracking-wider',\n stage.isCurrent ? 'text-black' : 'text-gray4'\n ]},[_vm._v(\" \"+_vm._s(stage.label)+\" \")])])}),0),_c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"text-lg font-medium tracking-widest\"},[_vm._v(\" \"+_vm._s(_vm.labels.yourInfo)+\" \")]),_c('div',{staticClass:\"mt-6 \"},[_c('div',{},[_c('div',{staticClass:\"tracking-wide font-normal\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Choose category\"))+\" \")]),_c('v-select',{staticClass:\"pt-1\",attrs:{\"placeholder\":_vm.labels.selectCategory,\"items\":_vm.categoryItems,\"disabled\":_vm.isLoading,\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.formData.category),callback:function ($$v) {_vm.$set(_vm.formData, \"category\", $$v)},expression:\"formData.category\"}})],1),_c('div',{staticClass:\"mt-4 flex gap-2 flex-1 md:flex-row flex-col\"},[_c('div',{staticClass:\"md:w-1/2\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"First name\"))+\" \")]),_c('v-text-field',{attrs:{\"disabled\":_vm.isLoading,\"flat\":\"\",\"placeholder\":_vm.$t('First name'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true},model:{value:(_vm.formData.firstName),callback:function ($$v) {_vm.$set(_vm.formData, \"firstName\", $$v)},expression:\"formData.firstName\"}})],1),_c('div',{staticClass:\"md:w-1/2\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Last name\"))+\" \")]),_c('v-text-field',{attrs:{\"disabled\":_vm.isLoading,\"flat\":\"\",\"placeholder\":_vm.$t('Last name'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true},model:{value:(_vm.formData.lastName),callback:function ($$v) {_vm.$set(_vm.formData, \"lastName\", $$v)},expression:\"formData.lastName\"}})],1)]),_c('div',{staticClass:\"flex flex-col md:flex-row gap-2 flex-1\"},[_c('div',{staticClass:\"flex-1 w-2/3\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Phone number\"))+\" \")]),_c('div',{staticClass:\"flex gap-2\"},[_c('v-select',{staticClass:\"pt-0 w-16\",attrs:{\"placeholder\":'',\"items\":_vm.countryItemsPhoneCode,\"outlined\":\"\",\"dense\":\"\",\"disabled\":_vm.isLoading},scopedSlots:_vm._u([{key:\"selection\",fn:function(ref){\n var item = ref.item;\nreturn [_c('div',{staticClass:\"flex gap-2 items-center\"},[_c('Icon',{attrs:{\"icon\":item.icon}}),_c('div',[_vm._v(_vm._s(item.phoneCode))])],1)]}},{key:\"item\",fn:function(ref){\n var item = ref.item;\nreturn [_c('div',{staticClass:\"flex gap-2 items-center\"},[_c('Icon',{attrs:{\"icon\":item.icon}}),_c('div',[_vm._v(_vm._s(item.phoneCode))])],1)]}}]),model:{value:(_vm.formData.phoneCode),callback:function ($$v) {_vm.$set(_vm.formData, \"phoneCode\", $$v)},expression:\"formData.phoneCode\"}}),_c('v-text-field',{attrs:{\"flat\":\"\",\"placeholder\":_vm.$t('Insert phone'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.phoneNumber),callback:function ($$v) {_vm.$set(_vm.formData, \"phoneNumber\", $$v)},expression:\"formData.phoneNumber\"}})],1)])]),_c('div',{staticClass:\"mt-4 flex-col md:flex-row flex gap-2 flex-1\"},[_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Address\"))+\" \")]),_c('v-text-field',{attrs:{\"flat\":\"\",\"placeholder\":_vm.$t('Insert address'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.address),callback:function ($$v) {_vm.$set(_vm.formData, \"address\", $$v)},expression:\"formData.address\"}})],1),_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Email\"))+\" \")]),_c('v-text-field',{attrs:{\"flat\":\"\",\"placeholder\":_vm.$t('Insert email'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.email),callback:function ($$v) {_vm.$set(_vm.formData, \"email\", $$v)},expression:\"formData.email\"}})],1)]),_c('div',{staticClass:\"mt-4 flex gap-2 flex-1 md:flex-row flex-col\"},[_c('div',{staticClass:\"flex-1 flex gap-2\"},[_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Postal code\"))+\" \")]),_c('v-text-field',{attrs:{\"flat\":\"\",\"placeholder\":_vm.$t('postal code'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.postalCode),callback:function ($$v) {_vm.$set(_vm.formData, \"postalCode\", $$v)},expression:\"formData.postalCode\"}})],1),_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"City\"))+\" \")]),_c('v-text-field',{attrs:{\"flat\":\"\",\"placeholder\":_vm.$t('Insert city'),\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.city),callback:function ($$v) {_vm.$set(_vm.formData, \"city\", $$v)},expression:\"formData.city\"}})],1)]),_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Country\"))+\" \")])]),_c('v-select',{staticClass:\"pt-0\",attrs:{\"placeholder\":_vm.labels.selectCountry,\"items\":_vm.countryItemsLabels,\"outlined\":\"\",\"dense\":\"\",\"disabled\":_vm.isLoading},model:{value:(_vm.formData.country),callback:function ($$v) {_vm.$set(_vm.formData, \"country\", $$v)},expression:\"formData.country\"}})],1)]),_c('div',{staticClass:\"flex-1\"},[_c('div',{staticClass:\"tracking-wide font-normal mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Comment (optional)\"))+\" \")]),_c('v-textarea',{attrs:{\"flat\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":true,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.comment),callback:function ($$v) {_vm.$set(_vm.formData, \"comment\", $$v)},expression:\"formData.comment\"}})],1)])])]),_c('div',{staticClass:\"md:w-1/3\"},[_c('div',{staticClass:\"border-solid border border-gray3 px-4 py-7 mt-6 bg-white\"},[_c('div',{staticClass:\"text-xl font-semibold tracking-widest\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"SUMMARY\"))+\" \")]),_c('div',{staticClass:\"mt-3\"},[_vm._l((_vm.cart.allEventItems),function(item,i){return _c('div',{key:i,staticClass:\"flex gap-1 justify-between w-auto text-sm\"},[_c('span',{staticClass:\"text-graytext\"},[_vm._v(_vm._s(item.name)+\" x \"+_vm._s(item.quantity))]),_c('span',{},[_vm._v(_vm._s(item.totalPrice)+\" \"+_vm._s(_vm.ticketsCurrency))])])}),_c('v-divider',{staticClass:\"my-4\"}),_c('div',{staticClass:\"flex gap-2 justify-between font-medium\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"Total (inkl. moms)\"))+\" \")]),_c('div',{},[_vm._v(\" \"+_vm._s(_vm.cartTotalAmount)+\" \")])])],2),_c('div',{staticClass:\"mt-7\"},[_c('v-btn',{staticClass:\"w-full bg-dark text-white rounded-none\",attrs:{\"loading\":_vm.isLoading,\"disabled\":_vm.canDoPayment,\"x-large\":\"\"},on:{\"click\":function($event){return _vm.goPaymentClick()}}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Continue to payment\"))+\" \")])],1)]),(false)?_c('v-expansion-panels',{staticClass:\"block mt-8\",attrs:{\"accordion\":\"\"}},[_c('v-expansion-panel',{staticClass:\"border-solid border border-gray3 no-shadow px-4\"},[_c('v-expansion-panel-header',{staticClass:\"pt-0 pb-0 px-0 min-h-0 border-none\",attrs:{\"hide-actions\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\n var open = ref.open;\nreturn [_c('div',{staticClass:\"flex gap-6 items-center justify-between py-3\"},[_c('div',{staticClass:\"flex gap-2 w-full\"},[_c('div',{staticClass:\"font-normal tracking-wider\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Add coupon?\"))+\" \")]),_c('div',{staticClass:\"text-graytext\"},[_vm._v(\"(\"+_vm._s(_vm.$t(\"Optional\"))+\")\")])]),_c('v-icon',{class:{\n 'rotate-180 transform': open,\n 'w-6 h-8 text-black': true\n }},[_vm._v(\"menu-down\")])],1)]}}],null,false,3263772429)}),_c('v-expansion-panel-content',{staticClass:\"py-3\"},[_c('div',{},[_c('div',{staticClass:\"tracking-wider font-normal\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Type coupon here\"))+\" \")]),_c('div',{staticClass:\"flex gap-2 mt-3\"},[_c('v-text-field',{staticClass:\"bg-white\",attrs:{\"solo\":\"\",\"flat\":\"\",\"required\":\"\",\"id\":\"coupon-input\"},model:{value:(_vm.coupon),callback:function ($$v) {_vm.coupon=$$v},expression:\"coupon\"}}),_c('v-btn',{staticClass:\"bg-dark text-white\",attrs:{\"height\":\"48px\",\"disabled\":!_vm.coupon,\"flat\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(\"Redeem\"))+\" \")])],1)])])],1)],1):_vm._e(),_c('div',{},[_c('v-checkbox',{attrs:{\"label\":_vm.labels.acceptPolicy,\"disabled\":_vm.isLoading},model:{value:(_vm.formData.acceptPolicy),callback:function ($$v) {_vm.$set(_vm.formData, \"acceptPolicy\", $$v)},expression:\"formData.acceptPolicy\"}})],1)],1)]),_c('div',{staticClass:\"border-solid border border-gray3 p-4 mt-6 md:hidden\"},[_c('div',{},[_vm._v(\" \"+_vm._s(_vm.$t(\"We accept\"))+\" \")]),_c('div',{staticClass:\"flex gap-3 items-center mt-2\"},_vm._l((_vm.payments),function(payment,i){return _c('div',{key:i},[_c('img',{attrs:{\"src\":payment.icon}})])}),0)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {VTicket} from \"@/models/ticket\";\nimport {CheckoutCategory} from \"@/types/api.newviz/cart\";\nimport {cartStore} from \"@/store\";\nimport {VCart} from \"@/models/cart\";\nimport {COUNTRIES, Country, TCountry} from \"@/utils/data\";\n\nexport type Stage = {\n label?: string;\n isCurrent?: boolean;\n isChecked?: boolean;\n};\n\n@Component({components: {GUIDImage}})\nexport default class Checkout extends Vue {\n placeholderImageUid = \"e17fb04a-e32f-4041-92f1-abf608dbb73c\";\n coupon = \"\";\n\n loading = {\n global: false\n };\n\n get ticketsCurrency() {\n return cartStore.currentCurrency;\n }\n\n setGlobalLoading() {\n this.loading.global = true;\n }\n\n unsetGlobalLoading() {\n this.loading.global = false;\n }\n\n get isLoading() {\n return this.loading.global;\n }\n\n get requiredInputsValid() {\n const requiredKeys = [\n \"category\",\n \"firstLastName\",\n \"phoneCode\",\n \"phoneNumber\",\n \"email\",\n \"postalCode\",\n \"country\"\n ];\n return (\n Object.entries(this.formData)\n .filter(k => requiredKeys.includes(k[0]))\n .find(k => !k[1]) != undefined\n );\n }\n\n get canDoPayment() {\n return this.requiredInputsValid;\n }\n\n // TODO\n tickets: VTicket[] = [];\n\n get categoryItems() {\n const C = CheckoutCategory;\n return [C.Private];\n }\n\n countryInfo(name: Country): TCountry {\n return COUNTRIES.find(v => v.name == name) as TCountry;\n }\n\n get countryItemsPhoneCode() {\n return COUNTRIES.map(c => {\n return {\n ...c,\n value: c.phoneCode\n };\n });\n }\n\n get countryItemsLabels() {\n return COUNTRIES.map(c => c.label);\n }\n\n formData = cartStore.checkout.formData;\n\n get styles() {\n return {\n title: {\n letterSpacing: \"0.3rem\"\n }\n };\n }\n\n get labels() {\n return {\n yourInfo: this.$t(\"Your information\"),\n product: this.$t(\"Product\")\n .toString()\n .toLowerCase(),\n adults: \"Adults\",\n child: \"Child\",\n senior: \"Senior\",\n selectCategory: \"Select category\",\n selectCountry: \"Select country\",\n acceptPolicy: \"I have read and accept the return policy and the Offer\"\n };\n }\n\n paymentImagePath(name: string) {\n const path = `@/assets/images/payments/${name}`;\n return require(path);\n }\n get payments() {\n return [\n {icon: require(\"@/assets/images/payments/visa.png\")},\n {icon: require(\"@/assets/images/payments/master-1.png\")},\n {icon: require(\"@/assets/images/payments/master-2.png\")},\n {icon: require(\"@/assets/images/payments/nets.png\")},\n {icon: require(\"@/assets/images/payments/dk.png\")},\n {icon: require(\"@/assets/images/payments/mobile-pay.png\")}\n ];\n }\n\n get cart(): VCart | null {\n return cartStore.cart;\n }\n\n // TODO\n get cartTotalAmount() {\n const price = this.cart?.totalPrice.gross || 0;\n return `${price} ${this.ticketsCurrency}`;\n }\n\n get stages(): Stage[] {\n return [\n {label: \"Review order\", isChecked: true},\n {label: \"Information\", isCurrent: true},\n {label: \"Payment\"}\n ];\n }\n\n async goPaymentClick() {\n // TODO checks here\n this.setGlobalLoading();\n await cartStore.createPayment({\n onSuccess: () => {\n this.unsetGlobalLoading();\n cartStore.onInitPayment();\n if (cartStore.isCurrentPaymentFree) {\n // FREE PAYMENT CASE, NAVIGATE TO ORDER PAGE\n this.$router.push(`checkout-process/${cartStore.payment.orderId}`);\n } else {\n // there is no way to change currency and recalculate cart after this step (during payment)\n cartStore.setBuyCurrency(cartStore.currentCurrency);\n this.$router.push(`/payment/${cartStore.payment.orderId}`);\n }\n }\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Checkout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Checkout.vue?vue&type=template&id=813eee54&\"\nimport script from \"./Checkout.vue?vue&type=script&lang=ts&\"\nexport * from \"./Checkout.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCheckbox,VDivider,VExpansionPanel,VExpansionPanelContent,VExpansionPanelHeader,VExpansionPanels,VIcon,VSelect,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"inner-container\"},[_c('div',[_c('div',{staticClass:\"text-dark text-2xl md:text-4xl font-bold mt-5\",style:(_vm.styles.title)},[_vm._v(\" \"+_vm._s(_vm.$t(\"CHECKOUT\"))+\" \")]),_c('v-divider',{staticClass:\"bg-dark my-2 border-2 rounded-2xl\"})],1),_c('div',{staticClass:\"mt-6\"},[_c('div',{},[_c('div',{staticClass:\"flex gap-6 flex-wrap\"},_vm._l((_vm.stages),function(stage,i){return _c('div',{key:i,staticClass:\"flex items-center gap-2 flex-grow-0\"},[_c('div',{class:[\n 'w-7 h-7 flex relative justify-center items-center flex-grow-0 rounded-full',\n stage.isCurrent ? 'bg-dark' : 'bg-gray4'\n ]},[(stage.isChecked)?_c('v-icon',{attrs:{\"x-small\":\"\"}},[_vm._v(\"checkmark-white\")]):_vm._e(),(!stage.isChecked)?_c('span',{staticClass:\"text-white\"},[_vm._v(_vm._s(i + 1))]):_vm._e()],1),_c('div',{class:[\n 'font-medium tracking-wider',\n stage.isCurrent ? 'text-black' : 'text-gray4'\n ]},[_vm._v(\" \"+_vm._s(stage.label)+\" \")])])}),0)])]),_c('div',{staticClass:\"mt-7\",attrs:{\"id\":\"payment-element\"}}),(_vm.paymentId)?_c('v-btn',{staticClass:\"p-8 w-full font-medium bg-dark text-white text-xl mt-4\",attrs:{\"tile\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.confirm()}}},[_vm._v(_vm._s(_vm.$t(\"Pay\") + \" \" + _vm.totalPriceGross + \" \" + _vm.buyCurrency)+\" \")]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {PaymentFormData} from \"@/views/Payment.vue\";\nimport {Component, Vue, Prop} from \"vue-property-decorator\";\n\nenum PaymentMethod {\n Card,\n Mobile\n}\n\n@Component({components: {}})\nexport default class PaymentForm extends Vue {\n @Prop({required: true}) formData!: PaymentFormData;\n\n PaymentMethod = PaymentMethod;\n selectedPayment = PaymentMethod.Card;\n\n get isPayCard() {\n return this.selectedPayment == PaymentMethod.Card;\n }\n get isPayMobile() {\n return this.selectedPayment == PaymentMethod.Mobile;\n }\n\n get labels() {\n return {\n addCard: this.$t(\"Add card\"),\n mobilePay: this.$t(\"MobilePay\"),\n cardNumber: this.$t(\"Card number\"),\n expiry: this.$t(\"Expiry (mm/yy)\")\n };\n }\n\n get cardPayments() {\n return [\n {icon: require(\"@/assets/images/payments/visa.png\")},\n {icon: require(\"@/assets/images/payments/master-1.png\")},\n {icon: require(\"@/assets/images/payments/master-2.png\")},\n {icon: require(\"@/assets/images/payments/dk.png\")}\n ];\n }\n\n get mobilePayments() {\n return [{icon: require(\"@/assets/images/payments/mobile-pay.png\")}];\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"border-solid border border-gray4 rounded-2xl px-4 py-0\"},[_c('v-radio-group',{model:{value:(_vm.selectedPayment),callback:function ($$v) {_vm.selectedPayment=$$v},expression:\"selectedPayment\"}},[_c('div',{staticClass:\"flex-grow\"},[_c('div',{},[_c('v-radio',{attrs:{\"value\":_vm.PaymentMethod.Card},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"flex gap-3 justify-between items-center\"},[_c('div',{staticClass:\"text-black font-medium ml-1\"},[_vm._v(\" \"+_vm._s(_vm.labels.addCard)+\" \")]),_c('div',{staticClass:\"flex gap-3 items-center flex-grow-0\"},_vm._l((_vm.cardPayments),function(payment,i){return _c('div',{key:i},[_c('img',{attrs:{\"src\":payment.icon}})])}),0)])]},proxy:true}])})],1),(_vm.isPayCard)?_c('div',{staticClass:\"border border-solid border-gray4 rounded-2xl my-4\"},[_c('div',{staticClass:\"border-solid border-b border-0 border-gray4 px-4 py-2\"},[_c('v-text-field',{staticClass:\"p-0 m-0 clean spaceless\",attrs:{\"flat\":\"\",\"required\":\"\",\"hide-details\":\"\",\"placeholder\":_vm.labels.cardNumber},model:{value:(_vm.formData.cardNumber),callback:function ($$v) {_vm.$set(_vm.formData, \"cardNumber\", $$v)},expression:\"formData.cardNumber\"}})],1),_c('div',{staticClass:\"flex gap-2\"},[_c('div',{staticClass:\"px-4 py-2 border-solid border-0 border-r border-gray4\"},[_c('v-text-field',{staticClass:\"p-0 m-0 clean spaceless\",attrs:{\"flat\":\"\",\"required\":\"\",\"hide-details\":\"\",\"placeholder\":_vm.labels.expiry},model:{value:(_vm.formData.expiry),callback:function ($$v) {_vm.$set(_vm.formData, \"expiry\", $$v)},expression:\"formData.expiry\"}})],1),_c('div',{staticClass:\"px-4 py-2\"},[_c('v-text-field',{staticClass:\"p-0 m-0 clean spaceless\",attrs:{\"flat\":\"\",\"required\":\"\",\"hide-details\":\"\",\"placeholder\":\"CVC\"},model:{value:(_vm.formData.cvc),callback:function ($$v) {_vm.$set(_vm.formData, \"cvc\", $$v)},expression:\"formData.cvc\"}})],1)])]):_vm._e()]),_c('v-divider',{staticClass:\"my-3\"}),_c('div',{staticClass:\"flex-grow\"},[_c('div',{},[_c('v-radio',{attrs:{\"value\":_vm.PaymentMethod.Mobile},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('div',{staticClass:\"flex justify-between items-center flex-grow gap-3\"},[_c('div',{staticClass:\"text-black font-medium ml-1\"},[_vm._v(\" \"+_vm._s(_vm.labels.mobilePay)+\" \")]),_c('div',{staticClass:\"flex gap-3 items-center flex-grow-0\"},_vm._l((_vm.mobilePayments),function(payment,i){return _c('div',{key:i},[_c('img',{attrs:{\"src\":payment.icon}})])}),0)])]},proxy:true}])})],1)])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentForm.vue?vue&type=template&id=1d18d22b&\"\nimport script from \"./PaymentForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./PaymentForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VDivider,VRadio,VRadioGroup,VTextField})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport GUIDImage from \"@/components/GUIDImage.vue\";\nimport {Stage} from \"./Checkout.vue\";\nimport PaymentForm from \"@/components/PaymentForm.vue\";\nimport {cartStore} from \"@/store\";\n\nexport type PaymentFormData = {\n cardNumber: string;\n expiry: string;\n cvc: string;\n};\n\nexport type PaymentData = {\n form: PaymentFormData;\n acceptTerms: boolean;\n saveDetails: boolean;\n};\n\n@Component({components: {GUIDImage, PaymentForm}})\nexport default class Payment extends Vue {\n private stripe: any;\n private elements: any;\n\n get styles() {\n return {\n title: {\n letterSpacing: \"0.3rem\"\n }\n };\n }\n\n get stages(): Stage[] {\n return [\n {label: \"Review order\", isChecked: true},\n {label: \"Information\", isChecked: true},\n {label: \"Payment\", isCurrent: true}\n ];\n }\n\n get paymentId() {\n return cartStore.payment.paymentId;\n }\n\n get checkoutKey() {\n return cartStore.payment.checkoutKey;\n }\n\n get totalPriceGross() {\n return cartStore.payment.totalPriceGross;\n }\n\n get buyCurrency() {\n return cartStore.buyCurrency;\n }\n\n async embedStripe() {\n if (!this.paymentId || !this.checkoutKey) {\n if (this.$route.query.redirect_status == \"succeeded\") {\n cartStore.onSuccessPayment();\n const orderId = this.$route.params?.[\"orderId\"];\n if (!orderId) {\n return;\n }\n this.$router.push(`/checkout-process/${orderId}`);\n }\n return;\n }\n const [key, clientSecret] = this.checkoutKey.split(\":\");\n\n const w = window as any;\n this.stripe = w.Stripe(key, {locale: this.$i18n.locale});\n\n const appearance = {\n theme: \"stripe\",\n variables: {\n fontFamily: '\"Oswald\", serif',\n borderRadius: \"0\"\n }\n };\n\n const fonts = [\n {\n cssSrc: \"https://fonts.googleapis.com/css?family=Oswald:300,400,500,700\"\n }\n ];\n\n const options = {clientSecret, appearance, fonts};\n this.elements = this.stripe.elements(options);\n\n const paymentElement = this.elements.create(\"payment\");\n paymentElement.mount(\"#payment-element\");\n }\n\n async mounted() {\n await this.embedStripe();\n }\n async confirm() {\n const resp = await this.stripe.confirmPayment({\n elements: this.elements,\n confirmParams: {\n // eslint-disable-next-line @typescript-eslint/camelcase\n return_url: window.location.href\n }\n });\n if (resp.error) {\n console.error(resp.error.message);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentV2.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentV2.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentV2.vue?vue&type=template&id=c7617b3c&\"\nimport script from \"./PaymentV2.vue?vue&type=script&lang=ts&\"\nexport * from \"./PaymentV2.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VBtn,VDivider,VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"inner-container py-10\"},[(_vm.isLoading)?_c('div',[_vm._v(\"Loading...\")]):_vm._e(),(!_vm.isLoading && !_vm.canShowOrder)?_c('div',[_vm._v(\" No order found. Some error occurred \")]):_vm._e(),(_vm.canShowOrder)?_c('div',{staticClass:\"bg-green4 px-5 md:px-20 py-10 md:py-32 overflow-hidden relative\"},[_c('div',{staticClass:\"hidden md:block absolute top-1/2 transform -translate-y-1/2 -right-24\"},[_c('v-icon',[_vm._v(\"checkmark-success\")])],1),_c('div',{staticClass:\"max-w-2xl\"},[_c('div',{staticClass:\"tracking-wide font-light text-lg\"},[_vm._v(\" \"+_vm._s(_vm.labels.orderNum)+\" \"+_vm._s(_vm.orderInfo.number)+\" \")]),_c('div',{staticClass:\"font-bold text-2xl tracking-widest mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.labels.thankForPurchase))+\" \")]),_c('div',{staticClass:\"font-light tracking-wider text-lg mt-2\"},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.labels.orderConfirmed))+\": \"+_vm._s(_vm.orderInfo.email)+\" \")]),_c('div',{staticClass:\"mt-10 text-lg tracking-widest\"},[_c('div',{staticClass:\"font-medium tracking-wider text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.labels.orderInfo))+\" \")]),_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t(_vm.labels.created))+\" \"+_vm._s(_vm.orderInfo.createdDateTime)+\" \")]),_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.orderInfo.name)+\" \")])]),_c('div',{staticClass:\"md:hidden h-36\"},[_c('div',{staticClass:\"absolute -bottom-8 -right-28\"},[_c('v-icon',[_vm._v(\"checkmark-success\")])],1)])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport paymentApi from \"@/api.newviz/payment\";\nimport {VizOrder} from \"@/types/api.newviz/payment\";\nimport {Component, Vue} from \"vue-property-decorator\";\n@Component({components: {}})\nexport default class CheckoutProcess extends Vue {\n currentOrder: VizOrder | null = null;\n loading = {\n global: false\n };\n get styles() {\n return {\n icon: {\n // sizeIcon: isMobile() ? \"50\" : \"120\"\n }\n };\n }\n\n get isLoading() {\n return this.loading.global;\n }\n\n get canShowOrder() {\n return !this.loading.global && this.currentOrder != null;\n }\n\n // TODO get info from order objects instance\n get orderInfo() {\n const o = this.currentOrder;\n return {\n number: o?.orderNumber,\n email: o?.sentToEmail,\n createdDateTime: o?.event.dateTime,\n name: o?.event.name\n };\n }\n\n get labels() {\n return {\n orderNum: \"Order nr. \",\n thankForPurchase: \"THANK YOU FOR YOUR PURCHASE!\",\n orderConfirmed:\n \"Your order is confirmed. We will send you an order confirmation to your E-mail shortly\",\n orderInfo: \"Order Information\",\n created: \"Created\",\n paymentMethod: \"Payment method\",\n totalAmount: \"Total amount\"\n };\n }\n\n async mounted() {\n await this.loadData();\n }\n\n async loadData() {\n const orderId = this.$route.params?.[\"orderId\"];\n if (!orderId) {\n return;\n }\n try {\n this.loading.global = true;\n const order = await paymentApi.getOrderById({orderId});\n this.currentOrder = order;\n } finally {\n this.loading.global = false;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckoutProcess.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckoutProcess.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CheckoutProcess.vue?vue&type=template&id=04c2865e&\"\nimport script from \"./CheckoutProcess.vue?vue&type=script&lang=ts&\"\nexport * from \"./CheckoutProcess.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mt-6\"},[_c('VideoFrame',{attrs:{\"width\":\"100%\",\"height\":\"auto\",\"url\":\"https://vizgu.blob.core.windows.net/public/Vizgu_Platform.mp4\",\"customClass\":\"object-contain\"}}),_c('div',{staticClass:\"text-lg md:text-3xl leading-8 tracking-tight text-graytext2 font-light mt-16 md:mt-28 text-center max-w-screen-md mx-auto px-3\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Take control of all critical workflows, from Curation to Commercialization! all in one place:\" ))+\" \")]),_c('div',{staticClass:\"text-4xl md:text-7xl tracking-tighter container my-12 text-center mx-auto md:px-20 font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu museum platform\"))+\" \")]),_c('div',{staticClass:\"max-w-xs mt-11 px-4 mx-auto\"},[_c('BookDemo')],1),_c('div',{staticClass:\"bg-lightgray pt-4 mt-16 md:mt-28 relative overflow-hidden md:px-10 flex justify-center\"},[_c('img',{staticClass:\"h-96 md:h-auto object-center md:object-contain object-cover w-full max-w-screen-2xl -mb-2\",attrs:{\"src\":_vm.media.section1}})]),_c('div',{staticClass:\"mt-16 md:mt-36 container md:px-10 xl:px-40 text-center\"},[_c('div',{staticClass:\"text-3xl md:text-5xl tracking-tighter mt-6 mb-4 max-w-screen-lg my-6 mx-auto px-2 font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"All-in-one platform, designed & co-created for Museum Operations.\" ))+\" \")]),_c('div',{staticClass:\"text-lg md:text-2xl font-light tracking-wider max-w-screen-lg mt-10 text-center mx-auto px-2\",domProps:{\"innerHTML\":_vm._s(\n _vm.$t(\n 'Discover how The Vizgu Platform enhances museum operations, automating essential tasks and simplifying workflows.Our platform optimizes efficiency, empowering staff to focus on delivering exceptional visitor experiences.'\n )\n )}}),_c('div',{staticClass:\"flex gap-4 items-center px-3 flex-wrap mt-12 mx-auto justify-center\"},_vm._l((_vm.media.section2.items),function(item,key){return _c('div',{key:key},[_c('div',{staticClass:\"text-center justify-center flex flex-grow-0 h-16 w-16 xl:w-24 xl:h-24 filter shadow xl:shadow-drop\"},[(item.src)?_c('img',{staticClass:\"w-4 h-4 xl:w-8 xl:h-8 m-auto\",attrs:{\"src\":item.src}}):_c('v-icon',{staticClass:\"w-5 h-5 m-auto\"},[_vm._v(\" \"+_vm._s(item.icon)+\" \")])],1),_c('div',{staticClass:\"mt-4 text-xs xl:text-normal\"},[_vm._v(_vm._s(item.title))])])}),0)]),_c('div',{staticClass:\"mt-20 md:mt-40 md:px-10 xl:px-40\"},[_c('div',{staticClass:\"xl:flex xl:gap-4 max-w-screen-xl mx-auto px-4\"},[_c('div',{staticClass:\"xl:flex max-w-lg w-full\"},[_c('img',{staticClass:\"max-w-lg object-contain container\",attrs:{\"src\":_vm.media.ticketing.desktop1}})]),_c('div',{staticClass:\"block xl:hidden mt-10\"},[_c('img',{staticClass:\"container object-cover object-left h-64\",attrs:{\"src\":_vm.media.ticketing.desktop2}})]),_c('div',{staticClass:\"mt-11 xl:mt-2 md:mx-8 container\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Ticketing system\"))+\" \")]),_c('div',{staticClass:\"font-light xl:max-w-md tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Explore our latest digital innovation: a specialized e-commerce solution designed for museums. This platform streamlines ticket sales, event coordination, and scheduling processes. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Developed in partnership with museum experts, it's more than just efficient—it's adaptable. The platform allows for custom widget creation, providing a personalized approach for each event.Our platform allows for seamless management of hybrid tickets, gated tickets, and group tickets, offering greater flexibility and convenience for your visitors\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])])]),_c('div',{staticClass:\"hidden xl:block xl:items-center mt-10 max-w-screen-xl mx-auto\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.ticketing.desktop2}})])]),_c('div',{staticClass:\"mt-24 md:px-10 xl:px-40\"},[_c('div',{staticClass:\"block xl:hidden container\"},[_c('div',{staticClass:\"justify-center items-center flex\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.donation.desktop1}})]),_c('div',{staticClass:\"justify-center items-center flex mt-5\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.donation.desktop2}})])]),_c('div',{staticClass:\"xl:flex xl:gap-4 max-w-screen-xl mx-auto px-4\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 container xl:mx-8\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Donation system\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Explore our Donation module, a functional extension of our e-commerce platform, specifically designed to support museums in managing donations.In collaboration with museums, this module enhances the process of receiving and tracking contributions with an easy - to - use calendar and automated booking features. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"It's developed to aid museums in efficiently handling their donation activities, providing a streamlined and organized approach to donation management.Our Donation module focuses on facilitating a structured and effective way for museums to connect with donors and manage their financial support\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])]),_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex max-w-lg\"},[_c('img',{staticClass:\"max-w-lg object-contain\",attrs:{\"src\":_vm.media.donation.desktop1}})]),_c('div',{staticClass:\"hidden xl:flex max-w-lg\"},[_c('img',{staticClass:\"max-w-lg object-contain\",attrs:{\"src\":_vm.media.donation.desktop2}})])])])]),_c('div',{staticClass:\"mt-24 container md:px-10 xl:px-40\"},[_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.tourguide.desktop1}})])]),_c('div',{staticClass:\"xl:flex xl:gap-4 mx-auto px-4\"},[_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.tourguide.desktop1}})])]),_c('div',{staticClass:\"mt-11 xl:mt-2 xl:mx-8\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Tourguide system\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6 xl:max-w-md\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Explore our Tour Guide module, a practical addition to our e-commerce platform, thoughtfully developed to streamline the management of museum tour guides.Developed in collaboration with museums, this module simplifies the coordination of tour guide schedules with an integrated calendar and automated booking functions. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6 xl:max-w-md\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"It's tailored to assist museums in efficiently organizing their tours, ensuring a smooth and well - planned visitor experience.Our Tour Guide module is about bringing organization and ease to the planning and execution of museum tours and people management\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])])])]),_c('div',{staticClass:\"mt-12 md:mt-24 container md:px-10 xl:px-40\"},[_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex mx-auto\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.webshop.mobile1}})])]),_c('div',{staticClass:\"xl:flex xl:gap-4 max-w-screen-xl mx-auto px-4\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 md:mx-8\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Webshop\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Discover our Webshop module, a key element of our e-commerce platform, ingeniously crafted to enhance the online retail experience for museums.Co - created with museums, this module optimizes online merchandise sales through a user - friendly interface and streamlined processes. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"It's designed to assist museums in effectively managing their online stores, from product listing to sales tracking.Our Webshop module is designed to simplify and organize the online sales process, making it easier for museums to offer a seamless shopping experience with a focus on upselling.This module works in conjunction with our Ticket Sales system.When purchasing a ticket, related products are offered as supplements.These may include books about the exhibition or other relevant product categories\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])])]),_c('div',{staticClass:\"hidden xl:block mt-16 \"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.webshop.desktop1}})])]),_c('div',{staticClass:\"mt-16 container\"},[_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.membership.desktop1}})]),_c('div',{staticClass:\"justify-center items-center flex\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.membership.desktop2}})])]),_c('div',{staticClass:\"container md:px-10 xl:px-40 flex gap-4\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 md:mx-8 xl:w-1/2\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Membership\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Discover our Membership module, an essential part of our e-commerce platform, designed to enhance the relationship between museums and their members. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"This module streamlines membership management, offering intuitive tools for subscription handling, member communication, and benefits tracking.It's tailored to help museums build and maintain strong connections with their supporters, providing a seamless and efficient membership experience.\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1),_c('div',{staticClass:\"hidden xl:flex py-6\"},[_c('img',{staticClass:\"container p-0 object-contain\",attrs:{\"src\":_vm.media.membership.desktop2}})])])]),_c('div',{staticClass:\"hidden xl:flex xl:gap-4 max-w-screen-xl mx-auto px-4\"},[_c('div',{staticClass:\"hidden xl:flex\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.membership.desktop1}})])])])]),_c('div',{staticClass:\"bg-dark2 text-white py-12 md:py-24 my-16\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"xl:flex xl:gap-4 container md:px-10 xl:px-40\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 md:mx-8\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-5xl block xl:text-6xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Curation\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-4 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Explore our unique Podwalk and Game Development offerings, designed to bring interactive and immersive experiences to museums and cultural spaces.Our Podwalk service creates engaging audio tours, enhancing visitor exploration with storytelling and information.Meanwhile, our Game Development offering transforms museum exhibits into interactive adventures, making learning fun and memorable.Both services are crafted to enrich visitor engagement and bring museum collections to life in new and exciting ways.\" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-1/2 xl:mt-8\"},[_c('v-btn',{staticClass:\"rounded-none h-12 w-32 border-2 text-white\",attrs:{\"outlined\":\"\",\"block\":\"\",\"router\":\"\",\"to\":\"/for-content-creators\"},on:{\"click\":function () {}}},[_c('span',{staticClass:\"font-medium\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Read more about Curation\"))+\" \")])])],1)])])]),_c('div',{staticClass:\"block xl:hidden mt-12\"},[_c('div',{staticClass:\"justify-center items-center flex\"},[_c('div',{staticClass:\"container\"},[_c('img',{staticClass:\"rounded-lg object-cover w-full\",attrs:{\"src\":_vm.media.curation.mobile1}})])]),_c('div',{staticClass:\"justify-center items-center flex mt-8 mb-4 md:mb-20\"},[_c('img',{staticClass:\"object-cover container\",attrs:{\"src\":_vm.media.curation.mobile2}})])]),_c('div',{staticClass:\"hidden container xl:flex w-full mt-12 xl:p-40 xl:pt-0\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.curation.desktop1}})])]),_c('div',{staticClass:\"container px-8 xl:px-40\"},[_c('svg',{staticClass:\"flex w-full\",attrs:{\"fill\":\"none\",\"viewBox\":\"0 0 1275 11\"}},[_c('path',{attrs:{\"fill\":\"url(#a)\",\"fill-rule\":\"evenodd\",\"d\":\"M5.06 10.121A5.06 5.06 0 1 0 5.06 0a5.06 5.06 0 0 0 0 10.121Zm650.18 0a5.06 5.06 0 1 0 0-10.122 5.06 5.06 0 0 0 0 10.122ZM46.242 5.061a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.122 5.06 5.06 0 0 0 0 10.122ZM82.363 5.061a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.122 5.06 5.06 0 0 0 0 10.122Zm-608.998-5.06a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.122 5.06 5.06 0 0 0 0 10.122Zm-608.998-5.06a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.12 5.06A5.06 5.06 0 1 0 799.724 0a5.06 5.06 0 0 0 .001 10.121Zm-608.999-5.06a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.12 5.06a5.06 5.06 0 1 0 0-10.12 5.06 5.06 0 0 0 0 10.12Zm-608.998-5.06a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.12 5.06 5.06 0 0 0 0 10.12Zm-608.998-5.06a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.12 5.06 5.06 0 0 0 0 10.12ZM299.09 5.061a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.12 5.06 5.06 0 0 0 0 10.12Zm-608.998-5.06a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.119 5.06a5.06 5.06 0 1 0 0-10.122 5.06 5.06 0 0 0 0 10.122Zm-608.998-5.06a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.118 5.06c2.8 0 5.06-2.266 5.06-5.06 0-2.795-2.26-5.061-5.06-5.061a5.063 5.063 0 0 0-5.06 5.06c0 2.795 2.27 5.061 5.06 5.061Zm-608.997-5.06a5.06 5.06 0 1 1-10.121 0 5.06 5.06 0 0 1 10.121 0Zm645.117 5.06c2.8 0 5.06-2.266 5.06-5.06 0-2.795-2.26-5.061-5.06-5.061a5.063 5.063 0 0 0-5.06 5.06c0 2.795 2.27 5.061 5.06 5.061Zm-608.996-5.06a5.06 5.06 0 1 1-10.121 0 5.06 5.06 0 0 1 10.121 0Zm645.116 5.06c2.8 0 5.06-2.266 5.06-5.06 0-2.795-2.26-5.061-5.06-5.061a5.063 5.063 0 0 0-5.06 5.06c0 2.795 2.27 5.061 5.06 5.061Zm-608.995-5.06a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.115 5.06c2.8 0 5.06-2.266 5.06-5.06 0-2.795-2.26-5.061-5.06-5.061a5.063 5.063 0 0 0-5.06 5.06c0 2.795 2.27 5.061 5.06 5.061Zm-608.994-5.06a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.124 5.06c2.79 0 5.06-2.266 5.06-5.06 0-2.795-2.27-5.061-5.06-5.061-2.8 0-5.06 2.266-5.06 5.06 0 2.795 2.26 5.061 5.06 5.061Zm-609.003-5.06a5.06 5.06 0 1 1-10.12 0 5.06 5.06 0 0 1 10.12 0Zm645.123 5.06c2.79 0 5.06-2.266 5.06-5.06 0-2.795-2.27-5.061-5.06-5.061-2.8 0-5.06 2.266-5.06 5.06 0 2.795 2.26 5.061 5.06 5.061Zm-609.001-5.06a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.121 5.06c2.79 0 5.06-2.266 5.06-5.06 0-2.795-2.27-5.061-5.06-5.061-2.8 0-5.06 2.266-5.06 5.06 0 2.795 2.26 5.061 5.06 5.061Zm-609-5.06a5.06 5.06 0 1 1-10.122-.001 5.06 5.06 0 0 1 10.122 0Zm645.12 5.06c2.79 0 5.06-2.266 5.06-5.06 0-2.795-2.27-5.061-5.06-5.061-2.8 0-5.06 2.266-5.06 5.06 0 2.795 2.26 5.061 5.06 5.061Z\",\"clip-rule\":\"evenodd\"}}),_c('defs',[_c('linearGradient',{attrs:{\"id\":\"a\",\"x1\":\"0\",\"x2\":\"1274.36\",\"y1\":\"5.061\",\"y2\":\"5.061\",\"gradientUnits\":\"userSpaceOnUse\"}},[_c('stop',{attrs:{\"stop-color\":\"#3F414F\"}}),_c('stop',{attrs:{\"offset\":\"1\",\"stop-color\":\"#D0F7CB\"}})],1)],1)])]),_c('div',{staticClass:\"md:mt-16 xl:mt-28 md:px-10 xl:px-40\"},[_c('div',{staticClass:\"xl:grid xl:grid-cols-2 xl:gap-4 max-w-screen-xl mx-auto px-4\"},[_c('div',{staticClass:\"mt-4 md:mt-20 xl:mt-2 mx-4 xl:mx-8\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"font-bold text-3xl block xl:text-4xl xl:mt-3 xl:max-w-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Gamification & Co-creation\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6 xl:max-w-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Step into the world of museums where history, art, and culture come alive through curation. Imagine wandering through halls filled with treasures from ancient civilizations or masterpieces by renowned artists. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6 xl:max-w-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"But what if exploring a museum felt like a thrilling adventure? That's where gamification comes in.Picture solving puzzles to unlock hidden secrets or competing in challenges to uncover hidden gems. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6 xl:max-w-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu Gamification & Co-creation offerings, museums can transform into immersive playgrounds, engaging visitors of all ages in a dynamic journey through time.\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6 xl:max-w-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Reach out to us now if you have a cool concept in mind, and let’s co - create the game for your museum!\" ))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8 text-white\"},[_c('BookDemo',{attrs:{\"title\":\"Reach out\"}})],1)])]),_c('div',{staticClass:\"flex xl:hidden flex-col gap-4 mt-12 mx-auto\"},[_c('div',{staticClass:\"flex xl:hidden\"},[_c('img',{staticClass:\"object-contain container\",attrs:{\"src\":_vm.media.gamification.desktop1}})])]),_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.gamification.desktop1}})])])])])]),_c('div',{staticClass:\"mt-32 md:mt-52\"},[_c('div',{staticClass:\"max-w-5xl inner-container flex flex-col items-center\"},[_c('div',{staticClass:\"text-3xl text-center md:text-4xl font-bold tracking-tight\",domProps:{\"innerHTML\":_vm._s(_vm.l.rolePickerTitle)}}),_c('div',{staticClass:\"max-w-lg text-center mt-6 text-lg md:text-xl font-light\",domProps:{\"innerHTML\":_vm._s(\n _vm.$t(\n 'Click on one of the personas you see to read about what Vizgu can do for you & your institution'\n )\n )}}),_c('v-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\n var on = ref.on;\nreturn [_c('div',_vm._g({staticClass:\"flex-1 md:flex-none border-3 border-solid border-black py-3 mt-8 bg-white px-16 rounded-none text-black \"},on),[_c('div',{staticClass:\"flex flex-row items-center justify-between\"},[_c('div',{staticClass:\"text-md text-black font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.currentRole ? _vm.currentRole.title : _vm.chooseRoleTitle)+\" \")]),_c('v-icon',{attrs:{\"right\":\"\",\"small\":\"\",\"color\":\"black\"}},[_vm._v(\" menu-down \")])],1)])]}}])},[_c('v-list',_vm._l((_vm.roles),function(role,indx){return _c('v-list-item',{key:indx,on:{\"click\":function($event){return _vm.setRole(role)}}},[_c('v-list-item-title',[_vm._v(_vm._s(role.title))])],1)}),1)],1)],1),(_vm.currentRole)?_c('div',{staticClass:\"relative bg-dark text-white mt-24 py-10\"},[_c('div',{staticClass:\"flex flex-col md:flex-row gap-5 inner-container py-5 items-center\"},[_c('div',{staticClass:\"w-full md:w-1/2 font-light\"},[_c('div',{staticClass:\"font-semibold text-xl md:text-2xl font-raleway mt-6 md:mt-0\"},[_vm._v(\" \"+_vm._s(_vm.currentRole.title)+\" \")]),_c('div',{staticClass:\"whitespace-pre-line mt-8 md:mt-0\",domProps:{\"innerHTML\":_vm._s(_vm.currentRole.description)}})]),_c('div',{staticClass:\"w-full md:w-1/2\"},[_c('v-img',{staticClass:\"object-right md:hidden\",attrs:{\"contain\":\"\",\"height\":\"320px\",\"src\":_vm.currentRole.image()}}),_c('v-img',{staticClass:\"object-right hidden md:block\",attrs:{\"contain\":\"\",\"height\":\"350px\",\"src\":_vm.currentRole.image()}})],1)])]):_vm._e()]),_c('div',{staticClass:\"mt-40 container md:rounded-xl bg-gradient-to-r from-grad1 to-grad2\"},[_c('div',{staticClass:\"text-3xl xl:text-4xl text-white text-center max-w-screen-md py-10 font-bold m-auto pt-24\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"A powerful platform co-created with our customers; Curators, Museum Directors, City Marketeers and Guides.\" ))+\" \")]),_c('div',{staticClass:\"text-xl text-white max-w-screen-md m-auto text-center font-light pb-20 pt-6\",domProps:{\"innerHTML\":_vm._s(\n _vm.$t(\n 'The Platform is designed to eliminate administrative burdens & automate business critical workflows.'\n )\n )}}),_c('PlatformContactForm'),_c('div',{staticClass:\"text-xl text-white max-w-xs m-auto text-center font-light my-20\",domProps:{\"innerHTML\":_vm._s(\n _vm.$t(\n 'The platform works as a stand-alone or in combination with Vizgu native APP'\n )\n )}})],1),_c('div',{staticClass:\"mt-28 md:mt-52 px-4 mb-24 md:mb-48\"},[_c('div',{staticClass:\"text-center text-gray4 font-light text-md xl:text-xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform works in perfect unison with the Vizgu app\"))+\" \")]),_c('div',{staticClass:\"text-center py-8\"},[_c('h1',{staticClass:\"font-raleway text-5xl md:text-6xl font-bold tracking-tight\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform & APP\"))+\" \")])]),_c('div',{staticClass:\"max-w-xs mt-11 px-4 mx-auto\"},[_c('BookDemo')],1)]),_c('div',{staticClass:\"container bg-gradient-to-b from-gray3 to-lightblue2\"},[_c('div',{staticClass:\"m-12\"},[_c('v-img',{staticClass:\"object-center object-contain container w-full inner-container\",attrs:{\"width\":'100%',\"contain\":\"\",\"src\":_vm.media.desktopPhoneStack}})],1)]),_c('div',{staticClass:\"mt-20 md:mt-28 inner-container max-w-5xl text-center\"},[_c('div',{staticClass:\"font-medium text-xl md:text-3xl\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Get the best of both worlds!\"))+\" \")]),_c('div',{staticClass:\"mt-5 font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The platform covers all critical worksflows from curation to commercialisation.\" ))+\" \")]),_c('div',{staticClass:\"font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The APP is an extension of the services with supporting features such as:\" ))+\" \")])]),_c('div',{staticClass:\"flex gap-5 inner-container mt-8 md:mt-20 justify-around flex-wrap font-raleway\"},_vm._l((_vm.featureCards),function(title,indx){return _c('div',{key:indx,staticClass:\"p-4 h-24 w-24 shadow-xl xl:shadow-drop text-sm flex flex-grow-0 items-center justify-center\"},[_c('div',{staticClass:\"text-center\"},[_vm._v(_vm._s(title))])])}),0),_c('div',{staticClass:\"text-xl text-center mt-12 md:mt-20\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"And much more...\"))+\" \")]),_c('div',{staticClass:\"mt-10 md:mt-20\"},[_c('v-img',{staticClass:\"object-center object-contain w-full inner-container\",attrs:{\"width\":_vm.isMobile ? '100%' : '800px',\"contain\":\"\",\"src\":_vm.media.phoneStack1}})],1),_c('div',{staticClass:\"inner-container max-w-5xl text-center mt-16\"},[_c('div',{staticClass:\"text-xl md:text-3xl font-light\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The app changes look and feel based on where you are and what you are visiting.\" ))+\" \")]),_c('div',{staticClass:\"mt-6 font-light text-md md:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"At Vizgu we respect your design and identity - which is why our app works as if you had your own native app for your own institution.\" ))+\" \")])]),_c('div',{staticClass:\"flex justify-center hidden\"},[_c('v-btn',{staticClass:\"border-3 py-5 mt-20 rounded-none\",attrs:{\"outlined\":\"\",\"color\":\"text-white\"}},[_c('div',{staticClass:\"text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Read more about the individual cases\"))+\" \")])])],1),_c('div',{staticClass:\"mt-32\"},[_c('PlatformFAQ')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mx-auto object-contain max-w-screen-xl\"},[_c('video',{ref:\"videoRef\",class:_vm.customClass,attrs:{\"width\":_vm.videoProps.width,\"height\":_vm.videoProps.height,\"autoplay\":\"\",\"playsinline\":\"\",\"muted\":\"\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":_vm.videoProps.url,\"type\":\"video/mp4\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Ref, Prop} from \"vue-property-decorator\";\n\n@Component({\n components: {}\n})\nexport default class VideoFrame extends Vue {\n @Prop({required: false, default: undefined}) customClass?: string;\n @Prop({required: true}) url!: string;\n @Prop({default: 320}) width!: number | string;\n @Prop({default: 200}) height!: number | string;\n\n @Ref(\"videoRef\") videoRef!: HTMLVideoElement;\n\n isMounted = false;\n\n get videoProps() {\n return {\n width: this.width,\n height: this.height,\n url: this.url\n };\n }\n\n async playVideo() {\n if (!this.videoRef) {\n return;\n }\n // this.videoRef\n this.videoRef.autoplay = true;\n this.videoRef.loop = true;\n this.videoRef.controls = false;\n await this.videoRef.play();\n }\n\n async mounted() {\n this.isMounted = true;\n\n await this.playVideo();\n\n console.log(\"video ref is\", this.videoRef);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoFrame.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoFrame.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VideoFrame.vue?vue&type=template&id=46768f5b&\"\nimport script from \"./VideoFrame.vue?vue&type=script&lang=ts&\"\nexport * from \"./VideoFrame.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-btn',{staticClass:\"h-12 w-32 border-3 border-current\",class:{\n 'rounded-none': !_vm.rounded,\n 'rounded-full': _vm.rounded,\n 'w-auto': _vm.wauto\n },attrs:{\"outlined\":\"\",\"block\":\"\"},on:{\"click\":function () {\n _vm.isOpen = true;\n }}},[_c('span',{staticClass:\"font-medium\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])]),_c('v-dialog',{attrs:{\"max-width\":\"1200px\"},model:{value:(_vm.isOpen),callback:function ($$v) {_vm.isOpen=$$v},expression:\"isOpen\"}},[_c('ContactInnerForm',{attrs:{\"is-active\":_vm.isOpen},on:{\"send\":function($event){_vm.isOpen = false}}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue, Prop} from \"vue-property-decorator\";\nimport ContactInnerForm from \"@/components/ContactInnerForm.vue\";\n\n@Component({\n components: {ContactInnerForm}\n})\nexport default class BookDemo extends Vue {\n @Prop({default: \"Book a demo\", required: false}) title?: string;\n @Prop({required: false, default: false}) rounded!: boolean;\n @Prop({required: false, default: false}) wauto!: boolean;\n\n isOpen = false;\n\n get isRounded() {\n if (!this.rounded) {\n return false;\n }\n return true;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BookDemo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BookDemo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BookDemo.vue?vue&type=template&id=fae8fd00&\"\nimport script from \"./BookDemo.vue?vue&type=script&lang=ts&\"\nexport * from \"./BookDemo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\ninstallComponents(component, {VBtn,VDialog})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport VideoFrame from \"@/components/vizguaps/VideoFrame.vue\";\nimport BookDemo from \"@/components/vizguaps/BookDemo.vue\";\nimport PlatformContactForm from \"@/components/PlatformContactForm.vue\";\nimport PlatformFAQ from \"@/components/PlatformFAQ.vue\";\nimport {Role, roleList} from \"@/data\";\nimport {TranslateResult} from \"vue-i18n\";\nimport {isMobile} from \"@/utils/dom\";\nimport {is} from \"date-fns/locale\";\n\n@Component({\n components: {\n VideoFrame,\n BookDemo,\n PlatformContactForm,\n PlatformFAQ\n }\n})\nexport default class VizguPlatform extends Vue {\n currentRole: Role | null = null;\n featureCards: Array = [\n this.$t(\"In-APP purchases\"),\n this.$t(\"Tour Guide booking\"),\n this.$t(\"Digital AR guides\"),\n this.$t(\"3D audio guides\"),\n this.$t(\"Tickets\"),\n this.$t(\"Mixed reality guides\"),\n this.$t(\"Object detection\")\n ];\n\n get isMobile() {\n return isMobile();\n }\n\n get videoHeight() {\n return this.isMobile ? \"auto\" : \"1000\";\n }\n\n setRole(v: Role) {\n this.currentRole = v;\n }\n\n mediaPath(file: string) {\n return require(`@/assets/images/vizgu-platform/${file}`);\n }\n\n platformMediaPath(file: string) {\n return require(`@/assets/images/footer/platform/${file}`);\n }\n\n get l() {\n return {\n rolePickerTitle: this.$t(\n \"Help us understand who you are\"\n )\n };\n }\n\n get roles(): Role[] {\n return roleList.map(v => {\n return {\n title: this.$t(v.title).toString(),\n description: this.$t(v.description).toString(),\n image: v.image\n };\n });\n }\n\n get chooseRoleTitle() {\n return this.currentRole\n ? this.currentRole.title\n : this.$t(\"Choose a persona\");\n }\n\n media = {\n section1: this.mediaPath(\"section-1.png\"),\n section2: {\n items: [\n {\n src: this.mediaPath(\"icon-graphic.svg\"),\n title: this.$t(\"E-commerce\")\n },\n {\n src: this.mediaPath(\"icon-route.svg\"),\n title: this.$t(\"Tour guides\")\n },\n {\n src: this.mediaPath(\"icon-credit-card.svg\"),\n title: this.$t(\"In-app sales\")\n },\n {\n src: this.mediaPath(\"icon-donation-calendar.svg\"),\n title: this.$t(\"Donations\")\n },\n {\n icon: \"ticket\",\n title: this.$t(\"Tickets\")\n },\n {\n src: this.mediaPath(\"icon-membership.svg\"),\n title: this.$t(\"Memberships\")\n },\n {\n icon: \"plus-sign\",\n title: this.$t(\"& much more...\")\n }\n ]\n },\n ticketing: {\n mobile1: this.mediaPath(\"ticketing-system-1-mobile.png\"),\n mobile2: this.mediaPath(\"ticketing-system-2-mobile.png\"),\n desktop1: this.mediaPath(\"ticketing-system-1-desktop.png\"),\n desktop2: this.mediaPath(\"ticketing-system-2-deskop.png\")\n },\n donation: {\n mobile1: this.mediaPath(\"donation-1-mobile.png\"),\n mobile2: this.mediaPath(\"donation-2-mobile.png\"),\n desktop1: this.mediaPath(\"donation-1-desktop.png\"),\n desktop2: this.mediaPath(\"donation-2-desktop.png\")\n },\n tourguide: {\n mobile1: this.mediaPath(\"tourguide-1-mobile.png\"),\n desktop1: this.mediaPath(\"tourguide-1-desktop.png\")\n },\n webshop: {\n mobile1: this.mediaPath(\"webshop-1-mobile.png\"),\n desktop1: this.mediaPath(\"webshop-1-desktop.png\")\n },\n membership: {\n mobile1: this.mediaPath(\"membership-1-mobile.png\"),\n mobile2: this.mediaPath(\"membership-2-mobile.png\"),\n desktop1: this.mediaPath(\"membership-1-desktop.png\"),\n desktop2: this.mediaPath(\"membership-2-desktop.png\")\n },\n curation: {\n mobile1: this.mediaPath(\"curation-1-mobile.png\"),\n mobile2: this.mediaPath(\"curation-2-mobile.png\"),\n desktop1: this.mediaPath(\"curation-1-desktop.png\")\n },\n gamification: {\n mobile1: this.mediaPath(\"gamification-1-mobile.png\"),\n desktop1: this.mediaPath(\"gamification-1-desktop.png\")\n },\n phoneStack1: this.platformMediaPath(\"phone-stack1.png\"),\n desktopPhoneStack: this.platformMediaPath(\"desktop-phone-stack.png\")\n };\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VizguPlatform.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VizguPlatform.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VizguPlatform.vue?vue&type=template&id=130aff79&\"\nimport script from \"./VizguPlatform.vue?vue&type=script&lang=ts&\"\nexport * from \"./VizguPlatform.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\ninstallComponents(component, {VBtn,VIcon,VImg,VList,VListItem,VListItemTitle,VMenu})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('VideoFrame',{attrs:{\"width\":\"100%\",\"height\":\"auto\",\"url\":\"https://vizgu.blob.core.windows.net/public/Curation.mp4\",\"customClass\":\"object-cover\"}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-lg md:text-3xl leading-8 tracking-tight text-graytext2 font-light mt-16 md:mt-28 text-center max-w-screen-md mx-auto px-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Create and curate with the Vizgu Platform\"))+\" \")]),_c('div',{staticClass:\"text-4xl md:text-7xl tracking-tighter container my-6 md:my-12 text-center mx-auto md:px-20 font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"For Content Creators\"))+\" \")]),_c('div',{staticClass:\"container text-lg md:text-xl mt-4 md:mt-10 text-center max-w-sm md:max-w-screen-md mx-auto font-raleway\",domProps:{\"innerHTML\":_vm._s(\n _vm.$t(\n 'Are you ready to revolutionize the way you engage with your audience? With Vizgu, content creators like you have the tools to transform storytelling into an immersive experience like never before.'\n )\n )}}),_c('div',{staticClass:\"container text-sm mt-10 md:mt-16 text-center max-w-md mx-auto font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Read about some of our most popular features below.\"))+\" \")]),_c('div',{staticClass:\"text-center mt-1\"},[_c('v-icon',{staticClass:\"text-primary font-bold\",attrs:{\"size\":\"20\"}},[_vm._v(\"menu-down\")])],1),_c('div',{staticClass:\"mt-8\"}),_c('div',{staticClass:\"block xl:hidden text-left sm:text-center\"},[_c('div',{},[_c('img',{staticClass:\"w-96\",attrs:{\"src\":_vm.media.section1.mobile1}})])]),_c('div',{staticClass:\"block xl:hidden text-center h-lg relative\"},[_c('div',{},[_c('img',{staticClass:\"absolute sm:static right-0 w-96\",attrs:{\"src\":_vm.media.section1.mobile2}})])]),_c('div',{staticClass:\"hidden xl:block\"},[_c('div',{staticClass:\"mx-auto w-max\"},[_c('img',{attrs:{\"src\":_vm.media.section1.desktop1,\"height\":\"700\"}})])]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-12 xl:mx-auto\"},[_c('BookDemo',{staticClass:\"container\",attrs:{\"title\":\"Become a content partner\"}})],1)]),_c('div',{staticClass:\"mt-20 xl:mt-28\"},[_c('div',{staticClass:\"text-center mb-10\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu platform\"))+\" \")]),_c('div',{staticClass:\"mt-1 font-bold text-5xl block xl:text-6xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Curation\"))+\" \")])]),_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex container max-w-screen-sm mx-auto\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section2.mobile1}})])]),_c('div',{staticClass:\"block xl:hidden mt-4\"},[_c('div',{staticClass:\"justify-center items-center flex container max-w-screen-sm mx-auto\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section2.mobile2}})])]),_c('div',{staticClass:\"hidden xl:block mt-16\"},[_c('div',{staticClass:\"justify-center items-center flex\"},[_c('img',{attrs:{\"src\":_vm.media.section2.desktop1,\"height\":\"600\"}})])])]),_c('div',{staticClass:\"mt-20 xl:mt-28\"},[_c('div',{staticClass:\"text-center mb-16\"},[_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3 mx-8 xl:max-w-xl xl:mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Unleash your creativity with Vizgu Podwalk Technology\"))+\" \")]),_c('div',{staticClass:\"mt-10 font-medium text-lg text-md block mx-8 xl:mt-8\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Step into the Future of Storytelling with Vizgu Podwalk Technology\" ))+\" \")])]),_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex max-w-screen-sm mx-auto\"},[_c('img',{staticClass:\"container p-0 object-contain\",attrs:{\"src\":_vm.media.section3.mobile1}})])]),_c('div',{staticClass:\"hidden xl:block mt-20\"},[_c('div',{staticClass:\"justify-center items-center flex\"},[_c('img',{attrs:{\"src\":_vm.media.section3.desktop1,\"height\":\"550\"}})])]),_c('div',{staticClass:\"xl:flex xl:gap-4 max-w-screen-md mx-auto container\"},[_c('div',{staticClass:\"container mt-8 md:mt-16 font-light tracking-wider flex flex-col gap-8 xl:mt-20 xl:flex-row xl:flex-wrap xl:mx-auto justify-center\"},[_c('div',{staticClass:\"xl:max-w-xs\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide\"},[_vm._v(_vm._s(_vm.$t(\"Monetize Creativity:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Say goodbye to traditional revenue streams. With Vizgu's paywalls, you can unlock a new world of earning potential by offering premium content to your dedicated audiences.\" )))])]),_c('div',{staticClass:\"xl:max-w-xs\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide\"},[_vm._v(_vm._s(_vm.$t(\"Personalized Experiences:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Gone are the days of one-size-fits-all narratives. Our GPS integration ensures that each listener's journey is unique, with stories dynamically adapting to their surroundings. \" )))])]),_c('div',{staticClass:\"xl:max-w-xs\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide\"},[_vm._v(_vm._s(_vm.$t(\"Engagement & Rewards:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Keep your audience hooked with digital vouchers that offer exclusive rewards as they explore your stories. \" )))])]),_c('div',{staticClass:\"xl:max-w-xs\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide\"},[_vm._v(_vm._s(_vm.$t(\"Immersive Creations:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Transport your audience into your story's universe with augmented reality enhancements. Watch as characters and objects come to life, blurring the lines between fiction and reality.\" )))])])])])]),_c('div',{staticClass:\"mt-8 md:mt-40 container\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-center max-w-screen-md m-auto p-4 md:p-20 border-dotted border-4 border-gray4\"},[_c('div',{staticClass:\"font-bold text-4xl block xl:text-5xl mt-6 xl:mt-3 mx-8 xl:max-w-xl xl:mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Do you create content for Cities, Regions & Museums?\"))+\" \")]),_c('div',{staticClass:\"my-8 xl:my-16 text-xl font-medium md:text-2xl block xl:max-w-lg xl:mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Use the Vizgu technology to host your content - Say goodbye to meaningless whitelabel apps\" ))+\" \")]),_c('div',{staticClass:\"mt-12 xl:w-60 xl:mt-20 mx-10 xl:mx-auto mb-6 xl:mb-0 flex justify-center\"},[_c('BookDemo',{attrs:{\"title\":\"Become a content partner\",\"rounded\":true,\"wauto\":true}})],1)])])]),_c('div',{staticClass:\"mt-20 xl:mt-48 container\"},[_c('div',{staticClass:\"text-4xl md:text-5xl mt-4 text-center max-w-xs xl:max-w-screen-md mx-auto font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Create, Deploy, Sell & Share!\"))+\" \")]),_c('div',{staticClass:\"mt-10 text-lg xl:text-3xl text-center mx-auto font-raleway tracking-wide max-w-sm xl:max-w-screen-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Unlock the Power of Vizgu: Partner with Us to Transform Your Storytelling Experience! \" ))+\" \")]),_c('div',{staticClass:\"mt-10 text-md xl:text-xl text-center mx-auto max-w-xs font-light xl:max-w-screen-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu you can add paywalls to your podwalks and generate revenue or create a revenue share models with your partners - all in one place!\" ))+\" \")]),_c('div',{staticClass:\"container mx-auto grid grid-cols-1 xl:grid-cols-3 xl:px-40\"},[_c('div',[_c('div',{staticClass:\"mt-16 text-center max-w-sm mx-auto\"},[_c('div',{},[_c('img',{staticClass:\"sm:hidden container\",attrs:{\"src\":_vm.media.section4.desktop1}}),_c('img',{staticClass:\"hidden sm:block container\",attrs:{\"src\":_vm.media.section4.mobile1}})])]),_c('div',{staticClass:\"max-w-xs mx-auto tracking-wider font-raleway container\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide font-roboto\"},[_vm._v(_vm._s(_vm.$t(\"Create:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Elevate your storytelling to new heights with Vizgu's technology. We provide the tools and expertise to help you craft immersive podwalks that captivate audiences and leave a lasting impression.\" )))])])]),_c('div',[_c('div',{staticClass:\"mt-16 text-center max-w-sm mx-auto\"},[_c('div',{},[_c('img',{staticClass:\"sm:hidden container\",attrs:{\"src\":_vm.media.section4.desktop2}}),_c('img',{staticClass:\"hidden sm:block container\",attrs:{\"src\":_vm.media.section4.mobile2}})])]),_c('div',{staticClass:\"max-w-xs mx-auto tracking-wider font-raleway container\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide font-roboto\"},[_vm._v(_vm._s(_vm.$t(\"Deploy:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Seamlessly integrate Vizgu's platform into your content strategy. Whether you're a seasoned creator or just getting started, our team will guide you through the deployment process, ensuring a smooth and successful launch for you & your costumers.\" )))])])]),_c('div',[_c('div',{staticClass:\"mt-16 text-center\"},[_c('div',{staticClass:\"max-w-sm xl:p-0 mx-auto\"},[_c('img',{staticClass:\"sm:hidden container\",attrs:{\"src\":_vm.media.section4.desktop3}}),_c('img',{staticClass:\"hidden sm:block container\",attrs:{\"src\":_vm.media.section4.mobile3}})])]),_c('div',{staticClass:\"max-w-xs mx-auto tracking-wider font-raleway mt-4 container\"},[_c('span',{staticClass:\"font-semibold mr-1 tracking-wide font-roboto\"},[_vm._v(_vm._s(_vm.$t(\"Sell & Share:\")))]),_c('span',[_vm._v(_vm._s(_vm.$t( \"Monetize your creativity and expand your reach with Vizgu. Our platform empowers you to sell premium content, offer exclusive rewards, and engage with your audience like never before. Plus, with our robust sharing features, you can amplify your story's impact across different channels.\" )))])])])])]),_c('div',{staticClass:\"mt-20 xl:mt-40\"},[_c('div',{staticClass:\"xl:flex xl:gap-4 max-w-screen-xl mx-auto xl:max-w-max container\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 container md:mx-8\"},[_c('div',{staticClass:\"font-bold text-3xl block xl:text-5xl xl:mt-3 text-center max-w-2xl mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Learn & Adapt!\"))+\" \")]),_c('div',{staticClass:\"mt-8 text-xl font-light block xl:text-2xl xl:mt-10 text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Monitor the performance of your podwalks\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-lg text-center mt-8 xl:max-w-screen-md xl:mx-auto max-w-max\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu Insights you can learn how your audiences are interacting with your Podwalks from street level, such as heatmaps, to performance & engagement time.\" ))+\" \")]),_c('div',{staticClass:\"mt-2\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu you can showcase the importance of Podwalks to your current and future costumers.\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-sm block xl:text-lg xl:mt-10 md:text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Fill out one of our forms and become a Vizgu Content partner Today!\" ))+\" \")])])])]),_c('div',{staticClass:\"block xl:hidden mt-12\"},[_c('div',{staticClass:\"justify-center items-center flex max-w-lg mx-auto container\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section5.desktop1}})])]),_c('div',{staticClass:\"hidden xl:flex w-full max-w-screen-xl mx-auto mt-12\"},[_c('img',{staticClass:\"max-w-screen-xl mx-auto\",attrs:{\"src\":_vm.media.section5.desktop1,\"height\":\"500\"}})])]),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"mt-40 text-center max-w-screen-md m-auto border-dotted border-4 border-gray4\"},[_c('div',{staticClass:\"px-2 xl:px-10 mt-20\"},[_c('div',{staticClass:\"text-center\"},[_c('div',{staticClass:\"mt-10 font-bold text-4xl block xl:text-6xl xl:mt-3 mx-2 xl:max-w-2xl xl:mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Become a Vizgu Content Partner\"))+\" \")]),_c('div',{staticClass:\"mt-10 font-medium text-2xl block mx-2 xl:max-w-lg xl:mx-auto xl:mt-10\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Do you create content? Let us help each other!\"))+\" \")])]),_c('div',{staticClass:\"mt-10 max-w-xs xl:max-w-xl text-center font-light mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"There's a lot of stories to be told, which is why we always seek the best content creators to work with. Sign up to get invited to all the cool projects to come!\" ))+\" \")]),_c('div',{staticClass:\"mt-8 xl:w-60 xl:mt-10 mx-10 xl:mx-auto\"},[_c('BookDemo',{attrs:{\"title\":\"Become a content partner\",\"rounded\":\"true\"}})],1)]),_c('img',{staticClass:\"object-contain w-full mb-10\",attrs:{\"src\":_vm.media.hands}})])])]),_c('div',{staticClass:\"mt-32 md:mt-80\"},[_c('PlatformFAQ')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport VideoFrame from \"@/components/vizguaps/VideoFrame.vue\";\nimport PlatformFAQ from \"@/components/PlatformFAQ.vue\";\nimport BookDemo from \"@/components/vizguaps/BookDemo.vue\";\nimport {isMobile} from \"@/utils/dom\";\n\n@Component({\n components: {\n VideoFrame,\n BookDemo,\n PlatformFAQ\n }\n})\nexport default class ForContentCreators extends Vue {\n mediaPath(file: string) {\n return require(`@/assets/images/for-creators/${file}`);\n }\n\n get isMobile() {\n return isMobile();\n }\n\n get videoHeight() {\n return this.isMobile ? \"auto\" : \"1000\";\n }\n\n media = {\n section1: {\n desktop1: this.mediaPath(\"section1-1-desktop.png\"),\n mobile1: this.mediaPath(\"section1-1-mobile.png\"),\n mobile2: this.mediaPath(\"section1-2-mobile.png\")\n },\n section2: {\n desktop1: this.mediaPath(\"section2-1-desktop.png\"),\n mobile1: this.mediaPath(\"section2-1-mobile.png\"),\n mobile2: this.mediaPath(\"section2-2-mobile.png\")\n },\n section3: {\n desktop1: this.mediaPath(\"section3-1-desktop.png\"),\n mobile1: this.mediaPath(\"section3-1-mobile.png\")\n },\n section4: {\n desktop1: this.mediaPath(\"section4-1-desktop.png\"),\n desktop2: this.mediaPath(\"section4-2-desktop.png\"),\n desktop3: this.mediaPath(\"section4-3-desktop.png\"),\n desktop4: this.mediaPath(\"section4-4-desktop.png\"),\n mobile1: this.mediaPath(\"section4-1-mobile.png\"),\n mobile2: this.mediaPath(\"section4-2-mobile.png\"),\n mobile3: this.mediaPath(\"section4-3-mobile.png\")\n },\n section5: {\n desktop1: this.mediaPath(\"section5-1-desktop.png\"),\n mobile1: this.mediaPath(\"section5-1-mobile.png\")\n },\n section6: {\n desktop1: this.mediaPath(\"section6-1-desktop.png\"),\n mobile1: this.mediaPath(\"section6-1-mobile.png\")\n },\n hands: this.mediaPath(\"hands.svg\")\n };\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForContentCreators.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForContentCreators.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ForContentCreators.vue?vue&type=template&id=f827e538&\"\nimport script from \"./ForContentCreators.vue?vue&type=script&lang=ts&\"\nexport * from \"./ForContentCreators.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('VideoFrame',{attrs:{\"width\":\"100%\",\"height\":\"auto\",\"url\":\"https://vizgu.blob.core.windows.net/public/Vizgu_village.mp4\",\"customClass\":\"object-cover\"}}),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-lg md:text-3xl leading-8 tracking-tight text-graytext2 font-light mt-8 md:mt-28 text-center max-w-screen-md mx-auto px-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Introducing\"))+\" \")]),_c('div',{staticClass:\"text-4xl md:text-7xl tracking-tighter my-4 md:my-12 text-center mx-auto md:px-20 font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu Village\"))+\" \")]),_c('div',{staticClass:\"text-lg md:text-2xl mt-4 md:mt-10 text-center max-w-sm md:max-w-screen-md mx-auto font-semibold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu, city marketers can create new revenue streams simplify marketing efforts, and implement an e - commerce strategy seamlessly.\" ))+\" \")]),_c('div',{staticClass:\"text-xs tracking-wide md:text-lg mt-12 text-center max-w-sm md:max-w-screen-md mx-auto font-normal font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Imagine guiding your guests through every aspect of their visit, from planning to post-trip experiences, all within a platform engineered to boost revenue and visitor numbers.\" ))+\" \")]),_c('div',{staticClass:\"max-w-xs mt-11 mx-auto\"},[_c('BookDemo')],1)])]),_c('div',{staticClass:\"bg-dark3 mt-32 pt-10 px-2 text-white\"},[_c('div',{staticClass:\"container pb-0\"},[_c('div',{staticClass:\"text-lg md:text-2xl mt-4 md:mt-10 text-center max-w-sm md:max-w-screen-md mx-auto container font-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The all-in-one platform for Destination Hubs, Tourism Boards, Municipalities, and City marketers. \" ))+\" \")]),_c('div',{staticClass:\"text-md md:text-lg mt-4 md:mt-10 text-center max md:max-w-screen-md mx-auto container font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Say goodbye to fragmented processes and hello to streamlined operations.\" ))+\" \")]),_c('div',{staticClass:\"mt-4 flex justify-center\"},[_c('v-img',{staticClass:\"max-w-screen-xl container object-center object-scale-down\",attrs:{\"src\":_vm.media.section1.desktop1}})],1)])]),_c('div',{staticClass:\"mt-28\"},[_c('div',{staticClass:\"text-lg md:text-xl leading-4 mt-12 md:mt-48 text-center tracking-wider max-w-sm mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"The concept of\"))+\" \")]),_c('div',{staticClass:\"text-4xl md:text-5xl mt-4 text-center max-w-sm mx-auto font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu Village\"))+\" \")])]),_c('div',{staticClass:\"py-10 md:py-20 mt-20 bg-lightgray max-w-screen-lg mx-auto rounded-xl\"},[_c('div',{staticClass:\"mt-4 md:flex container justify-center\"},[_c('v-img',{staticClass:\"max-w-screen-md object-center\",attrs:{\"contain\":\"\",\"src\":_vm.media.section2.desktop1}})],1),_c('div',{staticClass:\"mt-14 max-w-xs md:max-w-md mx-auto container\"},[_c('div',{staticClass:\"text-lg mt-4 text-center max-w-sm md:max-w-md mx-auto font-bold font-raleway container\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Connect your city through the concept of the Vizgu Village.\"))+\" \")]),_c('div',{staticClass:\"text-lg mt-8 text-center mx-auto font-light container\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"As the owner of the platform you can create value to local partners and yourself by utilizing the technology's vizgu has built. All the features within the platform can be used separately designed for each partners unique area of buisness.\" ))+\" \")]),_c('div',{staticClass:\"text-sm md:text-lg mt-10 md:mt-16 text-center max-w-sm mx-auto font-bold font-raleway\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Read about each branch below\"))+\" \")]),_c('div',{staticClass:\"text-center mt-1\"},[_c('v-icon',{staticClass:\"text-primary font-bold\",attrs:{\"size\":\"20\"}},[_vm._v(\"menu-down\")])],1)])]),_c('div',{staticClass:\"mt-16 xl:mt-28\"},[_c('div',{staticClass:\"block xl:hidden container\"},[_c('div',{staticClass:\"justify-center items-center flex max-w-sm mx-auto\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section3.desktop1}})])]),_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto\"},[_c('div',{staticClass:\"container xl:p-0\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 container xl:p-0\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu village\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Owner of the platform\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"As the owner of the platform you can create value to local partners and yourself by utilizing the technology's vizgu has built. All the features within the platform can be used separately designed for each partners unique area of buisness.\" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"This means that local partners have full transparency on data, revenue and the way their guests experience their offerings. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"The owner of the platform can sell features to their partners creating new revenue streams for the organisation (DMO).\" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"All owners of the platform can exchange valuable data (all according to GDPR). Creating a unified approach that embraces cross city cooperation and inclusivity.\" ))+\" \")])])])]),_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex max-w-lg\"},[_c('img',{staticClass:\"max-w-lg object-contain\",attrs:{\"src\":_vm.media.section3.desktop1}})])])])]),_c('div',{staticClass:\"md:mt-16 container xl:p-0\"},[_c('div',{staticClass:\"flex flex-col-reverse xl:flex-col\"},[_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto container xl:p-0\"},[_c('div',{staticClass:\"mt-11\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu village\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3 xl:max-w-screen-md\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Create unique packages, combi tickets, and digital vouchers\" ))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"\"))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu you can generate more revenue & get more guests to your region by offering premade packages and revenue share models for local partners through our unique revenue share models. \" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])])]),_c('div',{staticClass:\"mx-auto max-w-screen-lg md:mt-12\"},[_c('img',{staticClass:\"\\n flex h-80 md:h-auto object-cover object-left lg:object-contain container pr-0\",attrs:{\"src\":_vm.media.section4.desktop1}})])])]),_c('div',{staticClass:\"mt-20 xl:mt-28\"},[_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex max-w-sm mx-auto container\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section5.desktop1}})])]),_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto\"},[_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex max-w-lg\"},[_c('img',{staticClass:\"max-w-lg object-contain\",attrs:{\"src\":_vm.media.section5.desktop1,\"width\":\"400\"}})])]),_c('div',{staticClass:\"mt-11 xl:mt-2 md:w-full container xl:p-0\"},[_c('div',{staticClass:\"md:max-w-2xl container xl:p-0\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu village\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Museum Curators and Marketing Managers\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu village your local, national and regional cultural institutions can streamline their operations from curation to commercialization, all in one place.\" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"At Vizgu we know that planning is KEY – which is why we have a vast array of features from calendar, ticket systems to donation and memberships- all in one place.\" ))+\" \")])]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])])])]),_c('div',{staticClass:\"mt-16\"},[_c('div',{staticClass:\"flex flex-col gap-4 xl:hidden container\"},[_c('div',{staticClass:\"justify-center items-center flex max-w-sm mx-auto\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section6.mobile1}})]),_c('div',{staticClass:\"justify-center items-center flex max-w-sm mx-auto\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section6.mobile2}})])]),_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto container mx:p-0\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 md:max-w-5xl container mx:p-0\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu village\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Podwalk and content providers / creators\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8 mt-4\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Explore our unique Podwalks, designed to bring interactive and immersive experiences to museums and cultural spaces. Our Podwalk service creates engaging audio tours, enhancing visitor exploration with storytelling and information. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Podwalks are crafted to enrich visitor engagement, bring museum collections & the cultural heritage of your region to life in new and exciting ways.\" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu you can add paywalls to your podwalks and generate revenue or create a revenue share models with your partners - all in one place!\" ))+\" \")]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us for a demo\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])])]),_c('div',{staticClass:\"hidden xl:flex w-full max-w-screen-lg mx-auto mt-12\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.section6.desktop1}})])]),_c('div',{staticClass:\"mt-20 xl:mt-28\"},[_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex container max-w-sm\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section7.desktop1}})])]),_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto container mx:p-0\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 container mx:p-0\"},[_c('div',{staticClass:\"md:max-w-2xl\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu village\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Tour Guides\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Manage your tour guides with easy booking and people management. Say goodbye to fragmented calendars, long booking times, excel sheets & outdated systems. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"With Vizgu Tour guide feature - you can manage your team from direct messaging trough email, SMS and in Platform messaging.\" ))+\" \")])]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Reach out to us for a demo and streamline your guide management process today.\" ))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])]),_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex max-w-lg\"},[_c('img',{staticClass:\"max-w-lg object-contain\",attrs:{\"src\":_vm.media.section7.desktop1,\"width\":\"400\"}})])])])]),_c('div',{staticClass:\"mt-20 xl:mt-28\"},[_c('div',{staticClass:\"block xl:hidden\"},[_c('div',{staticClass:\"justify-center items-center flex container\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section8.desktop1}})])]),_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto container mx:p-0\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 container mx:p-0\"},[_c('div',{staticClass:\"md:max-w-2xl\"},[_c('div',{staticClass:\"text-green5 font-bold xl:text-lg\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Vizgu village\"))+\" \")]),_c('div',{staticClass:\"font-bold text-2xl block xl:text-4xl xl:mt-3\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Volunteer management\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Volunteers are the unsung heroes of culture and destinations worldwide. \" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Volunteers often serve as ambassadors for their communities, welcoming visitors with warmth and hospitality, thereby enriching the travel experience and fostering cross-cultural understanding.\" ))+\" \")]),_c('div',{staticClass:\"mt-2 xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Learn how you can manage your volunteers through our unique Volunteer management feature.\" ))+\" \")])]),_c('div',{staticClass:\"font-bold text-base mt-3 xl:text-xl xl:mt-6\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Reach out to us and book a demo!\"))+\" \")]),_c('div',{staticClass:\"mt-5 xl:w-60 xl:mt-8\"},[_c('BookDemo')],1)])]),_c('div',{staticClass:\"flex flex-col gap-4\"},[_c('div',{staticClass:\"hidden xl:flex max-w-lg\"},[_c('img',{staticClass:\"max-w-lg object-contain\",attrs:{\"src\":_vm.media.section8.desktop1,\"width\":\"400\"}})])])])]),_c('div',{staticClass:\"mt-20\"},[_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto container mx:p-0\"},[_c('div',{staticClass:\"mt-11 xl:mt-2 container mx:p-0\"},[_c('div',{staticClass:\"font-bold font-raleway tracking-tight text-2xl block xl:text-5xl xl:mt-28 text-left md:text-center max-w-screen-lg mx-auto\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Become a data driven destination hub with Vizgu insights\"))+\" \")]),_c('div',{staticClass:\"font-bold text-sm block xl:text-lg xl:mt-12 text-left md:text-center my-4\"},[_vm._v(\" \"+_vm._s(_vm.$t(\"Before, During and After.\"))+\" \")]),_c('div',{staticClass:\"font-light tracking-wide xl:text-xl xl:leading-8\"},[_c('div',{staticClass:\"mt-2 xl:mt-6 text-left lg:text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Transform your destination into a data-driven hub of insights with Vizgu Insights. From pre-trip planning to on-the-ground experiences and post-visit analysis, our comprehensive platform empowers destinations to harness the power of data at every stage of the user journey. Maximize visitor satisfaction, optimize resources, and make informed decisions to shape the future of your destination with Vizgu Insights.\" ))+\" \")])])])]),_c('div',{staticClass:\"block xl:hidden mt-8\"},[_c('div',{staticClass:\"justify-center items-center flex container\"},[_c('img',{staticClass:\"container\",attrs:{\"src\":_vm.media.section9.desktop1}})])]),_c('div',{staticClass:\"hidden xl:flex w-full max-w-screen-lg mx-auto mt-12\"},[_c('img',{staticClass:\"container object-contain\",attrs:{\"src\":_vm.media.section9.desktop1}})])]),_c('div',{staticClass:\"container mt-28 md:mt-52\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"border-dotted border-gray4 border-4 max-w-screen-lg mx-auto pb-20 container\"},[_c('div',{staticClass:\"xl:flex xl:gap-8 max-w-screen-lg mx-auto container mt-20 md:max-w-2xl\"},[_c('div',[_c('div',{staticClass:\"mt-2 xl:mt-6 text-center font-light text-2xl\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"By integrating e-commerce with storytelling, Vizgu ensures guests spend more time engaged, translating into increased revenue for local businesses & your region. \" ))+\" \")]),_c('div',{staticClass:\"mt-20 text-center font-semibold text-xl xl:text-2xl\"},[_vm._v(\" \"+_vm._s(_vm.$t( \"Experience the platform of tomorrow, today, and revolutionize your city marketing approach with Vizgu.\" ))+\" \")])])]),_c('div',{staticClass:\"flex w-full max-w-screen-md mx-auto mt-4\"},[_c('img',{staticClass:\"container mx-auto object-contain\",attrs:{\"src\":_vm.media.section10.desktop1}})])])])]),_c('div',{staticClass:\"mt-80\"},[_c('PlatformFAQ')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport VideoFrame from \"@/components/vizguaps/VideoFrame.vue\";\nimport PlatformFAQ from \"@/components/PlatformFAQ.vue\";\nimport BookDemo from \"@/components/vizguaps/BookDemo.vue\";\n\nimport {Role, roleList} from \"@/data\";\nimport {TranslateResult} from \"vue-i18n\";\nimport {isMobile} from \"@/utils/dom\";\n\n@Component({\n components: {\n VideoFrame,\n BookDemo,\n PlatformFAQ\n }\n})\nexport default class VizguVillage extends Vue {\n mediaPath(file: string) {\n return require(`@/assets/images/vizgu-village/${file}`);\n }\n\n get isMobile() {\n return isMobile();\n }\n\n get videoHeight() {\n return this.isMobile ? \"auto\" : \"1000\";\n }\n\n media = {\n section1: {\n desktop1: this.mediaPath(\"section1-1-desktop.png\"),\n mobile1: this.mediaPath(\"section1-1-mobile.png\")\n },\n section2: {\n desktop1: this.mediaPath(\"section2-1-desktop.png\"),\n mobile1: this.mediaPath(\"section2-1-mobile.png\")\n },\n section3: {\n desktop1: this.mediaPath(\"section3-1-desktop.png\"),\n mobile1: this.mediaPath(\"section3-1-mobile.png\")\n },\n section4: {\n desktop1: this.mediaPath(\"section4-1-desktop.png\"),\n mobile1: this.mediaPath(\"section4-1-mobile.png\")\n },\n section5: {\n desktop1: this.mediaPath(\"section5-1-desktop.png\"),\n mobile1: this.mediaPath(\"section5-1-mobile.png\")\n },\n section6: {\n desktop1: this.mediaPath(\"section6-1-desktop.png\"),\n mobile1: this.mediaPath(\"section6-1-mobile.png\"),\n mobile2: this.mediaPath(\"section6-2-mobile.png\")\n },\n section7: {\n desktop1: this.mediaPath(\"section7-1-desktop.png\"),\n mobile1: this.mediaPath(\"section7-1-mobile.png\")\n },\n section8: {\n desktop1: this.mediaPath(\"section8-1-desktop.png\"),\n mobile1: this.mediaPath(\"section8-1-mobile.png\")\n },\n section9: {\n desktop1: this.mediaPath(\"section9-1-desktop.png\"),\n mobile1: this.mediaPath(\"section9-1-mobile.png\")\n },\n section10: {\n desktop1: this.mediaPath(\"section10-1-desktop.png\"),\n mobile1: this.mediaPath(\"section10-1-mobile.png\")\n }\n };\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VizguVillage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VizguVillage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VizguVillage.vue?vue&type=template&id=022bc170&\"\nimport script from \"./VizguVillage.vue?vue&type=script&lang=ts&\"\nexport * from \"./VizguVillage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VIcon,VImg})\n","import Vue from \"vue\";\nimport VueRouter, {RouteConfig, Route} from \"vue-router\";\nimport Places from \"@//views/Places.vue\";\nimport Venues from \"@//views/Venues.vue\";\nimport Events from \"@//views/Events.vue\";\nimport Wayfinders from \"@//views/Wayfinders.vue\";\nimport Exhibitions from \"@//views/Exhibitions.vue\";\nimport Artworks from \"@//views/Artworks.vue\";\nimport Artists from \"@//views/Artists.vue\";\nimport Cities from \"@//views/Cities.vue\";\nimport Countries from \"@//views/Countries.vue\";\nimport Home from \"@//views/Home.vue\";\nimport Venue from \"@/views/Venue.vue\";\nimport Exhibition from \"@/views/Exhibition.vue\";\nimport Event from \"@/views/Event.vue\";\nimport Wayfinder from \"@/views/Wayfinder.vue\";\nimport Artwork from \"@/views/Artwork.vue\";\nimport Artist from \"@/views/Artist.vue\";\nimport Support from \"@/views/footer/Support.vue\";\nimport GiftCard from \"@/views/footer/GiftCard.vue\";\nimport BecomePartner from \"@/views/footer/BecomePartner.vue\";\nimport AboutUs from \"@/views/vizguAps/AboutUs.vue\";\nimport Careers from \"@/views/vizguAps/Careers.vue\";\nimport Platform from \"@/views/vizguAps/PlatformV3.vue\";\nimport {embeddedStore} from \"@/store\";\nimport Country from \"@/views/Country.vue\";\nimport City from \"@/views/City.vue\";\nimport Search from \"@/views/Search.vue\";\nimport Tickets from \"@/views/Tickets.vue\";\nimport Cart from \"@/views/Cart.vue\";\nimport Checkout from \"@/views/Checkout.vue\";\nimport Payment from \"@/views/PaymentV2.vue\";\nimport CheckoutProcess from \"@/views/CheckoutProcess.vue\";\nimport VizguPlatform from \"@/views/vizguAps/VizguPlatform.vue\";\nimport ForContentCreators from \"@/views/vizguAps/ForContentCreators.vue\";\nimport VizguVillage from \"@/views/vizguAps/VizguVillage.vue\";\n\nVue.use(VueRouter);\n\nconst publicRoutes: Array = [\n {\n path: \"/\",\n // name: \"Home\",\n // component: Home,\n // meta: {\n // layout: \"FrontPageLayout\"\n // }\n redirect: \"/vizgu-platform\"\n },\n {\n path: \"/places\",\n name: \"Destinations\",\n component: Places,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/venues\",\n name: \"Places\",\n component: Venues,\n meta: {\n layout: \"FrontPageLayout\",\n breadCrumb() {\n return [\n {\n text: \"Home\",\n to: {name: \"Home\"},\n href: \"/\"\n },\n {\n text: \"Venues\",\n to: {name: \"Venues\"},\n href: \"/venues\",\n disabled: true\n }\n ];\n }\n }\n },\n {\n path: \"/venues/:id\",\n name: \"Venue\",\n component: Venue,\n meta: {\n layout: \"FrontPageLayout\",\n breadCrumb(route: Route) {\n const id: string | undefined = route.params?.id;\n return [\n {\n text: \"Home\",\n to: {name: \"Home\"},\n href: \"/\"\n },\n {\n text: \"Venues\",\n to: {name: \"Venues\"},\n href: \"/venues\"\n },\n {\n text: embeddedStore.currentVenueName,\n to: {name: \"Venue\"},\n href: `/venues/${id || \"\"}`,\n disabled: true\n }\n ];\n }\n }\n },\n {\n path: \"/exhibitions\",\n name: \"Exhibitions\",\n component: Exhibitions,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/exhibitions/:id\",\n name: \"Exhibition\",\n component: Exhibition,\n meta: {\n layout: \"FrontPageLayout\",\n breadCrumb(route: Route) {\n const id: string | undefined = route.params?.id;\n return [\n {\n text: \"Home\",\n to: {name: \"Home\"},\n href: \"/\"\n },\n {\n text: \"Exhibitions\",\n to: {name: \"Exhibitions\"},\n href: \"/exhibitions\"\n },\n {\n text: embeddedStore.currentExhibition?.name || \"Loading...\",\n to: {name: \"Exhibition\"},\n href: `/exhibitions/${id || \"\"}`,\n disabled: true\n }\n ];\n }\n }\n },\n {\n path: \"/events\",\n name: \"Events\",\n component: Events,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/events/:id\",\n name: \"Event\",\n component: Event,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n /*\n {\n path: \"/event\",\n name: \"Event\",\n component: Event,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n */\n {\n path: \"/wayfinders\",\n name: \"Wayfinders\",\n component: Wayfinders,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/wayfinders/:id\",\n name: \"Wayfinder\",\n component: Wayfinder,\n meta: {\n layout: \"FrontPageLayout\",\n breadCrumb(route: Route) {\n const id: string | undefined = route.params?.id;\n return [\n {\n text: \"Home\",\n to: {name: \"Home\"},\n href: \"/\"\n },\n {\n text: \"Wayfinders\",\n to: {name: \"Wayfinders\"},\n href: \"/wayfinders\"\n },\n {\n text: embeddedStore.currentWayfinder?.name || \"Loading...\",\n to: {name: \"Wayfinder\"},\n href: `/wayfinders/${id || \"\"}`,\n disabled: true\n }\n ];\n }\n }\n },\n {\n path: \"/artworks\",\n name: \"Artworks\",\n component: Artworks,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/artwork\",\n name: \"Artwork\",\n component: Artwork,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/artists\",\n name: \"Artists\",\n component: Artists,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/cities\",\n name: \"Cities\",\n component: Cities,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/artist\",\n name: \"Artist\",\n component: Artist,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/countries\",\n name: \"Countries\",\n component: Countries,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/country/:id\",\n name: \"Country\",\n component: Country,\n meta: {\n layout: \"FrontPageLayout\",\n breadCrumb(route: Route) {\n const id: string | undefined = route.params?.id;\n return [\n {\n text: \"Home\",\n to: {name: \"Home\"},\n href: \"/\"\n },\n {\n text: \"Countries\",\n to: {name: \"Countries\"},\n href: \"/countries\"\n },\n {\n text: embeddedStore.currentVenueCountry,\n to: {name: \"Venue\"},\n href: `/country/${id || \"\"}`,\n disabled: true\n }\n ];\n }\n }\n },\n {\n path: \"/city/:id\",\n name: \"City\",\n component: City,\n meta: {\n layout: \"FrontPageLayout\",\n breadCrumb(route: Route) {\n const id: string | undefined = route.params?.id;\n return [\n {\n text: \"Home\",\n to: {name: \"Home\"},\n href: \"/\"\n },\n {\n text: \"Cities\",\n to: {name: \"Cities\"},\n href: \"/cities\"\n },\n {\n text: embeddedStore.currentVenueCity,\n to: {name: \"Venue\"},\n href: `/city/${id || \"\"}`,\n disabled: true\n }\n ];\n }\n }\n },\n {\n path: \"/support\",\n name: \"Support\",\n component: Support,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/vizgu-platform\",\n name: \"Vizgu museum platform\",\n component: VizguPlatform,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n {\n path: \"/for-content-creators\",\n name: \"For content creators\",\n component: ForContentCreators,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n\n {\n path: \"/vizgu-village\",\n name: \"Vizgu village\",\n component: VizguVillage,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n {\n path: \"/about\",\n name: \"About Us\",\n component: AboutUs,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n /*\n {\n path: \"/pricing\",\n name: \"Pricing & Licencing\",\n component: PricingPage,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n */\n {\n path: \"/careers\",\n name: \"Careers\",\n component: Careers,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n {\n path: \"/platform\",\n name: \"Vizgu platform\",\n component: Platform,\n meta: {\n layout: \"VizguApSLayout\"\n }\n },\n {\n path: \"/become-partner\",\n name: \"Become partner\",\n component: BecomePartner,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/giftcards\",\n name: \"Gift cards\",\n component: GiftCard,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/search\",\n name: \"Search\",\n component: Search,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/tickets\",\n name: \"Tickets\",\n component: Tickets,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/cart\",\n name: \"Cart\",\n component: Cart,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/checkout\",\n name: \"Checkout\",\n component: Checkout,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/payment/:orderId\",\n name: \"Payment\",\n component: Payment,\n meta: {\n layout: \"FrontPageLayout\"\n }\n },\n {\n path: \"/checkout-process/:orderId\",\n name: \"Checkout Process\",\n component: CheckoutProcess,\n meta: {\n layout: \"FrontPageLayout\"\n }\n }\n];\n\nconst router = new VueRouter({\n mode: \"hash\",\n base: process.env.BASE_URL,\n routes: [...publicRoutes],\n scrollBehavior: () => {\n return {selector: \"#v\", position: {top: 0}};\n }\n});\n\nexport default router;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{staticClass:\"stroke-current w-full h-full\",attrs:{\"fill\":\"none\"}},[_c('use',{attrs:{\"href\":'#' + _vm.icon}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport {Component, Vue} from \"vue-property-decorator\";\n\n@Component({\n components: {},\n props: {\n icon: String\n }\n})\nexport default class Icon extends Vue {\n //empty\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Icon.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Icon.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Icon.vue?vue&type=template&id=7e528d10&\"\nimport script from \"./Icon.vue?vue&type=script&lang=ts&\"\nexport * from \"./Icon.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib\";\nimport Icon from \"@/baseComponents/Icon.vue\";\nimport i18n from \"@/plugins/i18n\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: {disable: true},\n breakpoint: {\n thresholds: {\n xs: 640,\n sm: 768,\n md: 1024,\n lg: 1280\n },\n mobileBreakpoint: \"sm\"\n },\n icons: {\n component: Icon,\n values: {\n dropdown: \"menu-down\",\n checkboxOn: \"checkbox-on\",\n checkboxOff: \"checkbox-off\",\n radioOn: \"radio-on\",\n radioOff: \"radio-off\",\n next: \"right\",\n prev: \"left\"\n }\n },\n lang: {\n t: (key, ...params) => i18n.t(key, params) as string\n }\n});\n","import \"./class-component-hooks\";\nimport Vue from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport vuetify from \"./plugins/vuetify\";\nimport \"./assets/tailwind.css\";\nimport \"./sass/overrides.scss\";\nimport vueDebounce from \"vue-debounce\";\nimport i18n from \"@/plugins/i18n\";\nimport store from \"@/store/index\";\nimport {Icon} from \"@iconify/vue2\";\n\nVue.config.productionTip = false;\n\nVue.use(vueDebounce);\nVue.component(\"Icon\", Icon);\n\nconst app = new Vue({\n router,\n i18n,\n store,\n vuetify,\n render: h => h(App)\n});\napp.$store.dispatch(\"embedded/initialize\");\napp.$store.dispatch(\"cart/initialize\");\napp.$mount(\"#app\");\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAPCAYAAABN7CfBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASRSURBVHgBzVZ/SJxlHP887925m7P0prkaNWRztghmlAM3KjCUFVvQBk7naIz+cJlgg3ln9s+uRipew2KwlRbRapu6omW0wIWeRULNdAuKlQUX1CQ35t05zx937/P0ed+z252aomOwL7zv8zzfX8/31/N8H4E7HboD+dD1bOiyD1szLs/FInC7oNS5D1Kko73xCJYKXn8FJI5NrxSk2olCx1l87S+BRWzGZKQFT6f/rOF2gUIRQ1SBWwGJvXErAU28iPPXU6GpD6DUy0iyvm0QrDGWvbXpGAtnc5YJISZhwTW0efr/d4My53pMqg00dpzKfkdrg28Wj8C9eO5Amjn3p03A656I0fa47kdYPAylW6ELP8Yn+vDV0ckZXgQBLd4pBYcjjGBwiFFaS9kr0W0MKHF9QfJmrtITdCjVBYusxOkjN2txR2U6kpJPUfSpuCCMQcn3Mdx3EF5vJKrTeZI8ZdThjzokfkRbYyH2ue0YH3vLCAORd8U5PEgbWsjjieG6Rx4hroPEByhPw+UWFDh8xGcRnwtdeVG0MvCfEdtpcRcZ66DbLkObslNwJ9eHIS1UgpyY4qTkz0h7gkrciGgfwSaX0YAqRqwKmZumWMjOxGyow9GAWIbMcXz8JSL3U3cTNHkc4UgIwppP3A4zGPFQ4LjI/xp8pzKxBVcpo6IEGzOqh+EYDEX9j2aCROlB25uuBCW7nG9Q8FUIrYDl4sXu6o2Q2iVSjjFilQm8pTXnGPVcpPrXo7k5NJ2J3eRLPHclzi46nIN/lmexvCJYLHSH8qEmO6NZFH/AcXfe/Adbic/NUddzzTFizTBHqS7N5sUF/ldhxJGxgM4e/u7DqrFqPF+9AosFNVV1swzVOlwPPmudV8CihVnrRr5s5lrjITSSp6EYu2o2JjLLPIODDs9/bduWNyESKqKeekyJQ8z295z3MovtOOO5iIVAMPpKxTml+5Z4xYo1lM5J+JQI8jsHqQfmFT35WpC33uM8lFu5esewinE5yOtzgKVWv+DWPU2HIGQDg3uGDpSjcOW3ViwJlAftnvdwK/CJh3WNTnNe+koWM3mCQXChrKIRp46PxPi6h1MQtmWjN+0nuIWE283ScNfGq1pcJqT8KzqK3Fk0ox+UulbH1gpGTxAorr0ngW9bhQPF7pQEnNFjJHpNezSHPYY3GpuydcPKLD0Z+AEdKhlzwOIy4RgdRCD1AlNfToOHEZ5ohWY3AlHE7ffTkL9p/TPGvcpnwTdcvwChn+ATpA5hyw182jCAlJRW3rNZPAstbHZfkh5iYzVKaw8/Hz6uG4rtZxOPMmB506vHsCKwgeOsBry4TDQ3hyEntjHK5/m9Dqv9N2pgX8FRrv18pLlMBww43fih2bwEDVR0yCr7sb2ckbTwLaWCPAoeJOEX2Cw+aJZ3KXENMlyUsJ/CQLTJmeCDuvHnXGZFbxLjCYDlQfPQzQSDNpoeQEfNaAK+xLmO/YPPDsmDKfrR2nhlrg1QUstDLx9kvCxorz8bw5cdWIuwPYcB4CuBDj6U/Gu03mdA59XVsC/bxFuvh83PP9cW/wIf+K9e85xpRQAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"img/section-1.88019e7c.png\";","module.exports = __webpack_public_path__ + \"img/section1-1-mobile.0281b13f.png\";","module.exports = __webpack_public_path__ + \"img/dot.4ca9d7be.svg\";","module.exports = __webpack_public_path__ + \"img/platform-main.1bec3379.png\";","module.exports = __webpack_public_path__ + \"img/donation-2-desktop.42024ed7.png\";","module.exports = __webpack_public_path__ + \"img/ticketing-system-2-deskop.6073dbf7.png\";","module.exports = __webpack_public_path__ + \"img/info-4.e1bb245b.png\";","module.exports = __webpack_public_path__ + \"img/section4-1-mobile.fd89a7db.png\";","module.exports = __webpack_public_path__ + \"img/curation-1-desktop.606282b4.png\";","module.exports = __webpack_public_path__ + \"img/section4-1-mobile.9fc5c372.png\";","module.exports = __webpack_public_path__ + \"img/desktop-tablet-stack.1510f8b1.png\";","module.exports = __webpack_public_path__ + \"img/donation-2-mobile.cb23fb5d.png\";","module.exports = __webpack_public_path__ + \"img/donation-1-desktop.6ec002e1.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASCAYAAACw50UTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAJhSURBVHgBlZRPaBNBFMa/maSptbRNY2wSY+nWg9iLRkSw+IeIIqg5eDGooFAL2lP15FkPeu9NsBBRT572ZKuiFdEiWDABhVLRBCJJjA2mxtqadHd8s26Ksdld+uCXffPmzbdvXmaH4T8rIjjEwc/oYBEG4aPQewEkNeg3QihkMJ71oYWPgonjANtBMPKTEPp9ik/ibDhb12J1p4BAvwtuldydsLBEbES9Fr8YJdfbNEEgA45LOB9+Kodc/uQRVDhcz+2E30VO4OtA7FQ0X/Fa5VCpCr1gEndzh1bF3XDdob0pVmsWOgN4dnjY8PfML0GpVGFj1FWhIpH28iJC8i1H7bJf7T+HFXfr6nhfcREO1k0lX+VUccwpMxfa3jAO/6qhbUXYL+IsygVYDxystKl3Tcy/XLNfxFgfh4MJ1jzFoW7D5MqyXQITOjoqpTXxnx4XHMr6JnuuOmRhW/ptw/hHC0fZURyv+WZ8eUFbfGOXFUk9bhhPB9rhYFVotTGjoQKeEWqAZXtChY84MjVu+HNdrfjQ3WYvrYkraFdyhngA6ZSG2kG6CzJW+XtnVPg/TaUmejvtZMvQ9FEMbb2NOKuyf2dK2EJnjsWpTcPEgBleJH9GgN8KIPsEibwCrl2no3aS5vxGBmMl6NoDMG0MF5Q0nGwW/o7v6O8TOG39z90r9OBhMYh12CARIXbh7+03aD53m/NyTn6yN814lPCZzwZzNxGX94ysdonwEHPEMaKLOEDIL3qC2EAohDw6l4nP5ouTdaFmW+ZmQoWYJzYS02Yhj0zxWUIjFkx+E2HiJbFcF/oDEV6l4wJwKVIAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/phone-cadw.a9e85abd.png\";","module.exports = __webpack_public_path__ + \"img/peter-krusager.7b5d43cd.png\";","module.exports = __webpack_public_path__ + \"img/section2-1-desktop.1c94cdca.png\";","module.exports = __webpack_public_path__ + \"img/role-help-donations.c0cc0ed5.png\";","module.exports = __webpack_public_path__ + \"img/form-sent.041d5702.png\";","module.exports = __webpack_public_path__ + \"img/donation-1-mobile.d3487f4a.png\";","module.exports = __webpack_public_path__ + \"img/section5-1-desktop.413cefc9.png\";","module.exports = __webpack_public_path__ + \"img/section3-1-mobile.f64a3cdd.png\";","var map = {\n\t\"./launch-desktop.png\": \"1a9d\",\n\t\"./launch-logo.png\": \"6ef6\",\n\t\"./launch-main.png\": \"1638\",\n\t\"./launch-mobile.png\": \"669b\",\n\t\"./launch-vizgu-mobile.png\": \"4e3d\",\n\t\"./main-banner.png\": \"a7d9\",\n\t\"./platform-main.png\": \"d8ae\"\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 = \"faf5\";","module.exports = __webpack_public_path__ + \"img/membership-2-desktop.6e4e5a03.png\";"],"sourceRoot":""}