Skip to content
Snippets Groups Projects
Select Git revision
  • ab4ef67c4ecb14c4f020ebedb2ef40d2d668200b
  • master default protected
2 results

App.vue

Blame
  • 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":""}