Select Git revision
app.e837c338.js.map 77.34 KiB
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/UserAuthentication.vue?894f","webpack:///./src/App.vue?8b40","webpack:///./src/App.vue","webpack:///./src/views/Home.vue?c752","webpack:///./src/components/ImageList.vue?75be","webpack:///./src/components/ImageItem.vue?562a","webpack:///src/components/ImageItem.vue","webpack:///./src/components/ImageItem.vue?457b","webpack:///./src/components/ImageItem.vue","webpack:///./src/components/PaginationBar.vue?97d8","webpack:///src/components/PaginationBar.vue","webpack:///./src/components/PaginationBar.vue?4402","webpack:///./src/components/PaginationBar.vue","webpack:///src/components/ImageList.vue","webpack:///./src/components/ImageList.vue?7e18","webpack:///./src/components/ImageList.vue","webpack:///./src/components/ImageUpload.vue?fe05","webpack:///./src/components/WarningBox.vue?8182","webpack:///./src/components/icons/IconXCircle.vue?f45d","webpack:///src/components/icons/IconXCircle.vue","webpack:///./src/components/icons/IconXCircle.vue?9e44","webpack:///./src/components/icons/IconXCircle.vue","webpack:///src/components/WarningBox.vue","webpack:///./src/components/WarningBox.vue?d19e","webpack:///./src/components/WarningBox.vue","webpack:///src/components/ImageUpload.vue","webpack:///./src/components/ImageUpload.vue?1bcd","webpack:///./src/components/ImageUpload.vue","webpack:///./src/components/TagCreation.vue?17b7","webpack:///src/components/TagCreation.vue","webpack:///./src/components/TagCreation.vue?bc0d","webpack:///./src/components/TagCreation.vue","webpack:///./src/components/UserAuthentication.vue?a8c0","webpack:///./src/components/icons/IconCheckmark.vue?6723","webpack:///src/components/icons/IconCheckmark.vue","webpack:///./src/components/icons/IconCheckmark.vue?cd82","webpack:///./src/components/icons/IconCheckmark.vue","webpack:///src/components/UserAuthentication.vue","webpack:///./src/components/UserAuthentication.vue?4e14","webpack:///./src/components/UserAuthentication.vue","webpack:///./src/components/icons/IconChevronsRight.vue?2f15","webpack:///src/components/icons/IconChevronsRight.vue","webpack:///./src/components/icons/IconChevronsRight.vue?43da","webpack:///./src/components/icons/IconChevronsRight.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?2b8c","webpack:///./src/views/Home.vue","webpack:///./src/views/UploadNew.vue?6e57","webpack:///src/views/UploadNew.vue","webpack:///./src/views/UploadNew.vue?96a2","webpack:///./src/views/UploadNew.vue","webpack:///./src/views/ImageView.vue?ec52","webpack:///src/views/ImageView.vue","webpack:///./src/views/ImageView.vue?2152","webpack:///./src/views/ImageView.vue","webpack:///./src/router/index.js","webpack:///./src/store/index.js","webpack:///./src/main.js","webpack:///./src/views/ImageView.vue?be50","webpack:///./src/components/ImageItem.vue?e6b8"],"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","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","_v","staticRenderFns","script","component","directives","rawName","sideBarHidden","expression","on","$event","currentPage","lastPage","pageChange","_l","flake","index","appendToDeleteArray","deleteArray","deleteImages","ctrlKey","shiftKey","altKey","metaKey","checked","$emit","nativeOn","preventDefault","props","required","methods","page","class","_s","type","Number","computed","pages","components","ImageItem","PaginationBar","method","headers","fetch","updateWrapper","currentTarget","classList","remove","add","ref","imageList","preview","url","removeImage","image","invalidType","_e","submitImage","_t","width","height","default","XCircle","WarningBox","previews","forEach","tempArray","checkImageType","event","updateImageList","concat","acceptedTypes","includes","indexOf","formData","set","postImage","domProps","target","composing","tag","$$selectedVal","Array","filter","options","selected","map","val","_value","tagType","multiple","tagIncorrect","setTag","setType","resetTagAndType","match","regex","secret","stateUser","body","JSON","stringify","id","username","authenticating","authenticationFailed","_k","keyCode","authenticate","trim","Checkmark","ImageList","ImageUpload","TagCreation","UserAuthentication","IconXCircle","IconChevronsRight","imageTag","imageTags","location","pathname","split","pop","Vue","use","VueRouter","routes","path","Home","UploadNew","ImageView","router","base","process","Vuex","vuexLocal","VuexPersistedState","paths","Store","state","stateImageSnowflakes","privileged","mutations","setStateImageSnowflakes","array","addStateImageSnowflake","hash","saveStateUser","payload","actions","context","commit","plugins","config","productionTip","store","render","h","App","$mount"],"mappings":"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","file":"js/app.e837c338.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// 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\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 = \"/web/\";\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","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAuthentication.vue?vue&type=style&index=0&id=b6e9e1e8&lang=postcss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('header',[_c('nav',[_c('router-link',{staticClass:\"p-4\",attrs:{\"to\":\"/\"}},[_vm._v(\"Home\")]),_c('router-link',{attrs:{\"to\":\"/upload\"}},[_vm._v(\"Upload\")])],1)]),_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2fe87f47&\"\nvar script = {}\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:\"flex flex-row\"},[_c('section',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.sideBarHidden),expression:\"!sideBarHidden\"}],staticClass:\"flex flex-col sticky top-0 h-screen w-1/3\"},[_c('button',{staticClass:\"self-end mt-2\",on:{\"click\":function($event){_vm.sideBarHidden = true}}},[_c('IconXCircle',{staticClass:\"stroke-current text-gray-500 hover:text-gray-600\"})],1),_c('TagCreation'),_c('UserAuthentication',{staticClass:\"absolute bottom-0\"})],1),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.sideBarHidden),expression:\"sideBarHidden\"}],staticClass:\"self-start sticky top-0\",on:{\"click\":function($event){_vm.sideBarHidden = false}}},[_c('IconChevronsRight',{staticClass:\"mt-1 stroke-current text-gray-500 hover:text-gray-600\",attrs:{\"width\":\"27\",\"height\":\"27\"}})],1),_c('ImageList')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"w-full\"},[_c('PaginationBar',{attrs:{\"current-page\":_vm.currentPage,\"last-page\":_vm.lastPage},on:{\"onPageChange\":_vm.pageChange}}),_c('div',{staticClass:\"w-full flex flex-row flex-wrap justify-center\"},_vm._l((_vm.stateImageSnowflakes),function(flake,index){return _c('div',{key:index,staticClass:\"max-w-xs flex flex-col\"},[_c('ImageItem',{attrs:{\"flake\":flake},on:{\"checked\":_vm.appendToDeleteArray}})],1)}),0),_c('PaginationBar',{attrs:{\"current-page\":_vm.currentPage,\"last-page\":_vm.lastPage},on:{\"onPageChange\":_vm.pageChange}}),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.deleteArray.length),expression:\"deleteArray.length\"}],staticClass:\"fixed bottom-0 right-0 p-1 bg-blue-300\",on:{\"click\":function($event){return _vm.deleteImages(_vm.deleteArray)}}},[_vm._v(\" Delete \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"image-container\"},on:{\"click\":function($event){if(!$event.ctrlKey){ return null; }if(!$event.shiftKey){ return null; }if($event.altKey||$event.metaKey){ return null; }_vm.checked = !_vm.checked;\n _vm.$emit('checked', _vm.checked, _vm.flake);}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.checked),expression:\"checked\"}],attrs:{\"id\":\"checkmark\"},on:{\"click\":function($event){_vm.checked = !_vm.checked;\n _vm.$emit('checked', _vm.checked, _vm.flake);}}},[_vm._v(\" X \")]),_c('router-link',{attrs:{\"to\":(\"/image/\" + _vm.flake)},nativeOn:{\"click\":function($event){if(!$event.ctrlKey){ return null; }if(!$event.shiftKey){ return null; }$event.preventDefault();}}},[_c('img',{attrs:{\"src\":(\"/api/image/\" + _vm.flake + \"/preview\")}})])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n @click.ctrl.shift.exact=\"\n checked = !checked;\n $emit('checked', checked, flake);\n \"\n id=\"image-container\"\n >\n <div\n @click=\"\n checked = !checked;\n $emit('checked', checked, flake);\n \"\n v-show=\"checked\"\n id=\"checkmark\"\n >\n X\n </div>\n <router-link @click.ctrl.shift.native.prevent :to=\"`/image/${flake}`\">\n <img :src=\"`/api/image/${flake}/preview`\" />\n </router-link>\n </div>\n</template>\n\n<script>\nexport default {\n data: () => {\n return {\n checked: false,\n };\n },\n props: {\n flake: {\n required: true,\n },\n },\n methods: {},\n};\n</script>\n\n<style scoped>\n#image-container {\n position: relative;\n}\nimg {\n height: 100%;\n width: 100%;\n}\n#checkmark {\n font-family: \"Lucida Console\", monospace;\n font-weight: bold;\n color: white;\n background: rgb(209, 39, 39);\n position: absolute;\n top: 0.4em;\n left: 0.4em;\n padding: 0.4em 0.6em;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageItem.vue?vue&type=template&id=58445a1f&scoped=true&\"\nimport script from \"./ImageItem.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageItem.vue?vue&type=style&index=0&id=58445a1f&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 \"58445a1f\",\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:\"mx-auto max-w-max\"},_vm._l((_vm.pages),function(page,index){return _c('router-link',{key:index,staticClass:\"mr-2 last:mr-0 text-lg\",class:{\n 'text-red-800': page === _vm.currentPage,\n 'font-bold': page === _vm.currentPage,\n },attrs:{\"to\":(\"/\" + page)},nativeOn:{\"click\":function($event){return _vm.$emit('onPageChange')}}},[_vm._v(\" \"+_vm._s(page)+\" \")])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"mx-auto max-w-max\">\n <router-link\n v-for=\"(page, index) in pages\"\n :key=\"index\"\n :to=\"`/${page}`\"\n @click.native=\"$emit('onPageChange')\"\n :class=\"{\n 'text-red-800': page === currentPage,\n 'font-bold': page === currentPage,\n }\"\n class=\"mr-2 last:mr-0 text-lg\"\n >\n {{ page }}\n </router-link>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n currentPage: {\n type: Number,\n required: true,\n },\n lastPage: {\n type: Number,\n required: true,\n },\n },\n computed: {\n // TODO: Rewrite this less confusingly if possible.\n // This returns an array that represents the pagination bar\n pages: function () {\n return [\n this.currentPage > 1 ? 0 : null,\n this.currentPage > 2 ? \"...\" : null,\n this.currentPage > 0 ? this.currentPage - 1 : null,\n this.currentPage,\n this.currentPage < this.lastPage - 1 ? this.currentPage + 1 : null,\n this.currentPage < this.lastPage - 3 ? \"...\" : null,\n this.currentPage < this.lastPage - 2 ? this.lastPage - 1 : null,\n ].filter((element) => element !== null);\n },\n },\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaginationBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaginationBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PaginationBar.vue?vue&type=template&id=62f30345&\"\nimport script from \"./PaginationBar.vue?vue&type=script&lang=js&\"\nexport * from \"./PaginationBar.vue?vue&type=script&lang=js&\"\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","<template>\n <section class=\"w-full\">\n <PaginationBar\n :current-page=\"currentPage\"\n :last-page=\"lastPage\"\n @onPageChange=\"pageChange\"\n />\n <div class=\"w-full flex flex-row flex-wrap justify-center\">\n <div\n v-for=\"(flake, index) in stateImageSnowflakes\"\n :key=\"index\"\n class=\"max-w-xs flex flex-col\"\n >\n <ImageItem :flake=\"flake\" @checked=\"appendToDeleteArray\"></ImageItem>\n </div>\n </div>\n <PaginationBar\n :current-page=\"currentPage\"\n :last-page=\"lastPage\"\n @onPageChange=\"pageChange\"\n />\n <button\n v-show=\"deleteArray.length\"\n @click=\"deleteImages(deleteArray)\"\n class=\"fixed bottom-0 right-0 p-1 bg-blue-300\"\n >\n Delete\n </button>\n </section>\n</template>\n\n<script>\nimport ImageItem from \"@/components/ImageItem.vue\";\nimport PaginationBar from \"@/components/PaginationBar.vue\";\nimport { mapState, mapActions } from \"vuex\";\n\nexport default {\n components: {\n ImageItem,\n PaginationBar,\n },\n data: () => {\n return {\n deleteArray: [],\n currentPage: 0,\n lastPage: 0,\n };\n },\n computed: {\n ...mapState([\"stateUser\", \"stateImageSnowflakes\"]),\n },\n async created() {\n this.lastPage = Number(await this.getLastPage());\n this.pageChange();\n },\n methods: {\n async pageChange() {\n this.currentPage = Number(\n window.location.pathname.split(\"/\").pop().match(/^\\d+$/)\n );\n window.scrollTo(0, 0);\n this.setStateImageSnowflakes(await this.getSnowflakes(this.currentPage));\n },\n async getSnowflakes(pageEntry) {\n const response = await fetch(`/api/image/page/${pageEntry}/`);\n const snowflakes = await response.json();\n return snowflakes;\n },\n async getLastPage() {\n const response = await fetch(\"/api/image/page\");\n const lastPage = await response.text();\n return lastPage;\n },\n appendToDeleteArray(...args) {\n const [checked, hash] = args;\n checked\n ? this.deleteArray.push(hash)\n : this.deleteArray.splice(this.deleteArray.indexOf(hash), 1);\n },\n deleteImages(deleteArray) {\n const options = {\n method: \"DELETE\",\n headers: { secret: this.stateUser.secret },\n };\n for (let i = 0; i < deleteArray.length; i++) {\n fetch(`/api/image/${deleteArray[i]}`, options);\n }\n this.deleteArray = [];\n },\n ...mapActions([\"setStateImageSnowflakes\"]),\n },\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageList.vue?vue&type=template&id=250650ed&\"\nimport script from \"./ImageList.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"h-48 m-4 border-dotted border-4 border-gray-400\",on:{\"drop\":function($event){$event.preventDefault();_vm.updateWrapper($event);\n $event.currentTarget.classList.remove('bg-gray-200');},\"dragover\":function($event){$event.preventDefault();return $event.currentTarget.classList.add('bg-gray-200')},\"dragleave\":function($event){$event.preventDefault();return $event.currentTarget.classList.remove('bg-gray-200')}}},[_c('div',{staticClass:\"relative h-full\"},[_c('input',{ref:\"imageInput\",staticClass:\"h-full w-full opacity-0 absolute z-10 cursor-pointer\",attrs:{\"type\":\"file\",\"accept\":\"image/png, image/jpeg,\\n image/gif\",\"multiple\":\"\"},on:{\"change\":function($event){return _vm.updateWrapper()}}}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.imageList.length),expression:\"!imageList.length\"}],staticClass:\"\\n h-full\\n font-semibold\\n opacity-25\\n flex\\n justify-center\\n items-center\\n \"},[_vm._v(\" Drag and drop images here or click here to browse. \")]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.imageList.length),expression:\"imageList.length\"}],staticClass:\"h-full flex flex-row flex-wrap content-start overflow-y-auto\"},_vm._l((_vm.previews),function(preview,index){return _c('img',{key:index,staticClass:\"max-h-28 relative z-10\",attrs:{\"src\":preview.url,\"alt\":\"\"},on:{\"click\":function($event){return _vm.removeImage(preview.image)}}})}),0)])]),_c('div',{staticClass:\"flex flex-col items-center m-4\"},[(_vm.invalidType)?_c('WarningBox',{on:{\"click\":function($event){_vm.invalidType = false}}},[_vm._v(\" Please upload PNG, JPEG or GIF image only. \")]):_vm._e(),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.imageList.length),expression:\"imageList.length\"}],staticClass:\"\\n border border-gray-500\\n p-2\\n rounded\\n mx-auto\\n font-semibold\\n text-gray-800\\n hover:bg-gray-800 hover:text-gray-100\\n \",on:{\"click\":_vm.submitImage}},[_vm._v(\" Submit \")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"\\n p-5\\n m-2\\n font-semibold\\n bg-red-400\\n ring-2 ring-red-500\\n rounded\\n text-gray-50\\n relative\\n max-w-xs\\n whitespace-normal\\n \"},[_vm._t(\"default\"),_c('XCircle',{staticClass:\"\\n absolute\\n top-0.5\\n right-0.5\\n stroke-current\\n text-red-600\\n opacity-40\\n hover:opacity-75\\n \",nativeOn:{\"click\":function($event){return _vm.$emit('click')}}})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":_vm.width,\"height\":_vm.height,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"#000000\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('circle',{attrs:{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"}}),_c('line',{attrs:{\"x1\":\"15\",\"y1\":\"9\",\"x2\":\"9\",\"y2\":\"15\"}}),_c('line',{attrs:{\"x1\":\"9\",\"y1\":\"9\",\"x2\":\"15\",\"y2\":\"15\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#000000\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n <line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\n <line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\n </svg>\n</template>\n\n<script>\nexport default {\n props: {\n width: {\n default: 24,\n },\n height: {\n default: 24,\n },\n },\n};\n</script>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconXCircle.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconXCircle.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconXCircle.vue?vue&type=template&id=5479a6fd&\"\nimport script from \"./IconXCircle.vue?vue&type=script&lang=js&\"\nexport * from \"./IconXCircle.vue?vue&type=script&lang=js&\"\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","<template>\n <div\n class=\"\n p-5\n m-2\n font-semibold\n bg-red-400\n ring-2 ring-red-500\n rounded\n text-gray-50\n relative\n max-w-xs\n whitespace-normal\n \"\n >\n <slot></slot>\n <XCircle\n @click.native=\"$emit('click')\"\n class=\"\n absolute\n top-0.5\n right-0.5\n stroke-current\n text-red-600\n opacity-40\n hover:opacity-75\n \"\n ></XCircle>\n </div>\n</template>\n\n<script>\nimport XCircle from \"@/components/icons/IconXCircle.vue\";\nexport default {\n components: {\n XCircle,\n },\n};\n</script>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningBox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningBox.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WarningBox.vue?vue&type=template&id=4b591be2&\"\nimport script from \"./WarningBox.vue?vue&type=script&lang=js&\"\nexport * from \"./WarningBox.vue?vue&type=script&lang=js&\"\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","<template>\n <div>\n <div\n class=\"h-48 m-4 border-dotted border-4 border-gray-400\"\n @drop.prevent=\"\n updateWrapper($event);\n $event.currentTarget.classList.remove('bg-gray-200');\n \"\n @dragover.prevent=\"$event.currentTarget.classList.add('bg-gray-200')\"\n @dragleave.prevent=\"$event.currentTarget.classList.remove('bg-gray-200')\"\n >\n <div class=\"relative h-full\">\n <input\n type=\"file\"\n ref=\"imageInput\"\n accept=\"image/png, image/jpeg,\n image/gif\"\n @change=\"updateWrapper()\"\n multiple\n class=\"h-full w-full opacity-0 absolute z-10 cursor-pointer\"\n />\n <div\n v-show=\"!imageList.length\"\n class=\"\n h-full\n font-semibold\n opacity-25\n flex\n justify-center\n items-center\n \"\n >\n Drag and drop images here or click here to browse.\n </div>\n <div\n v-show=\"imageList.length\"\n class=\"h-full flex flex-row flex-wrap content-start overflow-y-auto\"\n >\n <img\n v-for=\"(preview, index) in previews\"\n :key=\"index\"\n :src=\"preview.url\"\n @click=\"removeImage(preview.image)\"\n alt=\"\"\n class=\"max-h-28 relative z-10\"\n />\n </div>\n </div>\n </div>\n <div class=\"flex flex-col items-center m-4\">\n <WarningBox v-if=\"invalidType\" @click=\"invalidType = false\">\n Please upload PNG, JPEG or GIF image only.\n </WarningBox>\n <button\n v-show=\"imageList.length\"\n @click=\"submitImage\"\n class=\"\n border border-gray-500\n p-2\n rounded\n mx-auto\n font-semibold\n text-gray-800\n hover:bg-gray-800 hover:text-gray-100\n \"\n >\n Submit\n </button>\n </div>\n </div>\n</template>\n\n<script>\nimport { mapActions, mapState } from \"vuex\";\nimport WarningBox from \"@/components/WarningBox.vue\";\n\nexport default {\n components: {\n WarningBox,\n },\n data: () => {\n return {\n imageList: [],\n invalidType: false,\n };\n },\n computed: {\n previews: function () {\n let tempArray = [];\n this.imageList.forEach((image) =>\n tempArray.push({ url: URL.createObjectURL(image), image })\n );\n return tempArray;\n },\n ...mapState([\"stateUser\"]),\n },\n methods: {\n updateWrapper(event) {\n this.checkImageType(event)\n ? this.updateImageList(event)\n : (this.$refs.imageInput.value = \"\");\n },\n updateImageList(event) {\n this.imageList = this.imageList.concat(\n event ? [...event.dataTransfer.files] : [...this.$refs.imageInput.files]\n );\n },\n checkImageType(event) {\n const acceptedTypes = [\"image/png\", \"image/jpeg\", \"image/gif\"];\n let imageList = event\n ? [...event.dataTransfer.files]\n : [...this.$refs.imageInput.files];\n for (let i = 0; i < imageList.length; i++) {\n if (!acceptedTypes.includes(imageList[i].type)) {\n this.invalidType = true;\n return false;\n }\n }\n this.invalidType = false;\n return true;\n },\n removeImage(image) {\n this.imageList.splice(this.imageList.indexOf(image), 1);\n },\n submitImage() {\n let formData = new FormData();\n for (let i = 0; i < this.imageList.length; i++) {\n formData.set(\"image\", this.imageList[i]);\n this.postImage(formData);\n }\n // Clean up\n this.invalidType = false;\n this.imageList = [];\n },\n async postImage(fd) {\n try {\n const options = {\n method: \"POST\",\n headers: {\n secret: this.stateUser.secret,\n },\n body: fd,\n };\n const response = await fetch(\"/api/image\", options);\n const data = await response.json();\n this.addStateImageSnowflake(data.snowflake);\n } catch {\n (error) => console.error(error);\n }\n },\n ...mapActions([\"addStateImageSnowflake\"]),\n },\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUpload.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageUpload.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageUpload.vue?vue&type=template&id=b99b0820&\"\nimport script from \"./ImageUpload.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageUpload.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',[_vm._v(\"Add tag/Change tag type\")]),_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tag),expression:\"tag\"}],attrs:{\"placeholder\":\"Tag to add\"},domProps:{\"value\":(_vm.tag)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.tag=$event.target.value}}}),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tagType),expression:\"tagType\"}],on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.tagType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"disabled\":\"\"}},[_vm._v(\"Tag type\")]),_c('option',{attrs:{\"value\":\"artist\"}},[_vm._v(\"Artist\")]),_c('option',{attrs:{\"value\":\"character\"}},[_vm._v(\"Character\")]),_c('option',{attrs:{\"value\":\"copyright\"}},[_vm._v(\"Copyright\")]),_c('option',{attrs:{\"value\":\"generic\"}},[_vm._v(\"Generic\")]),_c('option',{attrs:{\"value\":\"group\"}},[_vm._v(\"Group\")]),_c('option',{attrs:{\"value\":\"meta\"}},[_vm._v(\"Meta\")])])]),_c('div',[_c('button',{attrs:{\"disabled\":_vm.tagIncorrect},on:{\"click\":function($event){_vm.setTag();\n _vm.setType();\n _vm.resetTagAndType();}}},[_vm._v(\" Submit \")])]),(_vm.tagIncorrect)?_c('div',[_vm._v(\" Tag incorrect. Make sure your tag doesn't exceed 128 characters and matches \"),_c('b',[_vm._v(\"/^[a-z0-9()_-]*$/g\")])]):_vm._e(),_c('div',[_vm._v(\"Type: \"+_vm._s(_vm.tagType)+\", Tag: \"+_vm._s(_vm.tag))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <div>Add tag/Change tag type</div>\n <div>\n <input v-model=\"tag\" placeholder=\"Tag to add\" />\n <select v-model=\"tagType\">\n <option disabled>Tag type</option>\n <option value=\"artist\">Artist</option>\n <option value=\"character\">Character</option>\n <option value=\"copyright\">Copyright</option>\n <option value=\"generic\">Generic</option>\n <option value=\"group\">Group</option>\n <option value=\"meta\">Meta</option>\n </select>\n </div>\n <div>\n <button\n @click=\"\n setTag();\n setType();\n resetTagAndType();\n \"\n :disabled=\"tagIncorrect\"\n >\n Submit\n </button>\n </div>\n <div v-if=\"tagIncorrect\">\n Tag incorrect. Make sure your tag doesn't exceed 128 characters and\n matches <b>/^[a-z0-9()_-]*$/g</b>\n </div>\n <div>Type: {{ tagType }}, Tag: {{ tag }}</div>\n </div>\n</template>\n\n<script>\nimport { mapState } from \"vuex\";\nexport default {\n data: () => {\n return {\n tag: \"\",\n tagType: \"generic\",\n };\n },\n computed: {\n tagIncorrect: function () {\n const regex = /^[a-z0-9()_-]*$/g;\n if (!this.tag.match(regex) || this.tag.length > 128) {\n return true;\n }\n return false;\n },\n ...mapState([\"stateUser\"]),\n },\n methods: {\n setTag() {\n fetch(`/api/tag/${this.tag}`, {\n method: \"PUT\",\n headers: {\n secret: this.stateUser.secret,\n },\n })\n .then((response) => {\n console.log(response);\n })\n .catch((error) => console.error(error));\n },\n setType() {\n let options = {\n method: \"PATCH\",\n headers: {\n \"Content-Type\": \"application/json\",\n secret: this.stateUser.secret,\n },\n body: JSON.stringify({ type: this.tagType }),\n };\n fetch(`/api/tag/${this.tag}/info`, options)\n .then((response) => console.log(response))\n .catch((error) => console.error(error));\n },\n resetTagAndType() {\n this.tag = \"\";\n this.tagType = \"generic\";\n },\n },\n};\n</script>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagCreation.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TagCreation.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./TagCreation.vue?vue&type=template&id=6c8cff3c&\"\nimport script from \"./TagCreation.vue?vue&type=script&lang=js&\"\nexport * from \"./TagCreation.vue?vue&type=script&lang=js&\"\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',[(!_vm.stateUser.id)?_c('div',[(!_vm.authenticating)?_c('button',{staticClass:\"\\n hover:text-gray-600\\n focus:outline-none\\n text-gray-800\\n font-semibold\\n p-2\\n \",on:{\"click\":function($event){_vm.authenticating = true}}},[_vm._v(\" Authenticate \")]):_vm._e(),(_vm.authenticating)?_c('div',[(_vm.authenticationFailed)?_c('WarningBox',{on:{\"click\":function($event){_vm.authenticationFailed = false}}},[_vm._v(\" Authentication failed. Please check your secret token. \")]):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.secret),expression:\"secret\"}],staticClass:\"\\n border border-transparent\\n rounded\\n m-4\\n p-1\\n shadow-inner\\n bg-gray-200\\n focus:ring-2 focus:ring-gray-400\\n \",attrs:{\"type\":\"text\",\"placeholder\":\"Secret token\"},domProps:{\"value\":(_vm.secret)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }_vm.authenticate(_vm.secret.trim())},\"input\":function($event){if($event.target.composing){ return; }_vm.secret=$event.target.value}}}),_c('span',[_c('button',{on:{\"click\":function($event){_vm.authenticate(_vm.secret.trim())}}},[_c('Checkmark',{staticClass:\"login-button\",attrs:{\"width\":\"30\",\"height\":\"30\"}})],1),_c('button',{on:{\"click\":function($event){_vm.authenticating = false;\n _vm.authenticationFailed = false;\n _vm.secret = '';}}},[_c('XCircle',{staticClass:\"login-button\",attrs:{\"width\":\"30\",\"height\":\"30\"}})],1)])],1):_vm._e()]):_c('div',{staticClass:\"text-lg ml-1 mb-1\"},[_vm._v(\" Welcome, \"+_vm._s(_vm.stateUser.username)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":_vm.width,\"height\":_vm.height,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"#000000\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"}}),_c('polyline',{attrs:{\"points\":\"22 4 12 14.01 9 11.01\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#000000\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path>\n <polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\n </svg>\n</template>\n\n<script>\nexport default {\n props: {\n width: {\n default: 24,\n },\n height: {\n default: 24,\n },\n },\n};\n</script>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconCheckmark.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconCheckmark.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconCheckmark.vue?vue&type=template&id=05c13968&\"\nimport script from \"./IconCheckmark.vue?vue&type=script&lang=js&\"\nexport * from \"./IconCheckmark.vue?vue&type=script&lang=js&\"\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","<template>\n <div>\n <div v-if=\"!stateUser.id\">\n <button\n v-if=\"!authenticating\"\n @click=\"authenticating = true\"\n class=\"\n hover:text-gray-600\n focus:outline-none\n text-gray-800\n font-semibold\n p-2\n \"\n >\n Authenticate\n </button>\n <div v-if=\"authenticating\">\n <WarningBox\n v-if=\"authenticationFailed\"\n @click=\"authenticationFailed = false\"\n >\n Authentication failed. Please check your secret token.\n </WarningBox>\n <input\n type=\"text\"\n placeholder=\"Secret token\"\n v-model=\"secret\"\n @keyup.enter=\"authenticate(secret.trim())\"\n class=\"\n border border-transparent\n rounded\n m-4\n p-1\n shadow-inner\n bg-gray-200\n focus:ring-2 focus:ring-gray-400\n \"\n />\n <span>\n <button @click=\"authenticate(secret.trim())\">\n <Checkmark width=\"30\" height=\"30\" class=\"login-button\"></Checkmark>\n </button>\n <button\n @click=\"\n authenticating = false;\n authenticationFailed = false;\n secret = '';\n \"\n >\n <XCircle width=\"30\" height=\"30\" class=\"login-button\"></XCircle>\n </button>\n </span>\n </div>\n </div>\n <div v-else class=\"text-lg ml-1 mb-1\">\n Welcome, {{ stateUser.username }}\n </div>\n </div>\n</template>\n\n<script>\nimport { mapActions, mapState } from \"vuex\";\nimport Checkmark from \"@/components/icons/IconCheckmark.vue\";\nimport XCircle from \"@/components/icons/IconXCircle.vue\";\nimport WarningBox from \"@/components/WarningBox.vue\";\n\nexport default {\n components: {\n Checkmark,\n XCircle,\n WarningBox,\n },\n data: function () {\n return {\n authenticating: false,\n authenticationFailed: false,\n secret: \"\",\n };\n },\n computed: {\n ...mapState([\"stateUser\"]),\n },\n methods: {\n async authenticate(secret) {\n try {\n const response = await fetch(`/api/user/this`, {\n headers: { secret: secret },\n });\n const data = await response.json();\n if (response.ok) {\n this.saveStateUser({\n id: data.id,\n privileged: data.privileged,\n username: data.username,\n secret,\n });\n } else {\n this.authenticationFailed = true;\n }\n } catch {\n (error) => console.error(\"Something went terribly wrong... \", error);\n }\n },\n ...mapActions([\"saveStateUser\"]),\n },\n};\n</script>\n\n<style lang=\"postcss\" scoped>\n.login-button {\n @apply stroke-current text-gray-600 hover:text-gray-800 inline-block ml-2;\n}\n</style>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAuthentication.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAuthentication.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UserAuthentication.vue?vue&type=template&id=b6e9e1e8&scoped=true&\"\nimport script from \"./UserAuthentication.vue?vue&type=script&lang=js&\"\nexport * from \"./UserAuthentication.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserAuthentication.vue?vue&type=style&index=0&id=b6e9e1e8&lang=postcss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b6e9e1e8\",\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('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":_vm.width,\"height\":_vm.height,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"#000000\",\"stroke-width\":\"2\",\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"}},[_c('path',{attrs:{\"d\":\"M13 17l5-5-5-5M6 17l5-5-5-5\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n :width=\"width\"\n :height=\"height\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"#000000\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M13 17l5-5-5-5M6 17l5-5-5-5\" />\n </svg>\n</template>\n\n<script>\nexport default {\n props: {\n width: {\n default: 24,\n },\n height: {\n default: 24,\n },\n },\n};\n</script>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconChevronsRight.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconChevronsRight.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconChevronsRight.vue?vue&type=template&id=603ce9fc&\"\nimport script from \"./IconChevronsRight.vue?vue&type=script&lang=js&\"\nexport * from \"./IconChevronsRight.vue?vue&type=script&lang=js&\"\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","<template>\n <div class=\"flex flex-row\">\n <section\n v-show=\"!sideBarHidden\"\n class=\"flex flex-col sticky top-0 h-screen w-1/3\"\n >\n <button @click=\"sideBarHidden = true\" class=\"self-end mt-2\">\n <IconXCircle\n class=\"stroke-current text-gray-500 hover:text-gray-600\"\n ></IconXCircle>\n </button>\n <TagCreation></TagCreation>\n <UserAuthentication class=\"absolute bottom-0\"></UserAuthentication>\n </section>\n <button\n v-show=\"sideBarHidden\"\n @click=\"sideBarHidden = false\"\n class=\"self-start sticky top-0\"\n >\n <IconChevronsRight\n class=\"mt-1 stroke-current text-gray-500 hover:text-gray-600\"\n width=\"27\"\n height=\"27\"\n ></IconChevronsRight>\n </button>\n <ImageList></ImageList>\n </div>\n</template>\n\n<script>\nimport ImageList from \"@/components/ImageList.vue\";\nimport ImageUpload from \"@/components/ImageUpload.vue\";\nimport TagCreation from \"@/components/TagCreation.vue\";\nimport UserAuthentication from \"@/components/UserAuthentication.vue\";\nimport IconXCircle from \"@/components/icons/IconXCircle.vue\";\nimport IconChevronsRight from \"@/components/icons/IconChevronsRight.vue\";\n\nexport default {\n components: {\n ImageList,\n ImageUpload,\n TagCreation,\n UserAuthentication,\n IconXCircle,\n IconChevronsRight,\n },\n data: function () {\n return {\n sideBarHidden: false,\n };\n },\n};\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=5e4cc451&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('image-upload')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <image-upload></image-upload>\n </div>\n</template>\n\n<script>\nimport ImageUpload from \"../components/ImageUpload.vue\";\n\nexport default {\n components: {\n ImageUpload,\n },\n};\n</script>","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadNew.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadNew.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./UploadNew.vue?vue&type=template&id=fb433ab6&\"\nimport script from \"./UploadNew.vue?vue&type=script&lang=js&\"\nexport * from \"./UploadNew.vue?vue&type=script&lang=js&\"\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:\"flex flex-row\"},[_c('section',{staticClass:\"flex flex-col sticky top-0 h-screen w-1/3\"},[_c('div',[_vm._v(\" Tags: \"),_vm._l((_vm.imageTags),function(imageTag){return _c('span',[_vm._v(\" \"+_vm._s(imageTag)+\" \")])})],2)]),_c('div',{attrs:{\"id\":\"image-container\"}},[_c('img',{attrs:{\"src\":(\"/api/image/\" + _vm.flake + \"/file\"),\"alt\":\"\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"flex flex-row\">\n <section class=\"flex flex-col sticky top-0 h-screen w-1/3\">\n <div>\n Tags:\n <span v-for=\"imageTag in imageTags\">\n {{ imageTag }}\n </span>\n </div>\n </section>\n <div id=\"image-container\">\n <img :src=\"`/api/image/${flake}/file`\" alt=\"\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n data: function () {\n return {\n imageTags: Array,\n };\n },\n computed: {\n flake: () => {\n return window.location.pathname.split(\"/\").pop();\n },\n },\n methods: {\n async getImageTags() {\n const response = await fetch(`/api/image/${this.flake}/tag`);\n const imageTags = await response.json();\n return imageTags;\n },\n },\n async created() {\n this.imageTags = await this.getImageTags();\n },\n};\n</script>\n\n<style scoped>\nimg {\n height: 100%;\n}\n#image-container {\n height: 100vh;\n display: flex;\n justify-content: center;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageView.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageView.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageView.vue?vue&type=template&id=b47bc4fe&scoped=true&\"\nimport script from \"./ImageView.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageView.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageView.vue?vue&type=style&index=0&id=b47bc4fe&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 \"b47bc4fe\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport Home from \"../views/Home.vue\";\nimport UploadNew from \"../views/UploadNew.vue\"\nimport ImageView from \"../views/ImageView.vue\";\n\nVue.use(VueRouter);\n\nconst routes = [\n {\n path: \"/\",\n name: \"Home\",\n component: Home,\n },\n {\n path: \"/upload\",\n name: \"UploadNew\",\n component: UploadNew,\n },\n {\n path: \"/:page\",\n name: \"Page\",\n component: Home,\n },\n {\n path: \"/image/:hash\",\n name: \"ImageView\",\n component: ImageView,\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 Vuex from \"vuex\";\nimport VuexPersistedState from \"vuex-persistedstate\";\n\nVue.use(Vuex);\nconst vuexLocal = VuexPersistedState({\n key: \"imageboard\",\n paths: [\"stateUser\"],\n});\n\nexport default new Vuex.Store({\n state: {\n stateImageSnowflakes: [],\n stateUser: {\n id: null,\n privileged: null,\n username: null,\n secret: null,\n },\n },\n mutations: {\n setStateImageSnowflakes(state, array) {\n state.stateImageSnowflakes = array;\n },\n addStateImageSnowflake(state, hash) {\n state.stateImageSnowflakes.push(hash);\n },\n saveStateUser(state, payload) {\n state.stateUser.id = payload.id;\n state.stateUser.privileged = payload.privileged;\n state.stateUser.username = payload.username;\n state.stateUser.secret = payload.secret;\n },\n },\n actions: {\n setStateImageSnowflakes(context, payload) {\n context.commit(\"setStateImageSnowflakes\", payload);\n },\n addStateImageSnowflake(context, payload) {\n context.commit(\"addStateImageSnowflake\", payload);\n },\n saveStateUser(context, payload) {\n context.commit(\"saveStateUser\", payload);\n },\n },\n modules: {},\n plugins: [vuexLocal],\n});\n","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\nimport './assets/css/tailwind.css'\n\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n render: h => h(App)\n}).$mount('#app')\n","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!./ImageView.vue?vue&type=style&index=0&id=b47bc4fe&scoped=true&lang=css&\"","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!./ImageItem.vue?vue&type=style&index=0&id=58445a1f&scoped=true&lang=css&\""],"sourceRoot":""}