{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/Home.vue?ad59","webpack:///./src/components/RecipeList.vue?14fd","webpack:///./src/views/admin/Messages.vue?e419","webpack:///./src/components/PhotoList.vue?51f9","webpack:///./src/views/recipes/ShowRecipe.vue?0f76","webpack:///./src/App.vue?e52c","webpack:///./src/components/PhotoGallery.vue?b209","webpack:///./src/components/RecipeFormatter.vue?e782","webpack:///./src/views/admin/categories/Categories.vue?239c","webpack:///./src/class-component-hooks.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/registerServiceWorker.ts","webpack:///./src/views/Home.vue?7ceb","webpack:///./src/components/RecipeList.vue?7d10","webpack:///./src/components/RecipeFavoriteToggle.vue?f3bb","webpack:///./src/store/index.ts","webpack:///./src/store/modules/notifications.store.ts","webpack:///./src/app.config.ts","webpack:///./src/services/AuthService.ts","webpack:///./src/store/modules/messages.store.ts","webpack:///./src/store/modules/authentication.store.ts","webpack:///./src/store/modules/app.store.ts","webpack:///./src/components/RecipeFavoriteToggle.vue","webpack:///./src/components/RecipeFavoriteToggle.vue?5754","webpack:///./src/components/RecipeFavoriteToggle.vue?326a","webpack:///./src/components/PhotoList.vue?d50f","webpack:///./src/components/PhotoList.vue","webpack:///./src/components/PhotoList.vue?2b53","webpack:///./src/components/PhotoList.vue?91ff","webpack:///./src/components/RecipeList.vue","webpack:///./src/components/RecipeList.vue?fae3","webpack:///./src/components/RecipeList.vue?d7a5","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?2352","webpack:///./src/views/Home.vue?b4c0","webpack:///./src/views/recipes/ListRecipes.vue?5e66","webpack:///./src/views/recipes/ListRecipes.vue","webpack:///./src/views/recipes/ListRecipes.vue?3003","webpack:///./src/views/recipes/ListRecipes.vue?3e2f","webpack:///./src/views/recipes/LatestRecipes.vue?16ad","webpack:///./src/views/recipes/LatestRecipes.vue","webpack:///./src/views/recipes/LatestRecipes.vue?af83","webpack:///./src/views/recipes/LatestRecipes.vue?0fb1","webpack:///./src/views/recipes/FavoriteRecipes.vue?5942","webpack:///./src/views/recipes/FavoriteRecipes.vue","webpack:///./src/views/recipes/FavoriteRecipes.vue?6679","webpack:///./src/views/recipes/FavoriteRecipes.vue?2246","webpack:///./src/views/recipes/ShowRecipe.vue?b07d","webpack:///./src/components/RecipeFormatter.vue?8d12","webpack:///./src/components/RecipeFormatter.vue","webpack:///./src/components/RecipeFormatter.vue?1a53","webpack:///./src/components/RecipeFormatter.vue?53cb","webpack:///./src/components/PhotoGallery.vue?e5e8","webpack:///./src/components/PhotoGallery.vue","webpack:///./src/components/PhotoGallery.vue?232d","webpack:///./src/components/PhotoGallery.vue?eb42","webpack:///./src/views/recipes/ShowRecipe.vue","webpack:///./src/views/recipes/ShowRecipe.vue?ec21","webpack:///./src/views/recipes/ShowRecipe.vue?ba79","webpack:///./src/views/recipes/Photos.vue?2111","webpack:///./src/components/ConfirmDialog.vue?7d3b","webpack:///./src/components/ConfirmDialog.vue","webpack:///./src/components/ConfirmDialog.vue?eea3","webpack:///./src/components/ConfirmDialog.vue?8458","webpack:///./src/views/recipes/Photos.vue","webpack:///./src/views/recipes/Photos.vue?1e7c","webpack:///./src/views/recipes/Photos.vue?ea3c","webpack:///./src/views/recipes/EditRecipe.vue?5c4f","webpack:///./src/views/recipes/EditRecipe.vue","webpack:///./src/views/recipes/EditRecipe.vue?9598","webpack:///./src/views/recipes/EditRecipe.vue?a49b","webpack:///./src/views/recipes/CreateRecipe.vue?c613","webpack:///./src/views/recipes/CreateRecipe.vue","webpack:///./src/views/recipes/CreateRecipe.vue?a0b7","webpack:///./src/views/recipes/CreateRecipe.vue?8520","webpack:///./src/views/categories/ShowCategory.vue?9002","webpack:///./src/views/categories/ShowCategory.vue","webpack:///./src/views/categories/ShowCategory.vue?d925","webpack:///./src/views/categories/ShowCategory.vue?9f2d","webpack:///./src/views/admin/Messages.vue?905d","webpack:///./src/views/admin/Messages.vue","webpack:///./src/views/admin/Messages.vue?ca29","webpack:///./src/views/admin/Messages.vue?1297","webpack:///./src/views/admin/Dashboard.vue?770b","webpack:///./src/app.version.ts","webpack:///./src/views/admin/Dashboard.vue","webpack:///./src/views/admin/Dashboard.vue?4922","webpack:///./src/views/admin/Dashboard.vue?747e","webpack:///./src/views/admin/categories/Categories.vue?d0ab","webpack:///./src/views/admin/categories/Categories.vue","webpack:///./src/views/admin/categories/Categories.vue?d6ef","webpack:///./src/views/admin/categories/Categories.vue?5b64","webpack:///./src/views/admin/users/Index.vue?797d","webpack:///./src/views/admin/users/Index.vue","webpack:///./src/views/admin/users/Index.vue?49ba","webpack:///./src/views/admin/users/Index.vue?0a3c","webpack:///./src/views/Oidc/SigninCallback.vue?c266","webpack:///./src/views/Oidc/SigninCallback.vue","webpack:///./src/views/Oidc/SigninCallback.vue?2422","webpack:///./src/views/Oidc/SigninCallback.vue?da0e","webpack:///./src/store/modules/loader.store.ts","webpack:///./src/router/index.ts","webpack:///./src/App.vue?ec59","webpack:///./src/components/TopToolbar.vue?eb15","webpack:///./src/components/stayawake.ts","webpack:///./src/components/TopToolbar.vue","webpack:///./src/components/TopToolbar.vue?1627","webpack:///./src/components/TopToolbar.vue?ca1f","webpack:///./src/services/Loader.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?31c5","webpack:///./src/App.vue?68bd","webpack:///./src/main.ts","webpack:///./src/views/recipes/LatestRecipes.vue?6107","webpack:///./src/components/TopToolbar.vue?c267"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","registerHooks","use","icons","iconfont","theme","dark","themes","light","primary","colors","green","base","accent","darken2","secondary","grey","anchor","darken4","options","customProperties","log","dispatchEvent","CustomEvent","detail","ready","registered","registration","setInterval","update","cached","updatefound","updated","offline","_vm","this","_h","$createElement","_c","_self","staticClass","_v","attrs","latestRecipes","_l","category","id","params","_s","getCategoryRecipes","recipe","recipes","_e","staticRenderFns","scopedSlots","_u","fn","categoryId","createdBy","firstName","createdAt","proxy","on","toggleFavorite","isFavorite","iconFull","iconOutline","NotificationType","rootStore","Store","isProduction","STS_DOMAIN","API_DOMAIN","CLIENT_ID","OWN_DOMAIN","location","origin","IdentityServerUrl","ApiUrl","ClientId","RedirectUri","automaticSilentRenew","accessTokenExpiringNotificationTime","SilentRedirectUri","PostLogoutRedirectUri","nextId","notifications","map","notification","time","Date","now","filter","context","commit","ADD","Success","Warning","dynamic","namespaced","store","NotificationsStoreModule","level","INFO","settings","userStore","localStorage","authority","client_id","redirect_uri","silentRequestTimeout","silent_redirect_uri","response_type","scope","post_logout_redirect_uri","filterProtocolClaims","userManager","addEvents","events","getUser","signinRedirect","signoutRedirect","removeUser","clearStaleState","add","then","access_token","url","signinRedirectCallback","authService","messages","CLEAR","instance","addEventListener","evt","MessagesStoreModule","user","info","profile","SET_USER","AppStoreModule","hasAuthenticatedData","loadInitialState","expired","isLoggedIn","email","AuthenticationStoreModule","createPhoto","photoId","reference","contentType","updatedTag","recipeId","ingredients","procedure","source","isPrivate","createdByUserId","modifiedAt","photos","photoData","recipesAlphabetical","a","b","recipesChronological","createCategory","createFavorite","favoriteAt","createRecent","recentAt","createUser","userId","lastName","isAdministrator","hasLogin","categories","users","favorites","recents","payload","f","response","SET_USER_ID","SET_RECIPES","SET_CATEGORIES","SET_USERS","authors","SET_FAVORITES","favoriteRecipes","SET_RECENTS","recentRecipes","post","addedRecipe","ADD_RECIPE","put","updatedRecipe","UPDATE_RECIPE","formData","FormData","files","file","append","delete","photo","REMOVE_RECIPE","RecipeId","FavoriteAt","find","u","findIndex","sort","recipesWithAll","rc","removeFavorite","addFavorite","mdi","required","components","component","VIcon","recipeName","_","flat","default","RecipeFavoriteToggle","PhotoList","VSimpleTable","count","reverse","categoriesWithRecipes","RecipeList","VCard","VCardText","VCardTitle","VCol","VRow","recent","$event","clearList","clearRecentRecipes","VBtn","directives","rawName","domProps","staticStyle","iconEdit","iconPhotos","line","index","amount","product","recipeLines","lines","split","trim","headerMatch","match","subheaderMatch","italicsMatch","ingredientMatch","photoIndex","items","thumb","CoolLightBox","parseInt","$route","recipeVisited","to","from","next","RecipeFormatter","PhotoGallery","removePhoto","iconTrash","ref","iconCamera","model","callback","$$v","expression","uploadFiles","style","zIndex","width","indexOf","_k","keyCode","cancel","show","color","title","nativeOn","agree","dialog","assign","VCardActions","VDialog","VSpacer","VToolbar","VToolbarTitle","uploadPhotos","addWarning","confirmDialog","$refs","confirm","open","ConfirmDialog","VFileInput","preventDefault","valid","save","loadData","removeRecipe","updateRecipe","$router","addSuccess","addError","VForm","VSelect","VTextField","VTextarea","authorId","reset","createRecipe","form","clear","versionInformation","VERSION","recipeCount","returnToUrl","state","path","loading","START_LOADING","FINISH_LOADING","LoaderStoreModule","routes","meta","requiresAuth","Messages","children","router","scrollBehavior","savedPosition","x","y","isAuthenticated","beforeEach","matched","some","route","login","beforeResolve","start","afterEach","finish","colorFromNotificationType","removeNotification","showMenu","logout","username","clearData","reload","_f","buildDate","applicationVersion","raw","refreshApp","class","toggleStayAwake","stayAwakeEnabled","_g","stopPropagation","toggleMenu","webm","mp4","isPlaying","stayAwakeVideo","element","dataURI","eventName","args","JSON","stringify","v","dump","addSourceToVideo","change","hidden","pause","load","play","duration","localVideo","currentTime","Math","random","stayAwake","updateExists","refreshing","init","showRefreshUI","once","navigator","serviceWorker","customEvent","waiting","postMessage","enable","disable","getRegistrations","registrations","VAppBar","VAppBarNavIcon","VDivider","VList","VListItem","VListItemContent","VListItemSubtitle","VListItemTitle","VMenu","VNavigationDrawer","VToolbarItems","configure","easing","speed","showSpinner","template","watch","loader","newVal","oldVal","done","set","max","notificationType","remove","TopToolbar","VApp","VContainer","VContent","VSnackbar","dsn","integrations","Vue","attachProps","logErrors","locale","locales","da","directive","interceptors","config","accessToken","getters","headers","Authorization","productionTip","vuetify","created","addUserLoaded","setUser","addUserUnloaded","clearUser","addSilentRenewError","addUserSignedOut","addUserSessionChanged","addAccessTokenExpiring","signinSilent","addAccessTokenExpired","updateSessionStatus","render","h","$mount"],"mappings":"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","file":"js/app.4c5ed8c3.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"534b8b14\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\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\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=0bd7f699&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=0bd7f699&lang=scss&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeList.vue?vue&type=style&index=0&id=13111e01&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeList.vue?vue&type=style&index=0&id=13111e01&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Messages.vue?vue&type=style&index=0&id=77ac4ca6&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Messages.vue?vue&type=style&index=0&id=77ac4ca6&lang=scss&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoList.vue?vue&type=style&index=0&id=8712b3d2&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoList.vue?vue&type=style&index=0&id=8712b3d2&lang=scss&scoped=true&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowRecipe.vue?vue&type=style&index=0&id=39c9214f&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowRecipe.vue?vue&type=style&index=0&id=39c9214f&lang=scss&scoped=true&\"","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoGallery.vue?vue&type=style&index=0&id=f2a79e86&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoGallery.vue?vue&type=style&index=0&id=f2a79e86&lang=scss&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeFormatter.vue?vue&type=style&index=0&id=31574c06&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeFormatter.vue?vue&type=style&index=0&id=31574c06&lang=scss&scoped=true&\"","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=style&index=0&id=2011f6b6&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=style&index=0&id=2011f6b6&lang=scss&scoped=true&\"","import Component from 'vue-class-component';\n\n// Register the router hooks with their names\nComponent.registerHooks(['beforeRouteEnter', 'beforeRouteLeave', 'beforeRouteUpdate']);\n","import Vue from 'vue';\nimport Vuetify, { colors } from 'vuetify/lib';\n\nimport 'roboto-fontface/css/roboto/roboto-fontface.css';\n// import '@mdi/font/css/materialdesignicons.css';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n icons: {\n iconfont: 'mdiSvg',\n },\n theme: {\n dark: false,\n themes: {\n light: {\n primary: colors.green.base,\n accent: colors.green.darken2,\n secondary: colors.grey.base,\n anchor: colors.green.darken4,\n },\n },\n options: {\n customProperties: true,\n },\n },\n});\n","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker';\n\nfunction log(message: string) {\n console.log(message);\n document.dispatchEvent(new CustomEvent('messageAdd', { detail: message }));\n}\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n log('App is being served from cache by a service worker.\\nFor more details, visit https://goo.gl/AFskqB');\n },\n registered(registration) {\n log('Service worker has been registered.');\n setInterval(() => {\n registration.update();\n }, 20 * 60 * 1000); //-- Time between checks in milliseconds\n },\n cached() {\n log('Content has been cached for offline use.');\n },\n updatefound() {\n log('New content is downloading.');\n },\n updated(registration) {\n log('New content is available; please refresh.');\n document.dispatchEvent(new CustomEvent('swUpdated', { detail: registration }));\n },\n offline() {\n log('No internet connection found. App is running in offline mode.');\n },\n error(error) {\n log(`Error during service worker registration: ${error}`);\n console.error('Error during service worker registration:', error);\n },\n });\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"home\"},[_c('h2',[_vm._v(\"Senest tilføjede opskrifter\")]),_c('RecipeList',{attrs:{\"recipes\":_vm.latestRecipes,\"showHeader\":false,\"showCreated\":true,\"showPhotos\":false}}),_c('v-row',{staticClass:\"mt-6\"},_vm._l((_vm.categories),function(category){return _c('v-col',{key:category.id,attrs:{\"cols\":\"6\",\"sm\":\"4\",\"md\":\"3\",\"lg\":\"3\",\"xl\":\"2\"}},[_c('v-card',[_c('v-card-title',[_c('router-link',{attrs:{\"to\":{ name: 'category', params: { id: category.id } }}},[_vm._v(_vm._s(category.name))])],1),_c('v-card-text',{staticClass:\"hidden-xs-only\"},[_c('ul',_vm._l((_vm.getCategoryRecipes(category, 4)),function(recipe){return _c('li',{key:recipe.id},[_c('router-link',{attrs:{\"to\":{ name: 'recipe', params: { id: recipe.id } }}},[_vm._v(_vm._s(recipe.name))])],1)}),0)]),(category.recipes.length > 3)?_c('v-card-text',{staticClass:\"hidden-xs-only\"},[_vm._v(\"og \"+_vm._s(category.recipes.length - 3)+\" mere\")]):_vm._e()],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.showPhotos)?_c('photo-list',{staticClass:\"hidden-sm-and-down\",attrs:{\"recipes\":_vm.recipes}}):_vm._e(),_c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [(_vm.showHeader)?_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Navn\")]),(_vm.showCategory)?_c('th',{staticClass:\"text-left hidden-xs-only\"},[_vm._v(\"Kategori\")]):_vm._e(),(_vm.showAuthor)?_c('th',{staticClass:\"text-left hidden-sm-and-down\"},[_vm._v(\"Tilføjet af\")]):_vm._e(),(_vm.showCreated)?_c('th',{staticClass:\"text-left hidden-sm-and-down\"},[_vm._v(\"Oprettet\")]):_vm._e(),(_vm.isLoggedIn)?_c('th',{staticClass:\"hidden-xs-and-down\"}):_vm._e()])]):_vm._e(),_c('tbody',_vm._l((_vm.recipes),function(recipe){return _c('tr',{key:recipe.id},[_c('td',[_c('router-link',{attrs:{\"to\":{ name: 'recipe', params: { id: recipe.id } }}},[_vm._v(_vm._s(recipe.name))])],1),(_vm.showCategory)?_c('td',{staticClass:\"hidden-xs-only\"},[_c('router-link',{attrs:{\"to\":{ name: 'category', params: { id: recipe.categoryId } }}},[_vm._v(_vm._s(recipe.category.name))])],1):_vm._e(),(_vm.showAuthor)?_c('td',{staticClass:\"hidden-sm-and-down\"},[_vm._v(\" \"+_vm._s(recipe.createdBy ? recipe.createdBy.firstName : null)+\" \")]):_vm._e(),(_vm.showCreated)?_c('td',{staticClass:\"hidden-sm-and-down\"},[_c('timeago',{attrs:{\"datetime\":recipe.createdAt}})],1):_vm._e(),(_vm.isLoggedIn)?_c('td',{staticClass:\"text-right hidden-xs-and-down\"},[_c('recipe-favorite-toggle',{attrs:{\"recipe\":recipe}})],1):_vm._e()])}),0)]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{on:{\"click\":_vm.toggleFavorite}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.recipe.isFavorite ? _vm.iconFull : _vm.iconOutline))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport Vuex from 'vuex';\n\nimport { IAuthenticationState } from './modules/authentication.store';\nimport { IAppState } from './modules/app.store';\nimport { IMessagesState } from './modules/messages.store';\nimport { INotificationsState } from './modules/notifications.store';\nimport { ILoaderState } from './modules/loader.store';\n\nVue.use(Vuex);\n\nexport interface IRootState {\n app: IAppState;\n notifications: INotificationsState;\n authentication: IAuthenticationState;\n messages: IMessagesState;\n loader: ILoaderState;\n\n apiUrl: string;\n}\n\nconst rootStore = new Vuex.Store({});\n\nexport default rootStore;\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators';\nimport rootStore from '@/store';\n\nexport enum NotificationType {\n Success,\n Warning,\n Error,\n}\n\nexport interface INotification {\n id: number | null;\n time: number;\n type: NotificationType;\n message: string;\n}\n\nexport interface INotificationsState {\n notifications: INotification[];\n}\n\nlet nextId = 1;\n\n@Module({ dynamic: true, namespaced: true, store: rootStore, name: 'notifications' })\nclass NotificationsStore extends VuexModule implements INotificationsState {\n notifications = [] as INotification[];\n\n @Mutation\n public SET(notifications: INotification[]) {\n this.notifications = notifications.map(n => ({\n ...n,\n id: n.id || nextId++,\n }));\n }\n\n @Mutation\n public ADD(notification: { type: NotificationType; message: string }): void {\n this.notifications.push({\n ...notification,\n id: nextId++,\n time: Date.now(),\n });\n }\n\n @Mutation\n public REMOVE(notification: INotification): void {\n this.notifications = this.notifications.filter(n => n.id != notification.id);\n }\n\n @Action\n public set(notifications: INotification[]): void {\n this.context.commit('SET', notifications);\n }\n\n @Action\n public add(notification: { type: NotificationType; message: string }) {\n this.ADD(notification);\n }\n\n @Action\n public addSuccess(message: string) {\n this.ADD({\n type: NotificationType.Success,\n message,\n });\n }\n\n @Action\n public addWarning(message: string) {\n this.ADD({\n type: NotificationType.Warning,\n message,\n });\n }\n\n @Action\n public addError(message: string) {\n this.ADD({\n type: NotificationType.Error,\n message,\n });\n }\n\n @Action\n public remove(notification: INotification) {\n this.context.commit('REMOVE', notification);\n }\n}\n\nexport const NotificationsStoreModule = getModule(NotificationsStore);\n","const isProduction = process.env.NODE_ENV === 'production';\n\nconst STS_DOMAIN = isProduction ? 'https://identity.computo.dk' : 'https://localhost:15001';\nconst API_DOMAIN = '';\n\nconst CLIENT_ID = 'hacobo.vue.1';\nconst OWN_DOMAIN = window.location.origin;\n\nconst config = {\n IdentityServerUrl: `${STS_DOMAIN}`,\n ApiUrl: `${API_DOMAIN}/api/`,\n ClientId: CLIENT_ID,\n RedirectUri: `${OWN_DOMAIN}/oidc-callback`,\n // RedirectUri: `${OWN_DOMAIN}/callback.html`,\n automaticSilentRenew: true,\n accessTokenExpiringNotificationTime: 10,\n SilentRedirectUri: `${OWN_DOMAIN}/silent-renew.html`,\n PostLogoutRedirectUri: `${OWN_DOMAIN}/`,\n};\n\nexport default config;\n","import { UserManager, WebStorageStateStore, User, Log, UserManagerEvents } from 'oidc-client';\nimport Config from '@/app.config';\nimport { NotificationsStoreModule, NotificationType } from '@/store/modules/notifications.store';\n\nclass AuthService {\n private userManager: UserManager;\n\n constructor() {\n Log.level = Log.INFO;\n // Log.logger = console;\n\n /* eslint-disable @typescript-eslint/camelcase */\n const settings = {\n userStore: new WebStorageStateStore({ store: window.localStorage }),\n authority: Config.IdentityServerUrl,\n client_id: Config.ClientId,\n redirect_uri: Config.RedirectUri,\n automaticSilentRenew: true,\n silentRequestTimeout: 30000, // in milliseconds\n silent_redirect_uri: Config.SilentRedirectUri,\n response_type: 'code',\n scope: 'openid profile email hacobo.api.1',\n post_logout_redirect_uri: Config.PostLogoutRedirectUri,\n filterProtocolClaims: true,\n };\n /* eslint-enable @typescript-eslint/camelcase */\n\n this.userManager = new UserManager(settings);\n }\n\n public init(addEvents: (events: UserManagerEvents, userManager: UserManager) => void) {\n addEvents(this.userManager.events, this.userManager);\n }\n\n public getUser(): Promise {\n if (this.userManager == null) {\n throw 'AuthService not initialized [1]';\n }\n return this.userManager.getUser();\n }\n\n public login(): Promise {\n if (this.userManager == null) {\n throw 'AuthService not initialized [2]';\n }\n return this.userManager.signinRedirect();\n }\n\n public logout(): Promise {\n if (this.userManager == null) {\n throw 'AuthService not initialized [3]';\n }\n return this.userManager.signoutRedirect();\n }\n\n public async clearData() {\n await this.userManager.removeUser();\n await this.userManager.clearStaleState();\n }\n\n public getAccessToken(): Promise {\n if (this.userManager == null) {\n NotificationsStoreModule.add({\n type: NotificationType.Error,\n message: 'AuthService not initialized',\n });\n throw 'AuthService not initialized [4]';\n }\n return this.userManager.getUser().then((data: { access_token: string } | null) => {\n if (data === null) {\n return null;\n }\n return data.access_token;\n });\n }\n\n public signinRedirectCallback(url?: string | undefined): Promise {\n if (this.userManager == null) {\n NotificationsStoreModule.add({\n type: NotificationType.Error,\n message: 'AuthService not initialized',\n });\n throw 'AuthService not initialized [5]';\n }\n return this.userManager.signinRedirectCallback(url);\n }\n}\n\nexport const authService = new AuthService();\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators';\nimport rootStore from '@/store';\n\ninterface IMessage {\n time: number;\n message: string;\n}\n\nexport interface IMessagesState {\n messages: IMessage[];\n}\n\n@Module({ dynamic: true, namespaced: true, store: rootStore, name: 'messages' })\nclass MessagesStore extends VuexModule implements IMessagesState {\n public messages: IMessage[] = [];\n\n @Mutation\n private ADD(message: IMessage) {\n this.messages = [message, ...this.messages];\n }\n\n @Mutation\n private CLEAR() {\n this.messages.splice(0);\n }\n\n @Action\n public add(message: string) {\n this.ADD({\n time: Date.now(),\n message: message,\n });\n }\n\n @Action\n public clear() {\n this.CLEAR();\n }\n}\n\nconst instance = getModule(MessagesStore);\n\ndocument.addEventListener('messageAdd', (evt: Event) => {\n instance.add((evt as CustomEvent).detail);\n});\n\nexport const MessagesStoreModule = instance;\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators';\nimport { User } from 'oidc-client';\nimport { authService } from '@/services/AuthService';\nimport rootStore from '@/store';\nimport { NotificationsStoreModule, NotificationType } from './notifications.store';\nimport { AppStoreModule } from './app.store';\nimport { MessagesStoreModule } from './messages.store';\n\nexport interface IAuthenticationState {\n user: User | null;\n}\n\n@Module({ dynamic: true, namespaced: true, store: rootStore, name: 'authentication' })\nclass AuthenticationStore extends VuexModule implements IAuthenticationState {\n public user: User | null = null;\n\n @Mutation\n private SET_USER(user: User | null) {\n console.info('store>> setting user', user?.profile?.name);\n this.user = user;\n }\n\n @Action\n public async setUser(user: User) {\n this.SET_USER(user);\n if (!AppStoreModule.hasAuthenticatedData) {\n MessagesStoreModule.add('Trigger reload since we do have an user');\n await AppStoreModule.loadInitialState();\n }\n }\n\n @Action\n public async clearUser() {\n this.SET_USER(null);\n }\n\n @Action\n public async updateSessionStatus() {\n try {\n const user = await authService.getUser();\n this.SET_USER(user);\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n get isLoggedIn() {\n return this.user !== null && !this.user.expired;\n }\n\n get isAdministrator() {\n return this.isLoggedIn && this.user?.profile.email == 'hakonb@gmail.com';\n }\n\n get accessToken() {\n return this.user?.access_token;\n }\n\n get authenticatedUser() {\n return this.user;\n }\n}\n\nexport const AuthenticationStoreModule = getModule(AuthenticationStore);\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators';\nimport axios from 'axios';\nimport rootStore from '@/store';\n\nimport appConfig from '@/app.config';\nimport { NotificationsStoreModule, NotificationType } from './notifications.store';\nimport { AuthenticationStoreModule } from './authentication.store';\n\nexport interface IRecipe {\n id: number;\n\n name: string;\n ingredients: string;\n procedure: string;\n source: string;\n createdAt: Date;\n createdByUserId: number;\n modifiedAt: Date;\n categoryId: number;\n isPrivate: boolean;\n\n photos?: IPhoto[];\n\n createdBy: IUser;\n category?: ICategory;\n\n isFavorite: boolean;\n}\n\n// eslint-disable-next-line\nfunction createPhoto(data: any) {\n return {\n id: data.photoId,\n reference: data.reference,\n contentType: data.contentType,\n updatedTag: data.updatedTag,\n } as IPhoto;\n}\n\n// eslint-disable-next-line\nfunction createRecipe(data: any) {\n return {\n id: data.recipeId,\n name: data.name,\n ingredients: data.ingredients,\n procedure: data.procedure,\n source: data.source,\n categoryId: data.categoryId,\n isPrivate: data.isPrivate,\n createdAt: data.createdAt,\n createdByUserId: data.createdByUserId,\n modifiedAt: data.modifiedAt,\n photos: data.photos ? data.photos.map((photoData: any) => createPhoto(photoData)) : [],\n } as IRecipe;\n}\n\nexport function recipesAlphabetical(a: IRecipe, b: IRecipe) {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n}\n\nexport function recipesChronological(a: IRecipe, b: IRecipe) {\n if (a.createdAt < b.createdAt) {\n return -1;\n }\n if (a.createdAt > b.createdAt) {\n return 1;\n }\n return 0;\n}\n\nexport interface ICategory {\n id: number;\n name: string;\n recipes?: IRecipe[];\n}\n\n// eslint-disable-next-line\nfunction createCategory(c: any) {\n return {\n id: c.categoryId,\n name: c.name,\n } as ICategory;\n}\n\nexport interface IFavorite {\n id: number; // RecipeId\n time: Date;\n}\n\n// eslint-disable-next-line\nfunction createFavorite(data: any) {\n return {\n id: data.recipeId,\n time: data.favoriteAt,\n } as IFavorite;\n}\n\nexport interface IRecent {\n id: number; // RecipeId\n time: number;\n\n recipe?: IRecipe;\n}\n\n// eslint-disable-next-line\nfunction createRecent(data: any) {\n return {\n id: data.recipeId,\n time: data.recentAt,\n } as IRecent;\n}\n\nexport interface IPhoto {\n id: number;\n reference: string;\n contentType?: string;\n updatedTag: number;\n}\n\nexport interface IUser {\n id: number;\n email: string;\n hasLogin: boolean;\n firstName: string;\n lastName: string;\n isAdministrator: boolean;\n favorites: IFavorite[];\n recents: IRecent[];\n favoriteRecipes: IRecipe[];\n}\n\n// eslint-disable-next-line\nfunction createUser(data: any) {\n return {\n id: data.userId,\n email: data.email,\n firstName: data.firstName,\n lastName: data.lastName,\n isAdministrator: data.isAdministrator,\n hasLogin: data.hasLogin,\n } as IUser;\n}\n\nexport interface IAppState {\n userId: number | null;\n recipes: IRecipe[];\n categories: ICategory[];\n users: IUser[];\n favorites: IFavorite[];\n recents: IRecent[];\n}\n\n@Module({ dynamic: true, namespaced: true, store: rootStore, name: 'app' })\nclass AppStore extends VuexModule implements IAppState {\n public userId: number | null = null;\n public recipes: IRecipe[] = [];\n public categories: ICategory[] = [];\n public users: IUser[] = [];\n public favorites: IFavorite[] = [];\n public recents: IRecent[] = [];\n\n @Mutation\n private SET_USER_ID(userId: string | null) {\n if (userId != null) {\n this.userId = +userId;\n } else {\n this.userId = null;\n }\n }\n\n @Mutation\n private SET_RECIPES(recipes: IRecipe[]) {\n this.recipes = recipes;\n }\n\n @Mutation\n private ADD_RECIPE(recipe: IRecipe) {\n this.recipes.push(recipe);\n }\n\n @Mutation\n private UPDATE_RECIPE(recipe: IRecipe) {\n this.recipes = [...this.recipes.filter(r => r.id !== recipe.id), recipe];\n }\n\n @Mutation\n private REMOVE_RECIPE(recipeId: number) {\n this.recipes = [...this.recipes.filter(r => r.id !== recipeId)];\n }\n\n @Mutation\n private SET_CATEGORIES(categories: ICategory[]) {\n this.categories = categories;\n }\n\n @Mutation\n private SET_USERS(users: IUser[]) {\n this.users = users;\n }\n\n @Mutation\n private SET_FAVORITES(favorites: IFavorite[]) {\n this.favorites = favorites;\n }\n\n @Mutation\n private SET_RECENTS(recents: IRecent[]) {\n this.recents = recents;\n }\n\n @Mutation\n private RECIPE_VISITED(recipeId: number) {\n this.recents = [\n {\n id: recipeId,\n time: Date.now(),\n },\n ...(this.recents || []).filter(r => r.id != recipeId),\n ];\n }\n\n @Mutation\n private ADD_FAVORITE(payload: { recipeId: number; favoriteAt: Date }) {\n this.favorites = [\n ...this.favorites.filter(f => f.id !== payload.recipeId),\n {\n id: payload.recipeId,\n time: payload.favoriteAt,\n } as IFavorite,\n ];\n }\n\n @Mutation\n private REMOVE_FAVORITE(recipeId: number) {\n this.favorites = [...this.favorites.filter(f => f.id !== recipeId)];\n }\n\n @Action\n async loadInitialState() {\n try {\n const response = await axios.get(`${appConfig.ApiUrl}startup`);\n this.SET_USER_ID(response.data.userId);\n this.SET_RECIPES(response.data.recipes.map((o: any) => createRecipe(o)));\n this.SET_CATEGORIES(response.data.categories.map((o: any) => createCategory(o)));\n this.SET_USERS(response.data.authors.map((o: any) => createUser(o)));\n this.SET_FAVORITES(response.data.favoriteRecipes.map((o: any) => createFavorite(o)));\n this.SET_RECENTS(response.data.recentRecipes.map((o: any) => createRecent(o)));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n this.SET_RECIPES([]);\n this.SET_CATEGORIES([]);\n this.SET_USERS([]);\n this.SET_FAVORITES([]);\n this.SET_RECENTS([]);\n }\n }\n\n @Action\n async createRecipe(payload: any): Promise {\n try {\n const response = await axios.post(`${appConfig.ApiUrl}recipes`, payload);\n\n const addedRecipe = createRecipe(response.data);\n\n this.ADD_RECIPE(addedRecipe);\n\n return addedRecipe;\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n return null;\n }\n\n @Action\n async updateRecipe(payload: any): Promise {\n try {\n const response = await axios.put(`${appConfig.ApiUrl}recipes/${payload.recipeId}`, payload);\n\n const updatedRecipe = createRecipe(response.data);\n\n this.UPDATE_RECIPE(updatedRecipe);\n\n return updatedRecipe;\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n return null;\n }\n\n @Action\n async uploadPhotos(payload: { recipeId: number; files: File[] }) {\n try {\n const formData = new FormData();\n for (const file of payload.files) {\n formData.append('files', file, file.name);\n }\n\n const response = await axios.post(\n `${appConfig.ApiUrl}recipes/${payload.recipeId}/photos`,\n formData,\n );\n\n this.UPDATE_RECIPE(createRecipe(response.data));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async removePhoto(payload: { recipeId: number; photo: IPhoto }) {\n try {\n const response = await axios.delete(\n `${appConfig.ApiUrl}recipes/${payload.recipeId}/photos/${payload.photo.id}`,\n );\n this.UPDATE_RECIPE(createRecipe(response.data));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async removeRecipe(recipeId: number) {\n try {\n const response = axios.delete(`${appConfig.ApiUrl}recipes/${recipeId}`);\n\n this.REMOVE_RECIPE(recipeId);\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async recipeVisited(recipeId: number) {\n if (!AuthenticationStoreModule.isLoggedIn) {\n return;\n }\n try {\n const response = await axios.post(`${appConfig.ApiUrl}user/recents`, {\n recipeId: recipeId,\n });\n\n this.SET_RECENTS(response.data.map((r: any) => createRecent(r)));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async clearRecentRecipes() {\n try {\n const response = await axios.delete(`${appConfig.ApiUrl}user/recents`);\n\n this.SET_RECENTS(response.data.map((r: any) => createRecent(r)));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async addFavorite(recipeId: number) {\n try {\n const data = {\n RecipeId: recipeId,\n FavoriteAt: new Date(),\n };\n const response = await axios.post(`${appConfig.ApiUrl}user/favorites`, data);\n\n this.SET_FAVORITES(response.data.map((r: any) => createFavorite(r)));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async removeFavorite(recipeId: number) {\n try {\n const response = await axios.delete(`${appConfig.ApiUrl}user/favorites/${recipeId}`);\n\n this.SET_FAVORITES(response.data.map((r: any) => createFavorite(r)));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n @Action\n async removeUser(user: IUser) {\n try {\n const response = await axios.delete(`${appConfig.ApiUrl}users/${user.id}`);\n\n this.SET_USERS(response.data.map((r: any) => createUser(r)));\n } catch (err) {\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n }\n }\n\n get hasAuthenticatedData() {\n return this.userId != null;\n }\n\n get recipesWithAll() {\n return this.recipes\n .map(\n r =>\n ({\n ...r,\n category: this.categories.find(c => c.id === r.categoryId),\n createdBy: this.users.find(u => u.id === r.createdByUserId),\n isFavorite: this.favorites.findIndex(f => f.id === r.id) >= 0,\n } as IRecipe),\n )\n .sort(recipesAlphabetical);\n }\n\n get categoriesWithRecipes() {\n return this.categories.map(c => ({\n ...c,\n recipes: this.recipesWithAll\n .filter((r: IRecipe) => r.categoryId === c.id)\n .map((r: IRecipe) => ({\n ...r,\n category: c,\n }))\n .sort(recipesAlphabetical),\n }));\n }\n\n get recentRecipes() {\n return this.recents.map((rc: IRecent) => ({\n recentAt: rc.time,\n recipe: this.recipesWithAll.find((r: IRecipe) => r.id === rc.id),\n }));\n }\n\n get favoriteRecipes() {\n return this.favorites.map((rc: IFavorite) =>\n this.recipesWithAll.find((r: IRecipe) => r.id === rc.id),\n );\n }\n}\n\nexport const AppStoreModule = getModule(AppStore);\n","\n\n\n\n\n\n\nimport { Vue, Component, Prop } from 'vue-property-decorator';\nimport { IRecipe, AppStoreModule } from '../store/modules/app.store';\n\nimport { mdiHeart, mdiHeartOutline } from '@mdi/js';\n\n@Component({\n components: {},\n})\nexport default class RecipeFavoriteToggle extends Vue {\n @Prop({ required: true }) recipe!: IRecipe;\n\n get iconFull() {\n return mdiHeart;\n }\n\n get iconOutline() {\n return mdiHeartOutline;\n }\n\n toggleFavorite() {\n if (!this.recipe.isFavorite) {\n AppStoreModule.addFavorite(this.recipe.id);\n } else {\n AppStoreModule.removeFavorite(this.recipe.id);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeFavoriteToggle.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeFavoriteToggle.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipeFavoriteToggle.vue?vue&type=template&id=edde12fa&scoped=true&\"\nimport script from \"./RecipeFavoriteToggle.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipeFavoriteToggle.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"edde12fa\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\ninstallComponents(component, {VIcon})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"recipe-thumbnails\"},[_vm._l((_vm.photos),function(photo){return [_c('router-link',{key:photo.id,attrs:{\"to\":{ name: 'recipe', params: { id: photo.recipeId } }}},[_c('img',{staticClass:\"recipe-thumbnail\",attrs:{\"src\":(\"/api/photos/\" + (photo.id) + \"/thumbnail\"),\"title\":photo.recipeName}})])]})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator';\nimport { IRecipe } from '../store/modules/app.store';\n\n@Component({\n components: {},\n})\nexport default class PhotoList extends Vue {\n @Prop({ required: true }) recipes!: IRecipe[];\n\n get photos() {\n if (this.recipes == null || this.recipes == []) {\n return [];\n }\n const photos = this.recipes\n .filter(r => r.photos != null && r.photos.length > 0)\n .map(r => ({\n recipeId: r.id,\n recipeName: r.name,\n ...r.photos?.find(_ => _),\n }));\n return photos;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhotoList.vue?vue&type=template&id=8712b3d2&scoped=true&\"\nimport script from \"./PhotoList.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhotoList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PhotoList.vue?vue&type=style&index=0&id=8712b3d2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8712b3d2\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator';\nimport RecipeFavoriteToggle from '@/components/RecipeFavoriteToggle.vue';\nimport PhotoList from '@/components/PhotoList.vue';\nimport { IRecipe, IPhoto } from '../store/modules/app.store';\nimport { AuthenticationStoreModule } from '../store/modules/authentication.store';\n\n@Component({\n components: {\n RecipeFavoriteToggle,\n PhotoList,\n },\n})\nexport default class RecipeList extends Vue {\n @Prop({ required: true }) recipes!: IRecipe[];\n\n @Prop({ default: true }) readonly showPhotos!: boolean;\n @Prop({ default: true }) readonly showHeader!: boolean;\n @Prop({ default: true }) readonly showCategory!: boolean;\n @Prop({ default: false }) readonly showCreated!: boolean;\n @Prop({ default: true }) readonly showAuthor!: boolean;\n\n get photos(): IPhoto[] {\n if (this.recipes === null || this.recipes == []) {\n return [];\n }\n return this.recipes.map(r => r.photos?.slice(0, 1)).flat();\n }\n\n get isLoggedIn() {\n return AuthenticationStoreModule.isLoggedIn;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipeList.vue?vue&type=template&id=13111e01&scoped=true&\"\nimport script from \"./RecipeList.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipeList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RecipeList.vue?vue&type=style&index=0&id=13111e01&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13111e01\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VSimpleTable})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\nimport RecipeList from '@/components/RecipeList.vue';\nimport { recipesChronological, AppStoreModule, ICategory } from '../store/modules/app.store';\n\n@Component({\n components: {\n RecipeList,\n },\n})\nexport default class Home extends Vue {\n get categories() {\n return AppStoreModule.categoriesWithRecipes;\n }\n\n getCategoryRecipes(category: ICategory, count: number) {\n return [...(category.recipes || [])]\n .sort(recipesChronological)\n .reverse()\n .slice(0, count);\n }\n\n get latestRecipes() {\n return [...AppStoreModule.recipesWithAll]\n .sort(recipesChronological)\n .reverse()\n .slice(0, 5);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=0bd7f699&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=0bd7f699&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bd7f699\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCardTitle,VCol,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"Opskrifter\")]),_c('recipe-list',{attrs:{\"recipes\":_vm.recipes,\"showCreated\":true}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport RecipeList from '@/components/RecipeList.vue';\nimport { IRecipe, AppStoreModule } from '@/store/modules/app.store';\n\n@Component({\n components: {\n RecipeList,\n },\n})\nexport default class ListRecipes extends Vue {\n get recipes(): IRecipe[] {\n return AppStoreModule.recipesWithAll;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListRecipes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListRecipes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ListRecipes.vue?vue&type=template&id=58f5cb9a&\"\nimport script from \"./ListRecipes.vue?vue&type=script&lang=ts&\"\nexport * from \"./ListRecipes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"Sidst Sete Opskrifter\")]),(_vm.recentRecipes.length > 0)?_c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Name\")]),_c('th',{staticClass:\"text-left hidden-xs-only\"},[_vm._v(\"Category\")]),_c('th',{staticClass:\"text-left hidden-sm-and-down\"},[_vm._v(\"Author\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Sidst Set\")]),(_vm.isLoggedIn)?_c('th',{staticClass:\"hidden-sm-and-down\"}):_vm._e()])]),_c('tbody',_vm._l((_vm.recentRecipes),function(recent){return _c('tr',{key:recent.recipe.id},[_c('td',[_c('router-link',{attrs:{\"to\":{ name: 'recipe', params: { id: recent.recipe.id } }}},[_vm._v(\" \"+_vm._s(recent.recipe.name)+\" \")])],1),_c('td',{staticClass:\"hidden-xs-only\"},[_c('router-link',{attrs:{\"to\":{ name: 'category', params: { id: recent.recipe.categoryId } }}},[_vm._v(\" \"+_vm._s(recent.recipe.category.name)+\" \")])],1),_c('td',{staticClass:\"hidden-sm-and-down\"},[_vm._v(\" \"+_vm._s(recent.recipe.createdBy ? recent.recipe.createdBy.firstName : null)+\" \")]),_c('td',[_c('timeago',{attrs:{\"datetime\":recent.recentAt}})],1),(_vm.isLoggedIn)?_c('td',{staticClass:\"text-right hidden-sm-and-down\"},[_c('recipe-favorite-toggle',{attrs:{\"recipe\":recent.recipe}})],1):_vm._e()])}),0)]},proxy:true}],null,false,106936590)}):_vm._e(),(_vm.recentRecipes.length > 0)?_c('v-btn',{attrs:{\"color\":\"warning\"},on:{\"click\":function($event){return _vm.clearList()}}},[_vm._v(\"Tøm Liste\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport RecipeFavoriteToggle from '@/components/RecipeFavoriteToggle.vue';\nimport { AuthenticationStoreModule } from '../../store/modules/authentication.store';\nimport { AppStoreModule } from '../../store/modules/app.store';\n\n@Component({\n components: {\n RecipeFavoriteToggle,\n },\n})\nexport default class LatestRecipes extends Vue {\n get isLoggedIn() {\n return AuthenticationStoreModule.isLoggedIn;\n }\n\n get recentRecipes() {\n return AppStoreModule.recentRecipes;\n }\n\n async clearList() {\n await AppStoreModule.clearRecentRecipes();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestRecipes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestRecipes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./LatestRecipes.vue?vue&type=template&id=421e050d&scoped=true&\"\nimport script from \"./LatestRecipes.vue?vue&type=script&lang=ts&\"\nexport * from \"./LatestRecipes.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./LatestRecipes.vue?vue&type=style&index=0&id=421e050d&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"421e050d\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VBtn,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"Favorit Opskrifter\")]),_c('RecipeList',{attrs:{\"recipes\":_vm.recipes,\"showCategory\":false,\"showCreated\":true,\"show-photos\":false}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport RecipeList from '@/components/RecipeList.vue';\nimport { AppStoreModule } from '../../store/modules/app.store';\n\n@Component({\n components: {\n RecipeList,\n },\n})\nexport default class FavoriteRecipes extends Vue {\n get recipes() {\n return AppStoreModule.favoriteRecipes;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteRecipes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteRecipes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FavoriteRecipes.vue?vue&type=template&id=ebd5cec2&\"\nimport script from \"./FavoriteRecipes.vue?vue&type=script&lang=ts&\"\nexport * from \"./FavoriteRecipes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.recipe != null)?_c('v-row',[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"offset-lg\":\"1\",\"lg\":\"10\",\"offset-xl\":\"2\",\"xl\":\"8\"}},[_c('v-row',[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_c('h1',[_vm._v(_vm._s(_vm.recipe.name))])]),_c('v-col',{staticClass:\"text-md-right pt-0\",attrs:{\"cols\":\"12\",\"md\":\"3\",\"align-self\":\"center\"}},[_c('router-link',{attrs:{\"to\":{ name: 'category', params: { id: _vm.recipe.categoryId } }}},[_vm._v(\" \"+_vm._s(_vm.recipe.category.name))]),_vm._v(\" \"),(_vm.isLoggedIn)?_c('recipe-favorite-toggle',{attrs:{\"recipe\":_vm.recipe}}):_vm._e()],1)],1),(_vm.recipe.photos != [])?_c('photo-gallery',{attrs:{\"photos\":_vm.recipe.photos}}):_vm._e(),_c('p'),_c('v-row',[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('h4',[_vm._v(\"Ingredienser\")]),_c('recipe-formatter',{attrs:{\"value\":_vm.recipe.ingredients}})],1),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('h4',[_vm._v(\"Fremgangsmåde\")]),_c('recipe-formatter',{attrs:{\"value\":_vm.recipe.procedure}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"md\":\"3\"}},[_c('h4',[_vm._v(\"Tilføjet af\")]),_vm._v(\" \"+_vm._s(_vm.recipe.createdBy ? _vm.recipe.createdBy.firstName : 'unknown')+\" \")]),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"md\":\"9\"}},[_c('h4',[_vm._v(\"Kilde\")]),_c('div',{directives:[{name:\"linkified\",rawName:\"v-linkified\"}],domProps:{\"innerHTML\":_vm._s(_vm.recipe.source)}})])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('router-link',{staticStyle:{\"margin-right\":\"15px\"},attrs:{\"to\":{ name: 'editRecipe', params: { id: _vm.recipe.id } }}},[_c('v-icon',{attrs:{\"color\":\"accent\"}},[_vm._v(_vm._s(_vm.iconEdit))])],1),_c('router-link',{attrs:{\"to\":{ name: 'recipePhotos', params: { recipeId: _vm.recipe.id } }}},[_c('v-icon',{attrs:{\"color\":\"accent\"}},[_vm._v(_vm._s(_vm.iconPhotos))])],1)],1)],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"procedure formatted-ingredients content\"},_vm._l((_vm.recipeLines),function(line){return _c('div',{key:line.index,staticClass:\"recipe-line\"},[(line.type == 'header')?_c('div',{staticClass:\"header\"},[_vm._v(_vm._s(line.value))]):_vm._e(),(line.type == 'subheader')?_c('div',{staticClass:\"subheader\"},[_vm._v(_vm._s(line.value))]):_vm._e(),(line.type == 'italics')?_c('div',{staticClass:\"italics\"},[_vm._v(_vm._s(line.value))]):_vm._e(),(line.type == 'ingredient')?_c('div',{staticClass:\"ingredient\"},[_c('span',{staticClass:\"amount\"},[_vm._v(_vm._s(line.amount))]),_c('span',{staticClass:\"product\"},[_vm._v(_vm._s(line.product))])]):_vm._e(),(line.type == 'text')?_c('div',{staticClass:\"text\"},[_vm._v(_vm._s(line.value))]):_vm._e()])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Vue, Component, Prop } from 'vue-property-decorator';\n\ninterface IRecipeLine {\n index: number;\n readonly type: string;\n}\n\nclass HeaderLine implements IRecipeLine {\n index: number;\n type = 'header';\n\n value: string;\n\n constructor(index: number, value: string) {\n this.index = index;\n this.value = value;\n }\n}\n\nclass SubheaderLine implements IRecipeLine {\n index: number;\n type = 'subheader';\n\n value: string;\n\n constructor(index: number, value: string) {\n this.index = index;\n this.value = value;\n }\n}\n\nclass ItalicsLine implements IRecipeLine {\n index: number;\n type = 'italics';\n\n value: string;\n\n constructor(index: number, value: string) {\n this.index = index;\n this.value = value;\n }\n}\n\nclass TextLine implements IRecipeLine {\n index: number;\n type = 'text';\n\n value: string;\n\n constructor(index: number, value: string) {\n this.index = index;\n this.value = value;\n }\n}\n\nclass IngredientLine implements IRecipeLine {\n index: number;\n type = 'ingredient';\n\n amount: string;\n product: string;\n\n constructor(index: number, amount: string, product: string) {\n this.index = index;\n this.amount = amount;\n this.product = product;\n }\n}\n\n@Component({})\nexport default class RecipeFormatter extends Vue {\n @Prop({ required: true }) value!: string;\n\n get recipeLines(): IRecipeLine[] {\n const recipeLines: IRecipeLine[] = [];\n\n if (this.value == null) {\n return [];\n } else {\n const lines = this.value.split(/\\r\\n|\\r|\\n/g);\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i].trim();\n const headerMatch = line.match(/^_(.+)_$/);\n if (headerMatch) {\n recipeLines.push(new HeaderLine(i, headerMatch[1]));\n continue;\n }\n const subheaderMatch = line.match(/^__(.+)__$/);\n if (subheaderMatch) {\n recipeLines.push(new SubheaderLine(i, subheaderMatch[1]));\n continue;\n }\n const italicsMatch = line.match(/^\\*(.+)\\*$/);\n if (italicsMatch) {\n recipeLines.push(new ItalicsLine(i, italicsMatch[1]));\n continue;\n }\n const ingredientMatch = line.match(/^([^|]*)\\s*\\|\\s*(.+)$/);\n if (ingredientMatch) {\n recipeLines.push(new IngredientLine(i, ingredientMatch[1], ingredientMatch[2]));\n continue;\n }\n recipeLines.push(new TextLine(i, line));\n }\n return recipeLines;\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeFormatter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecipeFormatter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipeFormatter.vue?vue&type=template&id=31574c06&scoped=true&\"\nimport script from \"./RecipeFormatter.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipeFormatter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RecipeFormatter.vue?vue&type=style&index=0&id=31574c06&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31574c06\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"recipe-thumbnails\"},[_vm._l((_vm.photos),function(photo,photoIndex){return [_c('img',{key:photo.id,staticClass:\"recipe-thumbnail\",attrs:{\"src\":(\"/api/photos/\" + (photo.id) + \"/thumbnail\")},on:{\"click\":function($event){_vm.index = photoIndex}}})]}),_c('CoolLightBox',{attrs:{\"items\":_vm.items,\"index\":_vm.index,\"overlayColor\":\"rgba(30, 30, 30, 0.7)\",\"slideshow\":false,\"gallery\":false},on:{\"close\":function($event){_vm.index = null}}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator';\nimport CoolLightBox from 'vue-cool-lightbox';\nimport { IPhoto } from '../store/modules/app.store';\n\n@Component({\n components: {\n CoolLightBox,\n },\n})\nexport default class PhotoGallery extends Vue {\n @Prop({ required: true }) photos!: IPhoto[];\n\n private index: number | null = null;\n get items() {\n return this.photos?.map(p => ({\n thumb: `/api/photos/${p.id}/thumbnail`,\n src: `/api/photos/${p.id}/original`,\n }));\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoGallery.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PhotoGallery.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PhotoGallery.vue?vue&type=template&id=f2a79e86&scoped=true&\"\nimport script from \"./PhotoGallery.vue?vue&type=script&lang=ts&\"\nexport * from \"./PhotoGallery.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PhotoGallery.vue?vue&type=style&index=0&id=f2a79e86&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f2a79e86\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { Route } from 'vue-router';\n\nimport RecipeFormatter from '@/components/RecipeFormatter.vue';\nimport PhotoGallery from '@/components/PhotoGallery.vue';\nimport RecipeFavoriteToggle from '@/components/RecipeFavoriteToggle.vue';\n\nimport { IRecipe, AppStoreModule } from '@/store/modules/app.store';\nimport { AuthenticationStoreModule } from '@/store/modules/authentication.store';\nimport { mdiFileDocumentEditOutline, mdiImageMultipleOutline } from '@mdi/js';\n\n@Component({\n components: {\n RecipeFormatter,\n PhotoGallery,\n RecipeFavoriteToggle,\n },\n})\nexport default class ShowRecipe extends Vue {\n private recipeId: number | null = null;\n\n get iconEdit() {\n return mdiFileDocumentEditOutline;\n }\n\n get iconPhotos() {\n return mdiImageMultipleOutline;\n }\n\n get recipe(): IRecipe | undefined {\n const recipe = AppStoreModule.recipesWithAll.find(r => r.id === this.recipeId);\n\n return recipe;\n }\n\n get isLoggedIn() {\n return AuthenticationStoreModule.isLoggedIn;\n }\n\n async mounted() {\n this.recipeId = parseInt(this.$route.params.id);\n\n await AppStoreModule.recipeVisited(this.recipeId);\n }\n\n beforeRouteUpdate(to: Route, from: Route, next: () => void) {\n this.recipeId = parseInt(to.params.id);\n next();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowRecipe.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowRecipe.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShowRecipe.vue?vue&type=template&id=39c9214f&scoped=true&\"\nimport script from \"./ShowRecipe.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShowRecipe.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ShowRecipe.vue?vue&type=style&index=0&id=39c9214f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39c9214f\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VIcon,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"Billeder - \"+_vm._s(_vm.recipe && _vm.recipe.name))]),_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"small\":\"\",\"color\":\"info\",\"to\":{ name: 'recipe', params: { id: this.recipeId } }}},[_vm._v(\" Tilbage \")])],1)],1),_c('v-simple-table',{attrs:{\"dense\":\"\"}},[_c('tbody',_vm._l((_vm.photos),function(photo){return _c('tr',{key:photo.id},[_c('td',[_c('img',{staticClass:\"recipe-thumbnail\",attrs:{\"src\":(\"/api/photos/\" + (photo.id) + \"/thumbnail\")}})]),_c('td',[_c('v-btn',{attrs:{\"color\":\"error\",\"small\":\"\"},on:{\"click\":function($event){return _vm.removePhoto(photo)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.iconTrash))])],1)],1)])}),0)]),_c('v-file-input',{ref:\"fileInput\",attrs:{\"label\":\"Billeder\",\"accept\":\"image/*\",\"prepend-icon\":_vm.iconCamera,\"multiple\":\"\",\"show-size\":\"\"},model:{value:(_vm.files),callback:function ($$v) {_vm.files=$$v},expression:\"files\"}}),_c('v-btn',{attrs:{\"disabled\":(_vm.files || []).length == 0,\"color\":\"success\"},on:{\"click\":_vm.uploadFiles}},[_vm._v(\"Upload\")]),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{style:({ zIndex: _vm.options.zIndex }),attrs:{\"max-width\":_vm.options.width},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.cancel($event)}},model:{value:(_vm.show),callback:function ($$v) {_vm.show=$$v},expression:\"show\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"color\":_vm.options.color,\"dark\":\"\",\"dense\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',{staticClass:\"white--text\"},[_vm._v(_vm._s(_vm.title))])],1),_c('v-card-text',{directives:[{name:\"show\",rawName:\"v-show\",value:(!!_vm.message),expression:\"!!message\"}],staticClass:\"pa-4\"},[_vm._v(_vm._s(_vm.message))]),_c('v-card-actions',{staticClass:\"pt-0\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary darken-1\",\"text\":\"\"},nativeOn:{\"click\":function($event){return _vm.agree($event)}}},[_vm._v(\"Yes\")]),_c('v-btn',{attrs:{\"color\":\"grey\",\"text\":\"\"},nativeOn:{\"click\":function($event){return _vm.cancel($event)}}},[_vm._v(\"Cancel\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\n\n/**\n * Vuetify Confirm Dialog component\n *\n * Insert component where you want to use it:\n * \n *\n * Call it:\n * this.$refs.confirm.open('Delete', 'Are you sure?', { color: 'red' }).then((confirm) => {})\n * Or use await:\n * if (await this.$refs.confirm.open('Delete', 'Are you sure?', { color: 'red' })) {\n * // yes\n * }\n * else {\n * // cancel\n * }\n *\n * Alternatively you can place it in main App component and access it globally via this.$root.$confirm\n * \n *\n * mounted() {\n * this.$root.$confirm = this.$refs.confirm.open\n * }\n */\n@Component({})\nexport default class ConfirmDialog extends Vue {\n dialog = false;\n message: string | null = null;\n title: string | null = null;\n options = {\n color: 'primary',\n width: 290,\n zIndex: 200,\n };\n private resolve: null | ((value?: unknown) => void) = null;\n private reject: null | ((value?: unknown) => void) = null;\n\n get show() {\n return this.dialog;\n }\n\n set show(value) {\n this.dialog = value;\n if (value === false) {\n this.cancel();\n }\n }\n\n public open(title: string, message: string, options: {}) {\n this.dialog = true;\n this.title = title;\n this.message = message;\n this.options = Object.assign(this.options, options);\n return new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n agree() {\n if (this.resolve != null) {\n this.resolve(true);\n }\n this.dialog = false;\n }\n\n cancel() {\n if (this.resolve != null) {\n this.resolve(false);\n }\n this.dialog = false;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConfirmDialog.vue?vue&type=template&id=1b3631fc&\"\nimport script from \"./ConfirmDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConfirmDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VDialog,VSpacer,VToolbar,VToolbarTitle})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { AppStoreModule, IPhoto } from '../../store/modules/app.store';\nimport { Route } from 'vue-router';\nimport { mdiCamera, mdiTrashCanOutline } from '@mdi/js';\nimport ConfirmDialog from '@/components/ConfirmDialog.vue';\n\nimport { NotificationsStoreModule } from '../../store/modules/notifications.store';\n\n@Component({\n components: {\n ConfirmDialog,\n },\n})\nexport default class Photos extends Vue {\n private recipeId: number | null = null;\n private files: File[] | null = null;\n\n get iconCamera() {\n return mdiCamera;\n }\n\n get iconTrash() {\n return mdiTrashCanOutline;\n }\n\n get recipe() {\n const recipe = AppStoreModule.recipes.find(r => r.id === this.recipeId);\n return recipe;\n }\n\n get photos() {\n if (this.recipe == null) {\n return [];\n }\n return this.recipe.photos;\n }\n\n mounted() {\n this.recipeId = parseInt(this.$route.params.recipeId);\n }\n\n beforeRouteUpdate(to: Route, from: Route, next: () => void) {\n this.recipeId = parseInt(to.params.id);\n next();\n }\n\n async uploadFiles() {\n if (this.files != null && this.files != [] && this.recipeId != null) {\n await AppStoreModule.uploadPhotos({\n recipeId: this.recipeId,\n files: this.files,\n });\n } else {\n NotificationsStoreModule.addWarning('Der er ikke valgt filer');\n }\n }\n\n async removePhoto(photo: IPhoto) {\n const confirmDialog = this.$refs.confirm as ConfirmDialog;\n if (await confirmDialog.open('Slet Opskrift?', 'Er du sikker?', { color: 'red' })) {\n if (this.recipeId != null) {\n await AppStoreModule.removePhoto({ recipeId: this.recipeId, photo });\n }\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Photos.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Photos.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Photos.vue?vue&type=template&id=e56f4d0a&scoped=true&\"\nimport script from \"./Photos.vue?vue&type=script&lang=ts&\"\nexport * from \"./Photos.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e56f4d0a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VBtn,VCol,VFileInput,VIcon,VRow,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('h1',[_vm._v(\"Rediger Opskrift\")]),_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Navn\",\"dense\":\"\",\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}})],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Kategori\",\"items\":_vm.categories,\"item-text\":\"name\",\"item-value\":\"id\",\"dense\":\"\",\"required\":\"\"},model:{value:(_vm.categoryId),callback:function ($$v) {_vm.categoryId=$$v},expression:\"categoryId\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}})],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-textarea',{attrs:{\"label\":\"Ingredienser\",\"auto-grow\":\"\",\"dense\":\"\",\"rows\":\"5\"},model:{value:(_vm.ingredients),callback:function ($$v) {_vm.ingredients=$$v},expression:\"ingredients\"}})],1),(_vm.ingredients != null)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('h4',[_vm._v(\"Ingredienser\")]),_c('recipe-formatter',{attrs:{\"value\":_vm.ingredients}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-textarea',{attrs:{\"label\":\"Fremgangsmåde\",\"auto-grow\":\"\",\"dense\":\"\",\"rows\":\"5\"},model:{value:(_vm.procedure),callback:function ($$v) {_vm.procedure=$$v},expression:\"procedure\"}})],1),(_vm.procedure != null)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('h4',[_vm._v(\"Fremgangsmåde\")]),_c('recipe-formatter',{attrs:{\"value\":_vm.procedure}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Kilde\",\"dense\":\"\"},model:{value:(_vm.source),callback:function ($$v) {_vm.source=$$v},expression:\"source\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('h4',[_vm._v(\"Kilde\")]),_c('div',{directives:[{name:\"linkified\",rawName:\"v-linkified\"}],domProps:{\"innerHTML\":_vm._s(_vm.source)}})])],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('v-btn',{staticClass:\"mr-4\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.valid,\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\"Gem Opskrift\")]),_c('v-btn',{staticClass:\"mr-4\",attrs:{\"color\":\"warning\"},on:{\"click\":_vm.loadData}},[_vm._v(\"Fortryd\")])],1),_c('v-col',{staticClass:\"text-right\",attrs:{\"cols\":\"2\"}},[_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.removeRecipe}},[_c('v-icon',[_vm._v(_vm._s(_vm.iconTrash))])],1)],1)],1)],1),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport RecipeFormatter from '@/components/RecipeFormatter.vue';\nimport ConfirmDialog from '@/components/ConfirmDialog.vue';\nimport { AppStoreModule } from '@/store/modules/app.store';\nimport { NotificationsStoreModule } from '../../store/modules/notifications.store';\nimport { mdiTrashCanOutline } from '@mdi/js';\n\n@Component({\n components: {\n RecipeFormatter,\n ConfirmDialog,\n },\n})\nexport default class EditRecipe extends Vue {\n private recipeId!: number;\n private valid = false;\n private categoryId: number | null = null;\n private name: string | null = null;\n private ingredients: string | null = null;\n private procedure: string | null = null;\n private source: string | null = null;\n\n get iconTrash() {\n return mdiTrashCanOutline;\n }\n\n mounted() {\n this.recipeId = parseInt(this.$route.params.id);\n this.loadData();\n }\n\n get categories() {\n return AppStoreModule.categories;\n }\n\n loadData() {\n const recipe = AppStoreModule.recipesWithAll.find(r => r.id === this.recipeId);\n if (recipe != null) {\n this.categoryId = recipe.categoryId;\n this.name = recipe.name;\n this.ingredients = recipe.ingredients;\n this.procedure = recipe.procedure;\n this.source = recipe.source;\n }\n }\n\n async save() {\n try {\n const updatedRecipe = await AppStoreModule.updateRecipe({\n recipeId: this.recipeId,\n categoryId: this.categoryId,\n name: this.name,\n ingredients: this.ingredients,\n procedure: this.procedure,\n source: this.source,\n });\n\n if (updatedRecipe != null) {\n this.$router.push({ name: 'recipe', params: { id: '' + updatedRecipe.id } });\n NotificationsStoreModule.addSuccess('Opskriften blev opdateret uden problemer');\n }\n } catch (error) {\n NotificationsStoreModule.addError(error);\n }\n }\n\n async removeRecipe() {\n const confirmDialog = this.$refs.confirm as ConfirmDialog;\n\n if (await confirmDialog.open('Slet Opskrift?', 'Er du sikker?', { color: 'red' })) {\n await AppStoreModule.removeRecipe(this.recipeId);\n this.$router.push({ name: 'home' });\n } else {\n //\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditRecipe.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditRecipe.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditRecipe.vue?vue&type=template&id=247bb325&scoped=true&\"\nimport script from \"./EditRecipe.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditRecipe.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"247bb325\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCol,VForm,VIcon,VRow,VSelect,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('h1',[_vm._v(\"Opret Opskrift\")]),_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Navn\",\"dense\":\"\",\"required\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}})],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Kategori\",\"items\":_vm.categories,\"item-text\":\"name\",\"item-value\":\"id\",\"dense\":\"\",\"required\":\"\"},model:{value:(_vm.categoryId),callback:function ($$v) {_vm.categoryId=$$v},expression:\"categoryId\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}})],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-textarea',{attrs:{\"label\":\"Ingredienser\",\"auto-grow\":\"\",\"dense\":\"\",\"rows\":\"5\"},model:{value:(_vm.ingredients),callback:function ($$v) {_vm.ingredients=$$v},expression:\"ingredients\"}})],1),(_vm.ingredients != null)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('recipe-formatter',{attrs:{\"value\":_vm.ingredients}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-textarea',{attrs:{\"label\":\"Fremgangsmåde\",\"auto-grow\":\"\",\"dense\":\"\",\"rows\":\"5\"},model:{value:(_vm.procedure),callback:function ($$v) {_vm.procedure=$$v},expression:\"procedure\"}})],1),(_vm.procedure != null)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('recipe-formatter',{attrs:{\"value\":_vm.procedure}})],1):_vm._e()],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Oprettet af\",\"items\":_vm.users,\"item-text\":\"name\",\"item-value\":\"id\",\"dense\":\"\",\"required\":\"\"},model:{value:(_vm.authorId),callback:function ($$v) {_vm.authorId=$$v},expression:\"authorId\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Kilde\",\"dense\":\"\"},model:{value:(_vm.source),callback:function ($$v) {_vm.source=$$v},expression:\"source\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}})],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-btn',{staticClass:\"mr-4\",attrs:{\"type\":\"submit\",\"disabled\":!_vm.valid,\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\"Opret Opskrift\")]),_c('v-btn',{staticClass:\"mr-4\",attrs:{\"color\":\"warning\"},on:{\"click\":_vm.reset}},[_vm._v(\"Tøm Form\")])],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport RecipeFormatter from '@/components/RecipeFormatter.vue';\nimport { AppStoreModule } from '../../store/modules/app.store';\n\nexport type VForm = Vue & { reset: () => void };\n\n@Component({\n components: {\n RecipeFormatter,\n },\n})\nexport default class CreateRecipe extends Vue {\n private valid = false;\n private categoryId: number | null = null;\n private name: string | null = null;\n private ingredients: string | null = null;\n private procedure: string | null = null;\n private authorId: number | null = null;\n private source: string | null = null;\n\n get categories() {\n return AppStoreModule.categories;\n }\n\n get users() {\n return AppStoreModule.users\n .map(u => ({\n id: u.id,\n name: (u.firstName + ' ' + u.lastName).trim(),\n }));\n }\n\n async save() {\n const addedRecipe = await AppStoreModule.createRecipe({\n categoryId: this.categoryId,\n name: this.name,\n ingredients: this.ingredients,\n procedure: this.procedure,\n authorId: this.authorId,\n source: this.source,\n });\n\n if (addedRecipe != null) {\n this.$router.push({ name: 'recipe', params: { id: '' + addedRecipe.id } });\n }\n }\n\n reset() {\n (this.$refs.form as VForm).reset();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreateRecipe.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreateRecipe.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateRecipe.vue?vue&type=template&id=7a71a511&scoped=true&\"\nimport script from \"./CreateRecipe.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateRecipe.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a71a511\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\ninstallComponents(component, {VBtn,VCol,VForm,VRow,VSelect,VTextField,VTextarea})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.category != null)?_c('div',[_c('h1',[_vm._v(_vm._s(_vm.category.name))]),_c('RecipeList',{attrs:{\"recipes\":_vm.category.recipes,\"showCategory\":false,\"showCreated\":true}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { Route } from 'vue-router';\n\nimport RecipeList from '@/components/RecipeList.vue';\nimport { ICategory, AppStoreModule } from '../../store/modules/app.store';\n\n@Component({\n components: {\n RecipeList,\n },\n})\nexport default class ShowCategory extends Vue {\n private categoryId: number | null = null;\n\n get category(): ICategory | undefined {\n return AppStoreModule.categoriesWithRecipes.find(c => c.id === this.categoryId);\n }\n\n mounted() {\n this.categoryId = parseInt(this.$route.params.id);\n }\n\n beforeRouteUpdate(to: Route, from: Route, next: () => void) {\n this.categoryId = parseInt(to.params.id);\n next();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowCategory.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShowCategory.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShowCategory.vue?vue&type=template&id=b810b0c6&\"\nimport script from \"./ShowCategory.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShowCategory.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h1',[_vm._v(\"Beskeder\")]),_c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Tid\")]),_c('th',{staticClass:\"text-left\"},[_vm._v(\"Besked\")])])]),_c('tbody',_vm._l((_vm.messages),function(message){return _c('tr',{key:message.time},[_c('td',[_vm._v(_vm._s(new Date(message.time)))]),_c('td',[_vm._v(_vm._s(message.message))])])}),0)]},proxy:true}])}),(_vm.messages.length > 0)?_c('v-btn',{attrs:{\"color\":\"warning\"},on:{\"click\":function($event){return _vm.clearList()}}},[_vm._v(\"Tøm Liste\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { MessagesStoreModule } from '../../store/modules/messages.store';\n\n@Component({\n components: {},\n})\nexport default class LatestRecipes extends Vue {\n get messages() {\n return MessagesStoreModule.messages;\n }\n\n async clearList() {\n await MessagesStoreModule.clear();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Messages.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Messages.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Messages.vue?vue&type=template&id=77ac4ca6&scoped=true&\"\nimport script from \"./Messages.vue?vue&type=script&lang=ts&\"\nexport * from \"./Messages.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Messages.vue?vue&type=style&index=0&id=77ac4ca6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77ac4ca6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VBtn,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h2',[_vm._v(\"Administration\")]),_c('div',[_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"info\",\"small\":\"\",\"to\":{ name: 'adminDashboard' }}},[_vm._v(\"Dashboard\")]),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"info\",\"small\":\"\",\"to\":{ name: 'adminCategories' }}},[_vm._v(\"Kategorier\")]),_c('v-btn',{staticClass:\"mr-3\",attrs:{\"color\":\"info\",\"small\":\"\",\"to\":{ name: 'adminUsers' }}},[_vm._v(\"Brugere\")])],1),_c('router-view'),_c('pre',[_vm._v(_vm._s(_vm.versionInformation))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// IMPORTANT: THIS FILE IS AUTO GENERATED! DO NOT MANUALLY EDIT OR CHECKIN!\n/* eslint:disable */\nexport const VERSION = {\n \"dirty\": false,\n \"raw\": \"faa8265\",\n \"hash\": \"faa8265\",\n \"distance\": null,\n \"tag\": null,\n \"semver\": null,\n \"suffix\": \"faa8265\",\n \"semverString\": null,\n \"packageVersion\": \"0.1.0\",\n \"buildDate\": \"2021-01-21T21:09:01.486Z\",\n \"buildNumber\": \"hacobo-webapp__850\",\n \"commitVersion\": \"faa82657ab2999a352cf48b2c1837ed3e241334a\",\n \"commitAuthor\": \"Hakon Baunsgaard\",\n \"commitMessage\": \"Fixed service deployment\"\n};\n/* eslint:enable */\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { VERSION } from '@/app.version';\n\n@Component({\n components: {},\n})\nexport default class Dashboard extends Vue {\n get versionInformation() {\n return VERSION;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=95fcf9be&scoped=true&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"95fcf9be\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\ninstallComponents(component, {VBtn})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Kategorier\")]),_c('v-simple-table',{attrs:{\"dense\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',{staticClass:\"text-left\"},[_vm._v(\"Navn\")]),_c('th',{staticClass:\"text-left\"})])]),_c('tbody',_vm._l((_vm.categories),function(category){return _c('tr',{key:category.id},[_c('td',[_vm._v(_vm._s(category.name))]),_c('td')])}),0)]},proxy:true}])}),_c('v-row',[_c('v-col',[_c('v-btn',{attrs:{\"color\":\"success\"}},[_vm._v(\"Tilføj Kategori\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { AppStoreModule } from '@/store/modules/app.store';\n\n@Component({\n components: {},\n})\nexport default class Categories extends Vue {\n get categories() {\n return AppStoreModule.categories;\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Categories.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Categories.vue?vue&type=template&id=2011f6b6&scoped=true&\"\nimport script from \"./Categories.vue?vue&type=script&lang=ts&\"\nexport * from \"./Categories.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Categories.vue?vue&type=style&index=0&id=2011f6b6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2011f6b6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VBtn,VCol,VRow,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('h3',[_vm._v(\"Brugere\")]),_c('v-simple-table',{scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('thead',[_c('tr',[_c('th',[_vm._v(\"Fornavn\")]),_c('th',[_vm._v(\"Efternavn\")]),_c('th',[_vm._v(\"Email\")]),_c('th',[_vm._v(\"Has Login\")]),_c('th',[_vm._v(\"Role\")]),_c('th',[_vm._v(\"Opskrifter\")]),_c('th')])]),_c('tbody',_vm._l((_vm.users),function(user){return _c('tr',{key:user.id},[_c('td',[_vm._v(_vm._s(user.firstName))]),_c('td',[_vm._v(_vm._s(user.lastName))]),_c('td',[_vm._v(_vm._s(user.email))]),_c('td',[_vm._v(_vm._s(user.hasLogin))]),_c('td',[_vm._v(_vm._s(user.isAdministrator))]),_c('td',[_vm._v(_vm._s(user.recipeCount))]),_c('td',[(user.recipeCount == 0)?_c('v-btn',{attrs:{\"small\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.removeUser(user)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.iconTrash))])],1):_vm._e()],1)])}),0)]},proxy:true}])}),_c('confirm-dialog',{ref:\"confirm\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { AppStoreModule, IUser } from '@/store/modules/app.store';\nimport { mdiTrashCanOutline } from '@mdi/js';\nimport ConfirmDialog from '@/components/ConfirmDialog.vue';\n\n@Component({\n components: {\n ConfirmDialog,\n },\n})\nexport default class UserIndex extends Vue {\n get iconTrash() {\n return mdiTrashCanOutline;\n }\n get users() {\n const users = AppStoreModule.users;\n const recipes = AppStoreModule.recipes;\n\n return users.map(u => ({\n ...u,\n recipeCount: recipes.filter(r => r.createdByUserId == u.id).length,\n }));\n }\n\n async removeUser(user: IUser) {\n const confirmDialog = this.$refs.confirm as ConfirmDialog;\n if (await confirmDialog.open('Slet Opskrift?', 'Er du sikker?', { color: 'red' })) {\n await AppStoreModule.removeUser(user);\n }\n }\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Index.vue?vue&type=template&id=5aba22f9&scoped=true&\"\nimport script from \"./Index.vue?vue&type=script&lang=ts&\"\nexport * from \"./Index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5aba22f9\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSimpleTable } from 'vuetify/lib/components/VDataTable';\ninstallComponents(component, {VBtn,VIcon,VSimpleTable})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { authService } from '@/services/AuthService';\n\n@Component({})\nexport default class SigninCallback extends Vue {\n async created() {\n try {\n const result = await authService.signinRedirectCallback();\n const returnToUrl = result.state !== undefined ? result.state : '/';\n this.$router.push({ path: returnToUrl });\n } catch (e) {\n this.$router.push({ name: 'Unauthorized' });\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SigninCallback.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SigninCallback.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SigninCallback.vue?vue&type=template&id=ee38ef44&\"\nimport script from \"./SigninCallback.vue?vue&type=script&lang=ts&\"\nexport * from \"./SigninCallback.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators';\nimport rootStore from '@/store';\n\nexport interface ILoaderState {\n loading: number;\n}\n\n@Module({ dynamic: true, namespaced: true, store: rootStore, name: 'loader' })\nclass LoaderStore extends VuexModule implements ILoaderState {\n public loading = 0;\n\n @Mutation\n private START_LOADING() {\n this.loading = this.loading + 1;\n }\n\n @Mutation\n private FINISH_LOADING() {\n this.loading = this.loading - 1;\n }\n\n @Action\n public start() {\n this.START_LOADING();\n }\n\n @Action\n public finish() {\n this.FINISH_LOADING();\n }\n}\n\nexport const LoaderStoreModule = getModule(LoaderStore);\n","import Vue from 'vue';\nimport VueRouter from 'vue-router';\nimport NProgress from 'nprogress';\n\nimport Home from '../views/Home.vue';\nimport ListRecipes from '@/views/recipes/ListRecipes.vue';\nimport LatestRecipes from '@/views/recipes/LatestRecipes.vue';\nimport FavoriteRecipes from '@/views/recipes/FavoriteRecipes.vue';\nimport ShowRecipe from '@/views/recipes/ShowRecipe.vue';\nimport RecipePhotos from '@/views/recipes/Photos.vue';\nimport EditRecipe from '@/views/recipes/EditRecipe.vue';\nimport CreateRecipe from '@/views/recipes/CreateRecipe.vue';\nimport ShowCategory from '@/views/categories/ShowCategory.vue';\nimport Messages from '@/views/admin/Messages.vue';\nimport AdminDashboard from '@/views/admin/Dashboard.vue';\nimport AdminCategories from '@/views/admin/categories/Categories.vue';\nimport AdminUsers from '@/views/admin/users/Index.vue';\nimport SigninCallback from '@/views/Oidc/SigninCallback.vue';\n\nimport { authService } from '@/services/AuthService';\nimport { AuthenticationStoreModule } from '@/store/modules/authentication.store';\nimport { LoaderStoreModule } from '@/store/modules/loader.store';\n\nVue.use(VueRouter);\n\nconst routes = [\n {\n path: '/',\n name: 'home',\n component: Home,\n },\n {\n path: '/recipes',\n name: 'recipes',\n component: ListRecipes,\n },\n {\n path: '/recipes/create',\n name: 'createRecipe',\n component: CreateRecipe,\n meta: {\n requiresAuth: true,\n },\n },\n {\n path: '/recipes/latest',\n name: 'latestRecipes',\n component: LatestRecipes,\n },\n {\n path: '/recipes/favorites',\n name: 'favoriteRecipes',\n component: FavoriteRecipes,\n meta: {\n requiresAuth: true,\n },\n },\n {\n path: '/recipes/:id',\n name: 'recipe',\n component: ShowRecipe,\n },\n {\n path: '/recipes/:recipeId/photos',\n name: 'recipePhotos',\n component: RecipePhotos,\n meta: {\n requiresAuth: true,\n },\n },\n {\n path: '/recipes/:id/edit',\n name: 'editRecipe',\n component: EditRecipe,\n meta: {\n requiresAuth: true,\n },\n },\n {\n path: '/categories/:id',\n name: 'category',\n component: ShowCategory,\n },\n {\n path: '/admin/messages',\n name: 'messages',\n component: Messages,\n },\n {\n path: '/admin',\n name: 'adminDashboard',\n component: AdminDashboard,\n meta: {\n requiresAuth: true,\n },\n children: [\n {\n path: 'categories',\n name: 'adminCategories',\n component: AdminCategories,\n meta: {\n requiresAuth: true,\n },\n },\n {\n path: 'users',\n name: 'adminUsers',\n component: AdminUsers,\n meta: {\n requiresAuth: true,\n },\n },\n ],\n },\n {\n path: '/oidc-callback',\n component: SigninCallback,\n },\n {\n path: '/about',\n name: 'about',\n // route level code-splitting\n // this generates a separate chunk (about.[hash].js) for this route\n // which is lazy-loaded when the route is visited.\n component: () => import(/* webpackChunkName: \"about\" */ '../views/About.vue'),\n },\n];\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes,\n\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition;\n } else {\n return { x: 0, y: 0 };\n }\n },\n});\n\nfunction isAuthenticated(): boolean {\n return AuthenticationStoreModule.isLoggedIn;\n // return true;\n}\n\nrouter.beforeEach(async (to, from, next) => {\n const requiresAuth = to.matched.some(route => route.meta.requiresAuth);\n if (requiresAuth && !isAuthenticated()) {\n await authService.login();\n // next('/login');\n } else {\n next();\n }\n});\n\nrouter.beforeResolve((to, from, next) => {\n if (to.name) {\n LoaderStoreModule.start();\n }\n next();\n});\n\nrouter.afterEach((to, from) => {\n if (to.name) {\n LoaderStoreModule.finish();\n }\n});\n\n// router.beforeEach((to, from, next) => {\n// const publicPages = ['/login', '/register', '/home'];\n// const authRequired = !publicPages.includes(to.path);\n// const loggedIn = localStorage.getItem('user');\n\n// // trying to access a restricted page + not logged in\n// // redirect to login page\n// if (authRequired && !loggedIn) {\n// next('/login');\n// } else {\n// next();\n// }\n// });\n\nexport default router;\n\n/*\n\nhttps://dev.to/laurieontech/creating-an-authentication-navigation-guard-in-vue-32jm\n\n{\n path: '/team-health',\n name: 'TeamHealth',\n beforeEnter: multiguard([authManager.requireAuth(), teamManager.requireTeamAccess()]),\n component: TeamHealth\n}\n\nrequireAuth() {\n return async (to, from, next) => {\n const options = { from: from.fullPath, to: to.fullPath, route: to.fullPath };\n try {\n const result = await this.authProvider.getClient().ensureLoggedIn(options);\n if (!result || !result.success) {\n next(false);\n return;\n }\n\n // Change the global location\n if (result.path) {\n next(false);\n window.location.replace(result.path);\n return;\n }\n\n this.store.commit('setinvalidTokenCalls', 0);\n\n // Otherwise only change the local location\n if (result.route) {\n next({ path: result.route });\n return;\n }\n\n // If there is no redirect set, just continue\n next();\n } catch (error) {\n this.logger.error({ title: 'User login error', exception: error });\n this.alertHandler.createAlert(\n 'Login issue',\n `We are having trouble logging you in.\n If this continues please contact support@teaminator.io`,\n null, 'danger', 3000);\n next(false);\n }\n };\n}\n\n*/\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('TopToolbar'),_vm._l((_vm.notifications),function(notification){return _c('v-snackbar',{key:notification.id,attrs:{\"value\":\"true\",\"timeout\":0,\"color\":_vm.colorFromNotificationType(notification.type),\"top\":\"\",\"right\":\"\"}},[_vm._v(\" \"+_vm._s(notification.message)+\" \"),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.removeNotification(notification)}}},[_vm._v(\"Luk\")])],1)}),_c('v-content',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('router-view')],1)],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-navigation-drawer',{attrs:{\"app\":\"\",\"fixed\":\"\",\"right\":\"\",\"disable-route-watcher\":false},model:{value:(_vm.showMenu),callback:function ($$v) {_vm.showMenu=$$v},expression:\"showMenu\"}},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item',{attrs:{\"to\":{ name: 'recipes' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Alle Opskrifter\")])],1)],1),(_vm.isLoggedIn)?_c('v-list-item',{attrs:{\"to\":{ name: 'favoriteRecipes' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Favoritter\")])],1)],1):_vm._e(),(_vm.isLoggedIn)?_c('v-list-item',{attrs:{\"to\":{ name: 'latestRecipes' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Sidst Sete\")])],1)],1):_vm._e(),(_vm.isLoggedIn)?_c('v-list-item',{attrs:{\"to\":{ name: 'createRecipe' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Opret Opskrift\")])],1)],1):_vm._e(),_c('v-divider'),(_vm.isAdministrator)?_c('v-list-item',{attrs:{\"to\":{ name: 'adminDashboard' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Administration\")])],1)],1):_vm._e(),_c('v-list-item',{attrs:{\"to\":{ name: 'messages' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Beskeder\")])],1)],1),_c('v-divider'),(_vm.isLoggedIn)?_c('v-list-item',{attrs:{\"two-line\":\"\"},on:{\"click\":function($event){return _vm.logout()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.username))]),_c('v-list-item-subtitle',[_vm._v(\"Logout\")])],1)],1):_vm._e(),(!_vm.isLoggedIn)?_c('v-list-item',{on:{\"click\":function($event){return _vm.login()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Login\")])],1)],1):_vm._e(),_c('v-list-item',{on:{\"click\":function($event){return _vm.clearData()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Clear Local User Data\")])],1)],1),_c('v-divider'),_c('v-list-item',{on:{\"click\":function($event){return _vm.reload()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm._f(\"date\")(_vm.buildDate,'DD-MMM-YYYY HH:mm:ss')))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_vm.applicationVersion.raw))])],1)],1),(_vm.updateExists)?_c('v-list-item',{on:{\"click\":function($event){return _vm.refreshApp()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"New version available! Click to update\")])],1)],1):_vm._e()],1)],1),_c('v-app-bar',{attrs:{\"app\":\"\",\"fixed\":\"\",\"dark\":\"\",\"color\":\"primary\",\"dense\":\"\"}},[_c('v-toolbar-title',[_c('router-link',{attrs:{\"to\":\"/\"}},[_vm._v(\"Ha\"),_c('span',{class:{ 'logged-in': _vm.isLoggedIn }},[_vm._v(\"·\")]),_vm._v(\"Co\"),_c('span',{class:{ 'logged-in': _vm.isLoggedIn }},[_vm._v(\"·\")]),_vm._v(\"Bo\")])],1),_c('v-toolbar-items',[_c('v-btn',{attrs:{\"depressed\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.toggleStayAwake()}}},[_vm._v(_vm._s(_vm.stayAwakeEnabled ? '!' : '?'))])],1),_c('v-spacer'),_c('v-toolbar-items',{staticClass:\"hidden-sm-and-down\",attrs:{\"text-right\":\"\"}},[_c('v-btn',{attrs:{\"to\":{ name: 'recipes' },\"depressed\":\"\",\"text\":\"\",\"exact\":\"\"}},[_vm._v(\"Alle Opskrifter\")]),(_vm.isLoggedIn)?_c('v-btn',{attrs:{\"to\":{ name: 'favoriteRecipes' },\"depressed\":\"\",\"text\":\"\",\"exact\":\"\"}},[_vm._v(\"Favoritter\")]):_vm._e(),(_vm.isLoggedIn)?_c('v-btn',{attrs:{\"to\":{ name: 'latestRecipes' },\"depressed\":\"\",\"text\":\"\",\"exact\":\"\"}},[_vm._v(\"Sidst Sete\")]):_vm._e(),(_vm.isLoggedIn)?_c('v-btn',{attrs:{\"to\":{ name: 'createRecipe' },\"color\":\"accent\",\"depressed\":\"\",\"exact\":\"\"}},[_vm._v(\"Opret Opskrift\")]):_vm._e(),(_vm.isLoggedIn)?_c('v-menu',{attrs:{\"open-on-hover\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('v-btn',_vm._g({attrs:{\"depressed\":\"\",\"text\":\"\"}},on),[_vm._v(\"Profil\")])]}}],null,false,90730041)},[_c('v-list',[_c('v-list-item',[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.username))])],1)],1),_c('v-list-item',{attrs:{\"to\":{ name: 'messages' },\"exact\":\"\",\"link\":\"\"}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Beskeder\")])],1)],1),_c('v-divider'),_c('v-list-item',{on:{\"click\":function($event){return _vm.logout()}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\"Logout\")])],1)],1)],1)],1):_vm._e(),(!_vm.isLoggedIn)?_c('v-btn',{attrs:{\"depressed\":\"depressed\",\"text\":\"text\"},on:{\"click\":function($event){return _vm.login()}}},[_vm._v(\"Login\")]):_vm._e()],1),_c('v-app-bar-nav-icon',{staticClass:\"xhidden-md-and-up\",on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleMenu($event)}}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","//-- Modified from https://github.com/jamesbachini/StayAwake.js/blame/master/stayawake.js\n/*** StayAwake stayawake.js simplified updated version.\n * Original code: StayAwake.js v0.9.0 - git.io/vfn01 - Rich Tibbett\n * And: https://github.com/madeInLagny/mil-no-sleep/\n * Adapted for Vue.js and other modern frameworks with default export\n * Changed muted to true to allow media playback\n * Removed old iOS browser stuff, untested.\n * Usage: import StayAwake from './stayawake.js';\n * StayAwake.init();\n * StayAwake.enable();\n * StayAwake.disable();\n */\n\nimport visibility from 'vue-visibility-change';\nimport { MessagesStoreModule } from '@/store/modules/messages.store';\n\nexport default class StayAwake {\n // Uses these blank videos to keep screen on by running them in a loop\n private webm =\n 'data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4ECQoWBAhhTgGcBAAAAAAACsRFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsggKU7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU2LjQwLjEwMVdBjUxhdmY1Ni40MC4xMDFzpJBa+D6CL3UWrC/5kCoA+CFiRImIQLOIAAAAAAAWVK5rAQAAAAAAAEOuAQAAAAAAADrXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEO5rKAOABAAAAAAAADrCBAbqBAVSwgQFUuoEBH0O2dQEAAAAAAAEJ54EAo8CBAACA8AIAnQEqAQABAABHCIWFiJmEiAICAnWqA/gD+gINTbYA/v+rWY//oHlgFvIt/9A8//6B5YBbyLf/QEQAo6+BA+gAsQEAARAQABgAMD/0DADCAP7/q1mP/6B5YBbyLf/QPP/+geWAW8i3/0BEAKOvgQfQALEBAAEQEAAYADA/9AwAwgD+/6tZj/+geWAW8i3/0Dz//oHlgFvIt/9ARACjr4ELuACxAQABEBAAGAAwP/QMAMIA/v+rWY//oHlgFvIt/9A8//6B5YBbyLf/QEQAo6+BD6AAsQEAARAQABgAMD/0DADCAP7/q1mP/6B5YBbyLf/QPP/+geWAW8i3/0BEABxTu2sBAAAAAAAAEbuPs4EAt4r3gQHxggF/8IED';\n private mp4 =\n 'data:video/mp4;base64,AAAAIGZ0eXBtcDQyAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAACKBtZGF0AAAC8wYF///v3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0MiByMjQ3OSBkZDc5YTYxIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNCAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTEgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweDExMSBtZT1oZXggc3VibWU9MiBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MCA4eDhkY3Q9MCBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0wIHRocmVhZHM9NiBsb29rYWhlYWRfdGhyZWFkcz0xIHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZWQ9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl9weXJhbWlkPTIgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MSBvcGVuX2dvcD0wIHdlaWdodHA9MSBrZXlpbnQ9MzAwIGtleWludF9taW49MzAgc2NlbmVjdXQ9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD0xMCByYz1jcmYgbWJ0cmVlPTEgY3JmPTIwLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IHZidl9tYXhyYXRlPTIwMDAwIHZidl9idWZzaXplPTI1MDAwIGNyZl9tYXg9MC4wIG5hbF9ocmQ9bm9uZSBmaWxsZXI9MCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAOWWIhAA3//p+C7v8tDDSTjf97w55i3SbRPO4ZY+hkjD5hbkAkL3zpJ6h/LR1CAABzgB1kqqzUorlhQAAAAxBmiQYhn/+qZYADLgAAAAJQZ5CQhX/AAj5IQAD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';\n\n private isPlaying = false;\n private stayAwakeVideo: HTMLVideoElement | null = null;\n\n private addSourceToVideo(element: HTMLElement, type: string, dataURI: string) {\n const source = document.createElement('source');\n source.src = dataURI;\n source.type = 'video/' + type;\n element.appendChild(source);\n }\n\n private dump(eventName: string, args: any) {\n console.log(`video event: ${eventName} -> ${JSON.stringify(args)}`);\n }\n\n init() {\n // Set up stay awake video element\n this.stayAwakeVideo = document.createElement('video');\n\n const v = this.stayAwakeVideo;\n v.addEventListener('abort', (...args) => this.dump('abort', args));\n // v.addEventListener('canplay', (...args) => this.dump('canplay', args));\n // v.addEventListener('canplaythrough', (...args) => this.dump('canplaythrough', args));\n v.addEventListener('durationchange', (...args) => this.dump('durationchange', args));\n v.addEventListener('emptied', (...args) => this.dump('emptied', args));\n v.addEventListener('encrypted', (...args) => this.dump('encrypted', args));\n v.addEventListener('ended', (...args) => this.dump('ended', args));\n v.addEventListener('error', (...args) => this.dump('error', args));\n v.addEventListener('interruptbegin', (...args) => this.dump('interruptbegin', args));\n v.addEventListener('interruptend', (...args) => this.dump('interruptend', args));\n v.addEventListener('loadeddata', (...args) => this.dump('loadeddata', args));\n v.addEventListener('loadedmetadata', (...args) => this.dump('loadedmetadata', args));\n v.addEventListener('loadstart', (...args) => this.dump('loadstart', args));\n v.addEventListener('mozaudioavailable', (...args) => this.dump('mozaudioavailable', args));\n v.addEventListener('pause', (...args) => this.dump('pause', args));\n v.addEventListener('play', (...args) => this.dump('play', args));\n // v.addEventListener('playing', (...args) => this.dump('playing', args));\n v.addEventListener('progress', (...args) => this.dump('progress', args));\n v.addEventListener('ratechange', (...args) => this.dump('ratechange', args));\n // v.addEventListener('seeked', (...args) => this.dump('seeked', args));\n // v.addEventListener('seeking', (...args) => this.dump('seeking', args));\n v.addEventListener('stalled', (...args) => this.dump('stalled', args));\n v.addEventListener('suspend', (...args) => this.dump('suspend', args));\n // v.addEventListener('timeupdate', (...args) => this.dump('timeupdate', args));\n v.addEventListener('volumechange', (...args) => this.dump('volumechange', args));\n // v.addEventListener('waiting', (...args) => this.dump('waiting', args));\n\n this.stayAwakeVideo.setAttribute('muted', 'true');\n this.stayAwakeVideo.setAttribute('title', 'StayAwake');\n this.stayAwakeVideo.setAttribute('playsinline', '');\n this.addSourceToVideo(this.stayAwakeVideo, 'webm', this.webm);\n this.addSourceToVideo(this.stayAwakeVideo, 'mp4', this.mp4);\n\n visibility.change((evt, hidden) => {\n console.log('visibility change', evt, hidden, 'isPlaying', this.isPlaying);\n MessagesStoreModule.add(`Visibility change: isHidden = ${hidden}`);\n\n if (this.stayAwakeVideo) {\n if (hidden) {\n if (this.isPlaying) {\n MessagesStoreModule.add('Hidden - video paused');\n this.stayAwakeVideo.pause();\n }\n } else {\n if (this.isPlaying) {\n MessagesStoreModule.add('Showing - video resumed');\n console.log('stayAwakeVideo.pause()')\n this.stayAwakeVideo.pause();\n console.log('stayAwakeVideo.load()')\n this.stayAwakeVideo.load();\n console.log('stayAwakeVideo.play()')\n this.stayAwakeVideo.play();\n console.log('stayAwakeVideo fine')\n\n }\n }\n }\n });\n\n this.stayAwakeVideo.addEventListener('loadedmetadata', () => {\n if (!this.stayAwakeVideo) {\n return;\n }\n if (this.stayAwakeVideo.duration && this.stayAwakeVideo.duration <= 1) {\n // webm source\n this.stayAwakeVideo.setAttribute('loop', '');\n } else {\n // mp4 source\n const localVideo = this.stayAwakeVideo;\n this.stayAwakeVideo.addEventListener('timeupdate', () => {\n if (localVideo.currentTime > 0.5) {\n localVideo.currentTime = Math.random();\n }\n });\n }\n });\n }\n\n enable() {\n if (this.stayAwakeVideo == null) {\n console.error('Video not available. Did you call \"init()\" before calling \"enable()\"?');\n }\n this.stayAwakeVideo?.play();\n this.isPlaying = true;\n }\n\n disable() {\n if (this.stayAwakeVideo == null) {\n console.error('Video not available. Did you call \"init()\" before calling \"disable()\"?');\n }\n this.stayAwakeVideo?.pause();\n this.isPlaying = false;\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport { authService } from '@/services/AuthService';\nimport NProgress from 'nprogress';\n\nimport StayAwake from './stayawake';\nimport { AuthenticationStoreModule } from '@/store/modules/authentication.store';\n\nimport { VERSION } from '@/app.version';\n\nconst stayAwake = new StayAwake();\n\n@Component({})\nexport default class TopToolbar extends Vue {\n stayAwakeEnabled = false;\n showMenu = false;\n\n //-- Service Worker update variables\n updateExists = false;\n refreshing = false;\n registration: ServiceWorkerRegistration | null = null;\n\n get applicationVersion() {\n return VERSION;\n }\n\n get buildDate() {\n return new Date(this.applicationVersion.buildDate);\n }\n\n get isLoggedIn() {\n return AuthenticationStoreModule.isLoggedIn;\n }\n\n get isAdministrator() {\n return AuthenticationStoreModule.isAdministrator;\n }\n\n get username() {\n return AuthenticationStoreModule.user?.profile?.name;\n }\n\n created() {\n stayAwake.init();\n\n document.addEventListener('swUpdated', this.showRefreshUI, { once: true });\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n if (this.refreshing) return;\n this.refreshing = true;\n window.location.reload();\n });\n }\n\n showRefreshUI(evt: Event) {\n const customEvent = evt as CustomEvent;\n this.registration = customEvent.detail as ServiceWorkerRegistration;\n this.updateExists = true;\n }\n\n refreshApp() {\n this.updateExists = false;\n if (!this.registration || !this.registration.waiting) {\n return;\n }\n this.registration.waiting.postMessage('SKIP_WAITING');\n }\n\n toggleStayAwake() {\n this.stayAwakeEnabled = !this.stayAwakeEnabled;\n if (this.stayAwakeEnabled) {\n stayAwake.enable();\n } else {\n stayAwake.disable();\n }\n }\n\n public login() {\n authService.login();\n }\n\n public logout() {\n authService.logout();\n }\n\n public clearData() {\n authService.clearData();\n }\n\n toggleMenu(): void {\n this.showMenu = !this.showMenu;\n }\n\n doNothing(): void {\n NProgress.start();\n }\n\n reload() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.getRegistrations().then(function(registrations) {\n for (const registration of registrations) {\n registration.update();\n }\n });\n }\n setTimeout(() => {\n window.location.reload(true);\n }, 1000);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopToolbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopToolbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TopToolbar.vue?vue&type=template&id=31f5ec01&\"\nimport script from \"./TopToolbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./TopToolbar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TopToolbar.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarItems } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VAppBarNavIcon,VBtn,VDivider,VList,VListItem,VListItemContent,VListItemSubtitle,VListItemTitle,VMenu,VNavigationDrawer,VSpacer,VToolbarItems,VToolbarTitle})\n","import store from '@/store';\nimport NProgress from 'nprogress';\n\nNProgress.configure({\n easing: 'ease',\n speed: 500,\n showSpinner: false,\n template:\n '
',\n});\n\nstore.watch(\n (state: any) => state.loader && state.loader.loading,\n (newVal: number, oldVal: number) => {\n if (newVal === 0) return NProgress.done();\n if (oldVal === 0) return NProgress.start();\n NProgress.set(1.8 / Math.max(oldVal, newVal));\n },\n);\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator';\nimport TopToolbar from './components/TopToolbar.vue';\nimport { MessagesStoreModule } from './store/modules/messages.store';\nimport { NotificationsStoreModule, INotification, NotificationType } from './store/modules/notifications.store';\n\nimport '@/services/Loader';\n\n@Component({\n components: {\n TopToolbar,\n },\n})\nexport default class App extends Vue {\n get notifications() {\n return NotificationsStoreModule.notifications;\n }\n async created() {\n await MessagesStoreModule.add('App Created');\n }\n\n colorFromNotificationType(notificationType: NotificationType) {\n switch (notificationType) {\n case NotificationType.Success:\n return 'success';\n case NotificationType.Warning:\n return 'warning';\n case NotificationType.Error:\n return 'error';\n default:\n return 'info';\n }\n }\n\n removeNotification(notification: INotification) {\n NotificationsStoreModule.remove(notification);\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=55d6cfda&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VContent } from 'vuetify/lib/components/VContent';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\ninstallComponents(component, {VApp,VBtn,VContainer,VContent,VSnackbar})\n","import './class-component-hooks';\n\nimport Vue from 'vue';\nimport vuetify from './plugins/vuetify';\n\nimport * as Sentry from '@sentry/browser';\nimport * as Integrations from '@sentry/integrations';\n\nimport './registerServiceWorker';\n\nif (process.env.NODE_ENV === 'production') {\n Sentry.init({\n dsn: 'https://8f8019b59e444015972afa88abfecf56@o296696.ingest.sentry.io/5198702',\n integrations: [new Integrations.Vue({ Vue, attachProps: true, logErrors: true })],\n });\n}\n\nimport { dateFilter } from 'vue-date-fns';\nVue.filter('date', dateFilter);\n\nimport VueTimeago from 'vue-timeago';\nVue.use(VueTimeago, {\n name: 'Timeago',\n locale: 'da',\n locales: {\n da: require('date-fns/locale/da'),\n },\n});\n\nimport linkify from 'vue-linkify';\nVue.directive('linkified', linkify);\n\nimport visibility from 'vue-visibility-change';\nVue.use(visibility);\n\nimport axios from 'axios';\n\nimport router from './router';\nimport rootStore from './store';\nimport { authService } from '@/services/AuthService';\nimport { AppStoreModule } from './store/modules/app.store';\nimport { AuthenticationStoreModule } from './store/modules/authentication.store';\nimport { MessagesStoreModule } from './store/modules/messages.store';\nimport { NotificationsStoreModule, NotificationType } from './store/modules/notifications.store';\n\nimport App from './App.vue';\nimport { LoaderStoreModule } from './store/modules/loader.store';\n\naxios.interceptors.request.use(\n async config => {\n LoaderStoreModule.start();\n\n const accessToken = rootStore.getters['authentication/accessToken'];\n if (accessToken != null) {\n config.headers.Authorization = `Bearer ${accessToken}`;\n }\n return config;\n },\n err => {\n LoaderStoreModule.finish();\n NotificationsStoreModule.add({ type: NotificationType.Error, message: err });\n return Promise.reject(err);\n },\n);\n\naxios.interceptors.response.use(\n async response => {\n LoaderStoreModule.finish();\n return response;\n },\n err => {\n LoaderStoreModule.finish();\n return Promise.reject(err);\n },\n);\n\nVue.config.productionTip = false;\n\nnew Vue({\n router,\n store: rootStore,\n vuetify,\n\n async created() {\n authService.init((events, userManager) => {\n events.addUserLoaded(user => {\n MessagesStoreModule.add(`auth> user loaded: ${user}`);\n AuthenticationStoreModule.setUser(user);\n });\n events.addUserUnloaded(() => {\n MessagesStoreModule.add('auth> user unloaded');\n AuthenticationStoreModule.clearUser();\n });\n events.addSilentRenewError(error => {\n MessagesStoreModule.add(`auth> silent renew error: ${error}`);\n AuthenticationStoreModule.clearUser();\n });\n events.addUserSignedOut(() => {\n MessagesStoreModule.add('auth> user signed out');\n AuthenticationStoreModule.clearUser();\n });\n events.addUserSessionChanged(() => MessagesStoreModule.add('auth> user session changed'));\n events.addAccessTokenExpiring((...args) => {\n MessagesStoreModule.add(`auth> access token expiring: ${args}`);\n userManager.signinSilent();\n });\n events.addAccessTokenExpired((...args) => {\n MessagesStoreModule.add(`auth> access token expired: ${args}`);\n userManager.signinSilent();\n });\n });\n\n await AuthenticationStoreModule.updateSessionStatus();\n AppStoreModule.loadInitialState();\n },\n\n render: h => h(App),\n}).$mount('#app');\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestRecipes.vue?vue&type=style&index=0&id=421e050d&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LatestRecipes.vue?vue&type=style&index=0&id=421e050d&lang=scss&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopToolbar.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/vuetify-loader/lib/loader.js??ref--20-0!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TopToolbar.vue?vue&type=style&index=0&lang=scss&\""],"sourceRoot":""}