{"version":3,"file":"js/app-legacy.a81478f5.js","mappings":"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","sources":["webpack://winpos-weborder/./node_modules/@stencil/core/internal/client/ lazy ^\\.\\/.*\\.entry\\.js.*$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","webpack://winpos-weborder/./src/breakpoints/index.ts","webpack://winpos-weborder/./src/composables/useApplicationInsights.ts","webpack://winpos-weborder/./src/composables/useEmitter.ts","webpack://winpos-weborder/./src/enums/index.ts","webpack://winpos-weborder/./src/functions/index.ts","webpack://winpos-weborder/./src/keys/index.ts","webpack://winpos-weborder/./src/components/OrderItem.vue?9293","webpack://winpos-weborder/./src/components/OrderItem.vue","webpack://winpos-weborder/./src/components/OrderComponent.vue?49f0","webpack://winpos-weborder/./src/components/OrderComponent.vue","webpack://winpos-weborder/./src/components/LanguageSelector.vue?e70a","webpack://winpos-weborder/./src/components/LanguageSelector.vue","webpack://winpos-weborder/./src/components/PaidOrderIcon.vue?fc10","webpack://winpos-weborder/./src/components/PaidOrderIcon.vue","webpack://winpos-weborder/./src/components/CouponsIcon.vue?bdcf","webpack://winpos-weborder/./src/components/CouponsIcon.vue","webpack://winpos-weborder/./src/components/MembershipCard.vue?a256","webpack://winpos-weborder/./src/components/MembershipCard.vue","webpack://winpos-weborder/./src/components/ProfileMenu.vue?7103","webpack://winpos-weborder/./src/components/ProfileMenu.vue","webpack://winpos-weborder/./src/components/NavigationComponent.vue?d818","webpack://winpos-weborder/./src/components/NavigationComponent.vue","webpack://winpos-weborder/./src/components/LanguageSelectorPopup.vue?4886","webpack://winpos-weborder/./src/components/LanguageSelectorPopup.vue","webpack://winpos-weborder/./src/components/ErrorMessage.vue?c228","webpack://winpos-weborder/./src/components/ErrorMessage.vue","webpack://winpos-weborder/./src/components/UpdateComponent.vue?5d33","webpack://winpos-weborder/./src/components/UpdateComponent.vue","webpack://winpos-weborder/./src/App.vue?2a5e","webpack://winpos-weborder/./src/App.vue","webpack://winpos-weborder/./src/i18n/en.ts","webpack://winpos-weborder/./src/i18n/sv.ts","webpack://winpos-weborder/./src/i18n/fi.ts","webpack://winpos-weborder/./src/i18n/ru.ts","webpack://winpos-weborder/./src/i18n/index.ts","webpack://winpos-weborder/./src/i18n/customers/sibylla/index.ts","webpack://winpos-weborder/./src/registerServiceWorker.ts","webpack://winpos-weborder/./src/main.ts","webpack://winpos-weborder/./src/views/Offline.vue?02fe","webpack://winpos-weborder/./src/views/Offline.vue","webpack://winpos-weborder/./src/functions/position-distance.ts","webpack://winpos-weborder/./src/components/ShopSelector.vue?bbf0","webpack://winpos-weborder/./src/components/ShopSelector.vue","webpack://winpos-weborder/./src/views/HomePage.vue?a457","webpack://winpos-weborder/./src/views/HomePage.vue","webpack://winpos-weborder/./src/router/index.ts","webpack://winpos-weborder/./src/stores/app.ts","webpack://winpos-weborder/./src/stores/auth.ts","webpack://winpos-weborder/./src/stores/cart.ts","webpack://winpos-weborder/./src/stores/coupon.ts","webpack://winpos-weborder/./src/stores/errorMessage.ts","webpack://winpos-weborder/./src/stores/menu.ts","webpack://winpos-weborder/./src/stores/navigation.ts","webpack://winpos-weborder/./src/stores/order.ts","webpack://winpos-weborder/./src/stores/shop.ts","webpack://winpos-weborder/./src/types/index.ts","webpack://winpos-weborder/./src/components/ArticleImage.vue?e84c","webpack://winpos-weborder/./src/components/ArticleImage.vue","webpack://winpos-weborder/./src/components/ConfirmPopup.vue?bc9d","webpack://winpos-weborder/./src/components/ConfirmPopup.vue","webpack://winpos-weborder/./src/components/FavoriteButton.vue?82d9","webpack://winpos-weborder/./src/components/FavoriteButton.vue","webpack://winpos-weborder/./src/components/LoaderComponent.vue?911f","webpack://winpos-weborder/./src/components/LoaderComponent.vue","webpack://winpos-weborder/./src/components/DropdownComponent.vue?c07a","webpack://winpos-weborder/./src/components/DropdownComponent.vue","webpack://winpos-weborder/./src/components/DeliverySpotSelector.vue?96ff","webpack://winpos-weborder/./src/components/DeliverySpotSelector.vue","webpack://winpos-weborder/./src/components/OrderShopInfo.vue?2b43","webpack://winpos-weborder/./src/components/OrderShopInfo.vue","webpack://winpos-weborder/webpack/bootstrap","webpack://winpos-weborder/webpack/runtime/chunk loaded","webpack://winpos-weborder/webpack/runtime/compat get default export","webpack://winpos-weborder/webpack/runtime/define property getters","webpack://winpos-weborder/webpack/runtime/ensure chunk","webpack://winpos-weborder/webpack/runtime/get javascript chunk filename","webpack://winpos-weborder/webpack/runtime/get mini-css chunk filename","webpack://winpos-weborder/webpack/runtime/global","webpack://winpos-weborder/webpack/runtime/hasOwnProperty shorthand","webpack://winpos-weborder/webpack/runtime/load script","webpack://winpos-weborder/webpack/runtime/make namespace object","webpack://winpos-weborder/webpack/runtime/publicPath","webpack://winpos-weborder/webpack/runtime/css loading","webpack://winpos-weborder/webpack/runtime/jsonp chunk loading","webpack://winpos-weborder/webpack/startup"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 41993;\nmodule.exports = webpackEmptyAsyncContext;","\nexport const BREAKPOINTS = {\n tabletPortrait: 600,\n tabletLandscape: 900,\n desktop: 1200,\n desktopBig: 1800,\n lowHeight: 600\n}","import {ApplicationInsights} from \"@microsoft/applicationinsights-web\";\n\nlet appInsights:ApplicationInsights | null = null;\n\nif(process.env.VUE_APP_INSIGHTS_CONN_STRING){\n appInsights = new ApplicationInsights({\n config: {\n connectionString: process.env.VUE_APP_INSIGHTS_CONN_STRING\n }\n });\n appInsights.loadAppInsights();\n}\n\nexport function useApplicationInsights():ApplicationInsights | null {\n return appInsights;\n}","import { getCurrentInstance } from 'vue';\nexport const useEmitter = () => {\n const internalInstance = getCurrentInstance();\n const emitter = internalInstance?.appContext.config.globalProperties.emitter;\n return emitter;\n};\n","\nexport enum CartItemType {\n Article,\n Suggested\n}\n\nexport enum OrderType {\n TakeAway = \"takeAway\",\n DineInPlace = \"dineInPlace\"\n}\n\n\nexport enum ScreenType {\n Large = 'large',\n Small = 'small'\n}\n\nexport enum OrderStatusState {\n CalculatedPrice = 'calculatedPrice',\n Added = 'added',\n Started = 'started',\n Finnished = 'finnished',\n Done = 'done',\n Delivered = 'delivered',\n Rollbacked = 'rollbacked',\n}","import {Currency, ResponseError, Shop, Translation, Translations} from '@/types';\nimport MenuItem from \"@/components/MenuItem.vue\";\n\nexport const showFractions = (currency:Currency)=>{\n const fractCurrencies = ['SEK', 'NOK', 'DKK'];\n if(fractCurrencies.includes(currency.name))\n return true;\n return false;\n}\n\n//returns id of format 'aaaaaaaa'-'aaaa'-'aaaa'-'aaaa'-'aaaaaaaaaaaa'\nexport const guid = () => {\n const s4 = () => {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n \n return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();\n}\n\n//Ex: statusCode: 500, prefix: \"error.\" => \"error.server\"; \nexport const errorToi18nKey = (statusCode: number, prefix = \"error.\") : string => {\n\n let message = 'unknown';\n\n if (statusCode >= 500) {\n message = 'server';\n } else if(statusCode === 404) {\n message = 'notFound';\n } else if (statusCode >= 400) {\n message = 'badRequest';\n }\n else if (statusCode >= 300) {\n message = 'moved';\n }\n\n return `${prefix}${message}`;\n}\n\nexport const toKebabCase = (str: string) =>\n str\n .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g)\n ?.map((x) => x.toLowerCase())\n .join(\"-\") ?? \"\"; \n\n\nexport function isResponseError (obj: any): obj is ResponseError {\n return 'type' in obj && 'title' in obj && 'status' in obj;\n}\n\nexport function generateSlug(text:string):string{\n return text\n .toLowerCase() // Convert to lowercase\n .trim() // Trim leading/trailing spaces\n .replace(/[^a-z0-9\\s-]/g, '') // Remove unsafe characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-'); // Replace multiple hyphens with a single hyphen\n}\n\nexport function isOpen(shop:Shop):boolean {\n if(shop.externalAppUri)\n return true;\n \n return shop.openForBusiness;\n}\n\nexport function i18nTranslate(i18n:Translations, property:string, locale:string, defaultValue?:string, debug?:boolean):string {\n if(debug){\n console.log('i18nTranslate', i18n, property, locale, defaultValue);\n }\n if(!i18n)\n return defaultValue || \"\";\n const translations = i18n[property] as Translation[];\n if(!translations)\n return defaultValue || \"\";\n const text = translations.find(t => t.language === locale)?.text;\n\n return text || defaultValue || \"\";\n}\n\nexport function getI18nImageId(i18n:Translations, locale:string):string|null {\n if(!i18n)\n return null;\n const translations = i18n[\"imageId\"] as Translation[];\n if(!translations)\n return null;\n return translations.find(t => t.language === locale)?.text ?? null;\n}\n\nexport function isReachable(url:string):Promise{\n return fetch(url, { method: 'HEAD', mode: 'no-cors' })\n .then(function(resp) {\n return resp && (resp.ok || resp.type === 'opaque');\n })\n .catch(function(err) {\n console.warn('[conn test failure]:', err);\n });\n}\n\nexport function isDebug() :boolean {\n return process.env.VUE_APP_CUSTOMER === 'development';\n}","//export const cartInjectionKey = \"cart-inject\"; // Symbol();//.for('cart-inject').toString();\n\nexport const suggestedArticlesStorage = \"suggestedArticlesStorage\";\n\nexport const menuStoreKey = \"menuStorage\"; // Symbol.for('menu').toString();\n\nexport const cartStorageKey = \"cartStorage\"; // Symbol().toString();//.for('store').toString();\nexport const authStorageKey = 'authStorage';\n\nexport const shopStorageKey = \"shopStorage\";\n\nexport const navigationStoreKey = \"navigation\";\n\nexport const appStoreKey = \"app-store\";\n\nexport const addItemEventKey = \"add-item-event\";\n\nexport const articleInfoStoreKey = \"articleInfoStore\"\n\nexport const orderStoreKey = \"orderStorage\";\n\nexport const errorStoreKey = \"errorStoreKey\";\nexport const couponStoreKey = \"coupon-store\";","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, unref as _unref, renderList as _renderList, Fragment as _Fragment, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, withKeys as _withKeys } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\", \"data-id\"]\nconst _hoisted_2 = { class: \"order-item-image\" }\nconst _hoisted_3 = { class: \"order-item-article\" }\nconst _hoisted_4 = { class: \"order-item-info\" }\nconst _hoisted_5 = { class: \"description\" }\nconst _hoisted_6 = { class: \"order-item-price\" }\nconst _hoisted_7 = { class: \"order-item-choices\" }\nconst _hoisted_8 = { class: \"choice-name\" }\nconst _hoisted_9 = {\n key: 0,\n class: \"choice-price\"\n}\nconst _hoisted_10 = {\n key: 0,\n class: \"order-item-edit\"\n}\nconst _hoisted_11 = { class: \"item-quantity\" }\nconst _hoisted_12 = /*#__PURE__*/_createElementVNode(\"span\", { \"aria-label\": \"-\" }, null, -1)\nconst _hoisted_13 = [\n _hoisted_12\n]\nconst _hoisted_14 = /*#__PURE__*/_createElementVNode(\"span\", { \"aria-label\": \"+\" }, null, -1)\nconst _hoisted_15 = [\n _hoisted_14\n]\nconst _hoisted_16 = { class: \"sr-only\" }\nconst _hoisted_17 = { class: \"sr-only\" }\n\nimport { CartItem } from '@/types';\n import { CartItemType } from '@/enums';\n import ArticleImage from '@/components/ArticleImage.vue';\n import { CartStore } from '@/stores/cart';\n import { reactive, onMounted } from 'vue';\n import router from '@/router';\n import { useEmitter } from '@/composables/useEmitter';\n import {i18nTranslate, toKebabCase} from \"../functions\";\n import { useI18n} from \"vue-i18n\";\n import {MenuStore} from \"@/stores/menu\";\n\n interface Props {\n item: CartItem;\n disabled: boolean,\n editable: boolean,\n curency: string\n }\n\n interface State {\n showEditActions: boolean;\n }\n\n /* Props */\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'OrderItem',\n props: {\n item: null,\n disabled: { type: Boolean },\n editable: { type: Boolean },\n curency: null\n },\n setup(__props: any) {\n\nconst props = __props as {\n item: CartItem;\n disabled: boolean,\n editable: boolean,\n curency: string\n };\n\n /* imports */\n const menuStore = MenuStore();\n const cart = CartStore();\n const emitter = useEmitter();\n const { locale } = useI18n();\n \n /* interface */\n \n\n /* reactive */\n const state = reactive({\n showEditActions: false,\n });\n\n /* Functions */\n const quantity = (quantity: number) => {\n return quantity > 1 ? `${quantity}x` : '';\n };\n\n const toggleEdit = () => {\n\n if (props.disabled || !props.editable) {\n state.showEditActions = false;\n } else {\n state.showEditActions = !state.showEditActions;\n }\n\n if (state.showEditActions) {\n emitter.emit('showEditActions', { id: props.item.id })\n }\n };\n\n const hideEdit = () => {\n state.showEditActions = false;\n }\n\n const increaseItem = (item: CartItem) => {\n if (item) {\n cart.increase(item);\n }\n };\n\n const dataId = (id: string) : string => {\n return `a-${id}`;\n }\n\n const decreaseItem = (item: CartItem) => {\n if (item && item.quantity > 1) {\n cart.decrease(item);\n }\n }\n\n const removeCartItem = (item: CartItem) => {\n if (item) {\n cart.remove(item);\n }\n };\n\n const changeCartItem = (item: CartItem) => {\n \n if (item) {\n hideEdit();\n const result = menuStore.menu?.getArticleItem(item.article.code);\n \n router.push({\n name: 'editOrder',\n params: {\n //categoryName: item.categoryName,\n path: result?.path ?? [],\n articleId: item.article.code, \n orderId: item.id\n }\n });\n }\n }\n\n onMounted(() => {\n emitter.on('onNavigate', hideEdit);\n emitter.on('showEditActions', (data: any) => {\n if (data.id !== props.item.id) {\n hideEdit();\n }\n })\n });\n\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"order-item\", {editable: __props.editable}]),\n style: {\"overflow\":\"hidden\"},\n disabled: __props.disabled,\n \"data-id\": dataId(__props.item.id),\n onClick: _cache[5] || (_cache[5] = _withModifiers(($event: any) => (toggleEdit()), [\"prevent\"])),\n onKeyup: _cache[6] || (_cache[6] = _withKeys(($event: any) => (toggleEdit()), [\"enter\"])),\n tabindex: \"0\"\n }, [\n _createElementVNode(\"span\", _hoisted_2, [\n (_openBlock(), _createBlock(ArticleImage, {\n url: __props.item.article.imageUrl,\n key: __props.item.article.imageUrl\n }, null, 8, [\"url\"]))\n ]),\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"span\", _hoisted_5, _toDisplayString(quantity(__props.item.quantity)) + \" \" + _toDisplayString(_unref(i18nTranslate)(__props.item.article.i18n, \"description\", _unref(locale), __props.item.article.description)), 1),\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString((__props.item.article.price * __props.item.quantity)) + _toDisplayString(__props.curency), 1)\n ]),\n _createElementVNode(\"ol\", _hoisted_7, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.item.flatChoices, (choice) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass({'order-item-choice': true, [_unref(toKebabCase)(choice.type)]: true }),\n key: choice.id\n }, [\n _createElementVNode(\"span\", _hoisted_8, _toDisplayString(quantity(__props.item.quantity)) + \" \" + _toDisplayString(_unref(i18nTranslate)(choice.article.i18n, \"description\", _unref(locale), choice.article.description)), 1),\n (choice.article.price > 0)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, _toDisplayString((choice.article.price * __props.item.quantity)) + _toDisplayString(__props.curency), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n }), 128))\n ])\n ]),\n _createVNode(_Transition, { name: \"from-right\" }, {\n default: _withCtx(() => [\n (state.showEditActions)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [\n _createElementVNode(\"div\", _hoisted_11, [\n _createElementVNode(\"button\", {\n class: \"btn btn-decrease\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (decreaseItem(__props.item)), [\"stop\"]))\n }, _hoisted_13),\n _createElementVNode(\"span\", null, _toDisplayString(__props.item.quantity), 1),\n _createElementVNode(\"button\", {\n class: \"btn btn-increase\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (increaseItem(__props.item)), [\"stop\"]))\n }, _hoisted_15)\n ]),\n (__props.item.type == _unref(CartItemType).Article)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"btn btn-edit\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (changeCartItem(__props.item)), [\"stop\"]))\n }, [\n _createElementVNode(\"span\", _hoisted_16, \"Edit \" + _toDisplayString(_unref(i18nTranslate)(__props.item.article.i18n, \"description\", _unref(locale))), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: \"btn btn-remove\",\n onClick: _cache[3] || (_cache[3] = _withModifiers(($event: any) => (removeCartItem(__props.item)), [\"stop\"]))\n }, [\n _createElementVNode(\"span\", _hoisted_17, \"Remove \" + _toDisplayString(_unref(i18nTranslate)(__props.item.article.i18n, \"description\", _unref(locale))), 1)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (state.showEditActions)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"click-outside\",\n onKeyup: _cache[4] || (_cache[4] = _withKeys(($event: any) => (toggleEdit()), [\"enter\"]))\n }, null, 32))\n : _createCommentVNode(\"\", true)\n ], 42, _hoisted_1))\n}\n}\n\n})","import script from \"./OrderItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./OrderItem.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, withModifiers as _withModifiers, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, TransitionGroup as _TransitionGroup, withCtx as _withCtx, Transition as _Transition } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"order-header\"\n}\nconst _hoisted_2 = {\n key: 1,\n class: \"order-buttons\"\n}\nconst _hoisted_3 = {\n key: 0,\n class: \"suggested-content\"\n}\nconst _hoisted_4 = { key: 1 }\nconst _hoisted_5 = [\"onClick\"]\nconst _hoisted_6 = { class: \"order-info-name\" }\nconst _hoisted_7 = [\"onClick\"]\nconst _hoisted_8 = {\n key: 0,\n class: \"order-header\"\n}\nconst _hoisted_9 = { class: \"order-content\" }\nconst _hoisted_10 = [\"data-index\"]\nconst _hoisted_11 = [\"data-orders\", \"disabled\"]\nconst _hoisted_12 = {\n key: 2,\n class: \"order-content-text\",\n \"data-orders\": \"0\"\n}\nconst _hoisted_13 = { class: \"order-pay\" }\nconst _hoisted_14 = {\n key: 0,\n class: \"order-item total-order\"\n}\nconst _hoisted_15 = [\"updating\"]\nconst _hoisted_16 = [\"onClick\", \"disabled\"]\nconst _hoisted_17 = {\n key: 0,\n class: \"btn-text\"\n}\nconst _hoisted_18 = {\n key: 1,\n class: \"btn-text\"\n}\nconst _hoisted_19 = { class: \"btn-text\" }\n\nimport { reactive, onMounted, computed } from 'vue';\n import { watch } from 'vue';\n import router from '../router';\n import gsap from 'gsap'\n import { CartStore } from '@/stores/cart';\n import { MenuStore } from '@/stores/menu';\n import { AppStore } from '@/stores/app';\n import { useI18n } from 'vue-i18n'\n import OrderItem from '@/components/OrderItem.vue';\n import OrderShopInfo from '@/components/OrderShopInfo.vue';\n import ConfirmPopup from '@/components/ConfirmPopup.vue';\n import { useEmitter } from '@/composables/useEmitter';\n\n\n interface State {\n showOrderInfo: boolean,\n showCancelModal: boolean,\n isCounting: boolean,\n currency: string,\n }\n interface Props {\n disabled?: boolean\n }\n\n /* Props */\n //const props =\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'OrderComponent',\n props: {\n disabled: { type: Boolean }\n },\n setup(__props: any) {\n\n\n /* imports */\n const { t } = useI18n();\n\n const cartStore = CartStore();\n const menuStore = MenuStore();\n const appStore = AppStore();\n const emitter = useEmitter();\n\n\n /* interface */\n \n\n /* Reactive */\n const tweened = reactive({\n number: 0\n })\n\n const state = reactive({\n showOrderInfo: false,\n showCancelModal: false,\n isCounting: false,\n currency: menuStore.getCurrency().symbol\n });\n\n /* ref */\n\n /* computed */\n const transitionName = computed(() => {\n return appStore.state.isSmallScreen ? \"from-bottom\" : \"fade-in-out\";\n });\n\n const disabled = computed(() => {\n return cartStore.state.disabled;\n });\n\n const addBtnText = (): string => {\n return !cartStore.state.editMode ? t(\"button.add\") : t(\"button.done\");\n }\n\n const suggestedBtnText = computed(() => cartStore.state.hasSelectedSuggestions ? t(\"button.done\") : t(\"button.noThanks\"));\n\n const totalPrice = computed(() => {\n return cartStore.totalPrice;\n });\n\n /* Refs */\n\n /* Functions */\n\n //Animations for orderItems.\n const onBeforeEnter = (el: HTMLElement) => {\n el.style.opacity = '0';\n el.style.height = '0';\n }\n const onEnter = (el: HTMLElement, done: any) => {\n gsap.to(el, {\n opacity: 1,\n height: 'auto',\n delay: Number(el.dataset.index) * 0.15,\n onComplete: done\n })\n }\n\n const onLeave = (el: HTMLElement, done: any) => {\n gsap.to(el, {\n opacity: 0,\n height: 0,\n delay: Number(el.dataset.index) * 0.15,\n onComplete: done\n })\n }\n\n // Will trigger event in components and views\n const addToOrder = () => emitter.emit('add-order');\n\n const toggleShowOrder = (): void => {\n cartStore.state.showOrderInfo = !cartStore.state.showOrderInfo;\n }\n\n const onCancel = () => cartStore.state.items.length ? toggleCancelModal() : cancelOrder(true);\n\n const toggleCancelModal = () => {\n state.showCancelModal = !state.showCancelModal;\n }\n\n const cancelOrder = (value: boolean) => {\n\n state.showCancelModal = false; // Hide cancel order question (popup)\n\n if (value) {\n cartStore.clear(true); // Clear store\n router.push({ name: 'home' }); // Send user to to homepage\n }\n }\n\n const pay = () => {\n router.push({ \n name: 'checkoutPage',\n params: {\n shopId: cartStore.state.shopId \n } \n }); // Send user to Checkout page\n }\n\n /* Watch */\n\n //Add animation when total price changes\n watch(\n totalPrice,\n (n) => {\n gsap.to(tweened, {\n duration: 1, number: Number(n) || 0,\n onStart: () => {\n state.isCounting = true;\n },\n onComplete: () => {\n state.isCounting = false;\n }\n })\n }\n )\n\n /* Lifecycle Hooks */\n onMounted(() => {\n if (cartStore.state.items?.length) {\n tweened.number = cartStore.totalPrice;\n }\n });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_Transition, { name: _unref(transitionName) }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"order-basket\", {'open': _unref(cartStore).state.showOrderInfo}])\n }, [\n (_unref(appStore).state.isLargeScreen)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"h2\", null, _toDisplayString(_unref(t)(\"order.header\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(appStore).state.isSmallScreen)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n (_unref(cartStore).state.showAddItemButton)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"btn btn-primary order-add\",\n onClick: addToOrder\n }, [\n (_unref(appStore).state.currentPage === 'suggestedArticlesPage')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_3, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(suggestedBtnText)), 1)\n ]))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(addBtnText()), 1))\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"button\", {\n class: _normalizeClass([\"btn order-info\", {'btn-secondary': _unref(cartStore).state.showAddItemButton}]),\n onClick: _withModifiers(toggleShowOrder, [\"prevent\",\"stop\"])\n }, [\n _createElementVNode(\"div\", _hoisted_6, _toDisplayString(_unref(t)(\"order.header\")), 1),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"order-info-price\", {'price-update': state.isCounting}])\n }, _toDisplayString(tweened.number.toFixed(0)) + _toDisplayString(state.currency), 3)\n ], 10, _hoisted_5)\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(_Transition, { name: _unref(transitionName) }, {\n default: _withCtx(() => [\n ((_unref(cartStore).state.showOrderInfo || _unref(appStore).state.isLargeScreen))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"order-modal order-basket-inner\",\n onClick: _withModifiers(toggleShowOrder, [\"self\"])\n }, [\n (_unref(appStore).state.isSmallScreen)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"h2\", null, _toDisplayString(_unref(t)(\"order.header\")), 1),\n _createElementVNode(\"button\", {\n class: \"btn-close\",\n onClick: toggleShowOrder\n })\n ]))\n : _createCommentVNode(\"\", true),\n _createVNode(OrderShopInfo, { \"allow-empty-delivery-spot\": true }),\n _createElementVNode(\"div\", _hoisted_9, [\n _createVNode(_TransitionGroup, {\n tag: \"ol\",\n css: false,\n class: \"order-items\",\n onBeforeEnter: onBeforeEnter,\n onEnter: onEnter,\n onLeave: onLeave\n }, {\n default: _withCtx(() => [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(cartStore).state.items, (item, index) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: item.id,\n \"data-index\": index\n }, [\n _createVNode(OrderItem, {\n item: item,\n editable: true,\n curency: state.currency,\n disabled: _unref(disabled)\n }, null, 8, [\"item\", \"curency\", \"disabled\"])\n ], 8, _hoisted_10))\n }), 128))\n ]),\n _: 1\n })\n ]),\n (_unref(cartStore).state.items.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"order-content-text\",\n \"data-orders\": _unref(cartStore).state.items.length,\n disabled: _unref(disabled)\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)(\"order.infoText\")), 1),\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)(\"order.infoText2\")), 1)\n ], 8, _hoisted_11))\n : _createCommentVNode(\"\", true),\n (!_unref(cartStore).state.items.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)(\"order.emptyInfoText\")), 1)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_13, [\n (_unref(cartStore).state.items.length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_14, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)(\"label.total\")), 1),\n _createElementVNode(\"span\", {\n class: \"order-item-price\",\n updating: state.isCounting\n }, _toDisplayString(Math.round(tweened.number * 100) / 100) + _toDisplayString(state.currency), 9, _hoisted_15)\n ]))\n : _createCommentVNode(\"\", true),\n (_unref(cartStore).state.items.length)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 1,\n class: \"btn btn-primary btn-pay\",\n onClick: _withModifiers(pay, [\"prevent\"]),\n disabled: _unref(disabled)\n }, [\n (!_unref(disabled))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_17, _toDisplayString(_unref(t)(\"button.pay\")), 1))\n : _createCommentVNode(\"\", true),\n (_unref(disabled))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_18, _toDisplayString(_unref(t)(\"button.orderNotReady\")), 1))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_16))\n : _createCommentVNode(\"\", true),\n (_unref(cartStore).state.items.length)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n class: \"btn btn-secondary cancel-order\",\n onClick: onCancel\n }, [\n _createElementVNode(\"span\", _hoisted_19, _toDisplayString(_unref(t)(\"button.cancelOrder\")), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_7))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"name\"])\n ], 2)\n ]),\n _: 1\n }, 8, [\"name\"]),\n _createVNode(ConfirmPopup, {\n heading: \"cancel.order.header\",\n text: \"cancel.order.description\",\n okButton: \"cancel.order.confirm\",\n cancelButton: \"cancel.order.cancel\",\n show: state.showCancelModal,\n onOnAnswer: cancelOrder\n }, null, 8, [\"show\"])\n ], 64))\n}\n}\n\n})","import script from \"./OrderComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./OrderComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString } from \"vue\"\n\nconst _hoisted_1 = { class: \"language-selector-container\" }\nconst _hoisted_2 = { key: 0 }\nconst _hoisted_3 = { key: 1 }\nconst _hoisted_4 = { class: \"lang-container\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"lang-label\" }, \"Language\", -1)\nconst _hoisted_6 = { class: \"selected-language\" }\nconst _hoisted_7 = {\n key: 2,\n class: \"error error-message\"\n}\n\nimport {computed, onBeforeMount, onBeforeUnmount, onErrorCaptured, reactive} from 'vue';\n import { AppStore } from '@/stores/app';\n import { MenuStore } from '@/stores/menu';\n import { ShopStore } from '@/stores/shop';\n import { ApiStatus, Languages } from '@/types';\n import { useI18n } from 'vue-i18n';\n import axios, {AxiosError} from \"axios\";\n import {isDebug} from \"@/functions\";\n\n interface State {\n languages: string[],\n status: ApiStatus,\n }\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LanguageSelector',\n setup(__props) {\n\n /* imports */\n const appStore = AppStore();\n const menuStore = MenuStore();\n const shopStore = ShopStore();\n const { t, locale } = useI18n();\n\n /* interface */\n const languageNames: Languages = {\n sv: 'Svenska',\n fi: 'Suomi',\n en: 'English',\n ru: 'Русский',\n no: 'Norsk'\n }\n if(isDebug()){\n languageNames['debug'] = 'DEBUG'\n }\n \n /* Props */\n\n /* Ref */\n\n /* Reactive */\n const state = reactive({\n languages: [],\n status: {\n done: false,\n failed: false,\n loading: false\n }\n });\n\n\n /* Computed */\n\n const selectedLanguage = computed(() => {\n const lang = state.languages.find((lang) => lang === locale.value);\n if(!lang)\n return state.languages[0];\n return lang;\n });\n \n /* Emits */\n\n /* AbortController */\n const abortController = new AbortController();\n\n /* Functions */\n\n const toggleLanguagePopup = () => {\n appStore.state.showLangSelector = true;\n };\n\n const loadLanguages = async () => {\n state.status.loading = true;\n axios.get(`/api/cultures/languages`)\n .then(response => response.data)\n .then((data: string[]) => {\n state.languages = data;\n if(isDebug()){\n state.languages.push('debug')\n }\n state.status.done = true;\n }).catch((err: AxiosError) => {\n state.status.failed = true;\n if(err.response?.status === 404){\n state.status.text = \"No languages has been configured.\";\n } else\n state.status.text = err.message;\n }).finally(() => {\n state.status.loading = false;\n });\n }\n\n /* Lifecycle Hooks */\n onErrorCaptured(() => {\n appStore.state.showLangSelector = false;\n });\n\n onBeforeMount(() => loadLanguages());\n onBeforeUnmount(() => abortController.abort());\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n (state.status.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2))\n : _createCommentVNode(\"\", true),\n (state.status.done && !state.status.loading && state.languages.length > 1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createElementVNode(\"button\", {\n class: \"btn-lang-toggle\",\n onClick: toggleLanguagePopup\n }, [\n _createElementVNode(\"div\", _hoisted_4, [\n _hoisted_5,\n _createElementVNode(\"span\", _hoisted_6, _toDisplayString(languageNames[_unref(selectedLanguage)]), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true),\n (state.status.failed)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"h3\", null, _toDisplayString(_unref(t)('error.heading')), 1),\n _createElementVNode(\"p\", null, _toDisplayString(state.status.text), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./LanguageSelector.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LanguageSelector.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"data-value\"]\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"i\", { class: \"ongoing-order-inner\" }, null, -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport { reactive, watch, computed, onMounted } from 'vue';\n import { OrderStore } from '@/stores/order';\n import { AppStore } from '@/stores/app';\n import router from '@/router';\n import {PaidOrder} from \"@/types\";\n\n interface State {\n visible: boolean,\n count: number\n }\n\n /* Reactive */\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaidOrderIcon',\n setup(__props) {\n\n\n /* imports */\n const orderStore = OrderStore();\n const appStore = AppStore();\n\n /* interface */\n const state = reactive({\n visible: false,\n count: 0\n });\n\n /* Watch */\n watch(() => orderStore.state, () => {\n setState();\n }, { deep: true });\n\n /* Ref */\n\n /* Computed */\n //const visible = computed(() => {\n \n // console.log('state.visible',state.visible);\n // const calcVisible = state.visible && !(appStore.state.currentPage === 'orderPage' || appStore.state.currentPage === 'ordersPage');\n // console.log('paidOrder.calcVisible', calcVisible, appStore.state.currentPage);\n // return calcVisible;\n //});\n\n /* Refs */\n\n /* Functions */\n const onClick = () => {\n //If there are several orders, forward the user to ordersPage, but if there is only one order, forward them to orderPage.\n\n const orders = orderStore.ordersCount;\n\n if (state.count === 1 && orderStore.state.paidOrders.length == 1) {\n const order: PaidOrder = orderStore.state.paidOrders[0];\n\n router.push({\n name: 'orderPage',\n params: { orderId: order.id }\n });\n\n } else if (state.count === 1 && orderStore.state.deliveredOrders.length == 1) {\n const order: PaidOrder = orderStore.state.deliveredOrders[0];\n router.push({\n name: 'orderPage',\n params: { orderId: order.id }\n });\n }\n else\n if (state.count !== 0) {\n router.push({\n name: 'ordersPage'\n });\n } \n }\n\n const setState = () => {\n state.count = orderStore.ordersCount;\n state.visible = (state.count > 0); \n }\n\n /* Lifecycle Hooks */\n onMounted(() => setState())\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, { name: \"fade\" }, {\n default: _withCtx(() => [\n (state.visible)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"ongoing-order\",\n \"data-value\": state.count,\n onClick: onClick\n }, _hoisted_3, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./PaidOrderIcon.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./PaidOrderIcon.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"data-value\"]\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"sr-only\" }, \"Kuponger\", -1)\nconst _hoisted_3 = [\n _hoisted_2\n]\n\nimport {computed, onMounted, reactive, watch} from 'vue';\nimport {CouponStore} from \"@/stores/coupon\";\nimport router from '@/router';\nimport {CouponState} from \"@/types\";\n\ninterface State {\n visible: boolean,\n count: number\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'CouponsIcon',\n setup(__props) {\n\nconst couponStore = CouponStore();\nconst state = reactive({\n visible: false,\n count: 0\n});\n\n/* Watch */\nwatch(() => couponStore.coupons, () => {\n setState();\n}, { deep: true });\n\n/* Computed */\nconst visible = computed(() => {\n return state.visible;\n});\n\n/* Functions */\nconst onClick = () => {\n if (state.count !== 0) {\n router.push({\n name: 'coupons'\n });\n }\n}\nconst setState = () => {\n state.count = 0;\n couponStore.coupons.forEach((c)=>{\n if(c.state == CouponState.Active || c.state == CouponState.Unused){\n state.count++;\n }\n });\n \n //state.visible = (state.count > 0);\n state.visible = (state.count > 0) && document.documentElement.classList.contains('plt-pwa');\n}\n\n/* Lifecycle Hooks */\nonMounted(() => setState())\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, { name: \"fade\" }, {\n default: _withCtx(() => [\n (_unref(visible))\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n class: \"coupons-btn\",\n \"data-value\": state.count,\n onClick: onClick\n }, _hoisted_3, 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./CouponsIcon.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./CouponsIcon.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"membercard-container\" }\nconst _hoisted_2 = [\"src\"]\n\nimport {onMounted, reactive, ref} from \"vue\";\nimport axios from \"axios\";\nimport { useI18n } from \"vue-i18n\";\ninterface State {\n url: string,\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MembershipCard',\n setup(__props) {\n\nconst image = ref();\n\nconst {t,locale} = useI18n();\n\nconst state = reactive({\n url: '',\n});\n\nconst loadImage = ()=>{\n axios.get('/api/user/membership-card', {\n responseType: 'blob'\n }).then(r=>{\n const url = window.URL.createObjectURL(new Blob([r.data]));\n image.value!.src = url;\n }).catch(()=>{\n console.log('error');\n }); \n}\n\nonMounted(()=>{\n loadImage();\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)('memberCard.header')), 1),\n _createElementVNode(\"img\", {\n class: \"member-card\",\n src: state.url,\n ref_key: \"image\",\n ref: image,\n alt: \"\"\n }, null, 8, _hoisted_2),\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)('memberCard.text')), 1)\n ]))\n}\n}\n\n})","import script from \"./MembershipCard.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./MembershipCard.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createVNode as _createVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"profile-menu-button-container\"\n}\nconst _hoisted_2 = { class: \"username\" }\nconst _hoisted_3 = { class: \"user-greeting\" }\nconst _hoisted_4 = { class: \"first-name\" }\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"sr-only\" }, \"Profile\", -1)\nconst _hoisted_6 = { class: \"profile-menu-header\" }\nconst _hoisted_7 = { class: \"username\" }\nconst _hoisted_8 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"sr-only\" }, \"Close\", -1)\nconst _hoisted_9 = [\n _hoisted_8\n]\nconst _hoisted_10 = { class: \"profile-menu\" }\nconst _hoisted_11 = {\n class: \"offers\",\n href: \"/campaigns\"\n}\nconst _hoisted_12 = {\n class: \"favorites\",\n href: \"/favorites\"\n}\nconst _hoisted_13 = {\n class: \"order-history\",\n href: \"/order-history\"\n}\nconst _hoisted_14 = {\n class: \"my-account\",\n href: \"/profile\"\n}\n\nimport MembershipCard from \"@/components/MembershipCard.vue\";\nimport {computed, reactive} from \"vue\";\nimport {AuthStore} from \"@/stores/auth\";\nimport { useI18n } from \"vue-i18n\";\nimport router from \"@/router\";\n\ninterface State {\n showProfileMenu: boolean\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ProfileMenu',\n setup(__props) {\n\nconst {t} = useI18n();\nconst authStore = AuthStore();\n\nconst state = reactive({\n showProfileMenu: false\n});\n\nconst showProfileMenu = (e:any) => {\n e.preventDefault();\n state.showProfileMenu = !state.showProfileMenu;\n};\n\nconst logout = ()=>{\n authStore.logout().then(()=>{\n //reload the current page;\n router.go(0);\n });\n};\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(authStore).state.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"button\", {\n class: \"btn btn-login\",\n onClick: showProfileMenu\n }, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"span\", _hoisted_3, _toDisplayString(_unref(t)('profile.menu.userGreeting')), 1),\n _createElementVNode(\"span\", _hoisted_4, _toDisplayString(_unref(authStore).state.user?.name), 1)\n ]),\n _hoisted_5\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass([\"profile-menu-container\", [state.showProfileMenu ? 'open' : 'closed']])\n }, [\n _createElementVNode(\"div\", _hoisted_6, [\n _createElementVNode(\"span\", _hoisted_7, _toDisplayString(_unref(authStore).state.user?.name) + \" \" + _toDisplayString(_unref(authStore).state.user?.lastName), 1),\n _createElementVNode(\"button\", {\n class: \"btn btn-close\",\n onClick: showProfileMenu\n }, _hoisted_9)\n ]),\n _createElementVNode(\"ul\", _hoisted_10, [\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"a\", _hoisted_11, _toDisplayString(_unref(t)('profile.menu.offers')), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"a\", _hoisted_12, _toDisplayString(_unref(t)('profile.menu.favorites')), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"a\", _hoisted_13, _toDisplayString(_unref(t)('profile.menu.orderHistory')), 1)\n ]),\n _createElementVNode(\"li\", null, [\n _createElementVNode(\"a\", _hoisted_14, _toDisplayString(_unref(t)('profile.menu.account')), 1)\n ]),\n _createElementVNode(\"li\", null, [\n (_unref(authStore).state.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"logout\",\n href: \"#\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(()=> logout(), [\"prevent\"]))\n }, _toDisplayString(_unref(t)('profile.menu.logout')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createVNode(MembershipCard)\n ], 2),\n (state.showProfileMenu)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"click-outside\",\n onClick: showProfileMenu\n }))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./ProfileMenu.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ProfileMenu.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createElementVNode as _createElementVNode, createVNode as _createVNode, Transition as _Transition, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"navbar\"\n}\nconst _hoisted_2 = { class: \"navbar-content\" }\nconst _hoisted_3 = { class: \"nav-left\" }\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = {\n key: 1,\n class: \"history-back\"\n}\nconst _hoisted_6 = { class: \"nav-right\" }\nconst _hoisted_7 = [\"href\"]\n\nimport {computed, reactive, watch} from 'vue';\n import { NavigationStore } from '@/stores/navigation'; \n import { useI18n } from 'vue-i18n';\n import router from '@/router';\n import ConfirmPopup from '@/components/ConfirmPopup.vue';\n import LanguageSelector from '@/components/LanguageSelector.vue';\n import PaidOrderIcon from '@/components/PaidOrderIcon.vue';\n import { AppStore } from '@/stores/app';\n import { CartStore } from '@/stores/cart';\n import { ShopStore } from '@/stores/shop';\n import { AuthStore } from '@/stores/auth';\n import CouponsIcon from \"@/components/CouponsIcon.vue\";\n import ProfileMenu from \"@/components/ProfileMenu.vue\";\n import {useRoute} from \"vue-router\";\n import {cartStorageKey} from \"@/keys\";\n\n interface State {\n showConfirmPopup: boolean,\n showConfirmGoHome: boolean,\n showCancelOrderPopup: boolean\n showProfileMenu: boolean\n }\n\n /* Reactive */\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'NavigationComponent',\n setup(__props) {\n\n /* imports */\n const { t } = useI18n();\n const navigationStore = NavigationStore();\n\n const appStore = AppStore();\n const cartStore = CartStore();\n const shopStore = ShopStore();\n const authStore = AuthStore();\n const route = useRoute();\n /* Interface */\n const state = reactive({\n showConfirmPopup: false,\n showConfirmGoHome: false,\n showCancelOrderPopup: false,\n showProfileMenu: false,\n });\n \n /* Computed */\n const shouldHandleClearOrder = computed(() => {\n const name = navigationStore.state.link?.name;\n if (!name)\n return false;\n\n const route = router.getRoutes().find(r=>r.name === name);\n if(route && route.meta?.confirmCartReset === true){\n //if the route has confirmCartReset set to true, and we have items in the cart, we should show the confirm popup\n return cartStore.state.items.length > 0 \n }\n \n return false;\n\n });\n const loginUri = computed(() => {\n return `/login?redirectUri=${encodeURIComponent(router.currentRoute.value.path)}`;\n });\n \n watch(()=>route.name,(to)=>{\n \n console.log('NavigationComponent detected route as ', to);\n });\n \n\n const shouldHandleCancelOrder = computed(() => {\n const name = appStore.state.currentPage;\n\n if (!name)\n return false;\n\n return cartStore.state.currentOrderChanged && (name === 'articlePage' || name === 'editOrder' || name === 'suggestedArticlesPage');\n\n });\n\n /* Functions */\n \n const navigateHome = (e:any): void => {\n if(cartStore.state.items.length > 0 ){\n state.showConfirmGoHome = true;\n e.preventDefault();\n }\n }\n \n const navigate = (): void => {\n if (shouldHandleClearOrder.value) {\n state.showConfirmPopup = true;\n } else if (shouldHandleCancelOrder.value) {\n state.showCancelOrderPopup = true;\n }\n else {\n if (navigationStore.state.link) {\n router.push(navigationStore.state.link);\n } else {\n \n router.go(-1); \n }\n }\n }\n\n const clearOrder = (value: boolean): void => {\n state.showConfirmPopup = false;\n if (value) {\n shopStore.clear();\n cartStore.clear(true);\n if (navigationStore.state.link) {\n router.push(navigationStore.state.link);\n }\n }\n };\n const clearOrderAndGoHome = (value: boolean): void => {\n state.showConfirmGoHome = false;\n\n if (value) {\n shopStore.clear();\n cartStore.clear(true);\n \n router.push('/'); \n }\n };\n\n const cancelAddToOrder = (value: boolean): void => {\n\n state.showCancelOrderPopup = false;\n\n if (value) {\n \n if (navigationStore.state.link) {\n router.push(navigationStore.state. link);\n }\n }\n }\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode(_Transition, { name: \"from-top\" }, {\n default: _withCtx(() => [\n (_unref(navigationStore).state.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"button\", {\n class: \"navbar-back\",\n onClick: navigate\n }, [\n (_unref(appStore).state.isLargeScreen)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, [\n (_unref(navigationStore).state.link)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createTextVNode(_toDisplayString(_unref(navigationStore).state.link.text ?? _unref(t)('button.back')), 1)\n ], 64))\n : _createCommentVNode(\"\", true),\n (!_unref(navigationStore).state.link)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString(_unref(t)('button.back')), 1))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true)\n ])\n ]),\n _createElementVNode(\"a\", {\n href: \"/\",\n onClick: navigateHome,\n class: \"customer-logo\"\n }),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(LanguageSelector),\n _createVNode(CouponsIcon),\n _createVNode(PaidOrderIcon),\n (_unref(cartStore).state.settings.enableCustomerLogin)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (!_unref(authStore).state.isAuthenticated)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n class: \"btn-login\",\n href: _unref(loginUri)\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)('navBar.login')), 1)\n ], 8, _hoisted_7))\n : _createCommentVNode(\"\", true),\n _createVNode(ProfileMenu)\n ], 64))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n _createVNode(ConfirmPopup, {\n heading: \"cancel.order.header\",\n text: \"cancel.order.description\",\n okButton: \"cancel.order.confirm\",\n cancelButton: \"cancel.order.cancel\",\n show: state.showConfirmPopup,\n onOnAnswer: clearOrder\n }, null, 8, [\"show\"]),\n _createVNode(ConfirmPopup, {\n heading: \"cancel.order.header\",\n text: \"cancel.order.description\",\n okButton: \"cancel.order.confirm\",\n cancelButton: \"cancel.order.cancel\",\n show: state.showConfirmGoHome,\n onOnAnswer: clearOrderAndGoHome\n }, null, 8, [\"show\"]),\n _createVNode(ConfirmPopup, {\n show: state.showCancelOrderPopup,\n onOnAnswer: cancelAddToOrder\n }, null, 8, [\"show\"])\n ], 64))\n}\n}\n\n})","import script from \"./NavigationComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NavigationComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, Teleport as _Teleport, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\"]\nconst _hoisted_2 = [\"onClick\"]\nconst _hoisted_3 = { key: 0 }\nconst _hoisted_4 = {\n key: 1,\n class: \"languages\"\n}\nconst _hoisted_5 = [\"onClick\", \"disabled\", \"data-active\"]\nconst _hoisted_6 = {\n key: 2,\n class: \"error error-message\"\n}\n\nimport { onBeforeMount, onBeforeUnmount, onErrorCaptured, reactive } from 'vue';\n import LoaderComponent from '@/components/LoaderComponent.vue';\n import { AppStore } from '@/stores/app';\n import { MenuStore } from '@/stores/menu';\n import { ShopStore } from '@/stores/shop';\n import { Languages, ApiStatus } from '@/types';\n import { useI18n } from 'vue-i18n';\n import axios from \"axios\";\n import {isDebug} from \"@/functions\";\n\n interface State {\n languages: string[],\n status: ApiStatus,\n }\n\n /* Props */\n\n /* Ref */\n\n /* Reactive */\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LanguageSelectorPopup',\n setup(__props) {\n\n /* imports */\n const appStore = AppStore();\n const menuStore = MenuStore();\n const shopStore = ShopStore();\n const { locale } = useI18n();\n\n /* interface */\n const state = reactive({\n languages: [],\n status: {\n done: false,\n failed: false,\n loading: false\n }\n })\n\n /* Const */\n const languages: Languages = {\n sv: 'Svenska',\n fi: 'Suomi',\n en: 'English',\n ru: 'Russian',\n no: 'Norsk'\n }\n if(isDebug()){\n languages['debug'] = 'DEBUG'\n }\n\n /* Emits */\n\n /* AbortController */\n const abortController = new AbortController();\n\n /* Functions */\n const hide = () => {\n appStore.state.showLangSelector = false;\n }\n\n const doNothing = () => {\n return false;\n }\n\n const setLang = (lang: string): void => {\n\n if (locale.value === lang) {\n return;\n }\n\n changeculture(lang)\n .then(() => {\n\n if (shopStore.id) {\n menuStore.load(shopStore.id);\n }\n // Set locale value for i18n\n locale.value = lang;\n appStore.state.showLangSelector = false;\n document.documentElement.setAttribute(\"lang\", locale.value);\n }).catch((err: Error) => {\n console.error('changeculture.catch', err.message);\n appStore.state.showLangSelector = false;\n });\n }\n\n const changeculture = async (lang: string) => {\n\n return new Promise((resolve: any, reject: any) => {\n \n axios.post(`/api/cultures/changeculture?cultureCode=${lang}`)\n .then(response => response.data)\n .then(() => {\n resolve(true);\n }).catch((err: Error) => {\n reject(err);\n });\n });\n }\n\n const loadLanguages = async () => {\n\n state.status.loading = true;\n axios.get(`/api/cultures/languages`)\n .then(response => response.data)\n .then((data: string[]) => {\n state.languages = data;\n if(isDebug()){\n state.languages.push('debug')\n }\n state.status.done = true;\n\n }).catch((err: Error) => {\n state.status.failed = true;\n state.status.text = err.message;\n }).finally(() => {\n state.status.loading = false;\n });\n\n }\n\n\n\n /* Lifecycle Hooks */\n onErrorCaptured(() => {\n appStore.state.showLangSelector = false;\n });\n\n onBeforeMount(() => loadLanguages());\n\n onBeforeUnmount(() => abortController.abort());\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_Transition, {\n name: \"popup\",\n duration: 860\n }, {\n default: _withCtx(() => [\n (_unref(appStore).state.showLangSelector)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"popup popup-languages\",\n onClick: _withModifiers(hide, [\"stop\",\"prevent\"])\n }, [\n _createElementVNode(\"div\", {\n class: \"popup-content\",\n onClick: _withModifiers(doNothing, [\"stop\",\"prevent\"])\n }, [\n (state.status.loading)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [\n _createVNode(LoaderComponent, { text: \"loader.languages\" })\n ]))\n : _createCommentVNode(\"\", true),\n (state.status.done && !state.status.loading)\n ? (_openBlock(), _createElementBlock(\"ol\", _hoisted_4, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(state.languages, (lang) => {\n return (_openBlock(), _createElementBlock(\"li\", { key: lang }, [\n _createElementVNode(\"a\", {\n onClick: ($event: any) => (setLang(lang)),\n class: _normalizeClass({'btn-active': (_unref(locale) === lang) }),\n disabled: (_unref(locale) === lang),\n \"data-active\": (_unref(locale) === lang)\n }, _toDisplayString(languages[lang]), 11, _hoisted_5)\n ]))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true),\n (state.status.failed)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [\n _createElementVNode(\"h3\", null, _toDisplayString(_ctx.t('error.heading')), 1),\n _createElementVNode(\"p\", null, _toDisplayString(state.status.text), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_2)\n ], 8, _hoisted_1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./LanguageSelectorPopup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LanguageSelectorPopup.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = {\n key: 0,\n class: \"popup popup-error\"\n}\nconst _hoisted_2 = { class: \"popup-content\" }\nconst _hoisted_3 = { class: \"popup-header\" }\nconst _hoisted_4 = [\"innerHTML\"]\nconst _hoisted_5 = { class: \"popup-buttons\" }\n\nimport { } from 'vue';\n import { useI18n } from 'vue-i18n';\n import { ErrorMessageStore } from '@/stores/errorMessage';\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ErrorMessage',\n setup(__props) {\n\n /* imports */\n const { t } = useI18n();\n\n const errorMessageStore = ErrorMessageStore();\n\n\n const close = () => {\n errorMessageStore.close();\n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Transition, { name: \"popup\" }, {\n default: _withCtx(() => [\n (_unref(errorMessageStore).state.visible)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h2\", _hoisted_3, _toDisplayString(_unref(t)('error.heading')), 1),\n _createElementVNode(\"p\", {\n class: \"popup-text\",\n innerHTML: _unref(errorMessageStore).state.message\n }, null, 8, _hoisted_4),\n _createElementVNode(\"div\", _hoisted_5, [\n _createElementVNode(\"button\", {\n class: \"btn\",\n onClick: close\n }, _toDisplayString(_unref(t)('error.closeButtonText')), 1)\n ])\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ErrorMessage.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"update-app\" }\n\nimport { useI18n } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'UpdateComponent',\n setup(__props) {\n\n\nconst { t } = useI18n();\n\n \nconst updateApp = () => {\n navigator.serviceWorker.getRegistrations().then((registrations) =>{\n registrations[0].waiting?.postMessage({ type: 'SKIP_WAITING' });\n window.location.reload();\n }); \n}\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"p\", null, _toDisplayString(_unref(t)('updateApp.text')), 1),\n _createElementVNode(\"button\", {\n class: \"btn btn-primary\",\n onClick: updateApp\n }, _toDisplayString(_unref(t)('updateApp.button')), 1)\n ]))\n}\n}\n\n})","import script from \"./UpdateComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./UpdateComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, withCtx as _withCtx } from \"vue\"\n\nconst _hoisted_1 = { class: \"app\" }\nconst _hoisted_2 = {\n key: 0,\n class: \"fake-page\"\n}\nconst _hoisted_3 = /*#__PURE__*/_createElementVNode(\"div\", { class: \"content-placholder\" }, null, -1)\nconst _hoisted_4 = {\n key: 2,\n class: \"app-version\"\n}\n\nimport {useI18n} from 'vue-i18n';\nimport {IonApp, IonRouterOutlet} from '@ionic/vue';\nimport {computed, onBeforeMount, ref} from 'vue';\nimport OrderComponent from '@/components/OrderComponent.vue';\nimport NavigationComponent from '@/components/NavigationComponent.vue';\nimport LanguageSelectorPopup from '@/components/LanguageSelectorPopup.vue';\nimport {toKebabCase} from \"@/functions\";\nimport axios from 'axios';\nimport router from '@/router';\nimport ErrorMessage from '@/components/ErrorMessage.vue';\nimport {CartStore} from './stores/cart';\nimport {AppStore} from './stores/app';\nimport {OrderStore} from './stores/order';\nimport {AuthStore} from \"@/stores/auth\";\nimport UpdateComponent from \"@/components/UpdateComponent.vue\";\nimport LoaderComponent from \"@/components/LoaderComponent.vue\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\nconst {locale} = useI18n();\n\nconst cartStore = CartStore();\nconst appStore = AppStore();\nconst orderStore = OrderStore();\nconst authStore = AuthStore();\n\naxios.defaults.headers.common['Content-Type'] = 'application/json';\n//axios.defaults.headers.common['Accept-Language'] = locale.value;\n\nconst showOrder = computed(() => {\n const showCart = router.currentRoute.value.meta.showCart as boolean;\n if(!showCart) {\n return false;\n }\n\n return cartStore.state.visible && (cartStore.state.items.length > 0\n || appStore.state.isLargeScreen\n || (appStore.state.currentPage != null\n && typeof appStore.state.currentPage == \"string\" && ['editOrder', 'menuArticlePage'].includes(appStore.state.currentPage)));\n});\n\nonBeforeMount(() => {\n document.documentElement.setAttribute(\"lang\", locale.value);\n\n orderStore.removeExpiredOrders()\n //If there are unpaid orders that are not ready yet\n if (orderStore.state.paidOrders.length) {\n orderStore.pullOrderStatus();\n }\n})\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(IonApp), {\n class: _normalizeClass(_unref(toKebabCase)(_unref(router).currentRoute.value.name?.toString() ??''))\n }, {\n default: _withCtx(() => [\n _createVNode(NavigationComponent),\n _createVNode(ErrorMessage),\n _createVNode(UpdateComponent),\n _createElementVNode(\"div\", _hoisted_1, [\n (_unref(showOrder))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _hoisted_3,\n _createVNode(OrderComponent)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createVNode(LanguageSelectorPopup),\n (!_unref(authStore).state.loading)\n ? (_openBlock(), _createBlock(_unref(IonRouterOutlet), { key: 0 }))\n : _createCommentVNode(\"\", true),\n (_unref(authStore).state.loading)\n ? (_openBlock(), _createBlock(LoaderComponent, { key: 1 }))\n : _createCommentVNode(\"\", true),\n (_unref(cartStore).state.settings)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, \"Version: \" + _toDisplayString(_unref(cartStore).state.settings.version), 1))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"class\"]))\n}\n}\n\n})","import script from \"./App.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export default {\n home: {\n header: 'Welcome!',\n subHeader: 'Choose your restaurant',\n },\n list: {\n menu: 'Menu'\n },\n shopchanged: {\n header: 'Warning!',\n text: 'You have a pending order linked to a different restaurant than the current one.'\n },\n checkout: {\n header: 'Checkout',\n pickup: 'Pickup time',\n orderHeader: 'My order',\n },\n payment: {\n header: 'Pay order',\n confirmLeave: {\n header: 'Confirm leave',\n text: 'Are you sure you want to leave the page? Leaving now may prevent us from updating you with the correct order status as your payment is still in progress.',\n confirm: 'Yes, I want to leave',\n cancel: 'No, I want to stay'\n }\n },\n termsAndConditions: {\n header: 'Terms and Conditions',\n closeButton: 'Close'\n },\n suggestedArticles: {\n header: 'May we offer something else?',\n },\n selectedShop: {\n header: 'Choose where to eat',\n extraInfo: ''\n },\n search: {\n label: 'Search restaurant',\n placeholder: 'Find restaurant',\n noMatch: 'No matching restaurants'\n },\n shopSelector: {\n singleShop: {\n start: \"Start ordering\",\n closed: \"Closed for today\",\n paused: \"Ordering paused\",\n offline: \"Offline\",\n openingHoursHeader: \"Opening hours\",\n }\n },\n 'show-password': {\n show: 'Show password',\n hide: 'Hide password'\n },\n button: {\n showMore: 'Show more',\n showMoreRestaurants: 'Show more restaurants',\n open: 'Open',\n closed: 'Closed',\n offline: 'Offline',\n paused: 'Ordering paused',\n dineInPlace: 'At the restaurant',\n takeAway: 'Take away',\n pay: 'Pay',\n order: 'Order',\n orderNotReady: 'Order not ready',\n change: 'Change',\n noThanks: 'No thanks',\n done: 'Done',\n cancel: 'Cancel',\n changeRestaurant: 'Change restaurant',\n changeLanguage: 'Change language',\n cancelOrder: 'Cancel order',\n yes: 'Yes',\n no: 'No',\n add: 'Add',\n backToCategory: 'Back to {category}',\n backToCategories: 'Back to categories',\n backToHome: 'Back to {category}',\n backToArticle: 'Back to {article}',\n backToShopPage: 'Back',\n backToMenuRoot: 'Back',\n back: 'Back',\n receipt: 'Receipt',\n favorite: 'Favorite',\n choiceDone: 'Done',\n },\n item: {\n notAvailable: 'item out of stock',\n favoriteHeader: 'My favorites'\n },\n label: {\n total: 'Total',\n subtotal: 'Subtotal',\n tax: 'Tax ({percent}%)',\n articleChoiceLabel1: 'Change/add ingredients',\n articleChoiceLabel2: 'Change',\n articleChoiceLabel3: 'Choose extra accessories',\n articleChoiceLabel4: 'Change',\n articleChoiceLabel5: 'Choose flavor',\n dineInPlace: 'Eat here',\n takeAway: 'Take away',\n now: 'Now'\n },\n order: {\n header: 'My order',\n pageHeader: 'Your order',\n thankYouText: 'Thanks for your order',\n infoText: '(Tap on product to change)',\n infoText2: '(Discounts are deducted in the next step)',\n emptyInfoText: 'No items in the basket yet',\n selectedRestaurant: 'Selected restaurant',\n missing: 'Order is missing',\n pickUpLabel: 'Estimated pick up time',\n statusLabel: 'current status',\n numberLabel: 'Your order number',\n note: {\n label: \"Other information\",\n placeholder: \"Enter other information\",\n remove: \"Remove\"\n },\n deliverySpot: {\n label: \"Delivery to\",\n empty: \"Not selected...\"\n },\n status: {\n calculatedprice: {\n label: \"Verifying order...\",\n description: \"\"\n },\n added: {\n label: 'Your order is received',\n description: \"Your order is received and is being processed.\"\n },\n started: {\n label: 'Your order is being prepared!',\n description: \"Your order is being prepared.\"\n },\n finnished: {\n label: 'Ready for pickup!',\n description: \"Your order is ready for pickup.\"\n },\n delivered: {\n label: \"Delivered!\",\n description: \"We hope you enjoy your meal.\"\n },\n rollbacked: {\n label: \"Avbruten\",\n description: \"Order cancelled, the reservation on your card has been removed, if you have payed with Swish, please contact the restaurant for a refund.\"\n }\n },\n campaignLabel: 'Campaign'\n },\n loader: {\n text: 'Loading...',\n languages: 'Looking for language options',\n categories: 'Looking for categories',\n favorites: 'Looking for favorites',\n orderHistory: 'Fetching your order history',\n image: '',\n calculatesDistances: 'Calculates distances',\n checkoutSummary: 'Contacting the restaurant',\n },\n cancel: {\n header: 'Cancel',\n text: 'Do you want to cancel?',\n order: {\n header: 'Cancel order',\n description: 'Do you want to cancel your order?',\n confirm: 'Yes, cancel',\n cancel: 'No, continue',\n }\n },\n error: {\n heading: 'Error message',\n closeButtonText: 'Close',\n server: 'There were a server error, please try again.',\n badRequest: 'Your browser sent a request that this server could not understand',\n unknown: 'Unknown error, please try again.',\n \"One or more validation errors occurred\": \"One or more validation errors occurred.\",\n InvalidToken: \"Your password reset token is invalid or has expired, please reset password again.\",\n PasswordRequiresNonAlphanumeric: \"Password must have at least one non alphanumeric character.\",\n PasswordRequiresDigit: \"Password must have at least one digit ('0'-'9').\",\n PasswordRequiresLower: \"Password must have at least one lowercase ('a'-'z').\",\n PasswordRequiresUpper: \"Password must have at least one uppercase ('A'-'Z').\",\n PasswordTooShort: \"The password needs to be atleast 6 characters\",\n PasswordMismatch: \"Passwords do not match.\",\n DuplicateUserName: \"An account with this email already exists.\",\n DuplicateEmail: \"Try to login or forgot password insted.\",\n deliverySpotRequired: \"Please select a delivery spot before proceeding.\",\n order: {\n \"unavailable-products\": \"One or more of the products in your order is no longer available for sale.\",\n \"shop-closed\": \"The restaurant you are ordering from are no longer open, try again later.\",\n \"shop-closed-at-pickuptime\": \"The restaurant is closed at your specified pickup time\",\n \"shop-paused\": \"The restaurant you are ordering from are sadly not accepting any online orders right now, try again later.\",\n \"create-order-failed\": \"For some reason we could not create your order, please try again later.\",\n \"create-order-failed-missing-recipe-items\": \"Some of the products in your order is missing required ingredients.\",\n \"preorder-create-order-failed\": {\n \"invalid-shop-id\": \"Invalid shop ID, please check and try again.\",\n \"shop-not-found\": \"The restaurant you're trying to order from is either closed or has permanently closed. Please try again later.\",\n \"internal-server-error\": \"An unknown error occurred with the ordering system, please try again later.\",\n \"missing-parameter\": \"A required field is missing, please check your order and try again.\",\n \"invalid-parameter\": \"One or more invalid values were provided, please check and try again.\",\n \"shop-paused\": \"The restaurant you're trying to order from is currently not accepting online orders, please try again later.\",\n \"shop-offline\": \"The restaurant you're trying to order from is offline, please try again later.\",\n \"shop-method-not-supported\": \"The restaurant does not support this ordering method, please try another method.\",\n \"shop-error-internal-error\": \"An internal error occurred at the restaurant, please try again later.\",\n \"shop-error-invalid-date-time\": \"Invalid date or time specified, please check and try again.\",\n \"shop-error-date-time-in-the-past\": \"The specified date or time is in the past, please choose a later time.\",\n \"shop-error-timeout-waiting-for-call-lock\": \"Timeout occurred while waiting for a response, please try again.\",\n \"shop-error-terminal-not-found\": \"The restaurant's terminal could not be found, please try again later.\",\n \"shop-error-stock-center-not-found\": \"Stock center could not be found, please try again later.\",\n \"shop-error-recipe-items-missing\": \"Some ingredients for the order are missing, please contact the restaurant.\",\n \"shop-error-internal-error-in-call\": \"An internal error occurred while communicating with the restaurant, please try again later.\",\n \"shop-error-order-not-found\": \"The order could not be found, please check your order details.\",\n \"shop-error-order-is-delivered\": \"The order has already been delivered.\",\n \"shop-error-order-is-deleted\": \"The order has been deleted.\",\n \"shop-error-order-is-started\": \"The order has already started and cannot be modified.\",\n \"shop-error-database-error\": \"A database error occurred, please try again later.\",\n \"shop-error-failed-to-open-database\": \"Failed to open the database, please try again later.\",\n \"shop-error-failed-to-init-coffe-card\": \"Failed to initialize the coffee card, please try again later.\",\n \"shop-error-failed-to-init-coffe-card-campaing\": \"Failed to initialize the coffee card campaign, please try again later.\",\n \"shop-error-profit-center-not-found\": \"Profit center could not be found, please contact support.\",\n \"shop-error-payment-not-found\": \"Payment could not be found, please try again.\",\n \"shop-error-slots-not-in-use\": \"Time slots are not in use at the moment, please try again later.\",\n \"shop-error-cashier-not-found\": \"Cashier could not be found, please try again later.\",\n \"shop-error-currency-error\": \"A currency error occurred, please check and try again.\",\n \"shop-error-articles-not-available\": \"Some items are not available, please update your order.\",\n \"shop-error-slot-not-available\": \"The selected time slot is not available, please choose another.\",\n \"shop-error-internal-error-post-order-check-error\": \"An internal error occurred after the order, please try again.\",\n \"shop-error-internal-error-post-order-fixed\": \"An internal error occurred but it has been fixed, please proceed.\",\n \"shop-error-internal-error-post-order-not-fixed\": \"An internal error occurred and it could not be fixed, please try again later.\",\n \"shop-error-no-central-web-plu\": \"Central web PLU is missing, please contact support.\",\n \"unknown-error\": \"An unknown error occurred, please try again.\"\n }\n },\n payment: {\n failed: 'An unknown error occured at payment (code:01)',\n aborted: 'An unknown error occured at payment (code:02)',\n notPaid: 'An unknown error occured at payment (code:03)',\n invalid: 'An unknown error occured at payment (code:04)',\n accesstokenMissing: 'An unknown error occured at payment (code:05)',\n IdentifierMissing: 'An unknown error occured at payment (code:06)',\n NotFound: 'An unknown error occured at payment (code:07)',\n merchantNotFound: 'An unknown error occured at payment (code:08)',\n orderNotFound: 'An unknown error occured at payment (code:09)',\n returnUrl: 'An unknown error occured at payment (code:10)',\n requestParametersMissing: 'An unknown error occured at payment (code:11)',\n orderFailed: 'An unknown error occured at payment (code:12)',\n captureFailed: 'An unknown error occured at payment (code:13)',\n createError: 'An unknown error occured at payment (code: 14)',\n loadScriptError: 'An unknown error occured at payment (kod: 15)',\n },\n user: {\n \"invalid-password\": \"The password provided does not meet the minimum requirements.\",\n \"register-user-failure\": \"Failed to create account\",\n \"password-mismatch\": \"Passwords do not match\",\n \"send-email-confirmation-failed\": \"Failed to send email confirmation\",\n \"invalid-phone\": \"Invalid phone number\",\n \"requires-phone\": \"Phone number is required\"\n },\n menu: {\n \"not-found\": \"The menu could not be found for shop with id {shopId}\",\n }\n },\n privacyPolicy: {\n header: 'Privacy policy'\n },\n receipt: {\n heading: \"Receipt\",\n total: \"Total\",\n amountPrefix: \"@\",\n vat: \"VAT\",\n net: \"Net\",\n orderNumber: \"OrderNr\",\n paymentId: \"Payment id\",\n note: \"Other information\",\n deliverySpot: \"Delivery to\",\n email: \"Email:\",\n emailPlaceHolder: \"Enter your email address\",\n sendEmail: \"Send receipt\",\n loading: \"Sending email...\",\n emailSent: \"Email sent\",\n emailFailed: \"Failed to send the receipt via email, please try again.\",\n deliveryDate: \"Delivery time\",\n },\n article: {\n allergens: 'Allergic? Talk to our staff and we will help you.'\n },\n offline: {\n header: 'Offline',\n text: 'You are offline, please check your internet connection and try again.',\n button: 'Try again'\n },\n updateApp: {\n text: 'A new version is available, please update to continue.',\n button: 'Update'\n },\n login: {\n header: 'Sign in',\n email: 'E-mail',\n password: 'Password',\n registerText: \"Don't have an account yet?\",\n registerLink: 'Create new account',\n confirm: 'log in',\n forgotPassword: 'Forgot password',\n separatorText: 'Or',\n failed: 'Failed to login, please try again',\n googleSignIn: 'Sign in with Google',\n facebookSignIn: 'Sign in with Facebook'\n },\n forgotPassword: {\n header: 'Forgot password',\n text: 'Have you forgotten your password? Enter your email to receive a recovery email.',\n email: {\n label: 'E-mail',\n placeholder: 'E-mail'\n },\n send: {\n text: 'Send'\n },\n sent: {\n header: 'E-mail sent',\n message: 'A recovery email has been sent to the specified e-mail, if you have not received an e-mail within a few minutes, there is no account linked to the specified e-mail.',\n newAccountText: 'Create an account'\n },\n },\n resetPassword: {\n header: 'Reset password',\n password: {\n label: 'New password',\n placeholder: 'Enter new password'\n },\n confirmPassword: {\n label: 'Confirm new password',\n placeholder: 'Enter the new password again'\n },\n send: {\n text: 'Reset password'\n },\n reset: {\n header: 'Password reset',\n message: 'Your password has been reset, you can now log in with your new password.'\n }\n },\n campaign: {\n bannerText: 'Campaign'\n },\n memberCard: {\n header: 'My digital club-card',\n text: 'Scan me on the kiosk or at the pos'\n\n },\n favorites: {\n header: 'My favorites',\n empty: 'You have no favorites yet'\n },\n orderHistory: {\n header: 'Order history',\n empty: 'Your order history is empty'\n },\n register: {\n header: 'Create account',\n success: {\n header: 'Account created',\n text: 'An email has been sent to the specified email address, please check your inbox and follow the instructions to confirm your email address. After that is completed you can sign in.',\n loginLink: 'Sign in'\n },\n firstname: {\n label: 'First name',\n placeholder: 'Enter your first name'\n },\n lastname: {\n label: 'Last name',\n placeholder: 'Enter your last name'\n },\n email: {\n label: 'Email',\n placeholder: 'Enter email'\n },\n phone: {\n label: 'Phone',\n placeholder: 'Enter phone number'\n },\n password: {\n label: 'Password',\n placeholder: 'Enter password'\n },\n confirmPassword: {\n label: 'Repeat password',\n placeholder: 'Repeat the password'\n },\n acceptTerms: {\n label: 'I accept the ',\n linkText: 'terms and conditions'\n },\n registerButton: 'Create account',\n passwordMismatch: {\n text: 'The passwords do not match'\n },\n },\n confirmEmail: {\n header: \"Confirm email\",\n text: \"Your account has been verified, you can now log in\",\n },\n navBar: {\n login: 'Sign in'\n },\n campaigns: {\n header: 'Offers',\n description: 'Below you see all the offers that are active right now, if you are logged in there may be more offers',\n descriptionAuthenticated: 'Below you see all the offers that are active right now.',\n membersOnly: {\n text: 'Membership offer'\n },\n localOffer: {\n text: 'Local offer'\n },\n offer: {\n text: 'Offer'\n },\n toArticle: {\n text: 'To the offer'\n },\n expandButton: {\n text: \"Show more\"\n },\n showMoreButton: {\n text: \"More offers\"\n },\n },\n profile: {\n edit: {\n header: \"Edit Profile\",\n submit: {\n text: \"Save\",\n title: \"Save the profile\"\n },\n userInformation: {\n header: \"User information\",\n name: {\n label: \"Name\",\n placeholder: \"Enter your name\",\n description: \"Your name will be displayed in the app\"\n },\n lastName: {\n label: \"Surname\",\n placeholder: \"Enter your surname\",\n description: \"Your name will be displayed in the app\"\n },\n email: {\n label: \"Email\",\n placeholder: \"Enter your Email\",\n description: \"Your email will be used to sign in to the app\"\n },\n phone: {\n label: \"Phone number\",\n placeholder: \"Enter your phone number\",\n description: \"Your phone number will be used to contact you if needed\"\n },\n },\n changePassword: {\n header: \"Change password\",\n password: {\n label: \"Current password\",\n placeholder: \"Enter your current password\",\n description: \"The password you currently use to sign in to the application\"\n },\n newPassword: {\n label: \"New password\",\n placeholder: \"Enter your new password\",\n description: \"The password you want to change to\"\n },\n confirmNewPassword: {\n label: \"Confirm the new password\",\n placeholder: \"Enter your new password again\",\n description: \"Confirm the password you want to change to\"\n },\n },\n emailConfirmationSent: \"An email has been sent to the specified email address, please check your inbox and follow the instructions to confirm your email address.\",\n success: {\n header: \"Saved!\",\n text: \"Your profile has been saved\"\n },\n deleteAccount: {\n text: \"Delete account\",\n title: \"Delete your account\",\n confirm: {\n header: \"Delete account?\",\n description: \"Are you really sure that you want to delete your account?\",\n ok: \"Yes, delete\",\n cancel: \"Cancel\"\n }\n }\n },\n menu: {\n userGreeting: 'Hi!',\n offers: 'Offers',\n favorites: 'My favorites',\n orderHistory: 'Order history',\n account: 'My account',\n logout: 'Sign out'\n },\n\n \"confirm-email\": {\n header: \"Confirm email\",\n text: \"Your account has been verified, you can now log in\",\n }\n },\n}","export default {\n home: {\n header: 'Välkommen!',\n subHeader: 'Välj din restaurang'\n },\n list: {\n menu: 'Meny'\n },\n shopchanged: {\n header: 'Varning!',\n text: 'Du har en pågående beställning kopplad till en annan restaurang än den nuvarande.'\n },\n checkout: {\n header: 'Kassa',\n pickup: 'När ska maten vara klar?',\n orderHeader: 'Min beställning',\n },\n payment: {\n header: 'Betala',\n confirmLeave: {\n header: 'Bekräfta tillbaka',\n text: 'Är du säker på att du vill lämna sidan? Om du lämnar nu kanske vi inte kan uppdatera dig med korrekt orderstatus då din betalning fortfarande pågår.',\n confirm:'Ja, jag är säker',\n cancel:'Nej, jag vill stanna kvar'\n }\n },\n termsAndConditions: {\n header: 'Allmänna villkor',\n closeButton: 'Stäng'\n },\n suggestedArticles: {\n header: 'Får vi erbjuda något annat?',\n },\n selectedShop: {\n header: 'Välj var du vill äta',\n extraInfo: ''\n },\n search: {\n label: 'Sök restaurang',\n placeholder: 'Hitta restaurang',\n noMatch: 'Ingen matchande restaurang'\n },\n shopSelector: {\n singleShop: {\n start: \"Beställ här\",\n closed: \"Stängt för idag\",\n paused: \"Beställning pausad\",\n offline: \"Offline\",\n openingHoursHeader: \"Dagens öppettider på webben\",\n }\n },\n button: {\n showMore: 'Visa mer',\n showMoreRestaurants: 'Visa fler restauranger',\n open: 'Öppet',\n closed: 'Stängt',\n paused: 'Beställning pausad',\n offline: 'Offline',\n dineInPlace: 'På restaurangen',\n takeAway: 'Ta med',\n pay: 'Betala',\n order: 'Beställ',\n orderNotReady: 'Beställningen är inte klar',\n change: 'Ändra',\n noThanks: 'Nej tack',\n done: 'Klar',\n cancel: 'Avbryt',\n changeRestaurant: 'Byt restaurang',\n changeLanguage: 'Byt språk',\n cancelOrder: 'Avbryt beställningen',\n yes: 'Ja',\n no: 'Nej',\n add: 'Lägg till',\n back: 'Tillbaka',\n backToCategories: 'Tillbaka till menyn',\n backToCategory: 'Tillbaka till {category}',\n backToArticle: 'Tillbaka till {article}',\n backToHome: 'Avbryt beställning',\n backToShopPage: 'Avbryt beställning',\n backToMenuRoot: 'Tillbaka',\n receipt: 'Kvitto',\n favorite: 'Favorit',\n choiceDone: 'Klar',\n },\n item: {\n notAvailable: 'Tillfälligt slut',\n favoriteHeader: 'Mina favoriter'\n },\n label: {\n total: 'Totalt',\n subtotal: 'Netto',\n tax: 'Varav moms ({percent}%)',\n dineInPlace: 'Äta på restaurangen',\n takeAway: 'Ta med',\n articleChoiceLabel1: 'Anpassa',\n articleChoiceLabel2: 'Byt tillbehör',\n articleChoiceLabel3: 'Lägg till extra tillbehör',\n articleChoiceLabel4: 'Ändra dryck',\n articleChoiceLabel5: 'Välj smak',\n now: 'Så snart som möjligt',\n },\n order: {\n header: 'Min beställning',\n pageHeader: 'Din beställning',\n thankYouText: 'Tack för din beställning',\n infoText: '(Tryck på produkt för att ändra)',\n infoText2: '(ev. rabatter dras i nästa steg)',\n emptyInfoText: 'Inga varor i korgen ännu',\n selectedRestaurant: 'Vald restaurang',\n missing: 'Beställningen saknas',\n pickUpLabel: 'Beräknad hämtningstid',\n statusLabel: 'Nuvarande status',\n numberLabel: 'Beställningsnummer',\n note: {\n label: \"Övrig information\",\n placeholder: \"Ange övrig information\",\n remove: \"Ta bort\"\n },\n deliverySpot: {\n label: \"Levereras till\",\n empty: \"Ingen vald...\"\n },\n status: {\n calculatedprice: {\n label: \"Kontrollerar beställning...\",\n description: \"\"\n },\n added: {\n label: 'Mottagen',\n description: \"Din beställning är mottagen\"\n },\n started: {\n label: 'Tillagas!',\n description: \"Din beställning tillagas.\"\n },\n finnished: {\n label: 'Klart',\n description: \"Din beställning är redo att hämtas\"\n },\n delivered: {\n label: \"Upphämtad\",\n description: \"Hoppas maten smakar\"\n },\n rollbacked: {\n label: \"Avbruten\",\n description: \"Din beställning är avbryten. Reservationen på kortet är borttagen, har du betalat med Swish bör du kontakta restaurangen för återbetalning.\"\n }\n },\n campaignLabel: 'Erbjudande'\n },\n loader: {\n text: 'Laddar...',\n languages: 'Hämtar språkval',\n categories: 'Hämtar kategorier',\n favorites: 'Hämtar dina favoriter',\n orderHistory: 'Hämtar din beställningshistorik',\n image: '',\n calculatesDistances: 'Beräknar avstånd',\n checkoutSummary: 'Kontaktar restaurangen',\n },\n cancel: {\n header: 'Avbryt',\n text: 'Vill du verkligen avbryta?',\n order: {\n header: 'Avbryt beställning',\n description: 'Vill du avbryta din beställning?',\n confirm: 'Ja, avbryt',\n cancel: 'Nej, fortsätt',\n }\n },\n error: {\n heading: 'Felmeddelande',\n closeButtonText: 'Stäng',\n server: 'Det uppstod ett serverfel, försök igen.',\n badRequest: 'Din webbläsare skickade en begäran som den här servern inte kunde förstå.',\n notFound: 'Sidan kunde inte hittas. Detta kan bero på att artikeln eller sidan inte finns tillgänlig för denna restaurang.',\n unknown: 'Okänt fel, försök igen. ',\n \"One or more validation errors occurred\": \"Ett eller flera valideringsfel uppstod\",\n InvalidToken: \"Din lösenordsåterställningslänk är ogiltig eller har gått ut, vänligen begär en ny länk.\",\n PasswordRequiresNonAlphanumeric: \"Lösenordet måste innehålla minst ett specialtecken.\",\n PasswordRequiresDigit: \"Lösenordet måste innehålla minst en siffra ('0'-'9').\",\n PasswordRequiresLower: \"Lösenordet måste innehålla minst en liten bokstav ('a'-'z').\",\n PasswordRequiresUpper: \"Lösenordet måste innehålla minst en stor bokstav ('A'-'Z').\",\n PasswordTooShort: \"Lösenordet måste innehålla minst 6 tecken\",\n PasswordMismatch: \"Lösenorden matchar inte.\",\n DuplicateUserName: \"Ett konto med denna e-postadress finns redan.\",\n DuplicateEmail: \"Testa logga in eller glömt lösenord istället.\",\n deliverySpotRequired: \"Vänligen välj en leveransplats innan du fortsätter.\",\n order: {\n \"unavailable-products\": \"Någon av produkterna i din varukorg är inte längre tillgängliga för beställning\",\n \"shop-closed\": \"Restaurangen du försöker beställa till är stängd, försök igen senare.\",\n \"shop-closed-at-pickuptime\": \"Restaurangen du försöker beställa till är stängd vid den angivna upphämtningstiden\",\n \"shop-paused\": \"Restaurangen du försöker beställa till tar tyvärr inte emot beställningar via webben just nu, försök igen senare.\",\n \"create-order-failed\": \"Tyvärr gick det för närvarande inte att skapa din beställing, var god försök igen senare.\",\n \"create-order-failed-missing-recipe-items\": \"Någon av produkterna i din beställning saknar nödvändiga ingredienser.\",\n \"preorder-create-order-failed\":{\n \"invalid-shop-id\": \"Ogiltigt restaurang-ID, var god kontrollera och försök igen.\",\n \"shop-not-found\": \"Restaurangen du försöker beställa till är stängd eller har stängt för gott, försök igen senare.\",\n \"internal-server-error\": \"Ett okänt fel uppstod med ordersystemet, var god försök igen senare.\",\n \"missing-parameter\": \"Ett nödvändigt fält saknas, var god kontrollera din beställning och försök igen.\",\n \"invalid-parameter\": \"En eller flera ogiltiga värden angavs, var god kontrollera och försök igen.\",\n \"shop-paused\": \"Restaurangen du försöker beställa till tar tyvärr inte emot beställningar via webben just nu, försök igen senare.\",\n \"shop-offline\": \"Restaurangen du försöker beställa till är offline, försök igen senare.\",\n \"shop-method-not-supported\": \"Restaurangen stöder inte denna beställningsmetod, försök med en annan metod.\",\n \"shop-error-internal-error\": \"Ett internt fel uppstod hos restaurangen, var god försök igen senare.\",\n \"shop-error-invalid-date-time\": \"Ogiltigt datum eller tid angivet, var god kontrollera och försök igen.\",\n \"shop-error-date-time-in-the-past\": \"Det angivna datumet eller tiden är i det förflutna, var god välj ett senare datum/tid.\",\n \"shop-error-timeout-waiting-for-call-lock\": \"Tidsgräns överskreds medan systemet väntade på svar, var god försök igen.\",\n \"shop-error-terminal-not-found\": \"Restaurangens terminal kunde inte hittas, försök igen senare.\",\n \"shop-error-stock-center-not-found\": \"Lagercenter kunde inte hittas, försök igen senare.\",\n \"shop-error-recipe-items-missing\": \"Vissa ingredienser saknas för beställningen, vänligen kontakta restaurangen.\",\n \"shop-error-internal-error-in-call\": \"Ett internt fel inträffade under samtalet med restaurangen, försök igen senare.\",\n \"shop-error-order-not-found\": \"Beställningen kunde inte hittas, var god kontrollera din beställningsinformation.\",\n \"shop-error-order-is-delivered\": \"Beställningen har redan levererats.\",\n \"shop-error-order-is-deleted\": \"Beställningen har raderats.\",\n \"shop-error-order-is-started\": \"Beställningen har redan påbörjats och kan inte ändras.\",\n \"shop-error-database-error\": \"Ett fel uppstod med databasen, försök igen senare.\",\n \"shop-error-failed-to-open-database\": \"Kunde inte öppna databasen, försök igen senare.\",\n \"shop-error-failed-to-init-coffe-card\": \"Kunde inte initiera kaffekortet, försök igen senare.\",\n \"shop-error-failed-to-init-coffe-card-campaing\": \"Kunde inte initiera kaffekortkampanjen, försök igen senare.\",\n \"shop-error-profit-center-not-found\": \"Vinstcenter kunde inte hittas, kontakta supporten.\",\n \"shop-error-payment-not-found\": \"Betalningen kunde inte hittas, var god försök igen.\",\n \"shop-error-slots-not-in-use\": \"Tidsluckor används inte för tillfället, försök igen senare.\",\n \"shop-error-cashier-not-found\": \"Kassör kunde inte hittas, försök igen senare.\",\n \"shop-error-currency-error\": \"Ett valutaförhållningsfel uppstod, var god kontrollera och försök igen.\",\n \"shop-error-articles-not-available\": \"Vissa artiklar är inte tillgängliga, vänligen uppdatera din beställning.\",\n \"shop-error-slot-not-available\": \"Den valda tidsluckan är inte tillgänglig, vänligen välj en annan.\",\n \"shop-error-internal-error-post-order-check-error\": \"Ett internt fel uppstod efter beställningen, försök igen.\",\n \"shop-error-internal-error-post-order-fixed\": \"Ett internt fel uppstod men det har åtgärdats, försök att fortsätta.\",\n \"shop-error-internal-error-post-order-not-fixed\": \"Ett internt fel uppstod som inte kunde åtgärdas, försök igen senare.\",\n \"shop-error-no-central-web-plu\": \"Det centrala webbundernumret saknas, var god kontakta support.\",\n \"unknown-error\": \"Ett okänt fel uppstod, var god försök igen.\"\n }\n },\n payment: {\n failed: 'Det uppstod tyvärr ett fel vid betalningen (kod:01)',\n aborted: 'Det uppstod tyvärr ett fel vid betalningen (kod:02)',\n notPaid: 'Det uppstod tyvärr ett fel vid betalningen (kod:03)',\n invalid: 'Det uppstod tyvärr ett fel vid betalningen (kod:04)',\n accesstokenMissing: 'Det uppstod tyvärr ett fel vid betalningen (kod:05)',\n IdentifierMissing: 'Det uppstod tyvärr ett fel vid betalningen (kod:06)',\n NotFound: 'Det uppstod tyvärr ett fel vid betalningen (kod:07)',\n merchantNotFound: 'Det uppstod tyvärr ett fel vid betalningen (kod:08)',\n orderNotFound: 'Det uppstod tyvärr ett fel vid betalningen (kod:09)',\n returnUrl: 'Det uppstod tyvärr ett fel vid betalningen (kod:10)',\n requestParametersMissing: 'Det uppstod tyvärr ett fel vid betalningen (kod:11)',\n orderFailed: 'Det uppstod tyvärr ett fel vid betalningen (kod:12)',\n captureFailed: 'Det uppstod tyvärr ett fel vid betalningen (kod:13)',\n createError: 'Det uppstod tyvärr ett fel vid betalningen (kod: 14)',\n loadScriptError: 'Det uppstod tyvärr ett fel vid betalningen (kod: 15)',\n },\n user: {\n \"invalid-password\": \"Lösenordet uppfyller inte de minimikrav som ställs.\",\n \"register-user-failure\": \"Misslyckades att skapa konto\",\n \"password-mismatch\": \"Lösenorden matchar inte\",\n \"send-email-confirmation-failed\": \"Misslyckades att skicka e-postbekräftelse\",\n \"invalid-phone\": \"Det angivna telefonnumret är ogiltigt\",\n \"requires-phone\": \"Var vänlig ange ditt telefonnummer\",\n },\n menu: {\n \"not-found\": \"Menyn kunde inte hittas för restaurangen med id {shopId}\",\n }\n },\n privacyPolicy: {\n header: 'Sekretess policy',\n policy: \"

Vi på Winpos respekterar din integritet och har åtagit oss att skydda din personliga information. Denna integritetspolicy beskriver den information vi samlar in, hur vi använder den och hur vi skyddar den i samband med din användning av vår weborder/app.

\\n\" +\n \"

Information vi samlar in

\\n\" +\n \"

Vi kan samla in personuppgifter som du tillhandahåller när du använder vår weborder/app, till exempel din IP-adress. Vi kan också samla in icke-personlig information, till exempel din enhetstyp och användningsdata.

\\n\" +\n \"

Hur vi använder din information

\\n\" +\n \"

Vi använder den personliga information vi samlar in för att uppfylla din beställning, tillhandahålla kundsupport och kommunicera med dig om vår weborder/app. Vi kan också använda din information för att skicka dig marknadsföringskommunikation om våra andra produkter och tjänster.

\\n\" +\n \"

Vi kan dela din information med tredje parts tjänsteleverantörer som hjälper oss att uppfylla din beställning och tillhandahålla kundsupport. Vi kan också dela din information med våra dotterbolag och partners för marknadsföringsändamål.

\\n\" +\n \"

Rättslig grund för behandling

\\n\" +\n \"

Enligt GDPR behandlar vi dina personuppgifter på den rättsliga grunden för ditt samtycke eller för att uppfylla ett avtal med dig. Vi har också ett berättigat intresse av att behandla din information för kundsupport och marknadsföringsändamål.

\\n\" +\n \"

Hur vi skyddar din information

\\n\" +\n \"

Vi vidtar rimliga åtgärder för att skydda din personliga information från obehörig åtkomst, avslöjande, ändring och förstörelse. Vi använder säkerhetsåtgärder av branschstandard, såsom kryptering och säkra servrar, för att skydda din information.

\\n\" +\n \"

Dina rättigheter

\\n\" +\n \"

Enligt GDPR har du rätt att få tillgång till, korrigera, radera och begränsa behandlingen av dina personuppgifter. Du har också rätt att invända mot behandlingen av dina personuppgifter för marknadsföringsändamål.

\\n\" +\n \"

Om du vill utöva någon av dessa rättigheter, vänligen kontakta oss på info@winpos.se. Vi kommer att svara på din förfrågan inom 30 dagar.

\\n\" +\n \"

Uppdateringar av denna sekretesspolicy

\\n\" +\n \"

Vi kan uppdatera denna sekretesspolicy från tid till annan för att återspegla förändringar i vår praxis eller tillämplig lag. Vi kommer att meddela dig om eventuella väsentliga ändringar genom att publicera den uppdaterade sekretesspolicyn på vår webbplats eller via vår weborder/app.

\\n\" +\n \"

Kontakta oss

\\n\" +\n \"

Om du har några frågor eller funderingar om denna sekretesspolicy eller vår GDPR-efterlevnad, vänligen kontakta oss på info@winpos.se.

\\n\" +\n \"

Ikraftträdandedatum: 2023-05-01

\"\n },\n receipt: {\n heading: \"Kvitto\",\n total: \"Totalt\",\n amountPrefix: \"á\",\n vat: \"Moms\",\n net: \"Netto\",\n orderNumber: \"Beställnings nr\",\n paymentId: \"Betalnings id\",\n deliverySpot: \"Levereras till\",\n note: \"Övrig information\",\n email: \"E-post:\",\n emailPlaceHolder: \"Skriv in din e-postadress\",\n sendEmail: \"Skicka kvitto\",\n loading: \"Skickar kvittot...\",\n emailSent: \"Kvitto skickat\",\n emailFailed: \"Misslyckades att skicka kvittot via e-post, vänligen försök igen.\",\n deliveryDate: \"Leveranstid\",\n },\n article: {\n allergens: 'Allergisk? Prata med oss i personalen så hjälper vi dig.'\n },\n offline: {\n header: 'Det går inte ansluta till internet',\n text: 'Kontrollera din internetanslutning och försök igen.',\n button: 'Försök igen'\n },\n updateApp: {\n text: 'En ny version är tillgänglig, vänligen uppdatera för att fortsätta.',\n button: 'Uppdatera'\n },\n popup: {\n buttons: {\n close: 'Stäng'\n },\n },\n login: {\n header: 'Logga in',\n email: 'E-post',\n password: 'Lösenord',\n registerText: 'Saknar du konto?',\n registerLink: 'Skapa konto',\n confirm: 'Logga in',\n forgotPassword: 'Glömt lösenord',\n separatorText: 'Eller',\n failed: 'Misslyckades att logga in, försök igen',\n googleSignIn: 'Logga in med Google',\n facebookSignIn: 'Logga in med Facebook'\n },\n forgotPassword: {\n header: 'Glömt lösenord',\n text: 'Har ni glömt ert lösenord? Fyll i din e-post för att få ett återställningsmejl.',\n email: {\n label: 'Ange e-post',\n placeholder: 'E-post'\n },\n send: {\n text: 'Skicka'\n },\n sent: {\n header: 'Skickat',\n message: 'Ett återställningsmail har skickats till angivna epost, har ni inte fått något mail inom några minuter finns det inget konto kopplat till angiven e-post.',\n newAccountText: 'Skapa ett konto'\n },\n },\n resetPassword: {\n header: 'Återställ lösenordet',\n password: {\n label: 'Nytt lösenord',\n placeholder: 'Ange ett nytt lösenord'\n },\n confirmPassword: {\n label: 'Bekräfta det nya lösenordet',\n placeholder: 'Ange det nya lösenordet igen'\n },\n send: {\n text: 'Återställ'\n },\n reset: {\n header: 'Lösenordet återställt',\n message: 'Ditt lösenord har återställts, du kan nu logga in med ditt nya lösenord.'\n }\n },\n campaign: {\n bannerText: 'Erbjudande'\n },\n memberCard: {\n header: 'Mitt digitala klubb-kort',\n text: 'Skanna mig i kassan eller i självbetjänten'\n },\n orderHistory: {\n header: 'Beställningshistorik',\n empty: 'Du har ingen beställningshistorik ännu'\n },\n favorites: {\n header: 'Mina favoriter',\n empty: 'Du har inga favoriter ännu'\n },\n register: {\n header: 'Skapa konto',\n success: {\n header: 'Konto skapat',\n text: 'Ett mail har skickats till angiven e-post, vänligen kolla din inkorg och följ instruktionerna för att bekräfta din e-postadress. Efter det kan du logga in.',\n loginLink: 'Logga in'\n },\n firstname: {\n label: 'Förnamn',\n placeholder: 'Ange förnamn'\n },\n lastname: {\n label: 'Efternamn',\n placeholder: 'Ange efternamn'\n },\n email: {\n label: 'E-post',\n placeholder: 'Ange e-post'\n },\n phone: {\n label: 'Telefonnummer', \n placeholder: 'Ange telefonnummer'\n },\n password: {\n label: 'Lösenord',\n placeholder: 'Ange lösenord'\n },\n confirmPassword: {\n label: 'Upprepa lösenordet',\n placeholder: 'Upprepa lösenordet'\n },\n acceptTerms: {\n label: 'Jag godkänner ',\n linkText: 'villkoren'\n },\n passwordMismatch: {\n text:'Lösenorden matchar inte'\n },\n registerButton: 'Skapa konto'\n\n },\n confirmEmail: {\n header: \"E-post bekräftad\",\n text: \"Ditt konto har bekräftats, du kan nu logga in.\",\n },\n navBar: {\n login: 'Logga in'\n },\n campaigns: {\n header: 'Erbjudanden just nu',\n description: 'Nedan ser du alla erbjudanden som är aktiva just nu, är du inloggad så kan det finnas fler erbjudanden.',\n descriptionAuthenticated: 'Nedan ser du alla erbjudanden som är aktiva just nu.',\n membersOnly: {\n text: 'Medlemserbjudande'\n },\n localOffer: {\n text: 'Lokalt erbjudande'\n },\n offer: {\n text: 'Erbjudande'\n },\n toArticle: {\n text: 'Till erbjudandet'\n },\n expandButton: {\n text: \"Visa mer\"\n },\n showMoreButton: {\n text: \"Se alla erbjudanden\"\n },\n },\n profile: {\n edit: {\n header: \"Mitt konto\",\n submit: {\n text: \"Spara\",\n title: \"Spara kontouppgifter\"\n },\n userInformation: {\n header: \"Användarinformation\",\n name: {\n label: \"Namn\",\n placeholder: \"Skriv in ditt namn\",\n description: \"Ditt namn kommer visas på ditt konto\"\n },\n lastName: {\n label: \"Efternamn\",\n placeholder: \"Skriv in ditt efternamn\",\n description: \"Ditt efternamn kommer visas på ditt konto\"\n },\n email: {\n label: \"E-post\",\n placeholder: \"Skriv in din e-post\",\n description: \"Din e-post använder du när du loggar in\"\n },\n phone: {\n label: \"Telefon\",\n placeholder: \"Skriv in ditt telefonnummer\",\n description: \"Ditt telefonnummer används för att kontakta dig vid behov\"\n },\n },\n changePassword: {\n header: \"Byt lösenord\",\n password: {\n label: \"Nuvarande lösenord\",\n placeholder: \"Skriv in ditt nuvarande lösenord\",\n description: \"Skriv in det lösenord du använder idag för att logga in\"\n },\n newPassword: {\n label: \"Nytt lösenord\",\n placeholder: \"Skriv in ditt nya lösenord\",\n description: \"Det lösenord som du vill byta till\"\n },\n confirmNewPassword: {\n label: \"Bekräfta det nya lösenordet\",\n placeholder: \"Skriv in det nya lösenordet igen\",\n description: \"Det lösenord som du vill byta till, igen\"\n },\n },\n emailConfirmationSent: \"Ett mail har skickats till angiven e-post, vänligen kolla din inkorg och följ instruktionerna för att bekräfta din e-postadress.\",\n success: {\n header: \"Sparat!\",\n text: \"Dina uppgifter har sparats\"\n },\n deleteAccount: {\n text: \"Ta bort konto\",\n title: \"Ta bort ditt konto från tjänsten\",\n confirm: {\n header: \"Ta bort konto??\",\n description: \"Är du verkligen helt säker på att du vill ta bort kontot?\",\n ok: \"Ja, ta bort\",\n cancel: \"Avbryt\"\n }\n },\n },\n menu: {\n userGreeting: 'Hej!',\n offers: 'Erbjudanden',\n favorites: 'Mina favoriter ',\n orderHistory: 'Beställningshistorik',\n account: 'Mitt konto',\n logout: 'Logga ut'\n },\n }\n}","export default {\n \"article\": {\n \"allergens\": \"Allerginen? Keskustele henkilökuntamme kanssa, niin autamme sinua.\"\n },\n \"button\": {\n \"add\": \"Lisää\",\n \"back\": \"Takaisin\",\n \"backToArticle\": \"Palaa tuotteeseen {article}\",\n \"backToCategories\": \"Palaa kategorioihin\",\n \"backToCategory\": \"Palaa kategoriaan {category}\",\n \"backToHome\": \"Keskeytä tilaus\",\n \"backToMenuRoot\": \"Takaisin\",\n \"backToShopPage\": \"Keskeytä tilaus\",\n \"cancel\": \"Keskeytä\",\n \"cancelOrder\": \"Keskeytä tilaus\",\n \"change\": \"Muokkaa\",\n \"changeLanguage\": \"Vaihda kieli\",\n \"changeRestaurant\": \"Vaihda ravintola\",\n \"choiceDone\": \"Valmis\",\n \"closed\": \"Suljettu\",\n \"dineInPlace\": \"Syön ravintolassa\",\n \"done\": \"Valmis\",\n \"favorite\": \"Suosikki\",\n \"no\": \"Ei\",\n \"noThanks\": \"Ei kiitos\",\n \"offline\": \"Offline\",\n \"open\": \"Avoinna\",\n \"order\": \"Tilaa\",\n \"orderNotReady\": \"Tilaus ei ole valmis\",\n \"paused\": \"Suljettu tilauksilta\",\n \"pay\": \"Maksa\",\n \"receipt\": \"Kuitti\",\n \"showMore\": \"Näytä enemmän\",\n \"showMoreRestaurants\": \"Näytä enemmän ravintoloita\",\n \"takeAway\": \"Otan mukaan\",\n \"yes\": \"Kyllä\"\n },\n \"campaign\": {\n \"bannerText\": \"Kampanja\"\n },\n \"campaigns\": {\n \"description\": \"Alla näet kaikki tällä hetkellä voimassa olevat tarjoukset. Jos olet kirjautunut sisään, tarjouksia saattaa olla enemmän.\",\n \"descriptionAuthenticated\": \"Alla näet kaikki tällä hetkellä voimassa olevat tarjoukset.\",\n \"expandButton\": {\n \"text\": \"Näytä enemmän\"\n },\n \"header\": \"Tarjoukset\",\n \"localOffer\": {\n \"text\": \"Paikallinen tarjous\"\n },\n \"membersOnly\": {\n \"text\": \"Jäsentarjous\"\n },\n \"offer\": {\n \"text\": \"Tarjous\"\n },\n \"showMoreButton\": {\n \"text\": \"Katso kaikki tarjoukset\"\n },\n \"toArticle\": {\n \"text\": \"Siirry tarjoukseen\"\n }\n },\n \"cancel\": {\n \"header\": \"Keskeytä\",\n \"order\": {\n \"cancel\": \"Ei, jatka\",\n \"confirm\": \"Kyllä, keskeytän tilauksen\",\n \"description\": \"Haluatko keskeyttää tilauksesi?\",\n \"header\": \"Keskeytä tilaus\"\n },\n \"text\": \"Haluatko keskeyttää tilauksen?\"\n },\n \"checkout\": {\n \"header\": \"Kassa\",\n \"orderHeader\": \"Tilaukseni\",\n \"pickup\": \"Noutoaika\"\n },\n \"confirmEmail\": {\n \"header\": \"Sähköposti vahvistettu\",\n \"text\": \"Tilisi on vahvistettu, voit nyt kirjautua sisään.\"\n },\n \"error\": {\n \"DuplicateEmail\": \"Yritä kirjautua sisään tai valitse \\\"Unohditko salasanasi?\\\"\",\n \"DuplicateUserName\": \"Tällä sähköpostiosoitteella on jo tili.\",\n \"InvalidToken\": \"Salasanasi palautustunnus on virheellinen tai vanhentunut. Palauta salasana uudelleen.\",\n \"One or more validation errors occurred\": \"Tapahtui yksi tai useampi vahvistusvirhe.\",\n \"PasswordMismatch\": \"Salasanat eivät täsmää.\",\n \"PasswordRequiresDigit\": \"Salasanassa on oltava vähintään yksi numero ('0'-'9').\",\n \"PasswordRequiresLower\": \"Salasanassa on oltava vähintään yksi pieni kirjain ('a'-'z').\",\n \"PasswordRequiresNonAlphanumeric\": \"Salasanassa on oltava vähintään yksi erikoismerkki.\",\n \"PasswordRequiresUpper\": \"Salasanassa on oltava vähintään yksi iso kirjain ('A'-'Z').\",\n \"PasswordTooShort\": \"Salasanan tulee olla vähintään 6 merkkiä pitkä.\",\n \"badRequest\": \"Selaimesi lähetti pyynnön, jota tämä palvelin ei ymmärtänyt.\",\n \"closeButtonText\": \"Sulje\",\n \"deliverySpotRequired\": \"Ole hyvä ja valitse toimituspiste ennen kuin jatkat.\",\n \"heading\": \"Virheviesti\",\n \"menu\": {\n \"not-found\": \"Ruokalistaa ei löytynyt ravintolalle, jonka tunnus on {shopId}.\"\n },\n \"notFound\": \"Sivua ei löytynyt. Tämä voi johtua siitä, että tuotetta tai sivua ei ole saatavilla tälle ravintolalle.\",\n \"order\": {\n \"create-order-failed\": \"Jostain syystä emme voineet nyt luoda tilaustasi. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"create-order-failed-missing-recipe-items\": \"Joistakin tilauksesi tuotteista puuttuu tarvittavat ainesosat.\",\n \"preorder-create-order-failed\": {\n \"internal-server-error\": \"Tilausjärjestelmässä tapahtui tuntematon virhe. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"invalid-parameter\": \"Vähintään yksi virheellinen arvo on syötetty. Tarkista tiedot ja yritä uudelleen.\",\n \"invalid-shop-id\": \"Virheellinen ravintolatunnus. Tarkista tunnus ja yritä uudelleen.\",\n \"missing-parameter\": \"Pakollinen kenttä puuttuu. Tarkista tilauksesi ja yritä uudelleen.\",\n \"shop-error-articles-not-available\": \"Jotkut tuotteet eivät ole saatavilla. Ole hyvä ja päivitä tilauksesi. \",\n \"shop-error-cashier-not-found\": \"Kassanhoitajaa ei löydy. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-currency-error\": \"Tapahtui valuuttavirhe. Tarkista valuutta ja yritä uudelleen.\",\n \"shop-error-database-error\": \"Tapahtui tietokantavirhe. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-date-time-in-the-past\": \"Valittu päivämäärä tai aika on mennyt. Ole hyvä ja valitse myöhempi päivämäärä/aika.\",\n \"shop-error-failed-to-init-coffe-card\": \"Kahvikortin alustaminen epäonnistui. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-failed-to-init-coffe-card-campaing\": \"Kahvikorttikampanjan alustaminen epäonnistui. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-failed-to-open-database\": \"Tietokannan avaaminen epäonnistui. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-internal-error\": \"Ravintolassa tapahtui sisäinen virhe. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-internal-error-in-call\": \"Sisäinen virhe kommunikoitaessa ravintolan kanssa. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-internal-error-post-order-check-error\": \"Tilauksen jälkeen tapahtui sisäinen virhe. Ole hyvä ja yritä uudelleen.\",\n \"shop-error-internal-error-post-order-fixed\": \"Tapahtui sisäinen virhe, mutta se on korjattu. Ole hyvä ja jatka.\",\n \"shop-error-internal-error-post-order-not-fixed\": \"Tapahtui sisäinen virhe, jota ei voitu korjata. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-invalid-date-time\": \"Virheellinen päivämäärä tai aika. Tarkista tiedot ja yritä uudelleen.\",\n \"shop-error-no-central-web-plu\": \"Central web PLU puuttuu. Ota yhteyttä tukeen.\",\n \"shop-error-order-is-deleted\": \"Tilaus on poistettu.\",\n \"shop-error-order-is-delivered\": \"Tilaus on jo toimitettu.\",\n \"shop-error-order-is-started\": \"Tilaus on jo aloitettu, eikä sitä voi muuttaa.\",\n \"shop-error-order-not-found\": \"Tilausta ei löytynyt. Ole hyvä ja tarkista tilauksesi tiedot.\",\n \"shop-error-payment-not-found\": \"Maksua ei löytynyt. Ole hyvä ja yritä uudelleen.\",\n \"shop-error-profit-center-not-found\": \"Kustannuspaikkaa ei löytynyt. Ota yhteyttä tukeen.\",\n \"shop-error-recipe-items-missing\": \"Osa tilauksen ainesosista puuttuu. Ole hyvä ja ota yhteyttä ravintolaan.\",\n \"shop-error-slot-not-available\": \"Valittu aikaväli ei ole käytettävissä, ole hyvä ja valitse toinen.\",\n \"shop-error-slots-not-in-use\": \"Aikavälit eivät ole tällä hetkellä käytössä. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-stock-center-not-found\": \"Varastopaikkaa ei löytynyt. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-terminal-not-found\": \"Ravintolan terminaalia ei löytynyt. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-error-timeout-waiting-for-call-lock\": \"Tapahtui aikakatkaisu vastausta odotellessa. Ole hyvä ja yritä uudelleen.\",\n \"shop-method-not-supported\": \"Ravintola ei tue tätä tilaustapaa, kokeile toista tapaa.\",\n \"shop-not-found\": \"Ravintola, josta yrität tilata, on joko suljettu tai suljettu pysyvästi. Yritä myöhemmin uudelleen.\",\n \"shop-offline\": \"Ravintola, josta yrität tilata, on offline-tilassa. Yritä myöhemmin uudelleen.\",\n \"shop-paused\": \"Ravintola, josta yrität tilata, ei tällä hetkellä ota vastaan ​​verkkotilauksia. Yritä myöhemmin uudelleen.\",\n \"unknown-error\": \"Tapahtui tuntematon virhe. Ole hyvä ja yritä uudelleen.\"\n },\n \"shop-closed\": \"Ravintola ei ole enää auki. Ole hyvä ja yritä myöhemmin uudelleen.\",\n \"shop-closed-at-pickuptime\": \"Ravintola on suljettu valitsemanasi noutoaikana.\",\n \"shop-paused\": \"Ravintola ei valitettavasti ota vastaan verkkotilauksia juuri nyt. Yritä myöhemmin uudelleen.\",\n \"unavailable-products\": \"Yksi tai useampi tilauksesi tuotteista ei ole enää saatavilla.\"\n },\n \"payment\": {\n \"IdentifierMissing\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:06)\",\n \"NotFound\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:07)\",\n \"aborted\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:02)\",\n \"accesstokenMissing\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:05)\",\n \"captureFailed\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:13)\",\n \"createError\": \"Maksun yhteydessä tapahtui tuntematon virhe (code: 14)\",\n \"failed\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:01)\",\n \"invalid\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:04)\",\n \"loadScriptError\": \"Maksun yhteydessä tapahtui tuntematon virhe (kod: 15)\",\n \"merchantNotFound\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:08)\",\n \"notPaid\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:03)\",\n \"orderFailed\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:12)\",\n \"orderNotFound\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:09)\",\n \"requestParametersMissing\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:11)\",\n \"returnUrl\": \"Maksun yhteydessä tapahtui tuntematon virhe (code:10)\"\n },\n \"server\": \"Palvelinvirhe, yritä uudelleen.\",\n \"unknown\": \"Tuntematon virhe, yritä uudelleen.\",\n \"user\": {\n \"invalid-password\": \"Salasana ei täytä vähimmäisvaatimuksia.\",\n \"password-mismatch\": \"Salasanat eivät täsmää.\",\n \"register-user-failure\": \"Tilin luominen epäonnistui.\",\n \"send-email-confirmation-failed\": \"Sähköpostivahvistuksen lähettäminen epäonnistui.\"\n }\n },\n \"favorites\": {\n \"empty\": \"Sinulla ei vielä ole suosikkeja\",\n \"header\": \"Omat suosikkini\"\n },\n \"forgotPassword\": {\n \"email\": {\n \"label\": \"Sähköposti\",\n \"placeholder\": \"Sähköposti\"\n },\n \"header\": \"Unohdin salasanani\",\n \"send\": {\n \"text\": \"Lähetä\"\n },\n \"sent\": {\n \"header\": \"Sähköposti lähetetty\",\n \"message\": \"Palautusviesti on lähetetty annettuun sähköpostiosoitteeseen. Jos et ole saanut sähköpostia muutaman minuutin kuluessa, annettuun sähköpostisoitteeseen ei ole linkitetty tiliä.\",\n \"newAccountText\": \"Luo tili\"\n },\n \"text\": \"Oletko unohtanut salasanasi? Syötä sähköpostiosoitteesi saadaksesi palautusviestin.\"\n },\n \"home\": {\n \"header\": \"Tervetuloa!\",\n \"subHeader\": \"Valitse ravintola\"\n },\n \"item\": {\n \"favoriteHeader\": \"Omat suosikkini\",\n \"notAvailable\": \"Tuote loppu\"\n },\n \"label\": {\n \"articleChoiceLabel1\": \"Muokkaa/lisää\",\n \"articleChoiceLabel2\": \"Muokkaa\",\n \"articleChoiceLabel3\": \"Valitse lisukkeet\",\n \"articleChoiceLabel4\": \"Muokkaa\",\n \"articleChoiceLabel5\": \"Valitse maku\",\n \"dineInPlace\": \"Syön ravintolassa\",\n \"now\": \"Nyt\",\n \"subtotal\": \"Välisumma\",\n \"takeAway\": \"Otan mukaan\",\n \"tax\": \"Alv ({percent}%)\",\n \"total\": \"Yhteensä\"\n },\n \"list\": {\n \"menu\": \"Menu\"\n },\n \"loader\": {\n \"calculatesDistances\": \"Lasketaan etäisyydet\",\n \"categories\": \"Etsitään kategorioita\",\n \"checkoutSummary\": \"Luodaan yhteys ravintolaan\",\n \"favorites\": \"Haetaan suosikkejasi\",\n \"languages\": \"Etsitään kielivaihtoehtoja\",\n \"orderHistory\": \"Haetaan tilaushistoriaasi\",\n \"text\": \"Ladataan...\"\n },\n \"login\": {\n \"confirm\": \"Kirjaudu sisään\",\n \"email\": \"Sähköposti\",\n \"facebookSignIn\": \"Kirjaudu sisään Facebookilla\",\n \"failed\": \"Kirjautuminen epäonnistui. Yritä uudelleen.\",\n \"forgotPassword\": \"Unohdin salasanani\",\n \"googleSignIn\": \"Kirjaudu sisään Googlella\",\n \"header\": \"Kirjaudu sisään\",\n \"password\": \"Salasana\",\n \"registerLink\": \"Luo tili\",\n \"registerText\": \"Eikö sinulla ole vielä tiliä?\",\n \"separatorText\": \"Tai\"\n },\n \"memberCard\": {\n \"header\": \"Digitaalinen klubikorttini\",\n \"text\": \"Skannaa minut kassalla tai itsepalvelupisteellä\"\n },\n \"navBar\": {\n \"login\": \"Kirjaudu sisään\"\n },\n \"offline\": {\n \"button\": \"Yritä uudelleen\",\n \"header\": \"Internet-yhteyden muodostaminen ei onnistu.\",\n \"text\": \"Tarkista internet-yhteytesi ja yritä uudelleen.\"\n },\n \"order\": {\n \"campaignLabel\": \"Kampanja\",\n \"deliverySpot\": {\n \"empty\": \"Ei valittu...\",\n \"label\": \"Toimitus osoitteeseen\"\n },\n \"emptyInfoText\": \"Ostoskorisi on vielä tyhjä\",\n \"header\": \"Tilaukseni\",\n \"infoText\": \"(Napauta tuotetta tehdäksesi muutoksia)\",\n \"infoText2\": \"(Mahdolliset alennukset vähennetään seuraavassa vaiheessa)\",\n \"missing\": \"Tilaus puuttuu\",\n \"note\": {\n \"label\": \"Muut tiedot\",\n \"placeholder\": \"Syötä muut tiedot\",\n \"remove\": \"Poista\"\n },\n \"numberLabel\": \"Tilausnumerosi\",\n \"pageHeader\": \"Tilauksesi\",\n \"pickUpLabel\": \"Arvioitu noutoaika\",\n \"selectedRestaurant\": \"Valittu ravintola\",\n \"status\": {\n \"added\": {\n \"description\": \"Tilauksesi on vastaanotettu ja sitä käsitellään.\",\n \"label\": \"Tilauksesi on vastaanotettu\"\n },\n \"calculatedprice\": {\n \"label\": \"Vahvistetaan tilausta...\"\n },\n \"delivered\": {\n \"description\": \"Toivottavasti ruoka maistuu!\",\n \"label\": \"Toimitettu\"\n },\n \"finnished\": {\n \"description\": \"Tilauksesi on valmis noudettavaksi.\",\n \"label\": \"Valmiina noudettavaksi!\"\n },\n \"rollbacked\": {\n \"description\": \"Tilaus keskeytetty. Korttisi varaus on poistettu. Jos olet maksanut Swishillä, ota yhteyttä ravintolaan hyvitystä varten.\",\n \"label\": \"Keskeytetty\"\n },\n \"started\": {\n \"description\": \"Tilaustasi valmistellaan.\",\n \"label\": \"Tilaustasi valmistellaan!\"\n }\n },\n \"statusLabel\": \"Nykyinen tila\",\n \"thankYouText\": \"Kiitos tilauksestasi\"\n },\n \"orderHistory\": {\n \"empty\": \"Tilaushistoriasi on tyhjä.\",\n \"header\": \"Tilaushistoria\"\n },\n \"payment\": {\n \"confirmLeave\": {\n \"cancel\": \"Ei, en halua poistua.\",\n \"confirm\": \"Kyllä, olen varma.\",\n \"header\": \"Vahvista poistuminen\",\n \"text\": \"Haluatko varmasti poistua sivulta? Poistuminen nyt voi estää meitä päivittämästä sinulle oikeaa tilauksen tilaa, koska maksusi on vielä kesken.\"\n },\n \"header\": \"Maksa tilaus\"\n },\n \"popup\": {\n \"buttons\": {\n \"close\": \"Sulje\"\n }\n },\n \"privacyPolicy\": {\n \"header\": \"Tietosuojakäytäntö\"\n },\n \"profile\": {\n \"confirm-email\": {\n \"header\": \"Vahvista sähköposti\",\n \"text\": \"Tilisi on vahvistettu, voit nyt kirjautua sisään.\"\n },\n \"edit\": {\n \"changePassword\": {\n \"confirmNewPassword\": {\n \"description\": \"Vahvista salasana, johon haluat vaihtaa.\",\n \"label\": \"Vahvista uusi salasana\",\n \"placeholder\": \"Syötä uusi salasanasi uudelleen\"\n },\n \"header\": \"Vaihda salasana\",\n \"newPassword\": {\n \"description\": \"Salasana, johon haluat vaihtaa\",\n \"label\": \"Uusi salasana\",\n \"placeholder\": \"Syötä uusi salasanasi\"\n },\n \"password\": {\n \"description\": \"Nykyinen salasana, jolla kirjaudut sovellukseen\",\n \"label\": \"Nykyinen salasana\",\n \"placeholder\": \"Syötä nykyinen salasanasi\"\n }\n },\n \"deleteAccount\": {\n \"confirm\": {\n \"cancel\": \"Keskeytä\",\n \"description\": \"Haluatko varmasti poistaa tilisi?\",\n \"header\": \"Poistetaanko tili?\",\n \"ok\": \"Kyllä, poista\"\n },\n \"text\": \"Poista tili\",\n \"title\": \"Poista tilisi\"\n },\n \"emailConfirmationSent\": \"Viesti on lähetetty annettuun sähköpostiosoitteeseen. Tarkista viestisi ja seuraa ohjeita sähköpostiosoitteesi vahvistamiseksi.\",\n \"header\": \"Oma profiili\",\n \"submit\": {\n \"text\": \"Tallenna\",\n \"title\": \"Tallenna tilitiedot\"\n },\n \"success\": {\n \"header\": \"Tallennettu!\",\n \"text\": \"Tietosi on tallennettu.\"\n },\n \"userInformation\": {\n \"email\": {\n \"description\": \"Käytät sähköpostiasi kirjautuessasi sisään\",\n \"label\": \"Sähköposti\",\n \"placeholder\": \"Syötä sähköpostiosoite\"\n },\n \"header\": \"Käyttäjätiedot\",\n \"lastName\": {\n \"description\": \"Sukunimesi näkyy tilitiedoissasi\",\n \"label\": \"Sukunimi\",\n \"placeholder\": \"Syötä sukunimesi\"\n },\n \"name\": {\n \"description\": \"Nimesi näkyy tilitiedoissasi\",\n \"label\": \"Nimi\",\n \"placeholder\": \"Syötä nimesi\"\n }\n }\n },\n \"menu\": {\n \"account\": \"Oma tili\",\n \"favorites\": \"Omat suosikkini\",\n \"logout\": \"Kirjaudu ulos\",\n \"offers\": \"Tarjoukset\",\n \"orderHistory\": \"Tilaushistoria\",\n \"userGreeting\": \"Hei!\"\n }\n },\n \"receipt\": {\n \"amountPrefix\": \"à\",\n \"deliveryDate\": \"Toimitusajankohta\",\n \"deliverySpot\": \"Toimitusosoite\",\n \"email\": \"Sähköpostiosoite:\",\n \"emailFailed\": \"Kuitin lähettäminen sähköpostitse epäonnistui. Yritä uudelleen.\",\n \"emailPlaceHolder\": \"Syötä sähköpostiosoitteesi\",\n \"emailSent\": \"Sähköposti lähetetty\",\n \"heading\": \"Kuitti\",\n \"loading\": \"Lähetetään kuittia ...\",\n \"net\": \"Netto\",\n \"note\": \"Muut tiedot\",\n \"orderNumber\": \"TilausNro\",\n \"paymentId\": \"Maksutunnus\",\n \"sendEmail\": \"Lähetä kuitti\",\n \"total\": \"Yhteensä\",\n \"vat\": \"Alv\"\n },\n \"register\": {\n \"acceptTerms\": {\n \"label\": \"Hyväksyn\",\n \"linkText\": \"ehdot\"\n },\n \"confirmPassword\": {\n \"label\": \"Toista salasana\",\n \"placeholder\": \"Toista salasana\"\n },\n \"email\": {\n \"label\": \"Sähköposti\",\n \"placeholder\": \"Syötä sähköpostiosoite\"\n },\n \"firstname\": {\n \"label\": \"Etunimi\",\n \"placeholder\": \"Syötä etunimesi\"\n },\n \"header\": \"Luo tili\",\n \"phone\": {\n \"label\": 'Puhelinnumero', \n \"placeholder\": 'Syötä puhelinnumero'\n },\n \"lastname\": {\n \"label\": \"Sukunimi\",\n \"placeholder\": \"Syötä sukunimesi\"\n },\n \"password\": { \n \"label\": \"Salasana\",\n \"placeholder\": \"Syötä salasana\"\n },\n \"passwordMismatch\": {\n \"text\": \"Salasanat eivät täsmää\"\n },\n \"registerButton\": \"Luo tili\",\n \"success\": {\n \"header\": \"Tili luotu\",\n \"loginLink\": \"Kirjaudu sisään\",\n \"text\": \"Viesti on lähetetty annettuun sähköpostiosoitteeseen. Tarkista viestisi ja seuraa ohjeita sähköpostiosoitteesi vahvistamiseksi. Tämän jälkeen voit kirjautua sisään.\"\n }\n },\n \"resetPassword\": {\n \"confirmPassword\": {\n \"label\": \"Vahvista uusi salasana\",\n \"placeholder\": \"Syötä uusi salasana uudelleen\"\n },\n \"header\": \"Palauta salasana\",\n \"password\": {\n \"label\": \"Uusi salasana\",\n \"placeholder\": \"Syötä uusi salasana\"\n },\n \"reset\": {\n \"header\": \"Salasana palautettu\",\n \"message\": \"Salasanasi on palautettu. Voit kirjautua sisään uudella salasanallasi.\"\n },\n \"send\": {\n \"text\": \"Palauta salasana\"\n }\n },\n \"search\": {\n \"label\": \"Etsi ravintola\",\n \"noMatch\": \"Vastaavia ravintoloita ei löytynyt\",\n \"placeholder\": \"Löydä ravintola\"\n },\n \"selectedShop\": {\n \"header\": \"Valitse missä haluat syödä\"\n },\n \"shopSelector\": {\n \"singleShop\": {\n \"closed\": \"Suljettu tältä päivältä\",\n \"offline\": \"Offline-tilassa\",\n \"openingHoursHeader\": \"Aukioloajat\",\n \"paused\": \"Suljettu tilauksilta\",\n \"start\": \"Aloita tilaus\"\n }\n },\n \"shopchanged\": {\n \"header\": \"Varoitus!\",\n \"text\": \"Sinulla on odottava tilaus toisessa ravintolassa kuin nyt valitussa ravintolassa.\"\n },\n \"show-password\": {\n \"hide\": \"Piilota salasana\",\n \"show\": \"Näytä salasana\"\n },\n \"suggestedArticles\": {\n \"header\": \"Saisiko olla vielä jotain muuta?\"\n },\n \"termsAndConditions\": {\n \"closeButton\": \"Sulje\",\n \"header\": \"Käyttöehdot\"\n },\n \"updateApp\": {\n \"button\": \"Päivitä\",\n \"text\": \"Uusi versio on saatavilla, suorita päivitys jatkaaksesi. \"\n }\n}","export default {\n home: {\n header: 'Добро пожаловать! Выберите свой ресторан',\n },\n checkout: {\n header: 'Kassan',\n text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'\n },\n suggestedArticles: {\n header: 'Får vi erbjuda något annat?',\n },\n selectedShop: {\n header: 'Выберите, где поесть'\n },\n search: {\n label: 'Поиск ресторана',\n placeholder: 'Найти ресторан',\n noMatch: 'Нет подходящего ресторана'\n },\n button: {\n showMore: 'Visa mer',\n showMoreRestaurants: 'Показать больше ресторанов',\n open: 'открыть',\n closed: 'Закрыто',\n paused: 'Stängt på webben',\n dineInPlace: 'Есть здесь',\n takeAway: 'Приносить',\n pay: 'Betala',\n order: 'Beställ',\n change: 'Ändra',\n noThanks: 'Nej tack',\n done: 'Klar',\n cancel: 'Avbryt',\n changeRestaurant: 'Изменить ресторан',\n changeLanguage: 'переключить язык',\n cancelOrder: 'Avbryt order',\n yes: 'Да',\n no: 'Нет'\n },\n label: {\n total: 'Totalt',\n dineInPlace: 'Äta här',\n takeAway: 'Ta med',\n articleChoiceLabel1: 'Ändra/lägg till ingredienser',\n articleChoiceLabel2: 'Ändra',\n articleChoiceLabel3: 'Lägg till extra tillbehör',\n articleChoiceLabel4: 'Ändra',\n articleChoiceLabel5: 'Välj smak',\n },\n order: {\n header: 'Min beställning',\n infoText: '(Tryck på produkt för att ändra)',\n emptyInfoText: 'Inga varor i korgen ännu'\n },\n loader: {\n text: 'Letar efter hamburgare',\n languages: 'Letar efter språkval',\n categories: 'Letar efter kategorier',\n image: ''\n },\n cancel: {\n header: 'Avbryt',\n text: 'Vill du verkligen avbryta?',\n order: {\n header: 'Avbryt beställning',\n description: 'Vill du avbryta din beställning?',\n confirm: 'Ja, avbryt',\n cancel: 'Nej, fortsätt',\n }\n }\n}","import {createI18n} from 'vue-i18n';\nimport en from './en'\nimport sv from './sv'\nimport fi from './fi'\nimport ru from './ru'\nimport {isDebug} from \"@/functions\";\n\nconst messages = {\n en: en,\n sv: sv,\n fi: fi,\n ru: ru\n}\n\nconst getLocaleFromCookie = ()=>{\n const cookie = document.cookie.split(';').find(c=>c.includes('.AspNetCore.Culture'))\n let culture = 'sv';\n if(cookie){\n const cookieValue = decodeURIComponent(cookie.split('=')[1]);\n const cultureValues = cookieValue.split('|');\n if(cultureValues.length > 1){\n culture = cultureValues[1].split('=')[1]; //uic value of aspnet core culture cookie\n }\n }\n console.log('culture', culture);\n return culture;\n}\n\n\nexport default createI18n({\n locale: getLocaleFromCookie(),\n fallbackLocale: isDebug() ? undefined:\"en\",\n legacy: false,\n messages\n})","export const messages = {\n sv: {\n home: {\n header: 'Välkommen till Sibylla \\n - välj din restaurang!',\n subHeader: '(OBS! Onlinebeställningen stänger alltid en stund innan restaurangen)'\n },\n article:{\n allergens: 'Allergisk? Läs mer om innehåll och allergener här.'\n },\n label: {\n dineInPlace: 'Äta på restaurangen',\n takeAway: 'Ta med',\n articleChoiceLabel1: 'Extra burgare', \n articleChoiceLabel2: 'Anpassa',\n articleChoiceLabel3: 'Välj tillbehör',\n articleChoiceLabel4: 'Ändra dryck',\n articleChoiceLabel5: 'Ändra tillval',\n },\n button: {\n pay: 'Till betalning',\n open: 'Öppet',\n closed: 'Stängt online',\n paused: 'Beställning pausad',\n offline: 'Stängt online'\n },\n },\n en:{},\n fi:{},\n no:{},\n ru:{}\n}","/* eslint-disable no-console */\n\nimport {register} from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\nregister(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n 'App is being served from cache by a service worker.\\n' +\n 'For more details, visit https://goo.gl/AFskqB'\n )\n },\n registered(registration) {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n document.body.classList.add('update-available');\n // if(confirm(\"New version available. Load New Version?\")){\n // window.location.reload();\n // }\n },\n offline() {\n console.log('No internet connection found. App is running in offline mode.')\n alert('offline');\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n }\n})\n}","import {IonicVue} from '@ionic/vue';\nimport mitt from 'mitt';\nimport {createPinia} from 'pinia';\nimport {createApp} from 'vue';\nimport App from './App.vue';\nimport i18n from \"./i18n\";\nimport router from './router';\nimport {messages} from 'i18n-customer-overrides';\n\n/* Core CSS required for Ionic components to work properly */\nimport '@ionic/vue/css/core.css';\n\n/* Basic CSS for apps built with Ionic */\nimport '@ionic/vue/css/normalize.css';\nimport '@ionic/vue/css/structure.css';\n/* Theme variables */\nimport {AppStore} from '@/stores/app';\nimport {CartStore} from '@/stores/cart';\nimport {NavigationStore} from '@/stores/navigation';\nimport {ShopStore} from '@/stores/shop';\nimport {CouponStore} from \"@/stores/coupon\";\nimport './theme/style.scss';\nimport {OrderType} from \"@/enums\";\nimport {isReachable} from \"@/functions\";\nimport {ApplicationInsights} from '@microsoft/applicationinsights-web'\n\n// import {registerWorker} from \"@/functions/register-worker\"; //needed for the future when we want to use push notifications\n// registerWorker();\nimport './registerServiceWorker';\nimport {AuthStore} from \"@/stores/auth\";\nimport {OrderStore} from \"@/stores/order\";\nimport {useApplicationInsights} from \"@/composables/useApplicationInsights\";\n\nconst appInsights = useApplicationInsights();\n\n// let appInsights: ApplicationInsights | null = null;\n// if(process.env.VUE_APP_INSIGHTS_CONN_STRING){\n// appInsights = new ApplicationInsights({\n// config: {\n// connectionString: process.env.VUE_APP_INSIGHTS_CONN_STRING\n// /* ...Other Configuration Options... */\n// }\n// });\n// appInsights.loadAppInsights();\n// }\n\nconst handler = (e: Event) => {\n const delay = 5000;\n if (navigator.onLine) {\n setTimeout(() => {\n isReachable(window.location.origin).then((online) => {\n if (!online) {\n console.log('offline');\n handler(e);\n } else {\n //if we are on the offline page, go to home, otherwise do nothing\n router.currentRoute.value.name === 'offline' && router.push({name: 'home'});\n }\n });\n }, delay);\n } else {\n //regardless of where we are, if we go offline, we go to the offline page\n router.push({name: 'offline'});\n }\n console.log(e);\n console.log(navigator.onLine);\n};\n\nwindow.addEventListener(\"online\", handler);\nwindow.addEventListener(\"offline\", handler);\n\nconst emitter = mitt();\nconst pinia = createPinia();\n\n//Add customer specific overrides of i18n texts\ni18n.global.mergeLocaleMessage('en', messages.en);\ni18n.global.mergeLocaleMessage('sv', messages.sv);\ni18n.global.mergeLocaleMessage('fi', messages.fi);\ni18n.global.mergeLocaleMessage('ru', messages.ru);\ni18n.global.mergeLocaleMessage('no', messages.no);\n\n\nconst app = createApp(App)\n .use(IonicVue)\n .use(router)\n .use(pinia)\n .use(i18n);\n\nrouter.isReady().then(() => {\n app.config.globalProperties.emitter = emitter;\n\n app.mount('#app');\n\n app.config.errorHandler = (err, instance, info) => {\n if(appInsights) {\n appInsights.trackException({exception: err as Error});\n }\n console.error('Global Error', err, instance, info);\n }\n});\n\nconst authStore = AuthStore();\nconst navStore = NavigationStore();\nconst shopStore = ShopStore();\nconst cartStore = CartStore();\nconst appStore = AppStore();\nconst couponStore = CouponStore();\n\ncouponStore.load();\n\nif (authStore.state.isAuthenticated) {\n document.body.classList.add('authenticated');\n}\n\nrouter.afterEach((to, from) => {\n appInsights?.trackPageView();\n});\n\nrouter.beforeEach(async (to, from) => {\n const orderStore = OrderStore();\n console.log('router.beforeEach:', orderStore.state.paidOrders);\n\n console.log('------------------------------------------')\n //we await the loading state so that it is available for each route\n if (authStore.state.loading) {\n console.log('authStore.state.loading is true, waiting for it to finish')\n await authStore.waitForLoading()\n console.log('authStore.state.loading is false, continuing')\n }\n\n console.log('routing from', from.name, \"to\", to.name, \"with parameters\", to.params, \"and query\", to.query);\n\n if (to.meta.requiresAuth && !authStore.state.isAuthenticated) {\n if (authStore.state.loading) {\n console.log('auth is loading, should wait for it to finish');\n }\n return {name: 'login', query: {redirectUri: to.fullPath}};\n }\n\n if (to.query.orderType != undefined || to.query.note != undefined) {\n console.log('route has orderType or note in query, setting them in cart')\n const q = {...to.query};\n if (to.query.orderType) {\n cartStore.setOrderType(to.query.orderType as OrderType);\n delete q.orderType;\n }\n\n if (to.query.note) {\n cartStore.setNote(to.query.note as string);\n delete q.note;\n }\n\n if (to.query.spotId) {\n cartStore.setDeliverySpot(parseInt(to.query.spotId as string));\n delete q.spotId;\n }\n\n //this shortcircuits the meta stuff which is not ideal\n\n to = {...to, query: q};\n }\n\n\n if (to.params.shopId && shopStore.id != Number(to.params.shopId)) {\n console.log(`route ${to.name?.toString()} has shopId ${to.params.shopId}, loading shop`);\n //The link contains a shopId, load the shop if it´s not already selected\n await shopStore.load(Number(to.params.shopId));\n if (!shopStore.id) {\n console.log('shop was not set, redirecting to home');\n return {name: 'home'};\n }\n }\n\n if (to.meta.requiresShop && shopStore.id && !shopStore.shop?.openForBusiness) {\n console.log('shop is closed, redirecting to home');\n return {name: 'home'};\n }\n\n\n if (to.meta.requiresShop && !shopStore.id) {\n console.log(`${to.name?.toString()} requires shop, but none was set, redirecting to home with redirectUri set to ${to.fullPath}`);\n return {name: 'home', query: {redirectUri: to.fullPath}};\n }\n\n // if(from.meta.confirmOnLeave){\n // if(window.confirm(\"Are you sure you want to leave this page????\")){\n // return to;\n // } else {\n // return from;\n // }\n // }\n\n appStore.state.currentPage = to?.name;\n appStore.state.lastPage = from?.name;\n appStore.state.currentPageFullPath = to?.fullPath;\n appStore.state.lastPageFullPath = from?.fullPath;\n\n cartStore.state.visible = to.meta?.showCart === true;\n console.log(`setting cart.visibility to ${cartStore.state.visible} for route ${to.name?.toString()}`);\n\n // Hide nav on Home\n if (to.name === 'home' || to?.name === 'offline') {\n const classes = [...document.body.classList]\n classes.filter(c => c.startsWith('shop-')).forEach(c => document.body.classList.remove(c));\n console.log('removing shop-classes from body', classes);\n console.log('removing deliverySpot and note from cart');\n cartStore.setDeliverySpot(null);\n cartStore.setNote(null);\n } else {\n if (cartStore.state.shopId) {\n document.body.classList.add(`shop-${cartStore.state.shopId ?? 'none'}`);\n console.log('setting shop-class on body to', cartStore.state.shopId);\n }\n }\n\n if (to.name !== 'home') {\n //If restaurant changed and user has items in cart then clear cart.\n if (cartStore.state.items.length > 0 && shopStore.id && !cartStore.compareShop(shopStore.id)) {\n cartStore.clear(true);\n console.log('clearing cart because shop changed')\n }\n }\n\n if (to.meta.editMode === true) {\n cartStore.state.editMode = true;//to.meta.editMode === true;\n console.log('setting editMode to', cartStore.state.editMode, 'for route', to.name?.toString());\n } else {\n cartStore.state.editMode = false;\n }\n\n if (to.meta.showAddItemButton === true) {\n cartStore.state.showAddItemButton = to.meta.showAddItemButton === true;\n console.log('setting showAddItemButton to', cartStore.state.showAddItemButton, 'for route', to.name?.toString());\n } else {\n cartStore.state.showAddItemButton = false;\n }\n\n\n if (to.meta.disableCart) {\n cartStore.state.disabled = true;\n console.log(`route ${to.name?.toString()} has disabled cart`);\n if (appStore.state.isSmallScreen) {\n cartStore.state.showOrderInfo = false;\n console.log(`route ${to.name?.toString()} hiding order info because of small screen`);\n }\n } else {\n cartStore.state.disabled = false;\n }\n\n emitter.emit('onNavigate');\n})\n\n","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"page page-offline\" }\nconst _hoisted_2 = { class: \"page-content\" }\nconst _hoisted_3 = { class: \"offline-header\" }\nconst _hoisted_4 = { class: \"offline-text\" }\nconst _hoisted_5 = { key: 0 }\n\nimport {IonContent, IonPage, onIonViewDidEnter} from \"@ionic/vue\";\nimport {useI18n} from 'vue-i18n'\nimport {isReachable} from \"@/functions\";\nimport {ApiStatus} from \"@/types\";\nimport {reactive} from \"vue\";\nimport router from '@/router';\n\ninterface State {\n status: ApiStatus\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Offline',\n setup(__props) {\n\nconst {t} = useI18n();\n\nconst state = reactive({\n status: {\n done: false,\n failed: false,\n loading: false\n }\n});\n\n\nconst retry = () => {\n state.status.loading = true;\n isReachable(window.location.origin)\n .then((online) => {\n if(online){\n //router.push({ name:'home'});\n }\n }).finally(() => {\n state.status.loading = false;\n });\n};\n\nonIonViewDidEnter(()=>{\n if(navigator.onLine){\n //router.push({ name:'home'});\n }\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(IonPage), null, {\n default: _withCtx(() => [\n _createVNode(_unref(IonContent), null, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h1\", _hoisted_3, _toDisplayString(_unref(t)('offline.header')), 1),\n _createElementVNode(\"p\", _hoisted_4, _toDisplayString(_unref(t)('offline.text')), 1),\n _createElementVNode(\"button\", {\n class: \"btn\",\n onClick: retry\n }, _toDisplayString(_unref(t)('offline.button')), 1),\n (state.status.loading)\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_5, \"Loading\"))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./Offline.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./Offline.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","export const calculateDistance = (\n lat1: number,\n lon1: number,\n lat2: number,\n lon2: number,\n unit: string\n) => {\n if (lat1 === lat2 && lon1 === lon2) {\n return 0;\n } else {\n const radlat1 = (Math.PI * lat1) / 180;\n const radlat2 = (Math.PI * lat2) / 180;\n const theta = lon1 - lon2;\n const radtheta = (Math.PI * theta) / 180;\n\n let dist =\n Math.sin(radlat1) * Math.sin(radlat2) +\n Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\n\n if (dist > 1) {\n dist = 1;\n }\n\n dist = Math.acos(dist);\n dist = (dist * 180) / Math.PI;\n dist = dist * 60 * 1.1515;\n\n if (unit === 'K') {\n dist = dist * 1.609344;\n }\n if (unit === 'N') {\n dist = dist * 0.8684;\n }\n return dist;\n }\n};\n\nexport const formatDistance = (distance: number) => {\n if (distance < 1) {\n const meters = distance * 1000;\n return `${meters.toFixed()} m`;\n } else {\n return `${distance.toFixed(1)} km`;\n }\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport { openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, withModifiers as _withModifiers, vModelText as _vModelText, withDirectives as _withDirectives, renderList as _renderList, Fragment as _Fragment, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = {\n key: 1,\n class: \"single-shop\"\n}\nconst _hoisted_2 = { class: \"opening-hours\" }\nconst _hoisted_3 = [\"disabled\"]\nconst _hoisted_4 = { key: 0 }\nconst _hoisted_5 = { key: 1 }\nconst _hoisted_6 = { key: 2 }\nconst _hoisted_7 = { key: 3 }\nconst _hoisted_8 = {\n key: 2,\n class: \"multi-shop\"\n}\nconst _hoisted_9 = { class: \"form-group-search\" }\nconst _hoisted_10 = {\n class: \"sr-only\",\n for: \"shop-search\"\n}\nconst _hoisted_11 = [\"placeholder\"]\nconst _hoisted_12 = {\n key: 0,\n class: \"shop-list-container\"\n}\nconst _hoisted_13 = { class: \"shop-list\" }\nconst _hoisted_14 = [\"onClick\"]\nconst _hoisted_15 = { class: \"shop-list-name\" }\nconst _hoisted_16 = {\n key: 0,\n class: \"contact-information\"\n}\nconst _hoisted_17 = { class: \"zip-city\" }\nconst _hoisted_18 = { class: \"shop-list-info\" }\nconst _hoisted_19 = {\n key: 1,\n class: \"shop-list-info-distance\"\n}\nconst _hoisted_20 = { key: 0 }\nconst _hoisted_21 = { key: 1 }\nconst _hoisted_22 = { key: 2 }\nconst _hoisted_23 = { key: 3 }\nconst _hoisted_24 = { key: 3 }\nconst _hoisted_25 = {\n key: 4,\n class: \"badge badge-warning\"\n}\nconst _hoisted_26 = {\n key: 0,\n class: \"show-more\"\n}\nconst _hoisted_27 = { key: 0 }\n\nimport {ApiStatus, Shop, OpeningHour, Article} from '@/types';\nimport {computed, onBeforeMount, onBeforeUnmount, reactive, watch} from 'vue';\nimport LoaderComponent from '@/components/LoaderComponent.vue';\nimport {\n formatDistance,\n calculateDistance,\n} from '@/functions/position-distance';\nimport {useI18n} from 'vue-i18n';\nimport {ErrorMessageStore} from '@/stores/errorMessage';\nimport {isOpen} from \"@/functions\";\nimport FavoriteButton from \"@/components/FavoriteButton.vue\";\nimport {AuthStore} from \"@/stores/auth\";\nimport axios from \"axios\";\nimport {DateTime} from \"luxon\";\n\ninterface State {\n status: ApiStatus;\n shops: Shop[];\n filterString: string;\n visibleShops: number;\n dayOfWeek: string;\n loadingText: string;\n}\n\n/* Const */\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ShopSelector',\n emits: ['selectShop'],\n setup(__props, { emit }) {\n\n/* imports */\nconst authStore = AuthStore();\n\nconst errorMessageStore = ErrorMessageStore();\n\nconst {t, locale} = useI18n();\n\n/* interface */\nconst pageSize = 6;\n\n/* Reactive */\nconst state = reactive({\n status: {\n done: false,\n failed: false,\n loading: false,\n },\n shops: [],\n filterString: '',\n visibleShops: pageSize,\n dayOfWeek: '',\n loadingText: 'loader.text',\n});\n\nconst cmp = (a: number, b: number) => {\n if (a > b) return +1;\n if (a < b) return -1;\n return 0;\n}\n\n/* Computed */\nconst filteredShops = computed(() =>\n state.shops.filter(shop =>\n shop.name.toLowerCase().includes(state.filterString.trim().toLowerCase()) ||\n shop.description.toLowerCase().includes(state.filterString.trim().toLowerCase()) ||\n shop.contactInformation.address1.toLowerCase().includes(state.filterString.trim().toLowerCase()) ||\n shop.contactInformation.city.toLowerCase().includes(state.filterString.trim().toLowerCase())\n ).sort((a, b) => {\n return cmp(isFavorite(a) ? 0 : 1, isFavorite(b) ? 0 : 1) || cmp(a.distance, b.distance)\n })\n);\n\nconst visibleShops = computed(() =>\n filteredShops.value.slice(0, state.visibleShops)\n);\n\nconst emptyList = computed(() => filteredShops.value.length === 0);\n\n/* Emits */\n\n\n/* AbortController */\nconst abortController = new AbortController();\n\n/* Functions */\nconst isFavorite = (shop: Shop): boolean => {\n if (shop && authStore.state.isAuthenticated) {\n return authStore.state.user?.favorites?.filter(fav => fav.code == shop.id?.toString())?.length ?? 0 > 0;\n }\n return false;\n};\n\nconst openingHours = (data: OpeningHour[]): string => {\n const today = data.find(x => x.dayOfWeek.toLowerCase() === state.dayOfWeek.toLowerCase());\n\n if (today) {\n const openDate = DateTime.fromISO(today.opens);\n const closeDate = DateTime.fromISO(today.closes);\n\n return `${openDate.toLocaleString(DateTime.TIME_24_SIMPLE)} - ${closeDate.toLocaleString(DateTime.TIME_24_SIMPLE)}`\n }\n\n return '';\n};\n\nconst selectShop = (e: MouseEvent, shop: Shop) => {\n if (shop.externalAppUri) {\n //window.location.href = shop.externalAppUri;\n //window.open(shop.externalAppUri, '_blank')\n return;\n }\n\n const target = e.target as HTMLElement\n if (target.className.indexOf('btn-favorite') != -1) {\n return;\n }\n\n emit('selectShop', shop);\n};\n\nconst load = () => {\n state.status.loading = true;\n axios.get('/api/shops', {\n signal: abortController.signal,\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + authStore.state.token?.accessToken,\n }\n })\n .then(response => response.data as Shop[])\n .then((shops: Shop[]) => {\n state.shops = shops;\n calculateShopDistances();\n state.status.done = true;\n })\n .catch(err => {\n state.status.failed = true;\n state.status.text = err.message;\n })\n .finally(async () => {\n if (singleShop.value) {\n state.status.loading = false;\n //No geo-location for single-shops scenarios, exit early\n return;\n }\n\n if ('permissions' in navigator) {\n const geolocation = await navigator.permissions.query({\n name: 'geolocation',\n });\n\n if (geolocation.state !== 'granted') {\n state.status.loading = false;\n }\n } else {\n state.status.loading = false;\n }\n });\n};\n\nconst shopDisabled = (shop: Shop) => {\n if(!shop.openForBusiness)\n return true;\n \n return shop.status !== 'online';\n};\n\nconst calculateShopDistances = () => {\n if (singleShop.value) {\n return;\n }\n\n navigator.geolocation.getCurrentPosition(pos => {\n state.loadingText = 'loader.calculatesDistances';\n state.status.loading = true;\n state.shops.forEach((shop: Shop) => {\n const dist = calculateDistance(\n pos.coords.latitude,\n pos.coords.longitude,\n shop.location.latitude,\n shop.location.longitude,\n 'K'\n );\n\n shop.distance = dist;\n });\n\n setTimeout(() => state.status.loading = false, 500);\n });\n};\n\nconst singleShop = computed(() => {\n return state.shops.length === 1;\n});\n\n\nconst showMore = () => (state.visibleShops += pageSize);\n\n/* Watch */\nwatch(state.status, () => {\n if (state.status.failed && state.status.text) {\n errorMessageStore.show(state.status.text);\n }\n});\n\n/* Lifecycle Hooks */\nonBeforeMount(() => {\n //defaultLanguage().then(() => {\n load();\n //});\n\n const date = new Date();\n state.dayOfWeek = date.toLocaleDateString('en', {weekday: 'long'});\n});\n\nonBeforeUnmount(() => abortController.abort());\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n (state.status.loading)\n ? (_openBlock(), _createBlock(LoaderComponent, {\n key: 0,\n text: state.loadingText\n }, null, 8, [\"text\"]))\n : _createCommentVNode(\"\", true),\n (state.status.done && state.shops && !state.status.loading && _unref(singleShop))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, [\n _createElementVNode(\"h3\", null, _toDisplayString(_unref(t)('shopSelector.singleShop.openingHoursHeader')), 1),\n _createElementVNode(\"span\", null, _toDisplayString(openingHours(state.shops[0].openingHours)), 1)\n ]),\n _createElementVNode(\"button\", {\n class: \"btn btn-primary\",\n disabled: shopDisabled(state.shops[0]),\n onClick: _cache[0] || (_cache[0] = _withModifiers((e)=>selectShop(e,state.shops[0]), [\"prevent\"]))\n }, [\n (_unref(isOpen)(state.shops[0]) && state.shops[0].status ==='online')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(t)('shopSelector.singleShop.start')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(isOpen)(state.shops[0]) && state.shops[0].status === 'paused')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_5, _toDisplayString(_unref(t)('shopSelector.singleShop.paused')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(isOpen)(state.shops[0]) && state.shops[0].status === 'offline')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, _toDisplayString(_unref(t)('shopSelector.singleShop.offline')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(isOpen)(state.shops[0]))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_7, _toDisplayString(_unref(t)('shopSelector.singleShop.closed')), 1))\n : _createCommentVNode(\"\", true)\n ], 8, _hoisted_3)\n ]))\n : _createCommentVNode(\"\", true),\n (state.status.done && state.shops && !state.status.loading && !_unref(singleShop))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_8, [\n _createElementVNode(\"h2\", null, _toDisplayString(_unref(t)(\"home.subHeader\")), 1),\n _createElementVNode(\"div\", _hoisted_9, [\n _createElementVNode(\"label\", _hoisted_10, _toDisplayString(_unref(t)('search.label')), 1),\n _withDirectives(_createElementVNode(\"input\", {\n type: \"search\",\n placeholder: _unref(t)('search.placeholder'),\n class: \"search\",\n id: \"shop-search\",\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event: any) => ((state.filterString) = $event))\n }, null, 8, _hoisted_11), [\n [_vModelText, state.filterString]\n ])\n ]),\n (!_unref(emptyList))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [\n _createElementVNode(\"ul\", _hoisted_13, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(visibleShops), (shop) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: shop.id\n }, [\n _createElementVNode(\"div\", {\n onClick: _withModifiers((e)=>selectShop(e,shop), [\"prevent\"]),\n class: _normalizeClass({'shop-list-item': true, disabled: shopDisabled(shop) })\n }, [\n _createElementVNode(\"div\", _hoisted_15, [\n _createElementVNode(\"h2\", null, _toDisplayString(shop.description), 1),\n (shop.contactInformation)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_16, [\n _createElementVNode(\"div\", null, _toDisplayString(shop.contactInformation.address1), 1),\n _createElementVNode(\"div\", null, _toDisplayString(shop.contactInformation.address2), 1),\n _createElementVNode(\"div\", _hoisted_17, _toDisplayString(shop.contactInformation.zipCode) + \" \" + _toDisplayString(shop.contactInformation.city), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_18, [\n (_unref(authStore).state.isAuthenticated)\n ? (_openBlock(), _createBlock(FavoriteButton, {\n key: 0,\n code: shop.id?.toString() ?? '',\n type: \"shop\",\n favorite: isFavorite(shop)\n }, null, 8, [\"code\", \"favorite\"]))\n : _createCommentVNode(\"\", true),\n (shop.distance)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_19, _toDisplayString(_unref(formatDistance)(shop.distance)), 1))\n : _createCommentVNode(\"\", true),\n (!shop.externalAppUri)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 2,\n class: _normalizeClass([\"badge\", [_unref(isOpen)(shop) ? 'open-for-business' : 'closed', shop.status]])\n }, [\n (_unref(isOpen)(shop) && shop.status ==='online')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_20, _toDisplayString(_unref(t)('button.open')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(isOpen)(shop) && shop.status === 'paused')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_21, _toDisplayString(_unref(t)('button.paused')), 1))\n : _createCommentVNode(\"\", true),\n (_unref(isOpen)(shop) && shop.status === 'offline')\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_22, _toDisplayString(_unref(t)('button.offline')), 1))\n : _createCommentVNode(\"\", true),\n (!_unref(isOpen)(shop))\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_23, _toDisplayString(_unref(t)('button.closed')), 1))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true),\n (!shop.externalAppUri)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_24, _toDisplayString(openingHours(shop.openingHours)), 1))\n : _createCommentVNode(\"\", true),\n (shop.externalAppUri)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_25, \"Kommer snart\"))\n : _createCommentVNode(\"\", true)\n ])\n ], 10, _hoisted_14)\n ]))\n }), 128))\n ]),\n (state.visibleShops < _unref(filteredShops).length)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_26, [\n _createElementVNode(\"button\", {\n class: \"btn btn-primary\",\n onClick: _cache[2] || (_cache[2] = ($event: any) => (showMore()))\n }, _toDisplayString(_unref(t)('button.showMoreRestaurants')), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", null, [\n (_unref(emptyList))\n ? (_openBlock(), _createElementBlock(\"p\", _hoisted_27, _toDisplayString(_unref(t)('search.noMatch')), 1))\n : _createCommentVNode(\"\", true)\n ])\n ]))\n : _createCommentVNode(\"\", true)\n ], 64))\n}\n}\n\n})","import script from \"./ShopSelector.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ShopSelector.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { createElementVNode as _createElementVNode, unref as _unref, toDisplayString as _toDisplayString, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"page page-shop-selector\" }\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"span\", { class: \"customer-logo\" }, null, -1)\nconst _hoisted_3 = { class: \"shop-selector\" }\n\nimport {IonContent, IonPage, onIonViewWillEnter} from '@ionic/vue';\nimport ShopSelector from '@/components/ShopSelector.vue';\nimport {ApplicationSettings, Shop} from '@/types';\nimport router from '@/router';\nimport {onBeforeMount} from 'vue';\nimport {ShopStore} from '@/stores/shop';\nimport {CartStore} from '@/stores/cart';\nimport {useI18n} from 'vue-i18n'\nimport {OrderType} from \"@/enums\";\nimport {car} from \"ionicons/icons\";\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'HomePage',\n setup(__props) {\n\n/* imports */\nconst shopStore = ShopStore();\n const cartStore = CartStore();\n\n const { t } = useI18n();\n\n /* Reactive */\n\n /* Ref */\n\n /* Computed */\n/*\n const randomNotification = () => {\n if(Notification.permission !== \"granted\"){\n Promise.resolve(Notification.requestPermission()).then(function(permission) {\n if(permission !== \"granted\")\n return;\n \n randomNotification();\n });\n } else {\n new Notification(\"Order ready\", {\n body: \"Your order is ready for pickup\",\n icon: \"http://localhost:8100/assets/icon/sibylla/android-chrome-192x192.png\"\n });\n setTimeout(randomNotification, 30000);\n }\n }\n\n let installprompt = null; \n window.addEventListener('beforeinstallprompt', (e) => {\n // Prevent Chrome 67 and earlier from automatically showing the prompt\n e.preventDefault();\n const installButton = document.querySelector(\"#install\");\n installButton?.removeAttribute(\"hidden\");\n installprompt = e;\n // Stash the event so it can be triggered later.\n // @ts-ignore\n //window.deferredPrompt = e;\n // Update UI notify the user they can add to home screen\n //btnAdd.style.display = 'block';\n });\n\n const onInstall = async ()=>{\n if(!installprompt){\n return;\n }\n await installprompt.prompt();\n }; \n */\n\n /* Functions */\n const onSelectShop = (item: Shop) => {\n if (item) {\n if (cartStore.state.items.length > 0 && cartStore.state.shopId) {\n //If restaurant changed then clear cartStore\n if (!cartStore.compareShop(item.id)) {\n cartStore.clear(true); \n }\n }\n }\n\n shopStore.set(item);\n cartStore.setShop(item.id, item.name);\n \n console.log(router.currentRoute.value.query);\n \n const query = {\n redirectToArticle: router.currentRoute.value.query.redirectToArticle\n };\n \n if(cartStore.state.settings.orderTypes.length == 1 && cartStore.getOrderType()){\n router.push({\n name: 'menuPage',\n params: { shopId: item.id },\n query: query\n });\n return;\n }\n\n router.push({\n name: 'shopPage',\n params: { \n shopId: item.id \n },\n query: query\n });\n };\n\n onIonViewWillEnter(() => {\n // clear previous restaurant choices\n shopStore.clear();\n })\n\n onBeforeMount(() => {\n // clear previous restaurant choices\n shopStore.clear();\n });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_unref(IonPage), null, {\n default: _withCtx(() => [\n _createVNode(_unref(IonContent), { fullscreen: \"\" }, {\n default: _withCtx(() => [\n _createElementVNode(\"div\", _hoisted_1, [\n _hoisted_2,\n _createElementVNode(\"div\", _hoisted_3, [\n _createElementVNode(\"h1\", null, _toDisplayString(_unref(t)(\"home.header\")), 1),\n (_unref(cartStore).state.initiated)\n ? (_openBlock(), _createBlock(ShopSelector, {\n key: 0,\n onSelectShop: onSelectShop\n }))\n : _createCommentVNode(\"\", true)\n ])\n ])\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n}\n}\n\n})","import script from \"./HomePage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./HomePage.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import {createRouter, createWebHistory,} from '@ionic/vue-router';\nimport {RouteRecordRaw} from 'vue-router';\nimport Offline from \"@/views/Offline.vue\";\nimport HomePage from \"@/views/HomePage.vue\";\n\nconst routes: Array = [\n {\n name: 'home',\n path: '',\n component: HomePage, //this cannot be an import statement for some reason, fails to load in production build\n meta: {\n confirmCartReset: true\n }\n },\n {\n //handle legacy urls not containing the /order-type part of the shopPage route\n name: 'shopToOrderTypeRedirect',\n path: '/shop/:shopId',\n redirect: (to)=>{\n return {\n name: 'shopPage',\n params: {\n shopId: to.params.shopId\n }\n }\n }\n },\n {\n name: 'offline',\n path: '/offline',\n component: Offline,\n },\n {\n name: 'login',\n 'path': '/login',\n component: () => import('@/views/LoginPage.vue'),\n meta: {\n skipIfLoggedIn: true\n }\n },\n {\n name: 'register',\n 'path': '/register',\n component: () => import('@/views/RegisterPage.vue')\n },\n {\n name: 'favorites',\n 'path': '/favorites',\n component: () => import('@/views/Favorites.vue'),\n meta: {\n requiresAuth: false,\n showCart: true\n }\n },\n {\n name: 'orderHistory',\n 'path': '/order-history',\n component: () => import('@/views/OrderHistory.vue'),\n meta: {\n requiresAuth: true,\n showCart: true\n }\n },\n {\n name: 'profile',\n 'path': '/profile',\n component: () => import('@/views/ProfilePage.vue'),\n meta: {\n requiresAuth: true\n }\n },\n {\n name: 'forgotPassword',\n 'path': '/forgot-password',\n component: () => import('@/views/ForgotPasswordPage.vue')\n },\n {\n name: 'resetPassword',\n 'path': '/reset-password',\n component: () => import('@/views/ResetPasswordPage.vue')\n },\n {\n name: 'confirmEmail',\n 'path': '/confirm-email',\n component: () => import('@/views/ConfirmEmailPage.vue')\n },\n {\n name: 'campaigns',\n path: '/campaigns',\n component: () => import('@/views/CampaignsPage.vue'),\n meta: {\n showCart: true\n }\n },\n {\n name: 'coupons',\n path: '/coupons',\n component: () => import('@/views/Coupons.vue'),\n },\n {\n name: 'shopPage',\n path: '/shop/:shopId/order-type',\n props: true,\n component: () => import('@/views/ShopPage.vue'),\n meta: {\n confirmCartReset: true,\n requiresShop: true\n }\n },\n {\n name: 'digitalSignage',\n path: '/shop/:shopId/digital-signage',\n props: true,\n component: () => import('@/views/DigitalSignagePage.vue'),\n meta: {\n confirmCartReset: false,\n requiresShop: true\n }\n },\n {\n name: 'menuPage',\n path: '/shop/:shopId/menu/:pathMatch(.*)*', //this is a catch all route for the menu\n props: true,\n component: () => import('@/views/MenuPage.vue'),\n meta: {\n requiresShop: true,\n showCart: true\n }\n },\n {\n name: 'menuArticlePage',\n path: '/shop/:shopId/menu/:pathMatch(.*)*/articles/:articleId',\n props: true,\n component: () => import('@/views/ArticlePage.vue'),\n meta: {\n requiresShop: true,\n showCart: true,\n showAddItemButton: true,\n disableCart: true\n }\n },\n {\n name: 'articleRedirect',\n path: '/shop/:shopId/redirect/:articleId',\n redirect: (to) => {\n return {\n name: 'articlePage',\n params: {\n shopId: to.params.shopId,\n articleId: to.params.articleId,\n categoryName: to.params.categoryName\n }\n };\n }\n },\n {\n name: 'editOrder',\n path: '/shop/:shopId/menu/:pathMatch(.*)*/articles/:articleId/:orderId',\n props: true,\n component: () => import('@/views/ArticlePage.vue'),\n meta: {\n requiresShop: true,\n showCart: true,\n disableCart: true,\n editMode: true,\n showAddItemButton: true\n }\n },\n {\n name: 'suggestedArticlesPage',\n path: '/shop/:shopId/menu/:pathMatch(.*)*/articles/:articleId/suggested',\n props: true,\n component: () => import('@/views/SuggestedArticlesPage.vue'),\n meta: {\n showCart: true,\n requiresShop: true,\n disableCart: true,\n editMode: true,\n showAddItemButton: true\n }\n },\n {\n name: 'checkoutPage',\n path: '/shop/:shopId/checkout',\n component: () => import('@/views/CheckoutPage.vue'),\n meta: {\n requiresShop: true\n }\n },\n {\n name: 'paymentPage',\n path: '/shop/:shopId/checkout/payment/:orderId',\n props: true,\n component: () => import('@/views/PaymentPage.vue'),\n meta: {\n requiresShop: true\n }\n },\n {\n name: 'orderPage',\n path: '/order/:orderId',\n props: true,\n component: () => import('@/views/OrderPage.vue'),\n meta: {\n requiresShop: true,\n }\n },\n {\n name: 'ordersPage',\n path: '/orders',\n component: () => import('@/views/OrdersPage.vue'),\n meta: {\n requiresShop: true,\n }\n },\n {\n name: \"termsAndConditions\",\n path: '/terms-and-conditions',\n component: () => import('@/views/TermsAndConditions.vue')\n },\n {\n name: \"privacyPolicy\",\n path: '/privacy-policy',\n component: () => import('@/views/PrivacyPolicy.vue')\n }\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n\n})\n\nexport default router\n","import { appStoreKey} from '@/keys';\n/*import { AppStoreState } from '@/types';*/\nimport { ScreenType } from '@/enums';\nimport { BREAKPOINTS } from '@/breakpoints'\nimport { defineStore } from 'pinia';\nimport { ref } from 'vue';\nimport { RouteRecordName} from \"vue-router\";\n\n\nexport const AppStore = defineStore(appStoreKey, () => {\n\n /* interface */\n interface AppStoreState {\n height: number,\n width: number\n screenType: ScreenType,\n isSmallScreen: boolean,\n isLargeScreen: boolean,\n language: string,\n showLangSelector: boolean,\n currentPage: RouteRecordName | null | undefined;\n lastPage: RouteRecordName | null | undefined;\n currentPageFullPath: string| null | undefined;\n lastPageFullPath: string | null | undefined;\n }\n\n /* State */\n const state = ref({\n height: 0,\n width: 0,\n screenType: ScreenType.Large,\n isLargeScreen: true,\n isSmallScreen: false,\n language: 'sv',\n showLangSelector: false,\n currentPage: null,\n lastPage: null,\n currentPageFullPath: null,\n lastPageFullPath: null\n });\n\n /* Getters */\n\n\n const onResize = (): void => {\n \n state.value.width = window.innerWidth;\n state.value.height = window.innerHeight;\n state.value.screenType = BREAKPOINTS.tabletLandscape > state.value.width ? ScreenType.Small : ScreenType.Large;\n state.value.isSmallScreen = state.value.screenType === ScreenType.Small;\n state.value.isLargeScreen = !state.value.isSmallScreen;\n }\n\n window.addEventListener('resize', onResize);\n onResize();\n\n return {\n state\n }\n})","import {defineStore} from \"pinia\";\nimport {authStorageKey, cartStorageKey} from \"../keys\";\nimport {ref} from \"vue\";\nimport {Article, AuthResponse, Favorite, OrderHistory, OrderStatus, PaginatedResult, ProfileResponse, Shop, UpdateProfileRequest} from \"@/types\";\nimport axios from \"axios\";\n\nexport interface AuthState {\n isAuthenticated: boolean;\n token: AuthResponse | null;\n user: ProfileResponse | null\n loading: boolean;\n}\n\nexport const AuthStore = defineStore(authStorageKey, () => {\n const state = ref({\n token: null,\n user: null,\n isAuthenticated: false,\n loading: true\n });\n\n const loadFromStorage = (e: StorageEvent | undefined | null) => {\n if (e && e.key !== authStorageKey) {\n return;\n }\n\n getProfile().then(profile => {\n state.value.user = profile;\n state.value.isAuthenticated = profile?.isAuthenticated ?? false;\n state.value.loading = false;\n }).catch(e => {\n if (e.response.status == 401) {\n //not authenticated\n state.value.user = null;\n state.value.isAuthenticated = false;\n state.value.loading = false;\n }\n });\n };\n\n const login = async (email: string, password: string): Promise => {\n\n const response = await axios.post('/api/identity/login?useCookies=true&useSessionCookies=true', JSON.stringify({email, password}));\n if (response.status !== 200) {\n //failed\n }\n\n const profile = await getProfile()\n if (profile === null) {\n state.value.user = null;\n state.value.isAuthenticated = false;\n } else {\n state.value.user = profile;\n state.value.isAuthenticated = profile.isAuthenticated;\n }\n save();\n return state.value;\n }\n \n const waitForLoading = async () => {\n return new Promise((resolve, reject) => {\n const interval = setInterval(() => {\n if (state.value.loading === false) {\n clearInterval(interval);\n resolve(state.value.loading);\n }\n }, 100);\n });\n }\n\n const getProfile = async (): Promise => {\n state.value.loading = true;\n const profileResponse = await axios.get('/api/user/profile');\n if (profileResponse.status !== 200) {\n state.value.loading = false;\n return null;\n }\n const profile: ProfileResponse = profileResponse.data;\n state.value.user = profile\n state.value.isAuthenticated = profile.isAuthenticated\n state.value.loading = false;\n return profile;\n }\n\n const logout = () => {\n return axios.post('/api/user/logout').then(response => {\n state.value.token = null;\n state.value.user = null;\n state.value.isAuthenticated = false;\n save();\n });\n };\n\n const save = () => {\n const obj = {\n token: state.value.token,\n user: state.value.user,\n isAuthenticated: state.value.isAuthenticated\n } as AuthState;\n localStorage.setItem(authStorageKey, JSON.stringify(obj));\n }\n\n const addFavoriteArticle = async (code: string): Promise => {\n const response = await axios.post('/api/user/favorite', {code: code, type: 'article'});\n if (response.status !== 200) {\n //TODO do something\n return;\n }\n\n state.value.user?.favorites.push({code: code, type: 'article'});\n save();\n }\n\n const addFavoriteShop = async (shopId: string): Promise => {\n const response = await axios.post('/api/user/favorite', {code: shopId, type: 'shop'});\n if (response.status !== 200) {\n //TODO do something\n return;\n }\n\n state.value.user?.favorites.push({code: shopId, type: 'shop'});\n save();\n }\n\n const removeFavoriteArticle = async (code: string): Promise => {\n const response = await axios.delete('/api/user/favorite', {\n data: JSON.stringify({code: code, type: 'article'})\n });\n\n if (response.status !== 200) {\n //TODO do something\n return;\n }\n\n if (state.value.user) {\n state.value.user.favorites = response.data;\n }\n\n save();\n }\n const removeFavoriteShop = async (code: string): Promise => {\n const response = await axios.delete('/api/user/favorite', {\n data: JSON.stringify({code: code, type: 'shop'})\n });\n if (response.status !== 200) {\n //TODO do something\n return;\n }\n\n if (state.value.user) {\n state.value.user.favorites = response.data;\n }\n save();\n }\n\n const getOrderHistory = async (pageIndex:number, pageSize:number) => {\n if (state.value.isAuthenticated === false)\n return [];\n\n return axios.get>(`/api/user/order-history?pageIndex=${pageIndex}&pageSize=${pageSize}`)\n .then(response => response.data);\n }\n\n const setProfile = (profile: ProfileResponse) => {\n if (state.value.isAuthenticated === false)\n throw new Error('Not authenticated');\n\n state.value.user = profile;\n //state.value.loading = true;\n // return axios.put<{ emailConfirmationSent: boolean, profile: ProfileResponse }>('/api/user/profile', profile)\n // .then(response => {\n // state.value.user = response.data.profile;\n // state.value.isAuthenticated = response.data.profile.isAuthenticated;\n // state.value.loading = false;\n // save();\n // return response;\n // });\n }\n\n loadFromStorage(null);\n window.addEventListener('storage', loadFromStorage);\n\n return {\n state,\n login,\n logout,\n addFavoriteArticle,\n addFavoriteShop,\n removeFavoriteArticle,\n removeFavoriteShop,\n getOrderHistory,\n setProfile,\n waitForLoading\n //updateProfile\n }\n});","import { OrderType } from '@/enums';\nimport { cartStorageKey } from '@/keys';\nimport {Order, OrderItem, OrderChoice, Cart, CartItem, CartState, ApplicationSettings} from '@/types';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport axios from \"axios\";\n\nexport const CartStore = defineStore(cartStorageKey, () => {\n /* State */\n const state = ref({\n shopId: null,\n showOrderInfo: false,\n showAddItemButton: false,\n hasSelectedSuggestions: false,\n visible: false,\n disabled: false,\n orderType: OrderType.DineInPlace,\n items: [],\n editMode: false,\n currentOrderChanged: false,\n note: null,\n spotId:null,\n settings: { orderTypes : [], enableCustomerLogin:false, externalLoginProviders:[], version: \"0.0.0.0\", phoneNumberRequired:false },\n initiated: false\n });\n\n const loadFromStorage = (e: StorageEvent | undefined | null) => {\n //If event was thrown by irrelevant storage\n if (e && e.key !== cartStorageKey) {\n return;\n }\n\n const cartJson: string | null = localStorage.getItem(cartStorageKey);\n axios.get('/api/settings')\n .then((response) => response.data)\n .then((data:ApplicationSettings) => {\n \n state.value.initiated = true;\n setSettings(data);\n save();\n });\n \n if (cartJson) {\n try {\n const cart = JSON.parse(cartJson) as Cart;\n state.value.items = cart.items;\n state.value.orderType = cart.orderType;\n state.value.shopId = cart.shopId;\n state.value.shopName = cart.shopName;\n state.value.note = cart.note ?? null;\n state.value.spotId = cart.spotId;\n state.value.settings = cart.settings;\n }\n catch (ex) {\n console.log(ex);\n //If json is corrupt, remove data.\n localStorage.removeItem(cartStorageKey);\n }\n }else {\n console.log('no cart json')\n }\n }\n\n /* Getters - computed */\n const totalPrice = computed(() => {\n\n let total = 0;\n\n if (state.value.items?.length) {\n state.value.items.forEach(x => {\n\n if (x.article && x.article.price) {\n total += x.article.price * x.quantity;\n }\n\n if (x.flatChoices) {\n x.flatChoices.forEach(y => {\n if (y.article && y.article.price) {\n total += y.article.price * x.quantity;\n }\n });\n }\n });\n }\n\n return total;\n });\n\n\n\n /* Actions */\n\n /* --- Getters --- */\n const get = (id: string) => {\n return state.value.items.find(item => item.id === id);\n }\n\n const getItem = (id: string): CartItem | undefined => {\n return state.value.items.find(x => x.id === id);\n }\n\n\n const save = () => {\n const obj = {\n items: state.value.items ?? [],\n orderType: state.value.orderType,\n shopId: state.value.shopId,\n shopName: state.value.shopName,\n note: state.value.note,\n settings: state.value.settings,\n spotId: state.value.spotId\n } as Cart;\n\n localStorage.setItem(cartStorageKey, JSON.stringify(obj));\n }\n\n\n /* --- Setters --- */\n const add = (item: CartItem | null, autoSave = true) => {\n\n if (!item)\n return;\n\n if (item.quantity === 0) {\n remove(item);\n return;\n }\n\n //find item with same id, if so update \n let index = state.value.items.findIndex(x => x.id === item.id);\n\n if (index > -1) {\n state.value.items[index] = item;\n autoSave && save();\n return;\n }\n else if (!item.flatChoices.length) {\n //find item with same Article.code and no Choices, if so add to same order\n index = state.value.items.findIndex(x => x.article.code === item.article.code && x.flatChoices.length === 0);\n\n if (index > -1) {\n state.value.items[index].quantity += item.quantity;\n autoSave && save();\n return;\n }\n } else {\n //find item with same Article.code and same Choices, if so add to same order\n const index = state.value.items.findIndex(x => {\n return x.article.code === item.article.code && x.flatChoices.length === item.flatChoices.length && JSON.stringify(x.flatChoices) === JSON.stringify(item.flatChoices);\n });\n\n if (index > -1) {\n state.value.items[index].quantity += item.quantity;\n autoSave && save();\n return;\n }\n }\n\n // If no matching order exist then add as new cart item.\n state.value.items.push(item);\n autoSave && save();\n } \n\n const increase = (item: CartItem) => {\n const index = state.value.items.findIndex(x => x.id === item.id);\n\n if (index > -1) {\n state.value.items[index].quantity += 1;\n save();\n }\n }\n\n const decrease = (item: CartItem) => {\n if (item.quantity === 1) {\n remove(item);\n }\n\n const index = state.value.items.findIndex(x => x.id === item.id);\n\n if (index > -1) {\n state.value.items[index].quantity -= 1;\n save();\n }\n }\n\n const remove = (item: CartItem) => {\n const index = state.value.items.indexOf(item);\n\n if (index > -1) {\n state.value.items.splice(index, 1);\n save();\n }\n }\n\n const clear = (clearStore: boolean | undefined) => {\n state.value.items = [];\n\n if (clearStore) {\n state.value.shopId = null;\n }\n\n localStorage.removeItem(cartStorageKey);\n save();\n }\n\n const setShop = (shopId: number | null, shopName: string) => {\n state.value.shopId = shopId;\n state.value.shopName = shopName;\n save();\n }\n\n const setOrderType = (orderType: OrderType) => {\n state.value.orderType = orderType;\n save();\n }\n const getOrderType = (): OrderType => {\n return state.value.orderType;\n }\n \n const setSettings = (settings:ApplicationSettings)=>{\n state.value.settings = settings;\n save();\n }\n \n const setNote = (note:string|null)=>{\n state.value.note = note;\n save();\n }\n\n const setDeliverySpot = (spotId:number|null)=>{\n state.value.spotId = spotId;\n save();\n }\n\n const compareShop = (shopId: number | null): boolean => {\n\n if (state.value.shopId !== null) {\n return shopId !== undefined && shopId === state.value.shopId;\n }\n\n return true;\n }\n\n const convertToOrderRequest = (customerCode: string | null | undefined): Order => {\n const items: OrderItem[] = state.value.items.map(item => {\n const allItemChoices = [];\n for (const prop in item.choices) {\n const choices = item.choices[prop];\n const levelChoices: OrderChoice[] = choices.map(c => {\n return {\n level: Number(prop),\n articleCode: c.article.code,\n choiceCode: c.code.trim()\n };\n })\n allItemChoices.push(...levelChoices);\n }\n\n return {\n code: item.article.code,\n quantity: item.quantity,\n choices: allItemChoices \n }\n });\n\n return {\n //sessionId: state.sessionId,\n shopId: state.value.shopId,\n orderType: state.value.orderType,\n pickupTime: new Date(),\n items: items,\n customerCode: customerCode,\n note: state.value.note\n } as Order;\n };\n\n\n loadFromStorage(null);\n window.addEventListener('storage', loadFromStorage);\n\n return {\n clear,\n add,\n get,\n increase,\n decrease,\n remove,\n getItem,\n convertToOrderRequest,\n totalPrice,\n compareShop,\n setOrderType,\n getOrderType,\n //setSettings,\n //loadFromStorage,\n setShop,\n setNote,\n setDeliverySpot,\n state,\n save\n }\n})","import {defineStore} from \"pinia\";\nimport {couponStoreKey} from \"../keys\";\nimport {ref} from \"vue\";\nimport {Coupon, ICoupon} from \"../types\";\nimport {DateTime} from \"luxon\";\nimport axios from \"axios\";\n\nexport const CouponStore = defineStore(couponStoreKey, () => {\n const coupons = ref([]);\n\n const loadFromStorage = (e: StorageEvent | undefined | null) => {\n //If event was thrown by irrelevant storage\n if (e && e.key !== couponStoreKey) {\n return;\n }\n const json: string | null = localStorage.getItem(couponStoreKey);\n if (json) {\n try {\n const data = JSON.parse(json) as ICoupon[]\n coupons.value = data.map(x=>new Coupon(x))\n } catch (ex) {\n //If json is corrupt, remove data.\n clear();\n }\n }\n }\n function disabled():boolean{\n return coupons.value.length === 0;\n }\n\n function set(item: Coupon[]) {\n const oldCoupons = coupons.value;\n if(oldCoupons.length > 0){\n item.forEach(newCoupon => {\n const oldCoupon = oldCoupons.find(x=>x.id === newCoupon.id);\n if(oldCoupon) {\n newCoupon.usedDate = oldCoupon.usedDate;\n }\n })\n }\n \n coupons.value = item;\n \n console.log(coupons.value);\n //Store items in local storage.\n localStorage.setItem(couponStoreKey, JSON.stringify(coupons.value));\n }\n \n function useCoupon (couponId:number){\n const couponFromStore = coupons.value.find(x=>x.id === couponId);\n if(!couponFromStore)\n throw new Error(\"Coupon not found from store\");\n \n couponFromStore.usedDate = new Date();\n set(coupons.value);\n }\n \n function expire(couponId:number){\n const couponFromStore = coupons.value.find(x=>x.id === couponId);\n if(!couponFromStore)\n throw new Error(\"Coupon not found from store\");\n\n couponFromStore.usedDate = DateTime.now().minus({minutes:10}).toJSDate();\n set(coupons.value);\n }\n\n const load = () => {\n return new Promise((resolve: any, reject: any) => {\n axios.get(`/api/coupons`)\n .then((response) => response.data)\n .then((data:ICoupon[]) => {\n set(data.map(x=>new Coupon(x)));\n resolve(data);\n }).catch(err => {\n //reject(err);\n });\n });\n }\n\n function clear() {\n coupons.value = [];\n localStorage.removeItem(couponStoreKey);\n }\n\n loadFromStorage(null);\n window.addEventListener('storage', loadFromStorage);\n\n return {\n coupons,\n load,\n loadFromStorage,\n clear,\n useCoupon,\n expire,\n disabled\n }\n});","import { errorStoreKey} from '@/keys';\nimport { defineStore } from 'pinia';\nimport { ref } from 'vue';\nimport { errorToi18nKey } from '@/functions';\n\n\n\nexport const ErrorMessageStore = defineStore(errorStoreKey, () => {\n\n /* interface */\n interface ErrorStoreState {\n visible: boolean,\n message: string\n }\n\n /* State */\n const state = ref({\n visible: false,\n message: ''\n });\n\n\n /* Setters */\n const close = () => {\n state.value.message = '';\n state.value.visible = false;\n }\n\n const show = (error: string | number) => {\n state.value.message = typeof error === 'number' ? errorToi18nKey(error) : error;\n state.value.visible = true;\n }\n\n\n /* Getters */\n\n return {\n state,\n show,\n close\n }\n})","import { menuStoreKey } from '@/keys';\nimport {ChoiceLevel, Currency, Menu, MenuImpl} from '@/types';\nimport { defineStore } from 'pinia';\nimport { ref } from 'vue';\nimport axios from \"axios\";\nimport {i18nTranslate} from \"@/functions\";\n\nexport const MenuStore = defineStore(menuStoreKey, () => {\n const menu = ref();\n \n const loadFromStorage = (e: StorageEvent | undefined | null) => {\n\n //If event was thrown by irrelevant storage\n if (e && e.key !== menuStoreKey) {\n return;\n }\n\n const json: string | null = localStorage.getItem(menuStoreKey);\n\n if (json) {\n\n try {\n menu.value = new MenuImpl(JSON.parse(json) as Menu);\n }\n catch (ex) {\n //If json is corrupt, remove data.\n clear();\n }\n } \n }\n\n\n function set(item: Menu) {\n menu.value = item;\n //Store items in local storage.\n localStorage.setItem(menuStoreKey, JSON.stringify(menu.value));\n }\n\n const load = (shopId: number | null | undefined) => {\n return new Promise((resolve: any, reject: any) => {\n if (shopId) {\n axios.get(`/api/shops/${shopId}/menu`)\n .then((response) => response.data)\n .then((data) => {\n set(new MenuImpl(data));\n resolve(data);\n }).catch(err => {\n reject(err);\n });\n\n } else {\n reject(new Error(\"shopId is null or undefined\"));\n }\n });\n }\n\n function clear() {\n localStorage.removeItem(menuStoreKey);\n }\n\n const getChoiceLevelName = (level: number, locale:string) => {\n if (menu.value) {\n const choiceLvl = menu.value.choiceLevels.find((choiceLevel: ChoiceLevel) => choiceLevel.level === level);\n if(!choiceLvl)\n return level.toString();\n \n return i18nTranslate(choiceLvl.i18n, 'name', locale, choiceLvl.name);\n }\n\n return level.toString();\n }\n\n const getCurrency = (): Currency => {\n if (menu.value) {\n return menu.value.currency;\n }\n\n return { name: '', symbol: ':-' } as Currency;\n };\n\n\n loadFromStorage(null);\n window.addEventListener('storage', loadFromStorage);\n\n\n return {\n menu,\n set,\n clear,\n load,\n getChoiceLevelName,\n getCurrency\n }\n})","import { navigationStoreKey } from '@/keys';\nimport { NavigationStoreState } from '@/types';\nimport { defineStore } from 'pinia';\nimport { ref } from 'vue';\n\n\nexport const NavigationStore = defineStore(navigationStoreKey, () => {\n /* State */\n const state = ref({\n visible: true,\n text: '',\n link: {\n name: 'home', params: {}\n },\n url: '' \n });\n\n return {\n state\n }\n})","import { orderStoreKey } from '@/keys';\nimport { OrderDetails, OrderStatus, OrderStoreState, ResponseError, PaidOrder } from '@/types';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport { OrderStatusState } from '@/enums';\nimport { isResponseError } from '../functions';\nimport axios from \"axios\";\nimport {useLocalStorage} from \"@vueuse/core\";\n\n\nexport const OrderStore = defineStore(orderStoreKey, () => {\n\n /* State */\n // const state = ref({\n // details: null,\n // paidOrders: [],\n // deliveredOrders: []\n // });\n const state = useLocalStorage(orderStoreKey,\n {\n details: null,\n paidOrders: [],\n deliveredOrders: []\n } as OrderStoreState);\n\n state.value.paidOrders.forEach(x => {\n //If expires is a string, convert it to Date\n if (typeof x.expires === 'string') {\n x.expires = new Date(x.expires);\n }\n })\n\n state.value.deliveredOrders.forEach(x => {\n //If expires is a string, convert it to Date\n if (typeof x.expires === 'string') {\n x.expires = new Date(x.expires);\n }\n })\n \n \n const pullInterval = 600000; // 1 minute;\n let pullIntervalKey: number | undefined;\n\n \n /*\n const loadFromStorage = (e: StorageEvent | undefined | null) => {\n console.log('orderStore.loadFromStorage', e);\n //If event was thrown by irrelevant storage\n if (e && e.key !== orderStoreKey) {\n return;\n }\n\n const storedState = useLocalStorage(orderStoreKey, state.value);\n //const orderJson: string | null = localStorage.getItem(orderStoreKey);\n //if (orderJson) {\n try {\n state.value = storedState.value //JSON.parse(orderJson) as OrderStoreState;\n\n state.value.paidOrders.forEach(x => {\n //If expires is a string, convert it to Date\n if (typeof x.expires === 'string') {\n x.expires = new Date(x.expires);\n }\n })\n\n state.value.deliveredOrders.forEach(x => {\n //If expires is a string, convert it to Date\n if (typeof x.expires === 'string') {\n x.expires = new Date(x.expires);\n }\n })\n\n }\n catch (ex) {\n console.warn('orderStore data was corrupt', ex);\n //If json is corrupt, remove data.\n localStorage.removeItem(orderStoreKey);\n }\n }\n //}\n*/\n const id = computed(() => {\n if (state.value?.details) {\n return state.value.details.orderId\n }\n return null;\n });\n\n const ordersCount = computed(() => {\n const result = state.value.deliveredOrders.length + state.value.paidOrders.length;\n // console.log('orderStore.ordersCount', result);\n return result;\n });\n\n const save = () => {\n //console.log('orderStore.save', state.value);\n //localStorage.setItem(orderStoreKey, JSON.stringify(state.value));\n }\n\n const set = (item: OrderDetails) => {\n state.value.details = item;\n state.value.details.userAgent = window.navigator.userAgent;\n //Store items in local storage.\n //localStorage.setItem(orderStoreKey, JSON.stringify(state.value));\n }\n\n const addPaymentID = (id: string | null) => {\n if (state.value.details && id) {\n state.value.details.paymentID = id;\n }\n }\n\n const clear = (clearStore: boolean | undefined) => {\n\n if (clearStore) {\n state.value.details = null;\n state.value.paidOrders = [];\n state.value.deliveredOrders = [];\n }\n\n clearInterval(pullIntervalKey);\n pullIntervalKey = undefined;\n localStorage.removeItem(orderStoreKey);\n }\n\n\n const cancelPullOrderStatus = () => {\n clearInterval(pullIntervalKey);\n }\n\n const pullOrderStatus = () => {\n if (!pullIntervalKey) {\n getOrderStatus();\n pullIntervalKey = setInterval(getOrderStatus, pullInterval);\n }\n };\n\n\n //Remove all done paid orders after they expire\n const removeExpiredOrders = () => {\n\n const now = Date.now();\n\n if (state.value.paidOrders.length) {\n const ordersToKeep = state.value.paidOrders.filter(x => x.expires.getTime() > now);\n const removedOrders = state.value.paidOrders.filter(x=>!ordersToKeep.includes(x));\n console.log('orderStore.removeExpiredOrders removed orders', removedOrders);\n //debugger;\n state.value.paidOrders = ordersToKeep;\n }\n\n if (state.value.deliveredOrders.length) {\n state.value.deliveredOrders = state.value.deliveredOrders.filter(x => x.expires.getTime() > now);\n }\n // console.log('removeExpiredOrders', state.value.paidOrders, state.value.deliveredOrders);\n save()\n }\n \n const addToPaidOrders = () => {\n console.log('addToPaidOrders', state.value.details?.orderId, state.value.details?.pickupTime, state.value.details);\n if (state.value.details?.orderId && state.value.details.pickupTime) {\n if (!state.value.paidOrders.find(x => x.id === state.value.details?.orderId)) {\n\n //If pickupTime is a string, convert it to Date\n if (typeof state.value.details.pickupTime === 'string') {\n state.value.details.pickupTime = new Date(state.value.details.pickupTime);\n }\n\n const expires = state.value.details.pickupTime;\n\n expires.setMinutes(expires.getMinutes() + 60) // Set expires 60 minutes in the future\n\n state.value.paidOrders.push({\n id: state.value.details.orderId,\n expires: expires,\n customerCode: state.value.details.customerCode\n });\n save();\n } else {\n console.log(`order ${state.value.details?.orderId} already exists in paidOrders`);\n }\n } else {\n console.log('order does not have a valid orderId or pickupTime');\n }\n }\n\n const removeOrderFromPending = () => {\n if (state.value.details?.orderId) {\n console.log(`removing order ${state.value.details?.orderId} from paidOrders`);\n const index = state.value.paidOrders.findIndex(x => x.id === state.value.details?.orderId);\n if (index !== -1) {\n state.value.paidOrders.splice(index, 1);\n save();\n }\n }\n }\n\n /* AbortController */\n const abortController = new AbortController();\n const getOrderStatus = () => {\n //validateOrders();\n removeExpiredOrders();\n \n if (state.value.paidOrders.length) {\n\n const order = state.value.paidOrders[0];\n\n axios.get(`/api/order/${order.id}`, {\n headers: {\n 'X-CustomerCode': ''\n },\n signal: abortController.signal\n })\n .then(response => response.data)\n .then((data: OrderStatus | ResponseError) => {\n\n if (isResponseError(data)) {\n console.error('Error -> getOrderStatus', data);\n } else {\n\n if (data.status && typeof data.status === 'string') {\n\n // state.value.status = data.status;\n switch (data.status) {\n case OrderStatusState.CalculatedPrice:\n // Do someting\n break;\n case OrderStatusState.Added:\n // Do someting\n break;\n case OrderStatusState.Started:\n // Do someting\n break;\n case OrderStatusState.Done:\n onDone(order);\n break;\n case OrderStatusState.Delivered:\n onDelivered(order);\n break;\n }\n }\n }\n\n }).catch((error) => {\n console.error('error', error);\n });\n }\n else {\n cancelPullOrderStatus();\n }\n }\n\n const onDelivered = (order: PaidOrder) => {\n // Remove order from array.\n if (order) {\n const index = state.value.paidOrders.findIndex(x => x.id === order.id);\n state.value.paidOrders.splice(index, 1);\n\n const expires = new Date();\n expires.setMinutes(expires.getMinutes() + 30) // Set expires 30 minutes in the future\n order.expires = expires;\n state.value.deliveredOrders.push(order);\n }\n\n if (!state.value.paidOrders.length) // If no order left then end status pulling\n {\n clearInterval(pullIntervalKey);\n pullIntervalKey = undefined;\n }\n }\n\n const onDone = (order: PaidOrder) => {\n if (order) {\n const index = state.value.paidOrders.findIndex(x => x.id === order.id);\n state.value.paidOrders.splice(index, 1);\n\n const expires = new Date();\n expires.setMinutes(expires.getMinutes() + 30) // Set expires 30 minutes in the future\n order.expires = expires;\n state.value.deliveredOrders.push(order);\n }\n\n if (!state.value.paidOrders.length) // If no order left then end status pulling\n {\n clearInterval(pullIntervalKey);\n pullIntervalKey = undefined;\n }\n }\n\n //loadFromStorage(null);\n //window.addEventListener('storage', loadFromStorage);\n\n return {\n save,\n clear,\n set,\n id,\n ordersCount,\n addPaymentID,\n state,\n getOrderStatus,\n pullOrderStatus,\n cancelPullOrderStatus,\n addToPaidOrders,\n removeOrderFromPending,\n removeExpiredOrders\n }\n\n})","import { shopStorageKey } from '@/keys';\nimport { Shop } from '@/types';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport axios from \"axios\";\n\nexport const ShopStore = defineStore(shopStorageKey, () => {\n const shop = ref();\n const loading = ref(false);\n \n const loadFromStorage = (e: StorageEvent | undefined | null) => {\n\n //If event was thrown by irrelevant storage\n if (e && e.key !== shopStorageKey) {\n return;\n }\n const json: string | null = localStorage.getItem(shopStorageKey);\n if (json) {\n\n try {\n shop.value = JSON.parse(json) as Shop;\n }\n catch (ex) {\n //If json is corrupt, remove data.\n clear();\n }\n }\n }\n\n\n\n const id = computed(() => {\n if (shop.value) {\n return shop.value.id\n }\n return null;\n });\n\n function set(item: Shop) {\n shop.value = item;\n //Store items in local storage.\n localStorage.setItem(shopStorageKey, JSON.stringify(shop.value));\n }\n\n const load = (shopId: number) => {\n loading.value = true;\n return new Promise((resolve: any, reject: any) => {\n axios.get(`/api/shops/${shopId}`)\n .then((response) => response.data)\n .then((data) => {\n set(data);\n loading.value = false;\n resolve(data);\n }).catch(err => {\n reject(err);\n });\n });\n }\n\n function clear() {\n shop.value = undefined;\n localStorage.removeItem(shopStorageKey);\n } \n\n loadFromStorage(null);\n window.addEventListener('storage', loadFromStorage);\n\n return {\n set,\n clear,\n shop,\n load,\n id\n }\n})","import {CartItemType, OrderStatusState, OrderType} from \"@/enums\";\nimport {RouteParamsRaw} from \"vue-router\";\nimport {DateTime, Duration} from \"luxon\";\nimport MenuItem from \"@/components/MenuItem.vue\";\nimport {generateSlug} from \"@/functions\";\n\n\n//Maps to OrderSumary server-side\nexport interface Order {\n shopId: number,\n orderId:string,\n shopName: string,\n orderType: OrderType,\n pickupTime?: Date | null,\n totalSum?: number,\n partialSum?: number,\n taxSum?: number,\n taxPercentage?: number,\n customerCode: string | null,\n items: OrderItem[],\n note:string|null,\n deliverySpotId?:number|null,\n created?: Date | null\n}\n\nexport interface OrderItem {\n code: string,\n quantity: number,\n price?: number,\n choices: OrderChoice[],\n name?: string,\n imageUrl?: string,\n isChoice?: boolean | null\n}\n\nexport interface OrderChoice {\n level: number,\n articleCode: string,\n choiceCode: string,\n price?: number,\n name?: string,\n imageUrl?: string\n}\n\nexport interface ApplicationSettings {\n phoneNumberRequired: boolean,\n enableCustomerLogin: boolean,\n orderTypes: OrderType[],\n externalLoginProviders: string[],\n version:string\n}\nexport interface OrderResponse {\n shopId: number,\n shopName: string,\n orderType: OrderType,\n pickupTime: Date | null,\n totalSum: number,\n partialSum: number,\n taxSum: number,\n taxPercentage: number,\n items: OrderItem[]\n}\n\n\nexport interface Shop {\n id: number | null;\n name: string;\n location: Location;\n distance: number;\n description: string;\n status: StatusType;\n contactInformation: ContactInformation;\n openingHours: OpeningHour[],\n externalAppUri:null,\n organizationId:string|null\n openForBusiness: boolean;\n}\n\nexport interface Location {\n longitude: number;\n latitude: number;\n}\n\nexport interface OpeningHour {\n id: number,\n opens: string,\n closes: string,\n dayOfWeek: string,\n validFrom?: boolean,\n validThrough?: boolean,\n closed: boolean\n}\n\nexport type StatusType = \"online\" | \"offline\" | \"paused\";\n\nexport interface ContactInformation {\n address1: string;\n address2: string;\n city: string;\n zipCode: string;\n phone: string|null;\n}\n\nexport interface Cart {\n items: CartItem[]\n shopId: number,\n shopName: string,\n orderType: OrderType,\n pickupTime?: Date,\n note?:string|null,\n settings: ApplicationSettings,\n spotId:number|null\n}\n\nexport interface CartItem {\n type: CartItemType,\n article: Article;\n choices: SelectedChoices;\n flatChoices: Choice[];\n categoryName?: string,\n quantity: number;\n id: string\n}\n\nexport interface CartState {\n visible: boolean,\n showOrderInfo: boolean,\n showAddItemButton: boolean,\n hasSelectedSuggestions: boolean,\n disabled: boolean,\n orderType: OrderType,\n shopId: number | null,\n shopName?: string,\n items: CartItem[],\n editMode: boolean,\n currentOrderChanged: boolean,\n note: string|null,\n spotId:number|null,\n settings: ApplicationSettings,\n initiated: boolean\n}\n\nexport interface SuggestedArticleCategory {\n description: string,\n order: number,\n articleIds: string[]\n}\n\nexport interface Article {\n code: string;\n choices: ChoiceLevel[];\n description: string;\n description2: string;\n imageUrl: string;\n price: number;\n salesUnit: string;\n suggestedArticleIds: string[];\n taxCode: number;\n taxCodeSecondary: number;\n additionalInformation: string;\n availableForSale: boolean;\n suggestedArticles: SuggestedArticleCategory[]\n stickers: Sticker[];\n campaigns: Campaign[];\n i18n: Translations,\n}\nexport interface Sticker {\n name:string;\n description:string;\n imageId:string;\n i18n: Translations\n}\n\nexport interface Campaign {\n name:string;\n description:string;\n enabled:boolean;\n imageId:string;\n code:string;\n i18n: Translations,\n membersOnly?:boolean,\n shopIds?:number[]\n stickers: Sticker[],\n articleCodeLink?:string|null\n}\n\nexport class Translations {\n [property:string]:any;\n tr = (property:string, culture:string): string => {\n const translations = this[property] as Translation[];\n const text = translations.find(t => t.language === culture)?.text;\n \n return text || \"\";\n };\n}\n\nexport interface Translation{\n language: string,\n text: string\n}\n\nexport interface ArticleInfo {\n imageUrl: string;\n name: string;\n code: string;\n}\n\nexport interface Category {\n articles: string[],\n imageUlr: string,\n maxPrice: number,\n minPrice: number,\n name: string,\n i18n: Translations\n}\n\nexport interface Menu{\n name:string,\n items:MenuItem[],\n currency:Currency\n choiceLevels: ChoiceLevel[];\n getArticleItem(articleCode:string):{ item: MenuItem | null, path: string[]} | null;\n getItemFromPath(path:string[]):MenuItem|null;\n}\n\nexport class MenuImpl implements Menu{\n constructor(data:Menu) {\n this.name = data.name;\n this.items = data.items;\n this.currency = data.currency;\n this.choiceLevels = data.choiceLevels;\n }\n\n name: string;\n items: MenuItem[];\n currency: Currency;\n choiceLevels: ChoiceLevel[];\n \n\n \n private getItemFromPathInternal(items:MenuItem[], path:string[]):MenuItem|null{\n for(const item of items){\n if(generateSlug(item.name) === path[0]){\n if(path.length === 1){\n return item;\n }\n if(item.type === 'container'){\n return this.getItemFromPathInternal(item.items!, path.slice(1));\n }\n }\n }\n return null;\n } \n public getItemFromPath(path:string[]):MenuItem|null{\n return this.getItemFromPathInternal(this.items, path);\n }\n \n public getArticleItem(articleCode:string):{ item: MenuItem | null, path: string[] } | null {\n return this.findArticleItemInMenu(this.items, articleCode, null);\n }\n \n private findArticleItemInMenu(items:MenuItem[],articleCode:string, path:string[] | null | undefined):{ item: MenuItem | null, path: string[] } | null {\n for(const item of items){\n if(item.type === 'article' && item.code === articleCode){\n return {\n item,\n path: path ?? []\n };\n }\n if(item.type === 'container'){\n const found = this.findArticleItemInMenu(item.items!, articleCode, [...(path??[]), item.name]);\n if(found){\n return found;\n }\n }\n }\n return null;\n }\n} \n\nexport interface MenuItem{\n name:string;\n type:string;\n i18n?: Translations;\n itemId:number;\n parentId:number;\n items?:MenuItem[];\n image?:string;\n code?:string;\n article?:Article;\n}\n\nexport interface Choice {\n order: number;\n article: Article;\n quantity: number;\n unit: string;\n code: string;\n id: number;\n level: number;\n type: ChoiceType;\n subRecipes: Choice[];\n}\nexport type ChoiceType = \"recipe\" | \"subRecipe\";\n\nexport interface ChoiceLevel {\n level: number;\n name: string;\n isMultipleChoice: boolean;\n choices: Choice[];\n minChoices: number;\n maxChoices: number;\n nameOverride:string|null;\n callToActionOverride:string|null;\n i18n: Translations\n}\n\nexport interface Currency {\n name: string,\n symbol: string,\n}\n\nexport interface SelectedChoices {\n [key: number]: Choice[];\n}\n\nexport interface Category {\n name: string;\n imageUrl: string;\n maxPrice: number;\n minPrice: number;\n articles: string[];\n}\n\nexport interface MinMax {\n min: number,\n max: number\n}\n\nexport interface ApiStatus {\n done: boolean,\n failed: boolean,\n loading: boolean,\n text?: string\n error?: ResponseError\n}\n\n\nexport interface CartInject {\n cart: CartItem[] | null,\n addToCart(item: CartItem): any,\n removeFromCart(item: CartItem): any\n}\n\n\nexport interface SuggestedArticlesInject {\n suggestedArticleIds: string[] | null,\n setSuggestedArticleIds(articleIds: string[]): any\n}\n\nexport interface NavigationStoreState {\n text: string,\n visible: boolean,\n url: string,\n category?: string,\n link?: NavigationStoreLink | undefined,\n\n\n}//RouteLocationRaw\n\nexport interface NavigationStoreLink {\n name: string,\n path?: string,\n params: RouteParamsRaw | undefined,\n text?: string\n}\n\nexport interface Languages { [key: string]: string }\n\nexport interface DropdownItem {\n label: string;\n value: string;\n}\n\nexport interface OrderStoreState {\n details: OrderDetails | null\n //status: string | null,\n //orderStatus: OrderStatus | null,\n paidOrders: PaidOrder[],\n deliveredOrders: PaidOrder[]\n}\n\nexport interface PaidOrder {\n id: string,\n customerCode: string | null\n expires: Date;\n}\n\nexport interface OrderDetails {\n orderId: string | null;\n shopId: number | null;\n accessToken: string | null;\n pickupTime: Date | null;\n totalAmount: number | null;\n customerCode: string | null\n paymentID: string | null;\n userAgent: string | null;\n}\n\nexport interface OrderHistory {\n webOrders: OrderStatus[]\n others: OrderStatus[]\n}\n\nexport type PaginatedResult = {\n pageIndex: number;\n pageSize: number;\n totalCount: number;\n totalPages: number;\n items: T[];\n}\n\nexport interface OrderStatus {\n orderId: string\n orderNr: string\n totalAmount: number\n created: string\n shop: Shop\n items: OrderStatusItem[]\n orderType: string\n status: OrderStatusState,\n pickupTime: string\n paymentTransactionId: any\n note:string|any,\n deliverySpot: DeliverySpot|null,\n currency: Currency|null,\n isWebOrder?: boolean\n}\n\nexport interface OrderStatusItem {\n amount: number\n totalAmount: number\n price: number\n description: string\n articleCode: string\n normalPrice: number\n purchasePrice: number\n quantity: number\n campaign: Campaign | null\n choices: any[],\n isChoice: boolean,\n isVat?: boolean,\n}\n\nexport interface ResponseError {\n type: string\n title: string\n status: number,\n detail: string,\n errors?: any\n}\n\nexport interface ICoupon {\n id: number,\n created: Date,\n validUntil: Date,\n name: string,\n description: string,\n imageUrl: string,\n usedDate: Date | null\n}\n\nexport class Coupon implements ICoupon{\n constructor(data:ICoupon) {\n this.id = data.id;\n this.created= new Date(data.created);\n this.validUntil = new Date(data.validUntil);\n this.name = data.name;\n this.description = data.description;\n this.imageUrl = data.imageUrl;\n this.usedDate = data.usedDate ? new Date(data.usedDate) : null;\n }\n\n id: number;\n created: Date;\n validUntil: Date;\n name: string;\n description: string;\n imageUrl: string;\n usedDate: Date | null;\n \n public get state() : CouponState {\n if(!this.usedDate){\n return CouponState.Unused;\n }\n\n const expires = new Date(this.usedDate);\n expires.setMinutes(this.usedDate.getMinutes()+10);\n\n if(expires < new Date()){\n return CouponState.Expired\n }\n\n return CouponState.Active;\n }\n \n getStateClass() : string {\n switch (this.state) {\n case CouponState.Unused:\n return 'coupon-unused';\n case CouponState.Active:\n return 'coupon-active';\n case CouponState.Expired:\n return 'coupon-expired';\n } \n }\n\n getTimeLeftForCoupon():Duration {\n \n const expires = DateTime.fromJSDate(this.usedDate?? new Date()).plus({minutes:10});\n const duration =expires.diff(DateTime.local(), ['minutes', 'seconds']);\n return duration;\n //console.log(eh.toFormat('mm:ss',{ floor: true }));\n \n \n // const used = DateTime.fromJSDate(this.usedDate);\n //\n // return DateTime.local().diff(used, ['minutes', 'seconds']);\n \n //\n // const diff = Math.abs(new Date().setMinutes(new Date().getMinutes()) - this.usedDate.getTime());\n // const diff2 = (1000*60*10)-diff;\n //\n // const d = new Date(Date.UTC(0, 0, 0, 0, 0, 0, diff2)),\n // // Pull out parts of interest\n // parts = [\n // d.getUTCHours(),\n // d.getUTCMinutes(),\n // d.getUTCSeconds()\n // ],\n // // Zero-pad\n // formatted = parts.map(s => String(s).padStart(2, '0')).join(':');\n //\n // return d;\n }\n \n}\nexport enum CouponState {\n Unused = 0,\n Active = 1,\n Expired = 2\n}\n\nexport interface AuthResponse {\n tokenType: string,\n accessToken: string,\n expiresIn: number,\n expires: Date,\n refreshToken: string,\n}\nexport interface ProfileResponse {\n name:string,\n lastName:string,\n email:string,\n phone:string,\n isAuthenticated:boolean,\n favorites: Favorite[]\n}\n\nexport interface UpdateProfileRequest {\n name:string,\n lastName:string,\n email:string, \n password:string|null\n newPassword:string|null\n confirmNewPassword:string|null,\n redirectUri?: string|null\n}\n\nexport interface Favorite {\n id?: number|null,\n code: string,\n type:string\n article?: Article|null,\n shop?: Shop|null\n}\n\nexport interface Terms {\n i18n: Translations\n}\n\n\nexport interface DeliverySpot {\n id:number,\n name:string,\n i18n: Translations,\n orderType: OrderType\n}","import { defineComponent as _defineComponent } from 'vue'\nimport { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"data-to\"]\n\nimport { ref, reactive, onMounted } from 'vue';\n\n /* interface */\n interface Props {\n url: string | null,\n to?: string\n\n }\n interface State {\n url: string,\n fallbackImage: boolean,\n loading:boolean\n }\n\n /* Ref */\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ArticleImage',\n props: {\n url: null,\n to: null\n },\n setup(__props: any, { expose }) {\n\nconst props = __props as {\n url: string | null,\n to?: string\n\n };\n\n /* imports */\n const image = ref();\n\n /* Reactive */\n const state = reactive({\n url: '',\n fallbackImage: false,\n loading:true\n });\n\n /* Const */\n const fallbackImageUrl = '/assets/img/444x250_Default.png';\n\n /* Props */\n \n\n /* Fuinctions */\n const setLoading = ()=>{\n state.loading = false;\n }\n const setFallbackImg = () => {\n state.url = fallbackImageUrl; \n };\n\n const addToOrder = () => {\n\n return new Promise((resolve: any, reject: any) => {\n \n if (image.value) {\n\n const order = document.querySelector('.order-content');\n\n if (!order) {\n reject(\"element order-content is missing!\")\n }\n\n const el: Element | null | undefined = props.to ? order?.querySelector(`[data-id=a-${props.to}]`) || order : order?.querySelector('li:last-child') || order;\n\n if (el) {\n\n const rectOrder: DOMRect = el.getBoundingClientRect();\n\n const rectImage: DOMRect = image.value.getBoundingClientRect();\n\n const img = new Image(rectImage.width, rectImage.height);\n\n const sizeRatio = 100 / rectImage.width;\n\n img.addEventListener('transitionend', () => {\n img.remove();\n setTimeout(() => {\n if (image.value) {\n image.value.style.removeProperty('opacity');\n }\n }, 250);\n resolve(true);\n });\n\n img.className = 'clone';\n\n const styleStart = {\n top: `${rectImage.top}px`,\n left: `${rectImage.left}px`\n }\n\n const styleEnd = {\n top: `${rectOrder.top}px`,\n left: `${rectOrder.left}px`,\n transform: `scale(${sizeRatio})`\n }\n\n img.onerror = (err) => {\n reject(err);\n };\n\n img.src = image.value.src;\n Object.assign(img.style, styleStart);\n\n if (image.value) {\n image.value.style.opacity = '0.1';\n }\n\n document.body.appendChild(img);\n setTimeout(() => {\n Object.assign(img.style, styleEnd);\n img.classList.add('clone-animate')\n }, 10);\n\n } else {\n reject(\"element is missing!\")\n }\n }\n });\n };\n\n expose({\n addToOrder\n });\n\n /* Lifecycle Hooks */\n onMounted(() => {\n\n \n if (props.url && props.url.length) {\n state.url = `/api/images/${props.url}`;\n } else {\n state.fallbackImage = true;\n state.url = fallbackImageUrl;\n }\n });\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"img\", {\n src: state.url,\n ref_key: \"image\",\n ref: image,\n \"data-to\": props.to,\n onLoad: setLoading,\n onErrorOnce: setFallbackImg,\n class: _normalizeClass({ \n 'fallback-image': state.fallbackImage, \n 'custom-image': !state.fallbackImage,\n 'loading': state.loading\n }),\n alt: \"\"\n }, null, 42, _hoisted_1))\n}\n}\n\n})","import script from \"./ArticleImage.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ArticleImage.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, Teleport as _Teleport, createBlock as _createBlock } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\"]\nconst _hoisted_2 = { class: \"popup-header\" }\nconst _hoisted_3 = { class: \"popup-text\" }\nconst _hoisted_4 = { class: \"popup-buttons btn-group\" }\n\nimport { onErrorCaptured } from 'vue';\n // import { AppStore } from '@/stores/app';\n import { useI18n } from 'vue-i18n'\n\n // const appStore = AppStore();\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'ConfirmPopup',\n props: {\n show: {\n type: Boolean,\n default: false,\n },\n text: {\n type: String,\n default: 'cancel.text',\n },\n heading: {\n type: String,\n default: 'cancel.header',\n },\n okButton: {\n type: String,\n default: 'button.yes',\n },\n cancelButton: {\n type: String,\n default: 'button.no',\n }\n },\n emits: ['onAnswer'],\n setup(__props, { emit }) {\n\n /* imports */\n const { t } = useI18n();\n\n /* interface */\n\n\n /* Props */\n \n\n\n /* reactive */\n\n\n /* Emits */\n \n\n /* computed */\n\n /* functions */\n const doNothing = () => {\n return false;\n }\n const answer = (value: boolean) => {\n emit('onAnswer', value);\n }\n\n /* Lifecycle Hooks */\n onErrorCaptured(() => {\n emit('onAnswer', true);\n })\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createBlock(_Teleport, { to: \"body\" }, [\n _createVNode(_Transition, {\n name: \"popup\",\n duration: 860\n }, {\n default: _withCtx(() => [\n (__props.show)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"popup popup-confirm\",\n onClick: _cache[2] || (_cache[2] = _withModifiers(($event: any) => (answer(false)), [\"stop\"]))\n }, [\n _createElementVNode(\"div\", {\n class: \"popup-content\",\n onClick: _withModifiers(doNothing, [\"stop\",\"prevent\"])\n }, [\n _createElementVNode(\"h2\", _hoisted_2, _toDisplayString(_unref(t)(__props.heading)), 1),\n _createElementVNode(\"p\", _hoisted_3, _toDisplayString(_unref(t)(__props.text)), 1),\n _createElementVNode(\"div\", _hoisted_4, [\n _createElementVNode(\"button\", {\n class: \"btn btn-cancel\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (answer(false)), [\"stop\"]))\n }, _toDisplayString(_unref(t)(__props.cancelButton)), 1),\n _createElementVNode(\"button\", {\n class: \"btn btn-ok\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (answer(true)), [\"stop\"]))\n }, _toDisplayString(_unref(t)(__props.okButton)), 1)\n ])\n ], 8, _hoisted_1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]))\n}\n}\n\n})","import script from \"./ConfirmPopup.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./ConfirmPopup.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"sr-only\" }\n\nimport {AuthStore} from \"@/stores/auth\";\n import { useI18n } from 'vue-i18n';\n import {reactive} from \"vue\";\n interface State {\n favorite:boolean\n }\n interface Props {\n code:string,\n type:string,\n favorite:boolean\n }\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'FavoriteButton',\n props: {\n code: null,\n type: null,\n favorite: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n code:string,\n type:string,\n favorite:boolean\n };\n\n const authStore = AuthStore();\n\n const { t, locale } = useI18n();\n \n \n const state = reactive({\n favorite:props.favorite\n });\n \n const toggle = (e:Event)=>{\n e.preventDefault();\n if(props.type ==='article') {\n if(state.favorite) {\n authStore.removeFavoriteArticle(props.code);\n } else {\n authStore.addFavoriteArticle(props.code);\n }\n } else if(props.type ==='shop') {\n if(state.favorite) {\n authStore.removeFavoriteShop(props.code);\n } else {\n authStore.addFavoriteShop(props.code);\n }\n }\n \n state.favorite = !state.favorite; \n }\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass([\"btn-favorite\", {'selected' :state.favorite}]),\n type: \"button\",\n onClick: toggle\n }, [\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(_unref(t)('button.favorite')), 1)\n ], 2))\n}\n}\n\n})","import script from \"./FavoriteButton.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FavoriteButton.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"loader\" }\n\nimport { IonSpinner } from '@ionic/vue';\n import { useI18n } from 'vue-i18n'\n\n \nexport default /*#__PURE__*/_defineComponent({\n __name: 'LoaderComponent',\n props: {\n text: {\n type: String,\n default: 'loader.text',\n }\n },\n setup(__props) {\n \n\n /* imports */\n const { t } = useI18n();\n\n /* interface */\n\n /* Reactive */\n\n /* Props */\n \n\n /* Lifecycle Hooks */\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", null, [\n _createVNode(_unref(IonSpinner), { name: \"circular\" }),\n _createTextVNode(),\n _createElementVNode(\"span\", null, _toDisplayString(_unref(t)(__props.text)), 1)\n ])\n ]))\n}\n}\n\n})","import script from \"./LoaderComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./LoaderComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, unref as _unref, withModifiers as _withModifiers, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = { class: \"dropdown\" }\nconst _hoisted_2 = [\"aria-expanded\"]\nconst _hoisted_3 = [\"onClick\"]\n\nimport { DropdownItem } from '@/types';\nimport { onBeforeMount, onBeforeUnmount, reactive, ref } from 'vue';\nimport { useI18n } from 'vue-i18n';\n\ninterface Props {\n label: string;\n items: DropdownItem[];\n}\n\ninterface State {\n open: boolean;\n}\n\n/* Props */\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DropdownComponent',\n props: {\n label: null,\n items: null\n },\n emits: ['onChanged'],\n setup(__props: any, { emit }) {\n\nconst { t } = useI18n();\n\n/* Interface */\n\n\n/* Reactive */\nconst state = reactive({\n open: false,\n});\n\n/* Refs */\nconst dropdownMenu = ref();\nconst toggle = ref();\n\n/* Emits */\n\n\n/* Functions */\nconst toggleVisibility = () => (state.open = !state.open);\n\nconst onSelect = (value: string) => {\n toggleVisibility();\n emit('onChanged', value);\n};\n\nconst autoClose = (event: any) => {\n \n if (\n !dropdownMenu.value?.contains(event.target) &&\n !toggle.value?.contains(event.target) &&\n state.open\n ) {\n toggleVisibility();\n }\n};\n\n/* Lifecycle hooks*/\nonBeforeMount(() => document.addEventListener('click', autoClose));\nonBeforeUnmount(() => document.removeEventListener('click', autoClose));\n\nreturn (_ctx: any,_cache: any) => {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createElementVNode(\"button\", {\n class: \"dropdown-toggle\",\n onClick: toggleVisibility,\n \"aria-haspopup\": \"true\",\n \"aria-expanded\": state.open,\n ref_key: \"toggle\",\n ref: toggle\n }, [\n _createElementVNode(\"span\", null, _toDisplayString(_ctx.$props.label), 1)\n ], 8, _hoisted_2),\n (state.open)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"dropdown-menu\",\n ref_key: \"dropdownMenu\",\n ref: dropdownMenu\n }, [\n _createElementVNode(\"ul\", null, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(__props.items, (item) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n key: item.value\n }, [\n _createElementVNode(\"a\", {\n class: \"dropdown-item\",\n href: \"#\",\n onClick: _withModifiers(($event: any) => (onSelect(item.value)), [\"prevent\",\"stop\"])\n }, _toDisplayString(_unref(t)(item.label)), 9, _hoisted_3)\n ]))\n }), 128))\n ])\n ], 512))\n : _createCommentVNode(\"\", true)\n ]))\n}\n}\n\n})","import script from \"./DropdownComponent.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DropdownComponent.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, withModifiers as _withModifiers, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"label\" }\nconst _hoisted_2 = {\n key: 3,\n class: \"delivery-spots\"\n}\nconst _hoisted_3 = [\"onClick\"]\nconst _hoisted_4 = { key: 1 }\n\nimport {computed, reactive, ref, watch} from \"vue\";\nimport {DeliverySpot} from \"@/types\";\nimport {OrderType} from \"@/enums\";\nimport {useI18n} from \"vue-i18n\";\nimport {i18nTranslate} from \"../functions\";\n\ninterface Props {\n label:string\n shopId: number;\n orderType: OrderType;\n spots: DeliverySpot[];\n selectedSpot?: DeliverySpot | undefined;\n allowEmpty?: boolean;\n}\ninterface State {\n selectedSpot: DeliverySpot | undefined;\n expanded: boolean;\n}\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DeliverySpotSelector',\n props: {\n label: null,\n shopId: null,\n orderType: null,\n spots: null,\n selectedSpot: null,\n allowEmpty: { type: Boolean }\n },\n emits: ['spot-selected'],\n setup(__props: any, { emit }) {\n\nconst props = __props as {\n label:string\n shopId: number;\n orderType: OrderType;\n spots: DeliverySpot[];\n selectedSpot?: DeliverySpot | undefined;\n allowEmpty?: boolean;\n};\n\nconst {t, locale} = useI18n();\n\nconst shouldStartExpanded = ()=>\n{\n if(props.allowEmpty && !props.selectedSpot)\n return false;\n return !props.selectedSpot;\n}\n\nconst state: State = reactive({\n selectedSpot: props.spots.find(p=>p.id == props.selectedSpot?.id),\n expanded: shouldStartExpanded(),\n});\n\nwatch(()=>props.selectedSpot, (newVal)=>{\n state.selectedSpot = props.spots.find(p=>p.id == newVal?.id);\n if(!props.allowEmpty){\n state.expanded = !newVal;\n }else {\n state.expanded = false;\n }\n});\n\n\n\nconst selectedRef = ref(null);\nwatch(selectedRef, (newVal:any) => {\n if(!newVal) \n return;\n \n const arr = newVal as Array;\n const span = arr[0];\n if(span) {\n span.scrollIntoView({ behavior: \"smooth\", block: \"center\", inline: \"center\" });\n }\n});\nconst onSpotSelected = (value:string) => {\n const spot = props.spots.find(spot => spot.id === parseInt(value));\n state.selectedSpot = spot;\n close();\n emit('spot-selected', spot);\n}\n\nconst items = computed(()=>{\n return props.spots.filter(s=>s.orderType == props.orderType).map(spot => {\n return {\n label: spot.name,\n value: spot.id\n }\n });\n});\n\nconst close = ()=>{\n state.expanded = false;\n selectedRef.value = null;\n}\n\nconst sortedSpots = computed(()=>{ \n return [...props.spots].sort((a,b)=>{\n const aName = i18nTranslate(a.i18n,'name',locale.value,a.name);\n const bName = i18nTranslate(b.i18n,'name',locale.value,b.name);\n return aName.localeCompare(bName);\n })\n});\n\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(items).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"spot-selector\", {'expanded': state.expanded}])\n }, [\n _createElementVNode(\"span\", _hoisted_1, _toDisplayString(props.label) + \":\", 1),\n (!state.expanded && props.allowEmpty && !state.selectedSpot)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"selected-spot\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(($event: any) => (state.expanded = !state.expanded), [\"prevent\"]))\n }, _toDisplayString(_unref(t)('order.deliverySpot.empty')), 1))\n : _createCommentVNode(\"\", true),\n (!state.expanded && state.selectedSpot)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: \"selected-spot\",\n onClick: _cache[1] || (_cache[1] = _withModifiers(($event: any) => (state.expanded = !state.expanded), [\"prevent\"]))\n }, _toDisplayString(_unref(i18nTranslate)(state.selectedSpot!.i18n,'name', _unref(locale), state.selectedSpot!.name)), 1))\n : _createCommentVNode(\"\", true),\n ((state.selectedSpot || props.allowEmpty) && state.expanded)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 2,\n class: \"btn-close\",\n onClick: close\n }, \"Close\"))\n : _createCommentVNode(\"\", true),\n (state.expanded)\n ? (_openBlock(), _createElementBlock(\"ol\", _hoisted_2, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_unref(sortedSpots), (spot) => {\n return (_openBlock(), _createElementBlock(\"li\", {\n class: _normalizeClass([\"delivery-spot\", {'selected': spot.id==__props.selectedSpot?.id}]),\n key: spot.id,\n onClick: _withModifiers(($event: any) => (onSpotSelected(spot.id.toString())), [\"prevent\",\"stop\"])\n }, [\n (spot.id == __props.selectedSpot?.id)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n id: \"selected\",\n ref_for: true,\n ref_key: \"selectedRef\",\n ref: selectedRef\n }, _toDisplayString(_unref(i18nTranslate)(spot.i18n,'name',_unref(locale), spot.name)), 513))\n : (_openBlock(), _createElementBlock(\"span\", _hoisted_4, _toDisplayString(_unref(i18nTranslate)(spot.i18n,'name',_unref(locale), spot.name)), 1))\n ], 10, _hoisted_3))\n }), 128))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./DeliverySpotSelector.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./DeliverySpotSelector.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, createVNode as _createVNode, createTextVNode as _createTextVNode, normalizeClass as _normalizeClass } from \"vue\"\n\nconst _hoisted_1 = { class: \"selected-restaurant\" }\nconst _hoisted_2 = { class: \"label\" }\nconst _hoisted_3 = { class: \"shop-name\" }\nconst _hoisted_4 = { class: \"dining-type\" }\nconst _hoisted_5 = {\n key: 1,\n class: \"dropdown\"\n}\nconst _hoisted_6 = { class: \"order-delivery-spot\" }\nconst _hoisted_7 = {\n key: 0,\n class: \"order-note-container\"\n}\nconst _hoisted_8 = {\n for: \"order-note\",\n class: \"label\"\n}\nconst _hoisted_9 = {\n key: 0,\n class: \"order-note\"\n}\nconst _hoisted_10 = { class: \"sr-only\" }\nconst _hoisted_11 = [\"value\", \"placeholder\"]\n\nimport {CartStore} from '@/stores/cart';\nimport {ShopStore} from '@/stores/shop';\nimport {DeliverySpot, DropdownItem} from '@/types';\nimport {OrderType} from '@/enums';\nimport {useI18n} from 'vue-i18n';\nimport DropdownComponent from '@/components/DropdownComponent.vue';\nimport DeliverySpotSelector from \"@/components/DeliverySpotSelector.vue\";\nimport {computed, onBeforeMount, reactive} from \"vue\";\nimport {toKebabCase} from \"@/functions\";\n\ninterface Props {\n onOrderTypeChanged?: (orderType: OrderType) => void | null | undefined;\n onDeliverySpotChanged?: (deliverySpot: DeliverySpot|null|undefined) => void | null | undefined;\n deliverySpots?: DeliverySpot[];\n allowEmptyDeliverySpot?: boolean;\n editableNote?: boolean;\n}\n\ninterface State {\n deliverySpots: DeliverySpot[];\n deliverySpot: DeliverySpot | null | undefined;\n orderType: OrderType;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'OrderShopInfo',\n props: {\n onOrderTypeChanged: { type: Function },\n onDeliverySpotChanged: { type: Function },\n deliverySpots: null,\n allowEmptyDeliverySpot: { type: Boolean },\n editableNote: { type: Boolean }\n },\n setup(__props: any) {\n\nconst props = __props as {\n onOrderTypeChanged?: (orderType: OrderType) => void | null | undefined;\n onDeliverySpotChanged?: (deliverySpot: DeliverySpot|null|undefined) => void | null | undefined;\n deliverySpots?: DeliverySpot[];\n allowEmptyDeliverySpot?: boolean;\n editableNote?: boolean;\n};\n\n\n/* imports */\n\n\nconst {t} = useI18n();\nconst cartStore = CartStore();\nconst shopStore = ShopStore();\n\nconst state = reactive({\n deliverySpots: props.deliverySpots || [],\n deliverySpot: null,\n orderType: cartStore.getOrderType()\n});\n\nconst spotsForOrderType = computed(()=>{\n console.log('initial',state.deliverySpots.length);\n \n const result = state.deliverySpots.filter(s=>s.orderType == state.orderType);\n console.log('result', result.length);\n return result;\n});\n\nconst diningTypes: DropdownItem[] = [];\ncartStore.state.settings.orderTypes.forEach((orderType: OrderType) => {\n const key = orderType.charAt(0).toLowerCase() + orderType.slice(1);\n diningTypes.push({\n label: t('label.' + key),\n value: orderType,\n });\n});\n\nconst onDeliverySpotChanged = (spot: DeliverySpot | null | undefined) => {\n state.deliverySpot = spot;\n if (spot) {\n cartStore.setDeliverySpot(spot?.id);\n }\n if (props.onDeliverySpotChanged) {\n props.onDeliverySpotChanged(spot);\n }\n}\n\nconst updateNote = (e:any)=>{\n cartStore.setNote(e.target.value);\n}\n\nconst updateDiningType = (diningType: OrderType) => {\n cartStore.setOrderType(diningType);\n state.orderType = diningType;\n cartStore.setDeliverySpot(null);\n state.deliverySpot = null;\n if (props.onOrderTypeChanged) {\n props.onOrderTypeChanged(diningType);\n }\n\n};\n\nconst clearNote = () => {\n cartStore.setNote(null);\n}\n\nconst getDeliverySpots = () => {\n fetch(`/api/shops/${shopStore.shop?.id}/delivery-spots`)\n .then(response => response.json())\n .then(data => {\n state.deliverySpots = data as DeliverySpot[];\n if (cartStore.state.spotId) {\n state.deliverySpot = state.deliverySpots.find(spot => spot.id == cartStore.state.spotId);\n console.log(state.deliverySpot);\n }\n });\n}\n\nonBeforeMount(() => {\n if(!props.deliverySpots){\n getDeliverySpots();\n }\n});\n\nreturn (_ctx: any,_cache: any) => {\n return (_unref(shopStore).shop)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass([\"dining-info\", {[_unref(toKebabCase)(_unref(cartStore).state.orderType)]:true, 'delivery-spots-missing': !props.deliverySpots}])\n }, [\n _createElementVNode(\"div\", _hoisted_1, [\n _createElementVNode(\"div\", _hoisted_2, _toDisplayString(_unref(t)('order.selectedRestaurant')) + \":\", 1),\n _createElementVNode(\"div\", _hoisted_3, _toDisplayString(_unref(shopStore).shop.description), 1)\n ]),\n _createElementVNode(\"div\", _hoisted_4, [\n (diningTypes.length > 1)\n ? (_openBlock(), _createBlock(DropdownComponent, {\n key: 0,\n label: _unref(t)('label.'+_unref(cartStore).state.orderType),\n items: diningTypes,\n onOnChanged: updateDiningType\n }, null, 8, [\"label\"]))\n : _createCommentVNode(\"\", true),\n (diningTypes.length == 1)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, [\n _createElementVNode(\"span\", null, _toDisplayString(diningTypes[0].label), 1)\n ]))\n : _createCommentVNode(\"\", true)\n ]),\n _createElementVNode(\"div\", _hoisted_6, [\n _createVNode(DeliverySpotSelector, {\n label: _unref(t)('order.deliverySpot.label'),\n \"allow-empty\": props.allowEmptyDeliverySpot,\n \"order-type\": _unref(cartStore).getOrderType(),\n spots: _unref(spotsForOrderType),\n \"selected-spot\": state.deliverySpot,\n \"shop-id\": _unref(shopStore).shop.id,\n onSpotSelected: onDeliverySpotChanged\n }, null, 8, [\"label\", \"allow-empty\", \"order-type\", \"spots\", \"selected-spot\", \"shop-id\"])\n ]),\n ((_unref(cartStore).state.note || props.editableNote))\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [\n _createElementVNode(\"label\", _hoisted_8, _toDisplayString(_unref(t)('order.note.label')) + \": \", 1),\n (!props.editableNote)\n ? (_openBlock(), _createElementBlock(\"span\", _hoisted_9, [\n _createTextVNode(_toDisplayString(_unref(cartStore).state.note) + \" \", 1),\n _createElementVNode(\"button\", {\n class: \"btn-remove\",\n onClick: clearNote\n }, [\n _createElementVNode(\"span\", _hoisted_10, _toDisplayString(_unref(t)('order.note.remove')), 1)\n ])\n ]))\n : (_openBlock(), _createElementBlock(\"input\", {\n key: 1,\n type: \"text\",\n id: \"order-note\",\n maxlength: \"90\",\n onBlur: updateNote,\n value: _unref(cartStore).state.note,\n placeholder: _unref(t)('order.note.placeholder')\n }, null, 40, _hoisted_11))\n ]))\n : _createCommentVNode(\"\", true)\n ], 2))\n : _createCommentVNode(\"\", true)\n}\n}\n\n})","import script from \"./OrderShopInfo.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./OrderShopInfo.vue?vue&type=script&setup=true&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \"-legacy.\" + {\"576\":\"2e2ab51f\",\"630\":\"2ece96b4\",\"979\":\"a0d72de5\",\"1094\":\"4f7f49c5\",\"1562\":\"20a7905a\",\"1633\":\"ab58169b\",\"1977\":\"a7c1bedc\",\"2042\":\"ba263544\",\"2111\":\"e612d4e9\",\"2312\":\"a335b48d\",\"2501\":\"b03df201\",\"2513\":\"98d57800\",\"2638\":\"5d11ac8f\",\"3456\":\"870742b7\",\"3541\":\"ed52d89b\",\"3542\":\"580ab1f7\",\"3663\":\"49fff606\",\"3705\":\"0b4e0142\",\"3885\":\"c9bb35c0\",\"3997\":\"5fe63a3e\",\"4010\":\"c909689c\",\"4160\":\"fc834345\",\"4184\":\"bb872503\",\"4261\":\"cf51601e\",\"4275\":\"11c5af47\",\"4298\":\"5988c4bc\",\"4495\":\"50f77b85\",\"4753\":\"af4db766\",\"4807\":\"032b30ab\",\"4886\":\"0321cd9f\",\"4905\":\"bcbdad03\",\"4945\":\"017dbeb4\",\"5126\":\"3e0c63c4\",\"5289\":\"65de903e\",\"5380\":\"2433fc2f\",\"5772\":\"d0df8d92\",\"5980\":\"cbe12944\",\"6078\":\"70023105\",\"6222\":\"bba25ac2\",\"6253\":\"20729e6f\",\"6338\":\"342d099b\",\"6519\":\"061b1799\",\"6823\":\"6e542671\",\"7125\":\"e377f8e0\",\"7250\":\"c270e3c5\",\"7251\":\"fe733429\",\"7391\":\"1d2e865f\",\"7392\":\"e4c95cf0\",\"7517\":\"012da9ec\",\"7542\":\"aa9af2bc\",\"7630\":\"12529313\",\"7846\":\"c0441dec\",\"8030\":\"a5229d5a\",\"8537\":\"8a3ccf6e\",\"8544\":\"890581e9\",\"8775\":\"7f959431\",\"9280\":\"017627b1\",\"9304\":\"fe3156d5\",\"9316\":\"d5016d38\",\"9487\":\"39f35d39\",\"9581\":\"cfd4efc3\",\"9875\":\"a5b4596b\",\"9880\":\"130e29a3\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"3663\":\"ea37adf7\",\"3885\":\"888c4baa\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"winpos-weborder:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"3663\":1,\"3885\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkwinpos_weborder\"] = self[\"webpackChunkwinpos_weborder\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4998], () => (__webpack_require__(59679)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","id","module","exports","BREAKPOINTS","tabletPortrait","tabletLandscape","desktop","desktopBig","lowHeight","appInsights","useApplicationInsights","ApplicationInsights","config","connectionString","process","loadAppInsights","useEmitter","internalInstance","getCurrentInstance","emitter","appContext","globalProperties","CartItemType","OrderType","ScreenType","OrderStatusState","guid","s4","Math","floor","random","toString","substring","errorToi18nKey","statusCode","prefix","message","toKebabCase","str","match","map","x","toLowerCase","join","isResponseError","obj","generateSlug","text","trim","replace","isOpen","shop","externalAppUri","openForBusiness","i18nTranslate","i18n","property","locale","defaultValue","debug","console","log","translations","find","t","language","getI18nImageId","isReachable","url","fetch","method","mode","resp","ok","type","catch","err","warn","isDebug","suggestedArticlesStorage","menuStoreKey","cartStorageKey","authStorageKey","shopStorageKey","navigationStoreKey","appStoreKey","orderStoreKey","errorStoreKey","couponStoreKey","_hoisted_1","_hoisted_2","class","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","key","_hoisted_10","_hoisted_11","_hoisted_12","_createElementVNode","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_defineComponent","__name","props","item","disabled","Boolean","editable","curency","setup","__props","menuStore","MenuStore","cart","CartStore","useI18n","state","reactive","showEditActions","quantity","toggleEdit","emit","hideEdit","increaseItem","increase","dataId","decreaseItem","decrease","removeCartItem","remove","changeCartItem","result","menu","getArticleItem","article","router","name","params","path","articleId","orderId","onMounted","on","data","_ctx","_cache","_openBlock","_createElementBlock","_normalizeClass","style","onClick","_withModifiers","$event","onKeyup","_withKeys","tabindex","_createBlock","ArticleImage","imageUrl","_toDisplayString","_unref","description","price","_Fragment","_renderList","flatChoices","choice","_createCommentVNode","_createVNode","_Transition","default","_withCtx","Article","_","__exports__","_hoisted_18","_hoisted_19","cartStore","appStore","AppStore","tweened","number","showOrderInfo","showCancelModal","isCounting","currency","getCurrency","symbol","transitionName","computed","isSmallScreen","addBtnText","editMode","suggestedBtnText","hasSelectedSuggestions","totalPrice","onBeforeEnter","el","opacity","height","onEnter","done","gsap","delay","Number","dataset","index","onComplete","onLeave","addToOrder","toggleShowOrder","onCancel","items","length","toggleCancelModal","cancelOrder","value","clear","pay","shopId","watch","n","duration","onStart","isLargeScreen","showAddItemButton","currentPage","toFixed","OrderShopInfo","_TransitionGroup","tag","css","OrderItem","updating","round","ConfirmPopup","heading","okButton","cancelButton","show","onOnAnswer","ShopStore","languageNames","sv","fi","en","ru","no","languages","status","failed","loading","selectedLanguage","lang","abortController","AbortController","toggleLanguagePopup","showLangSelector","loadLanguages","async","axios","response","push","finally","onErrorCaptured","onBeforeMount","onBeforeUnmount","abort","orderStore","OrderStore","visible","count","setState","deep","ordersCount","paidOrders","order","deliveredOrders","couponStore","CouponStore","coupons","forEach","c","CouponState","document","documentElement","classList","contains","image","ref","loadImage","responseType","r","window","URL","createObjectURL","Blob","src","ref_key","alt","href","authStore","AuthStore","showProfileMenu","preventDefault","logout","isAuthenticated","user","lastName","MembershipCard","navigationStore","NavigationStore","shopStore","route","useRoute","showConfirmPopup","showConfirmGoHome","showCancelOrderPopup","shouldHandleClearOrder","link","meta","confirmCartReset","loginUri","encodeURIComponent","to","shouldHandleCancelOrder","currentOrderChanged","navigateHome","navigate","clearOrder","clearOrderAndGoHome","cancelAddToOrder","_createTextVNode","LanguageSelector","CouponsIcon","PaidOrderIcon","settings","enableCustomerLogin","ProfileMenu","hide","doNothing","setLang","changeculture","load","setAttribute","error","reject","_Teleport","LoaderComponent","errorMessageStore","ErrorMessageStore","close","innerHTML","updateApp","navigator","serviceWorker","getRegistrations","registrations","waiting","postMessage","location","reload","showOrder","showCart","includes","removeExpiredOrders","pullOrderStatus","IonApp","currentRoute","NavigationComponent","ErrorMessage","UpdateComponent","OrderComponent","LanguageSelectorPopup","IonRouterOutlet","version","home","header","subHeader","list","shopchanged","checkout","pickup","orderHeader","payment","confirmLeave","confirm","cancel","termsAndConditions","closeButton","suggestedArticles","selectedShop","extraInfo","search","label","placeholder","noMatch","shopSelector","singleShop","start","closed","paused","offline","openingHoursHeader","button","showMore","showMoreRestaurants","open","dineInPlace","takeAway","orderNotReady","change","noThanks","changeRestaurant","changeLanguage","yes","add","backToCategory","backToCategories","backToHome","backToArticle","backToShopPage","backToMenuRoot","back","receipt","favorite","choiceDone","notAvailable","favoriteHeader","total","subtotal","tax","articleChoiceLabel1","articleChoiceLabel2","articleChoiceLabel3","articleChoiceLabel4","articleChoiceLabel5","now","pageHeader","thankYouText","infoText","infoText2","emptyInfoText","selectedRestaurant","missing","pickUpLabel","statusLabel","numberLabel","note","deliverySpot","empty","calculatedprice","added","started","finnished","delivered","rollbacked","campaignLabel","loader","categories","favorites","orderHistory","calculatesDistances","checkoutSummary","closeButtonText","server","badRequest","unknown","InvalidToken","PasswordRequiresNonAlphanumeric","PasswordRequiresDigit","PasswordRequiresLower","PasswordRequiresUpper","PasswordTooShort","PasswordMismatch","DuplicateUserName","DuplicateEmail","deliverySpotRequired","aborted","notPaid","invalid","accesstokenMissing","IdentifierMissing","NotFound","merchantNotFound","orderNotFound","returnUrl","requestParametersMissing","orderFailed","captureFailed","createError","loadScriptError","privacyPolicy","amountPrefix","vat","net","orderNumber","paymentId","email","emailPlaceHolder","sendEmail","emailSent","emailFailed","deliveryDate","allergens","login","password","registerText","registerLink","forgotPassword","separatorText","googleSignIn","facebookSignIn","send","sent","newAccountText","resetPassword","confirmPassword","reset","campaign","bannerText","memberCard","register","success","loginLink","firstname","lastname","phone","acceptTerms","linkText","registerButton","passwordMismatch","confirmEmail","navBar","campaigns","descriptionAuthenticated","membersOnly","localOffer","offer","toArticle","expandButton","showMoreButton","profile","edit","submit","title","userInformation","changePassword","newPassword","confirmNewPassword","emailConfirmationSent","deleteAccount","userGreeting","offers","account","notFound","policy","popup","buttons","messages","getLocaleFromCookie","cookie","split","culture","cookieValue","decodeURIComponent","cultureValues","createI18n","fallbackLocale","undefined","legacy","ready","registered","registration","cached","updatefound","updated","body","alert","handler","onLine","setTimeout","origin","online","addEventListener","mitt","pinia","createPinia","global","mergeLocaleMessage","app","createApp","App","use","IonicVue","mount","errorHandler","instance","info","trackException","exception","from","trackPageView","waitForLoading","query","requiresAuth","redirectUri","fullPath","orderType","q","setOrderType","setNote","spotId","setDeliverySpot","parseInt","requiresShop","lastPage","currentPageFullPath","lastPageFullPath","classes","filter","startsWith","compareShop","disableCart","retry","onIonViewDidEnter","IonPage","IonContent","calculateDistance","lat1","lon1","lat2","lon2","unit","radlat1","PI","radlat2","theta","radtheta","dist","sin","cos","acos","formatDistance","distance","meters","for","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","emits","pageSize","shops","filterString","visibleShops","dayOfWeek","loadingText","cmp","a","b","filteredShops","contactInformation","address1","city","sort","isFavorite","slice","emptyList","fav","openingHours","today","openDate","DateTime","opens","closeDate","closes","toLocaleString","selectShop","target","className","indexOf","signal","headers","token","accessToken","calculateShopDistances","geolocation","permissions","shopDisabled","getCurrentPosition","pos","coords","latitude","longitude","date","Date","toLocaleDateString","weekday","_withDirectives","_vModelText","address2","zipCode","FavoriteButton","onSelectShop","set","setShop","redirectToArticle","orderTypes","getOrderType","onIonViewWillEnter","fullscreen","initiated","ShopSelector","routes","component","HomePage","redirect","Offline","skipIfLoggedIn","categoryName","createRouter","history","createWebHistory","defineStore","width","screenType","onResize","innerWidth","innerHeight","loadFromStorage","getProfile","JSON","stringify","save","interval","setInterval","clearInterval","profileResponse","localStorage","setItem","addFavoriteArticle","addFavoriteShop","removeFavoriteArticle","removeFavoriteShop","getOrderHistory","pageIndex","setProfile","externalLoginProviders","phoneNumberRequired","cartJson","getItem","setSettings","parse","shopName","ex","removeItem","y","get","autoSave","findIndex","splice","clearStore","convertToOrderRequest","customerCode","allItemChoices","prop","choices","levelChoices","level","articleCode","choiceCode","pickupTime","json","Coupon","oldCoupons","newCoupon","oldCoupon","usedDate","useCoupon","couponId","couponFromStore","expire","minus","minutes","toJSDate","MenuImpl","getChoiceLevelName","choiceLvl","choiceLevels","choiceLevel","useLocalStorage","details","expires","pullInterval","pullIntervalKey","userAgent","addPaymentID","paymentID","cancelPullOrderStatus","getOrderStatus","ordersToKeep","getTime","removedOrders","addToPaidOrders","setMinutes","getMinutes","removeOrderFromPending","onDone","onDelivered","constructor","this","getItemFromPathInternal","getItemFromPath","findArticleItemInMenu","found","created","validUntil","Unused","Expired","Active","getStateClass","getTimeLeftForCoupon","plus","diff","expose","fallbackImage","fallbackImageUrl","setLoading","setFallbackImg","querySelector","rectOrder","getBoundingClientRect","rectImage","img","Image","sizeRatio","removeProperty","styleStart","top","left","styleEnd","transform","onerror","Object","assign","appendChild","onLoad","onErrorOnce","String","answer","toggle","IonSpinner","dropdownMenu","toggleVisibility","onSelect","autoClose","event","removeEventListener","$props","spots","selectedSpot","allowEmpty","shouldStartExpanded","p","expanded","newVal","selectedRef","arr","span","scrollIntoView","behavior","block","inline","onSpotSelected","spot","s","sortedSpots","aName","bName","localeCompare","ref_for","onOrderTypeChanged","Function","onDeliverySpotChanged","deliverySpots","allowEmptyDeliverySpot","editableNote","spotsForOrderType","diningTypes","charAt","updateNote","updateDiningType","diningType","clearNote","getDeliverySpots","DropdownComponent","onOnChanged","DeliverySpotSelector","maxlength","onBlur","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","getter","__esModule","d","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","prototype","hasOwnProperty","call","inProgress","dataWebpackPrefix","l","script","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","timeout","nc","onScriptComplete","prev","onload","clearTimeout","doneFns","parentNode","removeChild","bind","head","Symbol","toStringTag","createStylesheet","fullhref","oldTag","linkTag","rel","onLinkComplete","errorType","realHref","request","insertBefore","nextSibling","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","promise","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}