{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?7e02","webpack:///./src/views/ElevationAPI.vue?96d8","webpack:///./src/views/Landing.vue?647f","webpack:///./src/views/Login.vue?e5a4","webpack:///./src/views/ElevationTokens.vue?8523","webpack:///./src/App.vue?df33","webpack:///./src/components/RestClient.vue?59fe","webpack:///./src/components/RestClient.vue","webpack:///./src/components/RestClient.vue?dac7","webpack:///./src/components/RestClient.vue?29d6","webpack:///./src/components/ConfirmDialog.vue?2221","webpack:///./src/components/ConfirmDialog.vue","webpack:///./src/components/ConfirmDialog.vue?1db7","webpack:///./src/components/ConfirmDialog.vue?9545","webpack:///./src/components/Navigation.vue?48b3","webpack:///./src/account.ts","webpack:///./src/components/Navigation.vue","webpack:///./src/components/Navigation.vue?3e2d","webpack:///./src/components/Navigation.vue?8f5e","webpack:///./src/version.ts","webpack:///./src/settings.ts","webpack:///./src/auths/google.ts","webpack:///./src/auths/line.ts","webpack:///./src/cookie.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?0ab4","webpack:///./src/App.vue?bff9","webpack:///./src/views/Landing.vue?8c80","webpack:///./src/views/Landing.vue","webpack:///./src/views/AuthCallback.vue?36fa","webpack:///./src/views/AuthCallback.vue","webpack:///./src/views/AuthCallback.vue?9730","webpack:///./src/views/AuthCallback.vue?ef5c","webpack:///./src/views/ElevationAPI.vue?7fd0","webpack:///./src/views/ElevationAPI.vue","webpack:///./src/views/ElevationAPI.vue?6377","webpack:///./src/views/ElevationAPI.vue?ffd5","webpack:///./src/views/Login.vue?6216","webpack:///./src/views/Login.vue","webpack:///./src/views/Login.vue?0a24","webpack:///./src/views/Login.vue?7b2b","webpack:///./src/views/Dashboard.vue?c391","webpack:///./src/access-token.ts","webpack:///./src/views/Dashboard.vue","webpack:///./src/views/Dashboard.vue?aebe","webpack:///./src/views/Dashboard.vue?ab86","webpack:///./src/views/ElevationTokens.vue?9df8","webpack:///./src/components/InputDialog.vue?6bf8","webpack:///./src/components/InputDialog.vue","webpack:///./src/components/InputDialog.vue?6957","webpack:///./src/components/InputDialog.vue?45a1","webpack:///./src/views/ElevationTokens.vue","webpack:///./src/views/ElevationTokens.vue?6a22","webpack:///./src/views/ElevationTokens.vue?4a42","webpack:///./src/views/ElevationUsage.vue?0104","webpack:///./src/views/ElevationUsage.vue","webpack:///./src/views/ElevationUsage.vue?91be","webpack:///./src/views/ElevationUsage.vue?1ef8","webpack:///./src/views/ElevationOruxMaps.vue?0fce","webpack:///./src/views/ElevationOruxMaps.vue","webpack:///./src/views/ElevationStats.vue","webpack:///./src/views/ElevationOruxMaps.vue?fb0a","webpack:///./src/views/ElevationOruxMaps.vue?5f21","webpack:///./src/views/ElevationStats.vue?42a9","webpack:///./src/views/ElevationStats.vue?056b","webpack:///./src/views/ElevationStats.vue?9cb5","webpack:///./src/router/index.ts","webpack:///./src/plugins/i18n.ts","webpack:///./src/plugins/logger.ts","webpack:///./src/main.ts","webpack:///./src/components/Navigation.vue?d4a3"],"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","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","ref","on","signOut","staticClass","_v","_s","$t","getVersion","staticRenderFns","staticStyle","_e","uuidv1","pending","method","uri","req","uuid","settings","url","contentType","beforeSend","xhr","setRequestHeader","token","success","status","ex","JSON","stringify","dataType","$","ajax","component","title","_m","class","positive","negative","onPositiveClick","text","onNegativeClick","el","$el","modal","show","action","active","$route","path","startsWith","avatar","$event","$emit","account","auths","params","redirect","json","assign","Account","avatarUrl","version","Version","time","Date","setUTCSeconds","Settings","client_id","restClient","redirect_uri","location","origin","session","encodeURIComponent","id","setCookie","val","date","setTime","getTime","cookie","toUTCString","getCookie","parts","split","popped","pop","deleteCookie","accessTokenCookie","auth","reload","$router","close","confirmDialog","onError","statusText","env","unmarshal","detail","request_id","option","google_client_id","line_client_id","credential","commit","components","RestClient","ConfirmDialog","Navigation","q","query","String","error_description","$parent","getAccount","state","preventDefault","submit","directives","rawName","expression","domProps","composing","longitude","center","lng","latitude","lat","elevation","map","reset","initMap","accessToken","mapbox_access_token","Map","container","style","zoom","addControl","NavigationControl","Marker","setLngLat","getCenter","addTo","refresh","is","Math","round","toFixed","jumpTo","_l","signIn","default","includes","issuedAt","issued_at","AccessToken","tokens","selectedToken","forEach","protocol","host","immediate","deep","showCreateDialog","index","showRenameDialog","showDeleteDialog","placeholder","input","select","focus","HTMLInputElement","count","inputDialog","createAccessToken","renameAccessToken","deleteAccessToken","scope","showMessage","decodeURIComponent","indexOf","v","InputDialog","selectedTokenName","selectedTokenValue","baseUrl","Mode","usages","size","selectedMode","selectionName","trial","selectToken","deleted","usage","toLocaleDateString","requests","elevations","Usage","num_requests","num_elevations","tokenIds","selectedTokenId","google","charts","load","setOnLoadCallback","tokenUsages","token_stats","keys","st","set","parseInt","total","unmarshalUsages","Total","Trial","Deleted","Token","draw","visualization","DataTable","addColumn","addRow","dateRange","getColumnRange","getNumberOfRows","oneDay","min","max","options","width","height","hAxis","format","viewWindow","vAxis","minValue","legend","position","materialChart","ScatterChart","getElementById","list","use","routes","Landing","AuthCallback","ElevationAPI","props","Dashboard","children","ElevationTokens","ElevationUsage","ElevationOruxMaps","ElevationStats","router","base","messages","privacy_policy","oops","api_error","permission_denied","report_error","report_error_submitted","auth_init_error","auth_error","sign_in","sign_in_with_google","sign_in_with_line","signing_in","sign_out","about","re_login","copy","view_details","coming_soon","elevation_api","elevation_api_summary","site_name","copyright","i18n","locale","fallbackLocale","isProduction","isEnabled","logLevel","stringifyArguments","showLogLevel","showMethodName","separator","showConsoleColors","config","productionTip","render","h","$mount"],"mappings":"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","file":"js/app.4301bcf4.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 CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\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\":\"1680bef7\"}[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// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"about\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"about\":\"about\"}[chunkId]||chunkId) + \".\" + {\"about\":\"d5714f66\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\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--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationAPI.vue?vue&type=style&index=0&id=db149c08&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationAPI.vue?vue&type=style&index=0&id=db149c08&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Landing.vue?vue&type=style&index=0&id=5b5151b4&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Landing.vue?vue&type=style&index=0&id=5b5151b4&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=13377bf8&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=13377bf8&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationTokens.vue?vue&type=style&index=0&id=3fe3b522&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationTokens.vue?vue&type=style&index=0&id=3fe3b522&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('ConfirmDialog',{ref:\"confirmDialog\"}),_c('Navigation',{on:{\"signOut\":_vm.signOut}}),_c('div',[_c('RestClient',{ref:\"restClient\",staticClass:\"fixed-top\"}),_c('router-view')],1),_c('footer',{staticClass:\"container mt-3\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('copyright'))+\" · \"),_c('router-link',{attrs:{\"to\":\"/privacy\"}},[_vm._v(_vm._s(_vm.$t('privacy_policy')))]),_vm._v(\" · \"),_vm._v(\" \"+_vm._s(_vm.getVersion)+\" \")],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 (_vm.pending)?_c('div',{staticClass:\"progress\",staticStyle:{\"height\":\"5px\",\"z-index\":\"1100\"}},[_c('div',{staticClass:\"progress-bar progress-bar-striped progress-bar-animated\",staticStyle:{\"width\":\"100%\"},attrs:{\"role\":\"progressbar\",\"aria-valuenow\":\"75\",\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\nimport { Vue, Component } from 'vue-property-decorator'\nconst uuidv1 = require('uuid/v1')\nimport 'jquery'\n\nexport type ErrorHandler = (uuid: string, s: JQueryAjaxSettings, xhr: JQueryXHR, status: string, ex: string) => boolean\n\n@Component\nexport default class RestClient extends Vue {\n pending!: boolean\n error?: ErrorHandler\n token?: string\n data() {\n return {\n pending: false,\n }\n }\n request(method: string, uri: string, req: any, success: (data: any, status: string, xhr: JQueryXHR) => any, error?: ErrorHandler) {\n let uuid = uuidv1()\n var settings: JQueryAjaxSettings = {\n type: method,\n url: uri,\n contentType: \"application/json\",\n beforeSend: (xhr: JQueryXHR) => {\n xhr.setRequestHeader('X-REQUEST-ID', uuid)\n if (this.token) {\n xhr.setRequestHeader(\"Authorization\", 'Bearer ' + this.token)\n }\n },\n success: (data: any, status: string, xhr: JQueryXHR): any => {\n this.pending = false\n success(data, status, xhr)\n } ,\n error: (xhr: JQueryXHR, status: string, ex: string) => {\n this.pending = false\n if (xhr.status == 200) {\n success(null, status, xhr)\n } else if (error) {\n if (!error(uuid, settings, xhr, status, ex) && this.error) {\n this.error(uuid, settings, xhr, status, ex)\n }\n } else if (this.error) {\n this.error(uuid, settings, xhr, status, ex)\n }\n },\n }\n if (req) {\n settings.data = JSON.stringify(req)\n settings.dataType = 'json'\n }\n $.ajax(settings)\n this.pending = true\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RestClient.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RestClient.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RestClient.vue?vue&type=template&id=0bf30592&\"\nimport script from \"./RestClient.vue?vue&type=script&lang=ts&\"\nexport * from \"./RestClient.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',{staticClass:\"modal fade\",attrs:{\"tabindex\":\"-1\",\"role\":\"dialog\",\"aria-hidden\":\"true\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[(_vm.title)?_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(_vm._s(_vm.title))]),_vm._m(0)]):_vm._e(),_c('div',{staticClass:\"modal-body\",class:{'mt-3': !_vm.title}},[_c('p',[_vm._v(_vm._s(_vm.message))])]),(_vm.positive || _vm.negative)?_c('div',{staticClass:\"modal-footer\"},[(_vm.positive)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onPositiveClick}},[_vm._v(_vm._s(_vm.positive.text))]):_vm._e(),(_vm.negative)?_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onNegativeClick}},[_vm._v(_vm._s(_vm.negative.text))]):_vm._e()]):_vm._e()])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])}]\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, Prop, Vue } from 'vue-property-decorator';\n\nexport interface ConfirmOption {\n text: string\n action: () => void\n}\n\n@Component\nexport default class ConfirmDialog extends Vue {\n title?: string\n message?: string\n positive?: ConfirmOption\n negative?: ConfirmOption\n data() {\n return {\n title: null,\n message: null,\n positive: null,\n negative: null,\n }\n }\n show(title?: string, message?: string, positive?: ConfirmOption, negative?: ConfirmOption) {\n this.title = title\n this.message = message\n this.positive = positive\n this.negative = negative\n var el: any = $(this.$el)\n el.modal('show')\n }\n showMessage(message: string) {\n this.show(undefined, message)\n }\n onPositiveClick() {\n if (this.positive) {\n this.positive.action()\n }\n }\n onNegativeClick() {\n if (this.negative) {\n this.negative.action()\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/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/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=4116533e&\"\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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"navbar navbar-expand navbar-dark flex-row bd-navbar\"},[_c('router-link',{staticClass:\"navbar-brand mr-2\",attrs:{\"to\":\"/\",\"aria-label\":_vm.$t('site_name')}},[_c('img',{attrs:{\"src\":\"/assets/img/logo-border.svg\",\"alt\":\"\",\"width\":\"36\",\"height\":\"36\"}})]),_c('ul',{staticClass:\"navbar-nav bd-navbar-nav flex-row mr-auto\"},[(_vm.account)?_c('li',{staticClass:\"nav-item\",class:{active: _vm.$route.path.startsWith('/dashboard')}},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":\"/dashboard\"}},[_vm._v(\"主控台\")])],1):_vm._e(),_c('li',{staticClass:\"nav-item\",class:{active: _vm.$route.path.startsWith('/about')}},[_c('router-link',{staticClass:\"nav-link\",attrs:{\"to\":\"/about\"}},[_vm._v(_vm._s(_vm.$t('about')))])],1)]),(_vm.account)?_c('div',{staticClass:\"navbar-nav btn-group\"},[_c('a',{staticClass:\"nav-link dropdown-toggle\",attrs:{\"href\":\"#\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[(_vm.account)?_c('img',{staticClass:\"avatar\",attrs:{\"src\":_vm.avatar}}):_c('div',{staticClass:\"spinner-border text-primary avatar-loading\",attrs:{\"role\":\"status\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Loading...\")])])]),_c('div',{staticClass:\"dropdown-menu dropdown-menu-right\"},[_c('button',{staticClass:\"dropdown-item\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.$emit('signOut')}}},[_vm._v(_vm._s(_vm.$t('sign_out', {account: _vm.account ? _vm.account.name : null})))])])]):(_vm.auths && _vm.auths.length > 0 && _vm.$route.path != '/login')?_c('router-link',{staticClass:\"btn btn-bd-download\",attrs:{\"to\":{name: 'login', params: {redirect: _vm.$route.path}}}},[_vm._v(_vm._s(_vm.$t('sign_in')))]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default class Account {\n name?: string\n givenName?: string\n familyName?: string\n avatarUrl?: string\n email?: string\n static unmarshal(json: any): Account | undefined {\n if (!json) {\n return undefined\n }\n var account = Object.assign(new Account(), json)\n return account\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, InjectReactive, Vue } from 'vue-property-decorator'\nimport Auth from \"../auth\"\nimport Account from \"../account\"\n\n@Component\nexport default class Navigation extends Vue {\n $log: any\n @InjectReactive() auths?: Auth[]\n @InjectReactive() account?: Account\n get avatar() {\n if (this.account && this.account.avatarUrl) {\n return this.account.avatarUrl\n } else {\n return '/assets/img/default_avatar.png'\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Navigation.vue?vue&type=template&id=a37e4584&scoped=true&\"\nimport script from \"./Navigation.vue?vue&type=script&lang=ts&\"\nexport * from \"./Navigation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Navigation.vue?vue&type=style&index=0&id=a37e4584&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a37e4584\",\n null\n \n)\n\nexport default component.exports","export default class Version {\n commit?: string\n tag?: string\n static unmarshal(json: any): Version | undefined {\n if (!json) {\n return undefined\n }\n var version = Object.assign(new Version(), json)\n if (json.time) {\n version.time = new Date(0)\n version.time.setUTCSeconds(json.time)\n }\n return version\n }\n}\n","export default class Settings {\n google_client_id!: string\n line_client_id!: string\n mapbox_access_token!: string\n static unmarshal(json: any): Settings | undefined {\n if (!json) {\n return undefined\n }\n var settings = Object.assign(new Settings(), json)\n return settings\n }\n}\n","import Auth from '../auth'\nimport RestClient from \"../components/RestClient.vue\"\n\nexport default class GoogleAuth implements Auth {\n name = 'google'\n client_id: string\n restClient: RestClient\n constructor(client_id: string, restClient: RestClient) {\n this.client_id = client_id\n this.restClient = restClient\n }\n signIn(redirect: string) {\n let redirect_uri = window.location.origin + '/authcb/google'\n this.restClient.request(\"POST\", \"/v1/sessions\", {redirect_uri: redirect_uri, redirect: redirect}, (session: any) => {\n window.location.href = 'https://accounts.google.com/o/oauth2/v2/auth?' +\n 'scope=openid%20profile%20email&' +\n 'state=' + encodeURIComponent(session.id) + '&' +\n 'redirect_uri=' + encodeURIComponent(redirect_uri) + '&' +\n 'response_type=code&' +\n 'client_id=' + this.client_id\n })\n }\n signOut() {\n let p = new Promise((resolve) => {\n resolve()\n })\n return p\n }\n}\n","import Auth from '../auth'\nimport RestClient from \"../components/RestClient.vue\"\n\nexport default class LINEAuth implements Auth {\n name = 'line'\n client_id: string\n restClient: RestClient\n constructor(client_id: string, restClient: RestClient) {\n this.client_id = client_id\n this.restClient = restClient\n }\n signIn(redirect: string) {\n let redirect_uri = window.location.origin + '/authcb/line'\n this.restClient.request(\"POST\", \"/v1/sessions\", {redirect_uri: redirect_uri, redirect: redirect}, (session: any) => {\n window.location.href = 'https://access.line.me/oauth2/v2.1/authorize?' +\n 'response_type=code&' +\n 'client_id=' + this.client_id + '&' +\n 'redirect_uri=' + encodeURIComponent(redirect_uri) + '&' +\n 'state=' + encodeURIComponent(session.id) + '&' +\n 'scope=openid%20profile'\n })\n }\n signOut() {\n let p = new Promise((resolve) => {\n resolve()\n })\n return p\n }\n}\n","/*\n * General utils for managing cookies in Typescript.\n */\nexport function setCookie(name: string, val: string) {\n const date = new Date();\n const value = val;\n\n // Set it expire in 7 days\n date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000));\n\n // Set it\n document.cookie = name+\"=\"+value+\"; expires=\"+date.toUTCString()+\"; path=/\";\n}\n\nexport function getCookie(name: string) {\n const value = \"; \" + document.cookie;\n const parts = value.split(\"; \" + name + \"=\");\n \n if (parts.length == 2) {\n let popped = parts.pop();\n if (popped) {\n return popped.split(\";\").shift();\n }\n }\n}\n\nexport function deleteCookie(name: string) {\n const date = new Date();\n\n // Set it expire in -1 days\n date.setTime(date.getTime() + (-1 * 24 * 60 * 60 * 1000));\n\n // Set it\n document.cookie = name+\"=; expires=\"+date.toUTCString()+\"; path=/\";\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, Ref, Prop, Provide, ProvideReactive, Vue, Watch } from \"vue-property-decorator\"\nimport jQuery from \"jquery\"\nimport RestClient from \"./components/RestClient.vue\"\nimport ConfirmDialog from \"./components/ConfirmDialog.vue\"\nimport Navigation from \"./components/Navigation.vue\"\nimport Version from \"./version\"\nimport Settings from \"./settings\"\nimport Auth from \"./auth\"\nimport GoogleAuth from \"./auths/google\"\nimport LINEAuth from \"./auths/line\"\nimport Account from \"./account\"\nimport { getCookie, setCookie, deleteCookie } from \"./cookie\"\nconst accessTokenCookie = '_osl_access_token'\n\n@Component({\n components: {\n RestClient,\n ConfirmDialog,\n Navigation,\n }\n})\nexport default class App extends Vue {\n $log: any\n $t: any\n @ProvideReactive() @Ref(\"restClient\") readonly restClient!: RestClient\n @Ref(\"confirmDialog\") readonly confirmDialog!: ConfirmDialog\n @ProvideReactive() version?: Version\n @ProvideReactive() settings?: Settings\n @ProvideReactive() auths: Auth[] = []\n @ProvideReactive() account?: Account\n data() {\n return {\n version: null,\n settings: null,\n auth: null,\n account: null,\n }\n }\n mounted() {\n this.restClient.error = (uuid: string, s: JQueryAjaxSettings,xhr: JQueryXHR, status: string, ex: string): boolean => {\n if (xhr.status == 401) {\n deleteCookie(accessTokenCookie)\n this.restClient.token = undefined\n this.account = undefined\n let reload = {\n text: this.$t('re_login'),\n action: () => {\n this.$router.push({name: 'login', params: {redirect: this.$route.path}})\n }\n }\n let close = {\n text: this.$t('close'),\n action: () => {}\n }\n this.confirmDialog.show(undefined, this.$t('permission_denied'), reload, close)\n } else {\n this.onError(this.$t('api_error', {code: xhr.status, status: xhr.statusText}), JSON.stringify(s), uuid)\n }\n return true\n }\n this.restClient.request(\"GET\", \"/v1/environment\", null, env => {\n this.version = Version.unmarshal(env.version)\n this.settings = Settings.unmarshal(env.settings)\n })\n let token = getCookie(accessTokenCookie)\n if (token) {\n this.restClient.token = token\n this.restClient.request(\"GET\", \"/v1/accounts\", null, (json: any) => {\n this.account = Account.unmarshal(json)\n })\n }\n }\n onError(message: string, detail: string, request_id?: string) {\n var error = {\n message: message,\n detail: detail,\n request_id: request_id,\n }\n let option = {\n text: this.$t('report_error'),\n action: () => {\n this.restClient.request(\"POST\", \"/v1/error_reports\", error, data => {\n this.confirmDialog.show(\"\", this.$t('report_error_submitted'))\n })\n }\n }\n this.confirmDialog.show(this.$t('oops'), message, option)\n }\n @Watch('settings')\n init() {\n if (this.settings) {\n var auths = []\n auths.push(new GoogleAuth(this.settings.google_client_id, this.restClient))\n auths.push(new LINEAuth(this.settings.line_client_id, this.restClient))\n this.auths = auths\n }\n }\n get getVersion() {\n if (this.version) {\n if (this.version.tag) {\n return this.version.tag\n } else if (this.version.commit) {\n return '('+this.version.commit+')'\n }\n }\n return '(development version)'\n }\n getAccount(auth: string, credential: any) {\n this.restClient.request(\"POST\", \"/v1/accounts?auth=\" + auth, credential, (json: any) => {\n this.account = Account.unmarshal(json)\n if (json.token) {\n this.restClient.token = json.token\n setCookie(accessTokenCookie, json.token)\n }\n if (json.session) {\n if (json.session.redirect) {\n this.$router.push(json.session.redirect)\n }\n }\n })\n }\n signOut() {\n deleteCookie(accessTokenCookie)\n this.account = undefined\n this.$router.push('/')\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/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/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=5c7e109b&\"\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=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n 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('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"container marketing mt-5\"},[_vm._m(0),_c('hr',{staticClass:\"featurette-divider d-none d-lg-block\"}),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-4\"},[_c('img',{staticClass:\"avatar mb-2\",attrs:{\"src\":\"/assets/img/taiwan_terrain.png\",\"width\":\"120\",\"height\":\"120\"}}),_c('h2',[_vm._v(_vm._s(_vm.$t('elevation_api')))]),_c('p',[_vm._v(_vm._s(_vm.$t('elevation_api_summary')))]),_c('p',[_c('router-link',{staticClass:\"btn btn-primary\",attrs:{\"to\":\"/elevation_api\",\"role\":\"button\"}},[_vm._v(_vm._s(_vm.$t('view_details')))])],1),_c('hr',{staticClass:\"featurette-divider d-lg-none\"})]),_c('div',{staticClass:\"col-lg-4\"},[_c('svg',{staticClass:\"bd-placeholder-img rounded-circle mb-2\",attrs:{\"width\":\"120\",\"height\":\"120\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"preserveAspectRatio\":\"xMidYMid slice\",\"focusable\":\"false\",\"role\":\"img\",\"aria-label\":\"Placeholder: 140x140\"}},[_c('rect',{attrs:{\"width\":\"100%\",\"height\":\"100%\",\"fill\":\"#777\"}}),_c('text',{attrs:{\"x\":\"50%\",\"y\":\"50%\",\"fill\":\"#777\",\"dy\":\".3em\"}},[_vm._v(\"160x160\")])]),_c('h2',[_vm._v(\"航跡管理器\")]),_c('p',[_vm._v(\"實現航跡修正演算法的實驗性服務,採用內政部20公尺網格DTM進行基礎修正,佐以其它數值分析方法。網站同時提供航跡短連結等功能,方便用戶快速分享航跡。\")]),_c('p',[_c('a',{staticClass:\"btn btn-primary\",attrs:{\"href\":\"https://mymap.tw\",\"role\":\"button\"}},[_vm._v(_vm._s(_vm.$t('view_details')))])]),_c('hr',{staticClass:\"featurette-divider d-lg-none\"})]),_c('div',{staticClass:\"col-lg-4\"},[_c('img',{staticClass:\"mb-2\",attrs:{\"src\":\"/assets/img/ic_launcher_dija.png\",\"width\":\"120\",\"height\":\"120\"}}),_c('h2',[_vm._v(\"Dija 抵家\")]),_c('span',{staticClass:\"badge badge-secondary\"},[_vm._v(\"已退役\")]),_vm._m(1),_c('p',[_c('a',{staticClass:\"btn btn-primary\",attrs:{\"href\":\"http://dijadijala.appspot.com/about.html\",\"role\":\"button\"}},[_vm._v(_vm._s(_vm.$t('view_details')))]),_c('a',{staticClass:\"btn btn-primary ml-1\",attrs:{\"href\":\"https://outdoorsafetylab.blogspot.com/2017/05/blog-post.html\",\"role\":\"button\"}},[_vm._v(\"實測紀錄 »\")])]),_c('hr',{staticClass:\"featurette-divider d-lg-none\"})])]),_c('hr',{staticClass:\"featurette-divider d-none d-lg-block\"})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg-4\"},[_c('img',{staticClass:\"mb-2\",attrs:{\"src\":\"/assets/img/big_icon_compass.png\",\"width\":\"120\",\"height\":\"120\"}}),_c('h2',[_vm._v(\"台灣大地羅盤\")]),_c('span',{staticClass:\"badge badge-success\"},[_vm._v(\"40K活躍用戶\")]),_c('span',{staticClass:\"badge badge-primary ml-1\"},[_vm._v(\"山友推薦\")]),_c('span',{staticClass:\"badge badge-warning ml-1\"},[_vm._v(\"消防認證\")]),_c('span',{staticClass:\"badge badge-danger ml-1\"},[_vm._v(\"新聞熱搜\")]),_c('p',[_vm._v(\"登山必備的安全幫手,快速自我定位並立即以簡訊或其它方式傳送位置!另外提供座標轉換工具,自由轉換GPS座標,地圖方格座標及電線桿座標。\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.ubiris.twdcompass&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1\"}},[_c('img',{attrs:{\"alt\":\"Google Play立即下載\",\"src\":\"https://play.google.com/intl/en_us/badges/static/images/badges/zh-tw_badge_web_generic.png\",\"height\":\"60\"}})]),_c('a',{attrs:{\"href\":\"https://apps.apple.com/tw/app/compass-and-coordinate-tool/id1510306428\"}},[_c('img',{attrs:{\"alt\":\"App Store立即下載\",\"src\":\"https://developer.apple.com/app-store/marketing/guidelines/images/badge-example-preferred.png\",\"height\":\"40\"}})])]),_c('hr',{staticClass:\"featurette-divider d-lg-none\"})]),_c('div',{staticClass:\"col-lg-4\"},[_c('img',{staticClass:\"mb-2\",attrs:{\"src\":\"/assets/img/big_icon_spot_weather.png\",\"width\":\"120\",\"height\":\"120\"}}),_c('h2',[_vm._v(\"台灣登山氣象\")]),_c('span',{staticClass:\"badge badge-success\"},[_vm._v(\"64K活躍用戶\")]),_c('span',{staticClass:\"badge badge-danger ml-1\"},[_vm._v(\"2018資料創新競賽銅獎\")]),_c('p',[_vm._v(\"即時查詢所在地周邊山岳的天氣預報,或儲存為離線天氣預報,亦可自定縱走行程並展開每日天氣預報。使用非常精簡的網路流量,為您在登山行程中提供重要決策資訊。\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=com.outdoorsafetylab.twmtcast&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1\"}},[_c('img',{attrs:{\"alt\":\"Google Play立即下載\",\"src\":\"https://play.google.com/intl/en_us/badges/static/images/badges/zh-tw_badge_web_generic.png\",\"height\":\"60\"}})])]),_c('hr',{staticClass:\"featurette-divider d-lg-none\"})]),_c('div',{staticClass:\"col-lg-4\"},[_c('img',{staticClass:\"mb-2\",attrs:{\"src\":\"/assets/img/big_icon_map_manager.png\",\"width\":\"120\",\"height\":\"120\"}}),_c('h2',[_vm._v(\"地圖管理器\")]),_c('span',{staticClass:\"badge badge-success\"},[_vm._v(\"4K活躍用戶\")]),_c('p',[_vm._v(\"安裝 OruxMaps 離線地圖不再是場惡夢!提供魯地圖及世界各國地圖,並支援新版本推播通知讓您保持最新圖資。\")]),_c('p',[_c('a',{attrs:{\"href\":\"https://play.google.com/store/apps/details?id=org.outdoorsafetylab.mapmanager&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1\"}},[_c('img',{attrs:{\"alt\":\"Google Play立即下載\",\"src\":\"https://play.google.com/intl/en_us/badges/static/images/badges/zh-tw_badge_web_generic.png\",\"height\":\"60\"}})])]),_c('hr',{staticClass:\"featurette-divider d-lg-none\"})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"2017公民科技創新的\"),_c('a',{attrs:{\"href\":\"https://grants.g0v.tw/projects/58876f6d29941d001ebebecd\"}},[_vm._v(\"提案計畫\")]),_vm._v(\",雖然沒有入選但仍持續執行。由於主客觀條件持續無法到位,於2018年初終止維護,其執行成果也陸續獨立為現在的台灣登山氣象及地圖管理器。\")])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Landing.vue?vue&type=template&id=5b5151b4&scoped=true&\"\nvar script = {}\nimport style0 from \"./Landing.vue?vue&type=style&index=0&id=5b5151b4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5b5151b4\",\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('form',{staticClass:\"form-signin text-center mt-5\"},[_c('img',{staticClass:\"mb-4\",attrs:{\"src\":\"/assets/img/logo.svg\",\"alt\":\"\",\"width\":\"128\",\"height\":\"128\"}}),_c('p',{staticClass:\"mt-5 mb-3 text-muted\"},[_vm._v(_vm._s(_vm.$t('signing_in')))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\nimport { Component, Vue, InjectReactive, Watch } from 'vue-property-decorator'\nimport App from \"../App.vue\"\nimport RestClient from \"../components/RestClient.vue\"\n\n@Component\nexport default class MyComponent extends Vue {\n $log: any\n $t: any\n $parent!: App\n @InjectReactive() restClient!: RestClient\n mounted() {\n let q = this.$route.query\n if (q.error) {\n var message = String(q.error)\n if (q.error_description) {\n message = String(q.error_description)\n }\n this.$parent.onError(this.$t('auth_error'), message)\n } else {\n let auth = this.$route.params.auth\n this.$parent.getAccount(auth, {session: q.state, code: q.code})\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthCallback.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuthCallback.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AuthCallback.vue?vue&type=template&id=31bd638f&\"\nimport script from \"./AuthCallback.vue?vue&type=script&lang=ts&\"\nexport * from \"./AuthCallback.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('main',{attrs:{\"role\":\"main\"}},[_c('div',{staticClass:\"jumbotron\"},[_c('div',{staticClass:\"container\"},[_c('h1',{staticClass:\"display-4\"},[_vm._v(_vm._s(_vm.$t('elevation_api')))]),_vm._m(0)])]),_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_vm._m(1),_vm._m(2),_c('div',{staticClass:\"col-md-4\"},[_c('h2',[_vm._v(\"免費+開源\")]),_vm._m(3),_c('p',[_vm._v(\"使用服務前須先\"),(_vm.account)?_c('router-link',{attrs:{\"to\":{name: 'elevation_tokens'}}},[_vm._v(\"建立 API 金鑰\")]):_c('router-link',{attrs:{\"to\":{name: 'login', params: {redirect: _vm.$route.path}}}},[_vm._v(\"登入並建立 API 金鑰\")]),_vm._v(\".\")],1)])]),_c('hr'),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_c('h2',[_vm._v(\"線上試用\")]),_c('p',[_vm._v(\"移動地圖即可查詢中心座標的對應高程, 也可以直接在下面欄位中輸入經緯度. \"),(!_vm.account)?_c('router-link',{attrs:{\"to\":{name: 'login', params: {redirect: _vm.$route.path}}}},[_vm._v(\"試用前請先登入.\")]):_vm._e()],1),(_vm.center)?_c('form',{staticClass:\"mb-2\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-row\"},[_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"inputLon\"}},[_vm._v(\"經度\")]),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.longitude),expression:\"longitude\"}],staticClass:\"form-control\",attrs:{\"type\":\"decimal\",\"id\":\"inputLon\",\"disabled\":!_vm.account},domProps:{\"value\":(_vm.longitude)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.longitude=$event.target.value}}}),(_vm.longitude != _vm.center.lng)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.submit}},[_vm._v(\"更新\")])]):_vm._e()])]),_c('div',{staticClass:\"form-group col-md-6\"},[_c('label',{attrs:{\"for\":\"inputLat\"}},[_vm._v(\"緯度\")]),_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.latitude),expression:\"latitude\"}],staticClass:\"form-control\",attrs:{\"type\":\"decimal\",\"id\":\"inputLat\",\"disabled\":!_vm.account},domProps:{\"value\":(_vm.latitude)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.latitude=$event.target.value}}}),(_vm.latitude != _vm.center.lat)?_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-outline-primary\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.submit}},[_vm._v(\"更新\")])]):_vm._e()])])]),_c('label',{attrs:{\"for\":\"inputLat\"}},[_c('span',[_vm._v(\"高程 (公尺)\")]),(_vm.account && _vm.pending)?_c('span',{staticClass:\"ml-1 spinner-border text-primary\",attrs:{\"role\":\"status\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"正在查詢...\")])]):_vm._e()]),_c('input',{staticClass:\"form-control\",attrs:{\"type\":\"decimal\",\"id\":\"inputLat\",\"readonly\":\"\"},domProps:{\"value\":_vm.elevation ? _vm.elevation : '無資料'}}),_c('button',{staticClass:\"d-none\",attrs:{\"type\":\"submit\"}})]):_vm._e()]),_c('div',{staticClass:\"col-md-6\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.account),expression:\"account\"}],attrs:{\"id\":\"map\"}}),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.account),expression:\"!account\"}],attrs:{\"id\":\"preivew\",\"src\":\"/assets/img/map_preview.png\"}})])]),_c('hr')])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"以\"),_c('a',{attrs:{\"href\":\"https://data.gov.tw/dataset/103884\"}},[_vm._v(\"內政部20公尺網格DTM資料\")]),_vm._v(\"為基礎, 提供高程 (elevation) 查詢的雲端服務. 為響應政府開放資料 (OpenData) 精神, 同時亦\"),_c('a',{attrs:{\"href\":\"https://github.com/outdoorsafetylab/moidemd\"}},[_vm._v(\"公開原始碼\")]),_vm._v(\"可供自行建置服務.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-4\"},[_c('h2',[_vm._v(\"API 規格\")]),_c('ul',[_c('li',[_c('a',{attrs:{\"href\":\"/elevation_api.html\"}},[_vm._v(\"OpenAPI 3.0\")])]),_c('li',[_vm._v(\"OruxMaps 高程服務相容界面\")]),_c('li',[_vm._v(\"grpc (計畫中...)\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-4\"},[_c('h2',[_vm._v(\"涵蓋範圍\")]),_c('ul',[_c('li',[_vm._v(\"台灣本島 (樂山管制區外)\")]),_c('li',[_vm._v(\"澎湖\")]),_c('li',[_vm._v(\"金門\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"少量免費使用\")]),_c('li',[_vm._v(\"大量使用請與我們聯絡以確保服務品質\")]),_c('li',[_vm._v(\"亦可利用\"),_c('a',{attrs:{\"href\":\"https://github.com/outdoorsafetylab/moidemd\"}},[_vm._v(\"本服務開源專案\")]),_vm._v(\"自行架設, 或直接使用我們建立好的 \"),_c('a',{attrs:{\"href\":\"https://hub.docker.com/r/outdoorsafetylab/moidemd\"}},[_vm._v(\"Docker 映像檔.\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport mapboxgl from 'mapbox-gl'\nimport { Component, InjectReactive, Vue, Watch } from 'vue-property-decorator'\nimport RestClient from \"../components/RestClient.vue\"\nimport Settings from \"../settings\"\nimport Account from \"../account\"\n\n@Component\nexport default class VueComponent extends Vue {\n $log: any\n @InjectReactive() settings!: Settings\n @InjectReactive() restClient!: RestClient\n @InjectReactive() account?: Account\n pending!: boolean\n map?: any\n center: any\n latitude?: number\n longitude?: number\n elevation?: string\n data() {\n return {\n pending: false,\n map: null,\n center: null,\n latitude: null,\n longitude: null,\n elevation: null,\n }\n }\n mounted() {\n this.reset()\n this.initMap()\n }\n @Watch('settings')\n @Watch('account')\n initMap() {\n if (this.account) {\n setTimeout(() => {\n if (!this.map && this.settings && this.account) {\n mapboxgl.accessToken = this.settings.mapbox_access_token\n var map = new mapboxgl.Map({\n container: \"map\",\n style: \"mapbox://styles/mapbox/outdoors-v11\",\n center: this.center, // starting position [lng, lat]\n zoom: 15, // starting zoom\n })\n map.addControl(new mapboxgl.NavigationControl())\n var center = new mapboxgl.Marker()\n center.setLngLat(map.getCenter()).addTo(map)\n map.on(\"move\", () => {\n this.center = map.getCenter()\n center.setLngLat(this.center)\n })\n map.on(\"load\", this.refresh)\n map.on(\"moveend\", this.refresh)\n this.map = map\n this.center = map.getCenter()\n }\n }, 0)\n } else {\n this.reset()\n }\n }\n @Watch('center')\n onCenter(val: any) {\n this.latitude = val.lat\n this.longitude = val.lng\n }\n reset() {\n this.center = {lng: 120.957283, lat: 23.47}\n this.elevation = undefined\n }\n refresh() {\n if (!$('#map').is(\":visible\")) {\n return\n }\n if (!this.account || this.pending) {\n return\n }\n var c = this.map.getCenter();\n this.restClient.request('POST', '/api/v1/elevations', [[c.lng, c.lat]], (data) => {\n this.pending = false\n var elevation = data[0]\n if (elevation) {\n this.elevation = (Math.round(elevation * 100) / 100).toFixed(2)\n } else {\n this.elevation = undefined\n }\n }, (): boolean => {\n this.pending = false\n return false\n })\n this.pending = true\n }\n submit() {\n this.map.jumpTo({center: {lng: this.longitude, lat: this.latitude}})\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationAPI.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationAPI.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ElevationAPI.vue?vue&type=template&id=db149c08&scoped=true&\"\nimport script from \"./ElevationAPI.vue?vue&type=script&lang=ts&\"\nexport * from \"./ElevationAPI.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ElevationAPI.vue?vue&type=style&index=0&id=db149c08&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"db149c08\",\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.account)?_c('form',{staticClass:\"form-signin text-center mt-5\"},[_c('img',{staticClass:\"mb-4\",attrs:{\"src\":\"/assets/img/logo.svg\",\"alt\":\"\",\"width\":\"128\",\"height\":\"128\"}}),_vm._l((_vm.auths),function(auth){return _c('button',{key:auth.name,staticClass:\"btn btn-lg btn-primary btn-block\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return auth.signIn(_vm.redirect)}}},[_vm._v(_vm._s(_vm.$t('sign_in_with_'+auth.name)))])})],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, InjectReactive, Vue, Watch } from 'vue-property-decorator'\nimport Auth from \"../auth\"\nimport Account from \"../account\"\n\n@Component\nexport default class Login extends Vue {\n $log: any\n @Prop({default: '/'}) redirect!: string\n @InjectReactive() auths?: Auth[]\n @InjectReactive() account?: Account\n @Watch('account')\n checkLogin() {\n if (this.account) {\n var redirect = this.redirect\n if (redirect == this.$route.path) {\n redirect = '/'\n }\n this.$router.push({path: redirect})\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=13377bf8&scoped=true&\"\nimport script from \"./Login.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=13377bf8&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13377bf8\",\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:\"container bg-light pb-3\"},[_c('div',{staticClass:\"row flex-xl-nowrap\"},[_c('div',{staticClass:\"col-12 col-md-3 col-xl-3 bd-sidebar\"},[_c('form',{staticClass:\"d-flex d-md-none align-items-center mt-2 mb-2\"},[_c('button',{staticClass:\"btn btn-link bd-search-docs-toggle p-0 ml-auto\",attrs:{\"type\":\"button\",\"data-toggle\":\"collapse\",\"data-target\":\"#bd-docs-nav\",\"aria-controls\":\"bd-docs-nav\",\"aria-expanded\":\"false\",\"aria-label\":\"Toggle docs navigation\"}},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"30\",\"height\":\"30\",\"viewBox\":\"0 0 30 30\",\"role\":\"img\",\"focusable\":\"false\"}},[_c('title',[_vm._v(\"Menu\")]),_c('path',{attrs:{\"stroke\":\"currentColor\",\"stroke-linecap\":\"round\",\"stroke-miterlimit\":\"10\",\"stroke-width\":\"2\",\"d\":\"M4 7h22M4 15h22M4 23h22\"}})])])]),_c('nav',{staticClass:\"collapse bd-links\",attrs:{\"id\":\"bd-docs-nav\"}},[_c('div',{staticClass:\"bd-toc-item\",class:{active: _vm.$route.path.includes('elevation')}},[_c('span',{staticClass:\"bd-toc-link\"},[_vm._v(_vm._s(_vm.$t('elevation_api')))]),_c('ul',{staticClass:\"nav bd-sidenav ml-3\"},[_c('li',{staticClass:\"bd-sidenav-active\",class:{active: _vm.$route.name == 'elevation_tokens'}},[_c('router-link',{attrs:{\"to\":\"elevation_tokens\"}},[_vm._v(\"存取金鑰\")])],1),_c('li',{class:{active: _vm.$route.name == 'elevation_usage'}},[_c('router-link',{attrs:{\"to\":\"elevation_usage\"}},[_vm._v(\"使用說明\")])],1),_c('li',{class:{active: _vm.$route.name == 'elevation_oruxmaps'}},[_c('router-link',{attrs:{\"to\":\"elevation_oruxmaps\"}},[_vm._v(\"OruxMaps\")])],1),_c('li',{class:{active: _vm.$route.name == 'elevation_stats'}},[_c('router-link',{attrs:{\"to\":\"elevation_stats\"}},[_vm._v(\"用量統計\")])],1)])])])]),_c('main',{staticClass:\"col-12 col-md-9 col-xl-9 py-md-3\",attrs:{\"role\":\"main\"}},[_c('router-view')],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default class AccessToken {\n id: string\n name: string\n token: string\n issuedAt: Date\n constructor(id: string, name: string, token: string, issuedAt: Date) {\n this.id = id\n this.name = name\n this.token = token\n this.issuedAt = issuedAt\n }\n static unmarshal(json: any): AccessToken | undefined {\n if (!json) {\n return undefined\n }\n var issuedAt = new Date(0)\n issuedAt.setUTCSeconds(json.issued_at)\n return new AccessToken(json.id, json.name, json.token, issuedAt)\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch, InjectReactive } from 'vue-property-decorator'\nimport RestClient from '../components/RestClient.vue'\nimport Account from '../account'\nimport AccessToken from '../access-token'\n\n@Component\nexport default class VueComponent extends Vue {\n $log: any\n @InjectReactive() account?: Account\n @InjectReactive() restClient!: RestClient\n tokens?: AccessToken[]\n selectedToken?: AccessToken\n data() {\n return {\n tokens: null,\n selectedToken: null,\n }\n }\n @Watch('$route', { immediate: true, deep: true })\n routed() {\n if (this.$route.path == '/dashboard') {\n this.$router.push('/dashboard/elevation_tokens')\n }\n }\n mounted() {\n this.refresh()\n }\n @Watch('tokens')\n invalidateSelectedToken() {\n if (this.tokens && this.selectedToken) {\n for (var i = 0 ; i < this.tokens.length; i++) {\n if (this.tokens[i].id == this.selectedToken.id) {\n return\n }\n }\n }\n this.selectedToken = undefined\n }\n @Watch('account')\n refresh() {\n if (this.account) {\n this.restClient.request('GET', '/v1/access_tokens?scope=' + encodeURIComponent('elevation:read'), null, (data) => {\n if (data.tokens) {\n var tokens: AccessToken[] = []\n data.tokens.forEach((json: any) => {\n let token = AccessToken.unmarshal(json)\n if (token) {\n tokens.push(token)\n }\n })\n this.tokens = tokens\n } else {\n this.tokens = []\n }\n })\n }\n }\n get baseUrl() {\n var url = window.location\n return url.protocol + \"//\" + url.host\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/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/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=7e9f8b25&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 \"7e9f8b25\",\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:\"p-3 pb-5 mt-3 mt-sm-0 bg-white shadow-sm\"},[_c('InputDialog',{ref:\"inputDialog\"}),_c('ConfirmDialog',{ref:\"confirmDialog\"}),_c('div',{staticClass:\"d-flex justify-content-between align-items-center border-bottom border-gray pb-2 mb-0\"},[_c('h3',{staticClass:\"mt-2\"},[_vm._v(\"存取金鑰\")]),(_vm.account)?_c('button',{staticClass:\"btn btn-primary \",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.showCreateDialog()}}},[_vm._v(\"新增金鑰...\")]):_vm._e()]),(!_vm.account)?_c('div',{staticClass:\"text-center mt-5 \"},[_vm._v(\"尚未登入\")]):(!_vm.tokens)?_c('div',{staticClass:\"text-center mt-5 \"},[_vm._m(0)]):(_vm.tokens.length <= 0)?_c('div',{staticClass:\"text-center mt-5 \"},[_vm._v(\"還沒有建立任何金鑰.\")]):_vm._l((_vm.tokens),function(token,index){return _c('div',{key:token.id,staticClass:\"pb-3 mb-0 lh-125 border-bottom border-gray\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center w-100\"},[_c('strong',{staticClass:\"text-gray-dark\",attrs:{\"data-toggle\":\"tooltip\",\"data-placement\":\"right\",\"title\":token.issuedAt}},[_vm._v(_vm._s(token.name))]),_c('div',{staticClass:\"dropdown\"},[_c('a',{staticClass:\"btn btn-link three-dots nounderline\",attrs:{\"id\":\"dropdownMenu2\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}}),_c('div',{staticClass:\"dropdown-menu dropdown-menu-right\",attrs:{\"aria-labelledby\":\"dropdownMenu2\"}},[_c('button',{staticClass:\"dropdown-item\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.showRenameDialog(token)}}},[_vm._v(\"重新命名\")]),_c('button',{staticClass:\"dropdown-item\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.showDeleteDialog(token)}}},[_vm._v(\"刪除\")])])])]),_c('div',{staticClass:\"bd-clipboard\"},[_c('button',{staticClass:\"btn btn-clipboard\",attrs:{\"data-clipboard-target\":'#accesstoken'+index}},[_vm._v(_vm._s(_vm.$t('copy')))])]),_c('figure',{staticClass:\"highlight\"},[_c('pre',[_c('code',{attrs:{\"id\":'accesstoken'+index}},[_vm._v(_vm._s(token.token))])])])])})],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spinner-border text-primary\",attrs:{\"role\":\"status\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Loading...\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"modal fade\",attrs:{\"tabindex\":\"-1\",\"role\":\"dialog\",\"aria-hidden\":\"true\"}},[_c('div',{staticClass:\"modal-dialog\",attrs:{\"role\":\"document\"}},[_c('div',{staticClass:\"modal-content\"},[(_vm.title)?_c('div',{staticClass:\"modal-header\"},[_c('h5',{staticClass:\"modal-title\"},[_vm._v(_vm._s(_vm.title))]),_vm._m(0)]):_vm._e(),_c('div',{staticClass:\"modal-body\",class:{'mt-3': !_vm.title}},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"}],ref:\"input\",staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.placeholder},domProps:{\"value\":(_vm.value)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.value=$event.target.value}}}),_c('button',{staticClass:\"d-none\",attrs:{\"type\":\"submit\"}})])]),(_vm.positive || _vm.negative)?_c('div',{staticClass:\"modal-footer\"},[(_vm.positive)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onPositiveClick}},[_vm._v(_vm._s(_vm.positive.text))]):_vm._e(),(_vm.negative)?_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onNegativeClick}},[_vm._v(_vm._s(_vm.negative.text))]):_vm._e()]):_vm._e()])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"data-dismiss\":\"modal\"}},[_c('span',{attrs:{\"aria-hidden\":\"true\"}},[_vm._v(\"×\")])])}]\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\nimport { Component, Prop, Vue, Ref } from 'vue-property-decorator';\n\nexport interface InputOption {\n text: string\n action: () => void\n}\n\n@Component\nexport default class InputDialog extends Vue {\n @Ref(\"input\") readonly input!: HTMLInputElement\n title?: string\n value?: string\n placeholder?: string\n positive?: InputOption\n negative?: InputOption\n data() {\n return {\n title: null,\n value: null,\n placeholder: null,\n positive: null,\n negative: null,\n }\n }\n show(title: string, value: string, placeholder: string, positive?: InputOption, negative?: InputOption) {\n this.title = title\n this.value = value\n this.placeholder = placeholder\n this.positive = positive\n this.negative = negative\n var el: any = $(this.$el)\n el.modal('show')\n el.on('shown.bs.modal', () => {\n this.input.select()\n this.input.focus()\n }) \n }\n submit() {\n this.onPositiveClick()\n var el: any = $(this.$el)\n el.modal('hide')\n }\n onPositiveClick() {\n if (this.positive) {\n this.positive.action()\n }\n }\n onNegativeClick() {\n if (this.negative) {\n this.negative.action()\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputDialog.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputDialog.vue?vue&type=template&id=59328a15&\"\nimport script from \"./InputDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, InjectReactive, Vue, Watch, Ref } from 'vue-property-decorator'\nimport Account from \"../account\"\nimport AccessToken from \"../access-token\"\nimport RestClient from \"../components/RestClient.vue\"\nimport InputDialog from \"../components/InputDialog.vue\"\nimport ConfirmDialog from \"../components/ConfirmDialog.vue\"\nimport Dashboard from './Dashboard.vue'\n\n@Component({\n components: {\n InputDialog,\n ConfirmDialog,\n }\n})\nexport default class VueComponent extends Vue {\n $log: any\n $parent!: Dashboard\n @Ref(\"inputDialog\") readonly inputDialog!: InputDialog\n @Ref(\"confirmDialog\") readonly confirmDialog!: ConfirmDialog\n get restClient() {\n return this.$parent.restClient\n }\n get account() {\n return this.$parent.account\n }\n get tokens(): AccessToken[] | undefined {\n return this.$parent.tokens\n }\n set tokens(v: AccessToken[] | undefined) {\n this.$parent.tokens = v\n }\n showCreateDialog() {\n var count = 0\n if (this.tokens) {\n count = this.tokens.length\n }\n this.inputDialog.show('新增金鑰', '金鑰'+(count+1), '例如: 我的金鑰',\n {text: '確定', action: () => { this.createAccessToken() }},\n {text: '取消', action: () => {}},\n )\n }\n showRenameDialog(token: AccessToken) {\n this.inputDialog.show('重新命名', token.name, '例如: 我的金鑰',\n {text: '確定', action: () => { this.renameAccessToken(token) }},\n {text: '取消', action: () => {}},\n )\n }\n showDeleteDialog(token: AccessToken) {\n this.confirmDialog.show(undefined, '確定要刪除金鑰 \"' + token.name + '\" 嗎?',\n {text: '確定', action: () => { this.deleteAccessToken(token) }},\n {text: '取消', action: () => {}},\n )\n }\n createAccessToken() {\n var req = {name: this.inputDialog.value, scope: 'elevation:read'}\n this.restClient.request('POST', '/v1/access_tokens', req, (data) => {\n let token = AccessToken.unmarshal(data)\n if (token) {\n if (this.tokens) {\n this.tokens.push(token)\n } else {\n this.tokens = [token]\n }\n }\n }, (uuid: string, s: JQueryAjaxSettings, xhr: JQueryXHR, status: string, ex: string): boolean => {\n if (xhr.status == 429) {\n this.confirmDialog.showMessage('已超過單一服務的金鑰數量上限')\n return true\n }\n return false\n })\n }\n renameAccessToken(token: AccessToken) {\n if (this.inputDialog.value) {\n var name = this.inputDialog.value\n var req = {id: token.id, name: name}\n this.restClient.request('PUT', '/v1/access_tokens', req, (data) => {\n token.name = name\n })\n }\n }\n deleteAccessToken(token: AccessToken) {\n this.restClient.request('DELETE', '/v1/access_tokens/' + decodeURIComponent(token.id), null, (data) => {\n if (this.tokens) {\n var index = this.tokens.indexOf(token)\n this.tokens.splice(index, 1)\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationTokens.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationTokens.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ElevationTokens.vue?vue&type=template&id=3fe3b522&scoped=true&\"\nimport script from \"./ElevationTokens.vue?vue&type=script&lang=ts&\"\nexport * from \"./ElevationTokens.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ElevationTokens.vue?vue&type=style&index=0&id=3fe3b522&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3fe3b522\",\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:\"p-3 pb-5 mt-3 mt-sm-0 bg-white shadow-sm\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center border-bottom border-gray pb-2 mb-0\"},[_c('h3',{staticClass:\"mt-2\"},[_vm._v(\"使用說明\")]),(_vm.account && _vm.tokens && _vm.tokens.length > 0)?_c('div',{staticClass:\"dropdown\"},[_c('button',{staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"type\":\"button\",\"id\":\"dropdownMenuButton\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_vm._v(\" \"+_vm._s(_vm.selectedTokenName)+\" \")]),_c('div',{staticClass:\"dropdown-menu\",attrs:{\"aria-labelledby\":\"dropdownMenuButton\"}},_vm._l((_vm.tokens),function(t){return _c('a',{key:t.id,staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.selectedToken = t}}},[_vm._v(_vm._s(t.name))])}),0)]):_vm._e()]),_c('div',{staticClass:\"mt-3\"},[_vm._m(0),_vm._m(1),_vm._m(2),_c('div',{staticClass:\"bd-clipboard\"},[_c('button',{staticClass:\"btn-clipboard\",attrs:{\"data-clipboard-target\":\"#bearer\"}},[_vm._v(_vm._s(_vm.$t('copy')))])]),_c('figure',{staticClass:\"highlight\"},[_c('pre',[_c('code',{staticClass:\"language-sh\",attrs:{\"id\":\"bearer\",\"data-lang\":\"sh\"}},[_vm._v(\"curl -X POST \\\\\\n -H \\\"Authorization: Bearer \"+_vm._s(_vm.selectedTokenValue)+\"\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '[[120.957283,23.47]]' \\\\\\n \"+_vm._s(_vm.baseUrl)+\"/api/v1/elevations\")])])]),_vm._m(3),_c('div',{staticClass:\"bd-clipboard\"},[_c('button',{staticClass:\"btn-clipboard\",attrs:{\"data-clipboard-target\":\"#query\"}},[_vm._v(_vm._s(_vm.$t('copy')))])]),_c('figure',{staticClass:\"highlight\"},[_c('pre',[_c('code',{staticClass:\"language-sh\",attrs:{\"id\":\"query\",\"data-lang\":\"sh\"}},[_vm._v(\"curl -X POST \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '[[120.957283,23.47]]' \\\\\\n \"+_vm._s(_vm.baseUrl)+\"/api/v1/elevations?access_token=\"+_vm._s(_vm.selectedTokenValue))])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"完整的通訊協定規格請參考 \"),_c('a',{attrs:{\"href\":\"/elevation_api.html\"}},[_vm._v(\"OpenAPI 3.0 規格書\")]),_vm._v(\", 亦可下載 \"),_c('a',{attrs:{\"href\":\"/assets/api/elevation-api-v1.yaml\"}},[_vm._v(\"YAML 定義檔\")]),_vm._v(\"並以\"),_c('a',{attrs:{\"href\":\"https://github.com/OpenAPITools/openapi-generator\"}},[_vm._v(\"程式產生器\")]),_vm._v(\"產生不同平台及語言的客戶端. 但通訊協定相當簡單, 因此只要使用非常基本的 REST 方式來調用即可.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"本服務的金鑰機制為 \"),_c('a',{attrs:{\"href\":\"https://swagger.io/docs/specification/authentication/bearer-authentication/\"}},[_vm._v(\"Bearer Token\")]),_vm._v(\", 支援以 HTTP 的 \"),_c('code',[_vm._v(\"Authorization\")]),_vm._v(\" 標頭帶入, 或以 URL Query 的 \"),_c('code',[_vm._v(\"access_token\")]),_vm._v(\" 值帶入兩種方式.\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"例如若要透過 \"),_c('code',[_vm._v(\"curl\")]),_vm._v(\" 指令查詢玉山的高程, 使用 \"),_c('code',[_vm._v(\"Authorization\")]),_vm._v(\" 的方法為:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"使用 \"),_c('code',[_vm._v(\"access_token\")]),_vm._v(\" 的方法則為:\")])}]\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\nimport { Component, Vue } from 'vue-property-decorator'\nimport Dashboard from './Dashboard.vue'\nimport AccessToken from '../access-token'\n\n@Component\nexport default class VueComponent extends Vue {\n $parent!: Dashboard\n get baseUrl() {\n return this.$parent.baseUrl\n }\n get account() {\n return this.$parent.account\n }\n get tokens() {\n return this.$parent.tokens\n }\n get selectedToken(): AccessToken | undefined {\n return this.$parent.selectedToken\n }\n set selectedToken(v: AccessToken | undefined) {\n this.$parent.selectedToken = v\n }\n get selectedTokenName() {\n return this.selectedToken ? this.selectedToken.name : '帶入金鑰...'\n }\n get selectedTokenValue() {\n return this.selectedToken ? this.selectedToken.token : '<金鑰值>'\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationUsage.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationUsage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ElevationUsage.vue?vue&type=template&id=84350e0e&scoped=true&\"\nimport script from \"./ElevationUsage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ElevationUsage.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 \"84350e0e\",\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:\"p-3 pb-5 mt-3 mt-sm-0 bg-white shadow-sm\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center border-bottom border-gray pb-2 mb-0\"},[_c('h3',{staticClass:\"mt-2\"},[_vm._v(\"OruxMaps\")]),(_vm.account && _vm.tokens && _vm.tokens.length > 0)?_c('div',{staticClass:\"dropdown\"},[_c('button',{staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"type\":\"button\",\"id\":\"dropdownMenuButton\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_vm._v(\" \"+_vm._s(_vm.selectedTokenName)+\" \")]),_c('div',{staticClass:\"dropdown-menu\",attrs:{\"aria-labelledby\":\"dropdownMenuButton\"}},_vm._l((_vm.tokens),function(t){return _c('a',{key:t.id,staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.selectedToken = t}}},[_vm._v(_vm._s(t.name))])}),0)]):_vm._e()]),_c('div',{staticClass:\"mt-3\"},[_vm._m(0),_c('div',{staticClass:\"bd-clipboard\"},[_c('button',{staticClass:\"btn-clipboard\",attrs:{\"data-clipboard-target\":\"#oruxmaps\"}},[_vm._v(_vm._s(_vm.$t('copy')))])]),_c('figure',{staticClass:\"highlight\"},[_c('code',{staticClass:\"text-dark\",attrs:{\"id\":\"oruxmaps\"}},[_vm._v(_vm._s(_vm.baseUrl)+\"/api/v1/elevations?token=\"+_vm._s(_vm.selectedTokenValue)+\"&fmt=xml&coord=${coord}\")])]),_c('p',[_vm._v(\"另外並請確認其它欄位的設定值:\")]),_vm._m(1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"若您需要使用本服務作為 OruxMaps 的在線高度服務, 可以在 App 設定裡的\"),_c('b',[_vm._v(\"應用設定→在線高度服務→網址航線\")]),_vm._v(\"中使用下列參數:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[_c('li',[_vm._v(\"並發請求: \"),_c('code',[_vm._v(\"100\")])]),_c('li',[_vm._v(\"並發分隔符: \"),_c('code',[_vm._v(\",\")]),_vm._v(\" (半形逗號)\")]),_c('li',[_vm._v(\"搜索標籤: \"),_c('code',[_vm._v(\"height\")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport Dashboard from './Dashboard.vue'\nimport AccessToken from '../access-token'\n\n@Component\nexport default class VueComponent extends Vue {\n $parent!: Dashboard\n get baseUrl() {\n return this.$parent.baseUrl\n }\n get account() {\n return this.$parent.account\n }\n get tokens() {\n return this.$parent.tokens\n }\n get selectedToken(): AccessToken | undefined {\n return this.$parent.selectedToken\n }\n set selectedToken(v: AccessToken | undefined) {\n this.$parent.selectedToken = v\n }\n get selectedTokenName() {\n return this.selectedToken ? this.selectedToken.name : '帶入金鑰...'\n }\n get selectedTokenValue() {\n return this.selectedToken ? this.selectedToken.token : '<金鑰值>'\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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, InjectReactive, Watch } from 'vue-property-decorator'\nimport Dashboard from './Dashboard.vue'\nimport AccessToken from '../access-token'\nimport RestClient from '../components/RestClient.vue'\nimport Account from '../account'\nimport { Dictionary } from 'vue-router/types/router'\ndeclare const google: any\n\nclass Usage {\n requests: number\n elevations: number\n constructor(requests: number, elevations: number) {\n this.requests = requests\n this.elevations = elevations\n }\n static unmarshal(json: any): Usage {\n return new Usage(json.num_requests, json.num_elevations)\n }\n}\n\nenum Mode {\n Total = 'total',\n Trial = 'trial',\n Deleted = 'deleted',\n Token = 'token',\n}\n\n@Component\nexport default class VueComponent extends Vue {\n $parent!: Dashboard\n $log: any\n @InjectReactive() account?: Account\n usages?: Map\n total?: Map\n trial?: Map\n tokenUsages?: Map>\n deleted?: Map\n tokenIds: string[] = []\n selectedTokenId?: string\n mode?: Mode\n data() {\n return {\n mode: null,\n usages: null,\n selectedTokenId: null,\n }\n }\n mounted() {\n google.charts.load('current', {'packages':['line', 'corechart']})\n google.charts.setOnLoadCallback(() => {\n this.refresh()\n })\n }\n @Watch('account')\n refresh() {\n if (this.account) {\n this.restClient.request('GET', '/v1/services/elevation/stats/daily', null, (data) => {\n var tokenUsages = new Map>()\n var tokenIds: string[] = []\n if (data.token_stats) {\n Object.keys(data.token_stats).forEach((id: string) => {\n var st = data.token_stats[id]\n var usages = tokenUsages.get(id)\n if (!usages) {\n usages = new Map()\n }\n if (usages) {\n Object.keys(st.usages).forEach((time: string) => {\n if (usages) {\n var usage = Usage.unmarshal(st.usages[time])\n usages.set(new Date(parseInt(time, 10)), usage)\n }\n })\n }\n tokenUsages.set(id, usages)\n tokenIds.push(id)\n })\n }\n this.tokenUsages = tokenUsages\n this.tokenIds = tokenIds\n this.total = this.unmarshalUsages(data.total)\n this.trial = this.unmarshalUsages(data.trial)\n this.deleted = this.unmarshalUsages(data.deleted)\n this.mode = Mode.Total\n })\n }\n }\n unmarshalUsages(json: any): Map {\n var usages = new Map()\n if (json) {\n Object.keys(json).forEach((key: string) => {\n usages.set(new Date(parseInt(key, 10)), Usage.unmarshal(json[key]))\n })\n }\n return usages\n }\n @Watch('mode')\n applyMode() {\n switch (this.mode) {\n case Mode.Total:\n this.usages = this.total\n break\n case Mode.Trial:\n this.usages = this.trial\n break\n case Mode.Deleted:\n this.usages = this.deleted\n break\n case Mode.Token:\n if (this.tokenUsages && this.selectedTokenId) {\n var usages = this.tokenUsages.get(this.selectedTokenId)\n if (usages) {\n this.usages = usages\n }\n }\n break\n }\n }\n @Watch('usages')\n applyUsages() {\n this.draw(this.usages)\n }\n draw(usages?: Map) {\n if (!usages || usages.size <= 0) {\n return\n }\n var data = new google.visualization.DataTable()\n data.addColumn('date', '日期')\n data.addColumn('number', \"HTTP請求數量\")\n data.addColumn('number', \"高程轉換數量\")\n usages.forEach((usage: Usage, time: Date) => {\n data.addRow([time, usage.requests, usage.elevations])\n })\n var dateRange = data.getColumnRange(0)\n if (data.getNumberOfRows() === 1) {\n let oneDay = (24 * 60 * 60 * 1000)\n dateRange.min = new Date(dateRange.min.getTime() - oneDay)\n dateRange.max = new Date(dateRange.max.getTime() + oneDay)\n }\n var options = {\n width: '100%',\n height: 500,\n hAxis: {\n format: 'MM/dd',\n viewWindow: dateRange,\n },\n vAxis: { minValue: 0 },\n legend: { position: 'bottom' }\n }\n var materialChart = new google.visualization.ScatterChart(document.getElementById('chart'))\n materialChart.draw(data, options)\n }\n get baseUrl() {\n return this.$parent.baseUrl\n }\n get restClient() {\n return this.$parent.restClient\n }\n get tokens(): AccessToken[] | undefined {\n return this.$parent.tokens\n }\n get selectedMode() { \n return this.selectionName(this.mode, this.selectedTokenId)\n }\n get usageList() {\n var list: any[] = []\n if (this.usages) {\n this.usages.forEach((usage: Usage, time: Date) => {\n list.push({time: time, requests: usage.requests, elevations: usage.elevations})\n })\n }\n return list\n }\n selectionName(mode?: Mode, id?: string) { \n switch (mode) {\n case Mode.Total:\n return '總使用量'\n case Mode.Trial:\n return '線上試用'\n case Mode.Deleted:\n return '已刪除的金鑰'\n case Mode.Token:\n if (this.tokens && id) {\n for (var i = 0; i < this.tokens.length; i++) {\n if (id == this.tokens[i].id) {\n return this.tokens[i].name\n }\n }\n }\n break\n } \n return undefined\n }\n selectToken(id: string) {\n this.selectedTokenId = id\n this.mode = Mode.Token\n }\n tokenName(id?: string) {\n if (!id) {\n return '不分金鑰'\n }\n if (this.tokens) {\n for (var i = 0; i < this.tokens.length; i++) {\n if (id == this.tokens[i].id) {\n return this.tokens[i].name\n }\n }\n }\n return id\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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationOruxMaps.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationOruxMaps.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ElevationOruxMaps.vue?vue&type=template&id=3e681247&scoped=true&\"\nimport script from \"./ElevationOruxMaps.vue?vue&type=script&lang=ts&\"\nexport * from \"./ElevationOruxMaps.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 \"3e681247\",\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:\"p-3 pb-5 mt-3 mt-sm-0 bg-white shadow-sm\"},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center border-bottom border-gray pb-2 mb-0\"},[_c('h3',{staticClass:\"mt-2\"},[_vm._v(\"用量統計\")]),(_vm.mode && _vm.usages.size > 0)?_c('div',{staticClass:\"dropdown\"},[_c('button',{staticClass:\"btn btn-primary dropdown-toggle\",attrs:{\"type\":\"button\",\"id\":\"dropdownMenuButton\",\"data-toggle\":\"dropdown\",\"aria-haspopup\":\"true\",\"aria-expanded\":\"false\"}},[_vm._v(\" \"+_vm._s(_vm.selectedMode)+\" \")]),_c('div',{staticClass:\"dropdown-menu\",attrs:{\"aria-labelledby\":\"dropdownMenuButton\"}},[_c('a',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.mode = 'total'}}},[_vm._v(_vm._s(_vm.selectionName('total')))]),(_vm.trial.size > 0)?_c('a',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.mode = 'trial'}}},[_vm._v(_vm._s(_vm.selectionName('trial')))]):_vm._e(),_vm._l((_vm.tokenIds),function(id){return _c('a',{key:id,staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.selectToken(id)}}},[_vm._v(_vm._s(_vm.selectionName('token', id)))])}),(_vm.deleted.size > 0)?_c('a',{staticClass:\"dropdown-item\",on:{\"click\":function($event){_vm.mode = 'deleted'}}},[_vm._v(_vm._s(_vm.selectionName('deleted')))]):_vm._e()],2)]):_vm._e()]),_c('div',{staticClass:\"mt-3\"},[_vm._m(0),(!_vm.account)?_c('div',{staticClass:\"text-center mt-5 \"},[_vm._v(\"尚未登入\")]):(!_vm.usages)?_c('div',{staticClass:\"text-center mt-5 \"},[_vm._m(1)]):(_vm.usages.size <= 0)?_c('div',{staticClass:\"text-center mt-5 \"},[_vm._v(\"還沒有任何統計資料.\")]):_c('div',[_c('table',{staticClass:\"table\"},[_vm._m(2),_c('tbody',_vm._l((_vm.usageList),function(usage){return _c('tr',{key:usage.time.time},[_c('th',{attrs:{\"scope\":\"row\"}},[_vm._v(_vm._s(usage.time.toLocaleDateString()))]),_c('td',[_vm._v(_vm._s(usage.requests))]),_c('td',[_vm._v(_vm._s(usage.elevations))]),_c('td',[_vm._v(_vm._s((usage.elevations/usage.requests).toFixed(2)))])])}),0)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-none d-lg-block\"},[_c('div',{attrs:{\"id\":\"chart\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spinner-border text-primary\",attrs:{\"role\":\"status\"}},[_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Loading...\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\"日期\")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\"HTTP請求數量\")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\"高程轉換數量\")]),_c('th',{attrs:{\"scope\":\"col\"}},[_vm._v(\"高程轉換/HTTP請求\")])])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationStats.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/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationStats.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ElevationStats.vue?vue&type=template&id=34b39e56&scoped=true&\"\nimport script from \"./ElevationStats.vue?vue&type=script&lang=ts&\"\nexport * from \"./ElevationStats.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 \"34b39e56\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Landing from '../views/Landing.vue'\nimport AuthCallback from '../views/AuthCallback.vue'\nimport ElevationAPI from '../views/ElevationAPI.vue'\nimport Login from '../views/Login.vue'\nimport Dashboard from '../views/Dashboard.vue'\nimport ElevationTokens from '../views/ElevationTokens.vue'\nimport ElevationUsage from '../views/ElevationUsage.vue'\nimport ElevationOruxMaps from '../views/ElevationOruxMaps.vue'\nimport ElevationStats from '../views/ElevationStats.vue'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: '/',\n name: 'landing',\n component: Landing,\n },\n {\n path: '/authcb/:auth',\n component: AuthCallback,\n },\n {\n path: '/elevation_api',\n name: 'elevation_api',\n component: ElevationAPI,\n },\n {\n path: '/login',\n name: 'login',\n component: Login,\n props: true,\n },\n {\n path: '/dashboard',\n name: 'dashboard',\n component: Dashboard,\n children: [\n {\n path: 'elevation_tokens',\n name: 'elevation_tokens',\n component: ElevationTokens,\n },\n {\n path: 'elevation_usage',\n name: 'elevation_usage',\n component: ElevationUsage,\n },\n {\n path: 'elevation_oruxmaps',\n name: 'elevation_oruxmaps',\n component: ElevationOruxMaps,\n },\n {\n path: 'elevation_stats',\n name: 'elevation_stats',\n component: ElevationStats,\n },\n ],\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 path: '/privacy',\n name: 'privacy',\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/PrivacyPolicy.vue'),\n }\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes\n})\n\nexport default router\n","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\n\nVue.use(VueI18n)\n\nconst messages = {\n 'zh_tw': {\n privacy_policy: '隱私權政策',\n\n oops: '糟糕…',\n api_error: '指令發生錯誤: {code} {status}',\n permission_denied: '權限不足或已失效, 請重新整理或重新登入.',\n report_error: '回報錯誤',\n report_error_submitted: '感謝您! 這個問題已經被回報, 我們將儘快處理.',\n\n auth_init_error: '無法初始化身份認證服務',\n auth_error: '身份認證錯誤',\n sign_in: '登入',\n sign_in_with_google: '使用 Google 帳號登入',\n sign_in_with_line: '使用 LINE 帳號登入',\n signing_in: '正在登入…',\n sign_out: '登出 {account}…',\n\n about: '關於我們',\n re_login: '重新登入',\n close: '關閉',\n\n copy: '複製',\n\n view_details: '了解更多 »',\n coming_soon: '敬請期待…',\n\n elevation_api: '台灣高程 API',\n elevation_api_summary: '以內政部20公尺網格DTM開放資料為基礎, 提供 OpenAPI 3.0 服務介面並開源核心元件, 可查詢單點或多點地理座標所對應的高程資料.',\n },\n 'en': {\n site_name: 'Outdoor Safety Lab',\n copyright: '© 2022 Outdoor Safety Lab',\n privacy_policy: 'Privacy Policy',\n about: 'About',\n\n sign_in: 'Sign In',\n sign_in_with_google: 'Sign In with Google',\n },\n}\n\nexport const i18n = new VueI18n({\n locale: 'zh_tw',\n fallbackLocale: 'en',\n messages,\n})\n","\nimport Vue from 'vue'\nimport VueLogger from 'vuejs-logger'\n\nconst isProduction = process.env.NODE_ENV === 'production'\n\nconst options = {\n isEnabled: true,\n logLevel : isProduction ? 'error' : 'debug',\n stringifyArguments : false,\n showLogLevel : true,\n showMethodName : true,\n separator: '|',\n showConsoleColors: true\n}\n \nVue.use(VueLogger, options)\n","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport { i18n } from '@/plugins/i18n'\nimport '@/plugins/logger'\n\nVue.config.productionTip = false\n\nnew Vue({\n i18n,\n router, \n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=a37e4584&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Navigation.vue?vue&type=style&index=0&id=a37e4584&scoped=true&lang=css&\""],"sourceRoot":""}