{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/Subtemplate.vue?edf2","webpack:///./src/views/SubTemplateEdit.vue?838a","webpack:///./src/App.vue?6cac","webpack:///./src/components/layouts/header_home.vue?5b6e","webpack:///src/components/layouts/header_home.vue","webpack:///./src/components/layouts/header_home.vue?4d83","webpack:///./src/components/layouts/header_home.vue","webpack:///./src/components/layouts/header_sub.vue?c7b6","webpack:///./src/components/layouts/header_sub.vue","webpack:///src/App.vue","webpack:///./src/App.vue?a7d1","webpack:///./src/App.vue","webpack:///./src/views/Home.vue?d9e3","webpack:///./src/mixins/categories.js","webpack:///./src/components/layouts/category.vue?80da","webpack:///src/components/layouts/category.vue","webpack:///./src/components/layouts/category.vue?2fbb","webpack:///./src/components/layouts/category.vue","webpack:///src/views/Home.vue","webpack:///./src/views/Home.vue?2b8c","webpack:///./src/views/Home.vue","webpack:///./src/views/Detail.vue?c512","webpack:///src/views/Detail.vue","webpack:///./src/views/Detail.vue?73e2","webpack:///./src/views/Detail.vue","webpack:///./src/views/Category.vue?2e3d","webpack:///src/views/Category.vue","webpack:///./src/views/Category.vue?37ac","webpack:///./src/views/Category.vue","webpack:///./src/views/Subtemplate.vue?7495","webpack:///src/views/Subtemplate.vue","webpack:///./src/views/Subtemplate.vue?777b","webpack:///./src/views/Subtemplate.vue","webpack:///./src/views/Confirm.vue?989b","webpack:///src/views/Confirm.vue","webpack:///./src/views/Confirm.vue?a757","webpack:///./src/views/Confirm.vue","webpack:///./src/views/SubTemplateEdit.vue?d080","webpack:///./src/components/modals/ImageCropModal.vue?bf11","webpack:///src/components/modals/ImageCropModal.vue","webpack:///./src/components/modals/ImageCropModal.vue?3dc0","webpack:///./src/components/modals/ImageCropModal.vue","webpack:///src/views/SubTemplateEdit.vue","webpack:///./src/views/SubTemplateEdit.vue?2aea","webpack:///./src/views/SubTemplateEdit.vue","webpack:///./src/views/Confirmed.vue?6d97","webpack:///src/views/Confirmed.vue","webpack:///./src/views/Confirmed.vue?720c","webpack:///./src/views/Confirmed.vue","webpack:///./src/views/Edit.vue?3e65","webpack:///src/views/Edit.vue","webpack:///./src/views/Edit.vue?b4d2","webpack:///./src/views/Edit.vue","webpack:///./src/router.js","webpack:///./src/modules/http.js","webpack:///./src/services/api.service.js","webpack:///./src/stores/main.store.js","webpack:///./src/main.js","webpack:///./src/views/Category.vue?5d2a","webpack:///./src/components/layouts/header_sub.vue?dc21","webpack:///./src/components/modals/ImageCropModal.vue?f332","webpack:///./src/views/Edit.vue?1ebb","webpack:///./src/components/modals/ImageCropModal.vue?946a"],"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","$route","fullPath","staticRenderFns","staticClass","staticStyle","_v","on","logout","_m","directives","rawName","expression","domProps","$event","type","indexOf","_k","keyCode","search","target","composing","searchText","component","_s","$store","state","title","script","categoryObj","_l","item","$router","_id","temThumbnail","temTitle","categories","mxCategories","selected","path","code","category","ref","temPreviewVideo","needImage","needVideo","videoDuration","temContent","$refs","video","load","filter","class","params","id","x","status","go","template","style","workProgress","_e","resultVideo","confirmFilm","replace","percentage","currentIndex","sources","index","sceneIndex","sceneImage","sourceType","refInFor","sourceTextLength","patchSource","calcTextLength","area","$set","changeFile","uploadData","sourceWidth","sourceHeight","reDrawInputUI","showFilechoose","inputCountObject","V","active","total","I","T","makingFilm","resourceType","includes","rotate","scale","exit","ok","cropper","getCroppedCanvas","toBlob","event","files","fill","classList","add","onClick","mixins","mounted","commit","fetchData","methods","goBack","history","createdSubtemplateId","uploadFile","Vue","use","Router","base","process","routes","Home","Detail","Confirm","Confirmed","Edit","SubtemplateEdit","Category","Subtemplate","http","url","param","method","accessToken","sessionStorage","getItem","axios","defaults","headers","common","option","console","error","fetchHomeData","fetchTemplateById","fetchSubtemplateByMe","createSubTemplate","templateId","fetchSubtemplateById","subtemplateId","patchSubTemplate","uploadImage","uploadVideo","modifyFilm","Vuex","HOME_DATA","SUB_HEADER_TITLE","enhanceAccessToken","localStorage","Axios","store","Store","mutations","LOGIN","homeData","payload","actions","context","apiService","log","getters","config","productionTip","$apiService","api","post","vueInstance","router","render","h","App","$mount","dispatch"],"mappings":"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","file":"js/app.27244437.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 = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Subtemplate.vue?vue&type=style&index=0&id=4c9628c7&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Subtemplate.vue?vue&type=style&index=0&id=4c9628c7&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubTemplateEdit.vue?vue&type=style&index=0&id=ef5290de&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubTemplateEdit.vue?vue&type=style&index=0&id=ef5290de&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[(_vm.$route.name == 'home')?_c('main-header-component'):_c('sub-header-component'),_c('router-view',{key:_vm.$route.fullPath})],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('header',[_c('div',{staticClass:\"header_visual\",staticStyle:{\"background-image\":\"url('/assets/image/header/bg.png')\"}},[_c('div',{staticClass:\"header_cont\"},[_c('div',{staticClass:\"header_top\"},[_c('div',{staticClass:\"header_logo\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"logo\",attrs:{\"src\":\"/assets/image/logo/logo.png\",\"alt\":\"로고\"}})])],1),_c('div',{staticClass:\"header_gnb\",attrs:{\"id\":\"right-side\"}},[_c('router-link',{attrs:{\"to\":\"/subtemplate\"}},[_vm._v(\"나의 템플릿\")]),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.logout}},[_vm._v(\"로그아웃\")])],1)]),_vm._m(0),_c('div',{staticClass:\"header_search\"},[_c('div',{staticClass:\"hs_wr\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchText),expression:\"searchText\"}],staticClass:\"header_inp\",attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.searchText)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.search($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchText=$event.target.value}}}),_c('img',{staticClass:\"cursor\",attrs:{\"src\":\"/assets/image/icon/search_icon.png\"},on:{\"click\":_vm.search}})])]),_c('div',{staticClass:\"header_search\"})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header_title\"},[_c('p',[_vm._v(\" 디지털 컨텐츠 제작의 패러다임을 바꾸다 \")]),_c('h4',[_vm._v(\" 디지털 컨텐츠 자동화 영상플랫폼 SW \")])])}]\n\nexport { render, staticRenderFns }","<template>\n    <header>\n        <div class=\"header_visual\" style=\"background-image: url('/assets/image/header/bg.png');\">\n            <div class=\"header_cont\">\n                <div class=\"header_top\">\n                    <div class=\"header_logo\">\n                        <router-link to=\"/\">\n                            <img src=\"/assets/image/logo/logo.png\" class=\"logo\" alt=\"로고\">\n                        </router-link>\n                    </div>\n                    <div id=\"right-side\" class=\"header_gnb\">\n                        <router-link to=\"/subtemplate\">나의 템플릿</router-link>\n                        <a v-on:click=\"logout\" href=\"#\">로그아웃</a>\n                    </div>\n                </div>\n                <div class=\"header_title\">\n                    <p>\n                        디지털 컨텐츠 제작의 패러다임을 바꾸다\n                    </p>\n                    <h4>\n                        디지털 컨텐츠 자동화 영상플랫폼 SW\n                    </h4>\n                </div>\n                <div class=\"header_search\">\n                    <div class=\"hs_wr\">\n                            <input type=\"text\" v-model=\"searchText\" class=\"header_inp\"\n                                   @keyup.enter=\"search\">\n                        <img src=\"/assets/image/icon/search_icon.png\" @click=\"search\" class=\"cursor\">\n                    </div>\n                </div>\n                <div class=\"header_search\">\n\n                </div>\n                <!--<div class=\"header_bot\">-->\n                    <!--<div class=\"header_bot_top\">-->\n                        <!--<p><span class=\"left_line\"></span>마음에 드는 템플릿을 발견하지 못하셨나요?<span class=\"right_line\"></span></p>-->\n                    <!--</div>-->\n                <!--</div>-->\n            </div>\n        </div>\n    </header>\n</template>\n<script>\n    export default{\n        data(){\n            return {\n                searchText: this.$route.query.keyword || ''\n            }\n        },\n        methods: {\n            search(){\n                this.$router.push(`/?keyword=${encodeURI(this.searchText)}`)\n            },\n            logout(){\n                    sessionStorage.removeItem(\"TKN\");\n                    location.reload();\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!./header_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!./header_home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./header_home.vue?vue&type=template&id=67c97710&\"\nimport script from \"./header_home.vue?vue&type=script&lang=js&\"\nexport * from \"./header_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',{staticClass:\"sub_header\"},[_c('div',{staticClass:\"sub_header_visual\",staticStyle:{\"background-image\":\"url('/assets/image/header/sub_bg.png')\"}},[_c('div',{staticClass:\"sub_header_cont\"},[_c('div',{staticClass:\"sub_header_top\"},[_c('div',{staticClass:\"sub_header_logo\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"logo\",attrs:{\"src\":\"/assets/image/logo/logo.png\",\"alt\":\"로고\"}})])],1),_c('div',{staticClass:\"sub_header_gnb\"},[_c('router-link',{attrs:{\"to\":\"/subtemplate\"}},[_vm._v(\"나의 템플릿\")]),_c('a',{attrs:{\"href\":\"#\"}},[_vm._v(\"로그아웃\")])],1)]),_c('div',{staticClass:\"sub_header_title\"},[_c('h1',[_vm._v(_vm._s(_vm.$store.state.title))])])])]),_c('div',{staticClass:\"dim\",staticStyle:{\"display\":\"none\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./header_sub.vue?vue&type=template&id=775ffcd7&\"\nvar script = {}\nimport style0 from \"./header_sub.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div id=\"app\">\n    <main-header-component v-if=\"$route.name == 'home'\"></main-header-component>\n    <sub-header-component v-else></sub-header-component>\n    <router-view :key=\"$route.fullPath\"/>\n  </div>\n</template>\n\n<script>\n  import mainHeaderComponent from '@/components/layouts/header_home'\n  import subHeaderComponent from '@/components/layouts/header_sub'\n  export default{\n    components:{\n      mainHeaderComponent,\n      subHeaderComponent\n    }\n  }\n</script>\n\n<style>\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!./App.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!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1144bc80&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.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('section',{attrs:{\"id\":\"content\"}},[_c('div',{attrs:{\"id\":\"content_header\"}},[_c('category')],1),_c('div',{staticClass:\"sub_content\"},[_c('div',{staticClass:\"main_item\"},[_c('div',{staticClass:\"mi_title\"},[(!_vm.searchText)?_c('h3',[_c('b',[_vm._v(_vm._s(_vm.categoryObj.name)+\" 카테고리\")]),_vm._v(\"에서 가장 최신템플릿을 만나보세요!\")]):_c('h3',[_c('b',[_vm._v(_vm._s(_vm.searchText))]),_vm._v(\"검색 결과입니다.\")])]),_c('div',{staticClass:\"mi_list\"},[_c('ul',_vm._l((_vm.data),function(item){return _c('li',{key:item,staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.$router.push('/detail/'+item._id)}}},[_c('div',{staticClass:\"mil_img\"},[_c('img',{attrs:{\"src\":item.temThumbnail,\"alt\":\"\"}})]),_c('div',{staticClass:\"mil_desc\"},[_c('h6',[_vm._v(_vm._s(item.temTitle))])])])}),0)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * prefix mx = mixin\n */\nconst categories = {\n    data(){\n        return {\n            mxCategories : [\n                {selected:false, path: '/assets/image/navigation/chimg8.png', name: '스토리텔링', code: '10'},\n                {selected:false, path: '/assets/image/navigation/chimg9.png', name: '타이포그래피', code: '11'},\n                {selected:false, path: '/assets/image/navigation/chimg10.png', name: '상품소개', code: '12'},\n                {selected:false, path: '/assets/image/navigation/chimg11.png', name: '포스터', code: '13'},\n                {selected:false, path: '/assets/image/navigation/chimg12.png', name: '기타', code: '14'}\n            ]\n        }\n    },\n}\nexport default categories","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',_vm._l((_vm.mxCategories),function(item){return _c('li',{key:item,staticStyle:{\"text-align\":\"center\"}},[_c('router-link',{attrs:{\"to\":'/categories/'+item.code}},[_c('div',{staticClass:\"ch_wr\"},[_c('div',{staticClass:\"ch_img\"},[_c('img',{attrs:{\"src\":item.path}})]),_c('div',{staticClass:\"ch_title\"},[_c('h6',{domProps:{\"textContent\":_vm._s(item.name)}})])])])],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <ul>\n        <li v-for=\"item in mxCategories\" style=\"text-align: center\" :key=\"item\">\n            <router-link :to=\"'/categories/'+item.code\">\n                <div class=\"ch_wr\">\n                    <div class=\"ch_img\">\n                        <img :src=\"item.path\">\n                    </div>\n                    <div class=\"ch_title\">\n                        <h6 v-text=\"item.name\"></h6>\n                    </div>\n                </div>\n            </router-link>\n        </li>\n    </ul>\n</template>\n<script>\n    import categories from '@/mixins/categories'\n    export default {\n        mixins: [categories]\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!./category.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!./category.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./category.vue?vue&type=template&id=0b4ff2e1&\"\nimport script from \"./category.vue?vue&type=script&lang=js&\"\nexport * from \"./category.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\n    <section id=\"content\">\n        <div id=\"content_header\">\n            <category></category>\n        </div>\n\n        <div class=\"sub_content\">\n            <div class=\"main_item\">\n                <div class=\"mi_title\">\n                    <h3 v-if=\"!searchText\"><b>{{categoryObj.name}} 카테고리</b>에서 가장 최신템플릿을 만나보세요!</h3>\n                    <h3 v-else><b>{{searchText}}</b>검색 결과입니다.</h3>\n                </div>\n                <div class=\"mi_list\">\n                    <ul>\n                        <li v-for=\"item in data\" :key=\"item\" @click=\"$router.push('/detail/'+item._id)\" style=\"cursor: pointer\">\n                            <div class=\"mil_img\">\n                                <img :src=\"item.temThumbnail\" alt=\"\">\n                            </div>\n                            <div class=\"mil_desc\">\n                                <h6>{{item.temTitle}}</h6>\n                                <!-- <p>{{item.temAuthor}}</p> -->\n                            </div>\n                        </li>\n                    </ul>\n                </div>\n\n            </div>\n        </div>\n\n    </section>\n</template>\n\n<script>\n    import {mapGetters} from 'vuex'\n    import mxCategories from '@/mixins/categories'\n    import category from '@/components/layouts/category'\n    export default {\n        name: 'home',\n        data(){\n            return {\n                data: [],\n                randomCategoryNo : '',\n                categoryObj: {},\n                searchText: this.$route.query.keyword,\n            }\n        },\n        components: {\n            category\n        },\n        mixins: [mxCategories],\n        computed: {\n            ...mapGetters(['homeData'])\n        },\n        watch: {\n            homeData(newValue, oldValue) {\n                if (newValue) {\n                    this.drawData()\n                }\n            }\n        },\n        created(){\n            this.generatedRandomCategory()\n            this.categoryObj\n                    = this.mxCategories.filter(x=>x.code == this.randomCategoryNo)[0]\n            this.drawData()\n        },\n        methods: {\n            generatedRandomCategory(){\n                this.randomCategoryNo = (Math.floor(Math.random()*(13-10+1)) + 10)\n            },\n            drawData(){\n                if (this.homeData) {\n                    if (this.searchText) {\n                        let items = this.$store.state.homeData.filter(x=> x.temTitle.toLowerCase().includes(this.searchText.toLowerCase()))\n                        if (items.length > 0){\n                            this.data = items\n                        }else{\n                            // mutation\n                            this.$router.replace('/')\n                        }\n                    }else {\n                        this.data = this.$store.state.homeData.filter(x=> x.categorize == this.randomCategoryNo)\n                    }\n                }\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=522c6d25&\"\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('section',{attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"breadcrumb\"},[_c('ul',[_c('li',[_c('router-link',{attrs:{\"to\":\"/\"}},[_vm._v(\"홈\")])],1),_c('li',[_c('router-link',{attrs:{\"to\":'/categories/'+_vm.category.code}},[_vm._v(_vm._s(_vm.category.name))])],1)])]),_c('div',{staticClass:\"nedit_content\"},[_c('div',{staticClass:\"nec_video_wr\"},[_c('div',{staticClass:\"nec_video\"},[_c('video',{ref:\"video\",attrs:{\"controls\":\"\",\"autoplay\":\"\",\"poster\":_vm.data.temThumbnail}},[_c('source',{attrs:{\"src\":_vm.data.temPreviewVideo,\"type\":\"video/mp4\"}})])]),_c('div',{staticClass:\"nec_info\"},[_c('h2',{domProps:{\"textContent\":_vm._s(_vm.data.temTitle)}}),_c('ul',[_vm._m(0),_c('li',{staticStyle:{\"margin-top\":\"10px\",\"margin-bottom\":\"10px\"}},[_vm._m(1),_c('span',{staticClass:\"float_right\"},[_c('b',[_vm._v(_vm._s(_vm.data.needImage))]),_vm._v(\"장\")])]),_c('li',{staticStyle:{\"margin-top\":\"10px\",\"margin-bottom\":\"10px\"}},[_vm._m(2),_c('span',{staticClass:\"float_right\"},[_c('b',[_vm._v(_vm._s(_vm.data.needVideo))]),_vm._v(\"장\")])]),_c('li',{staticStyle:{\"margin-top\":\"10px\",\"margin-bottom\":\"10px\"}},[_vm._m(3),_c('span',{staticClass:\"float_right\"},[_c('b',[_vm._v(\"00 : \"+_vm._s(_vm.data.videoDuration))])])])]),_c('div',{staticClass:\"nec_btn cursor\",staticStyle:{\"font-weight\":\"10 !important\"},on:{\"click\":function($event){return _vm.$router.push('/edits/'+ _vm.data._id)}}},[_c('a',[_vm._v(\"제작하기\")])])])]),_c('div',{staticClass:\"nec_desc\"},[_c('h3',[_vm._v(\"템플릿 설명\")]),_c('p',{domProps:{\"textContent\":_vm._s(_vm.data.temContent)}})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('h3',[_vm._v(\"필요한 미디어수\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"abs_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit1.png\"}}),_vm._v(\"이미지\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"abs_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit2.png\"}}),_vm._v(\"영상\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"abs_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit3.png\"}}),_vm._v(\"시간\")])}]\n\nexport { render, staticRenderFns }","<template>\n\n    <section id=\"content\">\n        <div class=\"breadcrumb\">\n            <ul>\n                <li>\n                    <router-link to=\"/\">홈</router-link>\n                </li>\n                <li>\n                    <router-link :to=\"'/categories/'+category.code\">{{category.name}}</router-link>\n                </li>\n            </ul>\n        </div>\n\n        <div class=\"nedit_content\">\n\n            <div class=\"nec_video_wr\">\n                <div class=\"nec_video\">\n                    <video controls ref=\"video\" autoplay :poster=\"data.temThumbnail\">\n                        <source :src=\"data.temPreviewVideo\" type=\"video/mp4\">\n                    </video>\n                </div>\n\n                <div class=\"nec_info\">\n                    <h2 v-text=\"data.temTitle\"></h2>\n                    <!-- <p v-text=\"data.temAuthor\"></p> -->\n                    <ul>\n                        <li>\n                            <h3>필요한 미디어수</h3>\n                        </li>\n                        <li style=\"margin-top: 10px; margin-bottom: 10px;\">\n                            <span class=\"abs_img\"><img src=\"/assets/image/icon/nedit1.png\">이미지</span>\n                            <span class=\"float_right\"><b>{{data.needImage}}</b>장</span>\n                        </li>\n                        <li style=\"margin-top: 10px; margin-bottom: 10px;\">\n                            <span class=\"abs_img\"><img src=\"/assets/image/icon/nedit2.png\">영상</span>\n                            <span class=\"float_right\"><b>{{data.needVideo}}</b>장</span>\n                        </li>\n                        <li style=\"margin-top: 10px; margin-bottom: 10px;\">\n                            <span class=\"abs_img\"><img src=\"/assets/image/icon/nedit3.png\">시간</span>\n                            <span class=\"float_right\"><b>00 : {{data.videoDuration}}</b></span>\n                        </li>\n                    </ul>\n                    <div class=\"nec_btn cursor\" @click=\"$router.push('/edits/'+ data._id)\" style=\"font-weight: 10 !important;\">\n                        <a>제작하기</a>\n                    </div>\n                </div>\n            </div>\n            <div class=\"nec_desc\">\n                <h3>템플릿 설명</h3>\n                <p v-text=\"data.temContent\"></p>\n            </div>\n        </div>\n\n\n    </section>\n</template>\n\n<script>\n    import category from '@/components/layouts/category'\n    import mxCategories from '@/mixins/categories'\n    export default {\n        data(){\n            return {\n                id: this.$route.params.id,\n                category: {code: 'all', name: '미분류'},\n                data: {}\n            }\n        },\n        mixins: [mxCategories],\n        mounted(){\n            this.$store.commit('title', '템플릿 둘러보기')\n            this.fetchData()\n        },\n        methods: {\n            async fetchData(){\n                let {data} = await\n                this.$apiService.fetchTemplateById(this.id)\n                this.data = data\n                this.$refs.video.load()\n                if (this.mxCategories.filter(x => x.code == data.categorize).\n                length > 0\n            )\n                this.category = this.mxCategories.filter(x => x.code == data.categorize\n            )\n                [0]\n            }\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!./Detail.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!./Detail.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Detail.vue?vue&type=template&id=6e79402e&\"\nimport script from \"./Detail.vue?vue&type=script&lang=js&\"\nexport * from \"./Detail.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('section',{staticClass:\"sc_wr\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"side_nav sc_left\"},[_c('h2',[_vm._v(\"카테고리\")]),_c('ul',[_c('li',[_c('router-link',{class:{'activation':_vm.$route.params.id == 'all'},attrs:{\"to\":\"/categories/all\"}},[_vm._v(\"전체\")])],1),_vm._l((_vm.mxCategories),function(item){return _c('li',{key:item},[_c('router-link',{class:{'activation':item.selected},attrs:{\"to\":'/categories/'+item.code}},[_vm._v(_vm._s(item.name))])],1)})],2)]),_c('div',{staticClass:\"side_content sc_right\"},[_c('div',{staticClass:\"main_item\"},[_c('div',{staticClass:\"mi_list\"},[_c('ul',_vm._l((_vm.data),function(item){return _c('li',{key:item,staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.$router.push('/detail/'+item._id)}}},[_c('div',{staticClass:\"mil_img\"},[_c('img',{attrs:{\"src\":item.temThumbnail,\"alt\":\"\"}})]),_c('div',{staticClass:\"mil_desc\"},[_c('h6',[_vm._v(_vm._s(item.temTitle))])])])}),0)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <section id=\"content\" class=\"sc_wr\">\n        <div class=\"side_nav sc_left\">\n            <h2>카테고리</h2>\n            <ul>\n                <li>\n                    <router-link\n                            :class=\"{'activation':$route.params.id == 'all'}\"\n                            to=\"/categories/all\">전체</router-link>\n                </li>\n                <li v-for=\"item in mxCategories\" :key=\"item\">\n                    <router-link\n                            :class=\"{'activation':item.selected}\"\n                            :to=\"'/categories/'+item.code\">{{item.name}}</router-link>\n                </li>\n            </ul>\n        </div>\n\n        <div class=\"side_content sc_right\">\n\n            <div class=\"main_item\">\n                <div class=\"mi_list\">\n                    <ul>\n                        <li v-for=\"item in data\" @click=\"$router.push('/detail/'+item._id)\" style=\"cursor: pointer\" :key=\"item\">\n                            <div class=\"mil_img\">\n                                <img :src=\"item.temThumbnail\" alt=\"\">\n                            </div>\n                            <div class=\"mil_desc\">\n                                <h6>{{item.temTitle}}</h6>\n                                <!-- <p>{{item.temAuthor}}</p> -->\n                            </div>\n                        </li>\n                    </ul>\n                </div>\n            </div>\n        </div>\n    </section>\n</template>\n\n<script>\n    import {mapState} from 'vuex'\n    import category from '@/mixins/categories'\n    export default {\n        data(){\n            return {\n                data: [],\n                category: this.$route.params.id\n            }\n        },\n        computed: mapState(['homeData']),\n        mixins: [category],\n        watch: {\n            homeData(newValue, oldValue) {\n                if (oldValue) {\n                    // 필터 적용해야함\n                    this.data = this.$store.state.homeData.filter(x=>x.categorize == this.category)\n                }\n            }\n        },\n        created(){\n            this.$store.commit('title','템플릿 둘러보기')\n            if (this.$route.params.id == 'all') {\n                this.data = this.$store.state.homeData\n            } else {\n                this.mxCategories.map(x=> {\n                    if (x.code == this.category)\n                        x.selected = true\n                })\n                if (this.$store.state.homeData) {\n                    this.data = this.$store.state.homeData.filter(x=>x.categorize == this.category)\n                }\n            }\n        },\n    }\n</script>\n<style scoped>\n\n    .activation {\n        color: #2fbaef;\n        border-bottom: 1px solid #2fbaef;\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!./Category.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!./Category.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Category.vue?vue&type=template&id=1f4bbbae&scoped=true&\"\nimport script from \"./Category.vue?vue&type=script&lang=js&\"\nexport * from \"./Category.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Category.vue?vue&type=style&index=0&id=1f4bbbae&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  \"1f4bbbae\",\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('section',{attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"sub_content\"},[_c('div',[_c('h1',[_vm._v(\" 전체(\"),_c('span',{domProps:{\"textContent\":_vm._s(_vm.data.length)}}),_vm._v(\") 작업중(\"),_c('span',{domProps:{\"textContent\":_vm._s(_vm.data.filter(function (x){ return x.status < 3; }).length)}},[_vm._v(\"0\")]),_vm._v(\") 렌더링완료(\"),_c('span',{domProps:{\"textContent\":_vm._s(_vm.data.filter(function (x){ return x.status == 3; }).length)}},[_vm._v(\"0\")]),_vm._v(\") 확정(\"),_c('span',{domProps:{\"textContent\":_vm._s(_vm.data.filter(function (x){ return x.status == 4; }).length)}},[_vm._v(\"0\")]),_vm._v(\") \")])]),_c('br'),_c('br'),_c('br'),_c('div',{staticClass:\"main_item\"},[_c('div',{staticClass:\"mi_list\"},[_c('ul',_vm._l((_vm.data),function(item){return _c('li',{key:item,staticStyle:{\"height\":\"100%\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.go(item)}}},[_c('div',{staticClass:\"mil_img\"},[_c('img',{attrs:{\"src\":item.template? item.template.temThumbnail: '',\"alt\":\"\"}})]),_c('div',[_c('h3',{staticStyle:{\"text-align\":\"center\",\"margin\":\"20px 0 20px 0\"}},[_vm._v(_vm._s(item._id))]),_c('div',{staticClass:\"progressbar\",style:({'width':item.workProgress < 30 ? '30%' : item.workProgress + '%'})},[(item.status == 0 )?_c('span',[_vm._v(_vm._s(item.workProgress)+\"%\")]):_vm._e(),(item.status == 1 || item.status == 2 )?_c('span',[_vm._v(\"렌더링 중\")]):_vm._e(),(item.status == 3 )?_c('span',[_vm._v(\"렌더링 완료\")]):_vm._e(),(item.status == 4 )?_c('span',[_vm._v(\"확정\")]):_vm._e()])])])}),0)])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n    <section id=\"content\">\n        <div class=\"sub_content\">\n            <div>\n                <h1>\n                    전체(<span v-text=\"data.length\"></span>) &nbsp;&nbsp; 작업중(<span\n                        v-text=\"data.filter(x=>x.status < 3).length\">0</span>) &nbsp;&nbsp; 렌더링완료(<span\n                        v-text=\"data.filter(x=>x.status == 3).length\">0</span>) &nbsp;&nbsp;\n                    확정(<span\n                        v-text=\"data.filter(x=>x.status == 4).length\">0</span>)\n                </h1>\n            </div>\n            <br><br><br>\n            <div class=\"main_item\">\n                <div class=\"mi_list\">\n                    <ul>\n                        <li style=\"height:100%;cursor: pointer\" v-for=\"item in data\" @click=\"go(item)\" :key=\"item\">\n                            <div class=\"mil_img\">\n                                <img :src=\"item.template? item.template.temThumbnail: ''\" alt=\"\">\n                            </div>\n                            <div>\n                                <h3 style=\"text-align: center; margin: 20px 0 20px 0\">{{item._id}}</h3>\n                                <div class=\"progressbar\" :style=\"{'width':item.workProgress < 30 ? '30%' : item.workProgress + '%'}\">\n                                    <span v-if=\"item.status == 0 \">{{item.workProgress}}%</span>\n                                    <span v-if=\"item.status == 1 || item.status == 2 \">렌더링 중</span>\n                                    <span v-if=\"item.status == 3 \">렌더링 완료</span>\n                                    <span v-if=\"item.status == 4 \">확정</span>\n                                </div>\n                            </div>\n\n                        </li>\n                    </ul>\n                </div>\n            </div>\n        </div>\n    </section>\n</template>\n\n<script>\n    export default {\n        data(){\n            return {\n                data: [],\n            }\n        },\n        created(){\n            this.$store.commit('title', '나의 템플릿')\n            this.fetchTemplateData()\n        },\n        methods: {\n            async fetchTemplateData(){\n                const {data} = await this.$apiService.fetchSubtemplateByMe()\n                this.data = data\n            },\n            go(item){\n                if (item.status==0) {\n                    this.$router.push({name:'subEdit', params:{id:item._id}})\n                }if (item.status==3){\n                    this.$router.push({name:'confirm', params:{id:item._id}})\n                } else if (item.status == 4) {\n                    this.$router.push({name:'thanks', params:{id:item._id}})\n                }\n            },\n            reloadPage(){\n                window.location.reload()\n            }\n        }\n    }\n</script>\n<style scoped>\n    .progressbar {\n        background-color: #2fbaef;\n        height: 30px;\n        padding:10px;\n        color:white;\n        margin-left: 0px;\n        margin-right: 0px;\n        vertical-align: middle;\n        text-align: 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!./Subtemplate.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!./Subtemplate.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Subtemplate.vue?vue&type=template&id=4c9628c7&scoped=true&\"\nimport script from \"./Subtemplate.vue?vue&type=script&lang=js&\"\nexport * from \"./Subtemplate.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Subtemplate.vue?vue&type=style&index=0&id=4c9628c7&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  \"4c9628c7\",\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('section',{attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"edit_content\"},[_c('br'),_c('div',{staticClass:\"ec_video\"},[_c('video',{ref:\"video\",attrs:{\"controls\":\"\",\"autoplay\":\"\"}},[_c('source',{attrs:{\"src\":_vm.data.resultVideo,\"type\":\"video/mp4\"}})])]),_c('div',{staticClass:\"ec_title\"},[_c('h2',{domProps:{\"textContent\":_vm._s(_vm.data.temTitle)}})]),_vm._m(0),_c('div',{staticClass:\"ec2_btn\"},[_c('router-link',{attrs:{\"to\":'/sub/edits/'+_vm.data._id}},[_vm._v(\"수정하기\")])],1),_c('div',{staticClass:\"ec_btn\"},[_c('a',{staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":_vm.confirmFilm}},[_vm._v(\"확정하기\")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"font-size\":\"20px\"}},[_c('strong',[_vm._v(\"축하드립니다!\")])]),_c('br'),_c('span',[_vm._v(\"요청하신 영상이 완료되었습니다.\")]),_c('br'),_c('span',[_vm._v(\"수정을 원할 시 \"),_c('strong',[_vm._v(\"수정하기,\")])]),_c('br'),_c('span',[_vm._v(\"마음에 든다면 \"),_c('strong',[_vm._v(\"확정하기\")]),_vm._v(\"버튼을 선택해주세요\")])])}]\n\nexport { render, staticRenderFns }","<template>\n\n    <section id=\"content\">\n\n        <div class=\"edit_content\">\n            <br>\n            <div class=\"ec_video\">\n                <video controls ref=\"video\" autoplay>\n                    <source :src=\"data.resultVideo\" type=\"video/mp4\">\n                </video>\n            </div>\n\n            <div class=\"ec_title\">\n                <h2 v-text=\"data.temTitle\"></h2>\n                <!-- <p v-text=\"data.temAuthor\"></p> -->\n            </div>\n\n            <div class=\"\" style=\"text-align: center;\">\n                <div style=\"font-size: 20px\"><strong>축하드립니다!</strong></div><br>\n\n                <span>요청하신 영상이 완료되었습니다.</span><br>\n                <span>수정을 원할 시 <strong>수정하기,</strong></span><br>\n                <span>마음에 든다면 <strong>확정하기</strong>버튼을 선택해주세요</span>\n            </div>\n\n\n            <div class=\"ec2_btn\">\n                <router-link :to=\"'/sub/edits/'+data._id\">수정하기</router-link>\n            </div>\n            <div class=\"ec_btn\">\n                <a @click=\"confirmFilm\" style=\"cursor: pointer\">확정하기</a>\n            </div>\n\n        </div>\n\n    </section>\n</template>\n\n<script>\n    import category from '@/components/layouts/category'\n    import mxCategories from '@/mixins/categories'\n    export default {\n        data(){\n            return {\n                id: this.$route.params.id,\n                data: {}\n            }\n        },\n        mixins:[mxCategories],\n        mounted(){\n            this.$store.commit('title','템플릿 편집실')\n            this.fetchData()\n        },\n        methods:{\n            goBack(){\n                window.history.length > 1 ? this.$router.go(-1) : this.$router.push('/subtemplate')\n            },\n            async fetchData(){\n                let {data} = await this.$apiService.fetchSubtemplateById(this.id)\n                this.data = data\n                this.$refs.video.load()\n            },\n            async confirmFilm(){\n                let {data} = await this.$apiService.confirmFilm(this.id)\n                this.$router.replace('/thanks/'+ this.id)\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!./Confirm.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!./Confirm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Confirm.vue?vue&type=template&id=6c5bef56&\"\nimport script from \"./Confirm.vue?vue&type=script&lang=js&\"\nexport * from \"./Confirm.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('section',{attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"nedit_top\"},[_c('h1',[_vm._v(\"템플릿 완성도 \"),_c('strong',[_vm._v(_vm._s(_vm.percentage)+\" %\")])]),_c('a',{staticStyle:{\"border\":\"none\",\"color\":\"black\"},attrs:{\"href\":\"#\"}},[_c('h1',[_vm._v(\"Scene \"+_vm._s((_vm.currentIndex+1))+\"/\"+_vm._s(_vm.data.sources.length))])])]),_c('div',{staticClass:\"nedit_content\"},[_c('div',{staticClass:\"nec_slide\"},[_c('div',{staticClass:\"nec_container\"},[_c('div',{staticClass:\"nedit_row\"},_vm._l((_vm.sliders),function(item,index){return _c('div',{key:(item, index),staticClass:\"column\",on:{\"click\":function($event){_vm.currentIndex = item.sceneIndex}}},[_c('img',{staticClass:\"demo cursor\",class:{'active' : _vm.currentIndex == item.sceneIndex},staticStyle:{\"width\":\"100%\"},attrs:{\"src\":item.sceneImage,\"alt\":\"The Woods\"}})])}),0),_c('br'),_c('div',{staticClass:\"mySlides\"},[_c('img',{staticClass:\"slide_img\",staticStyle:{\"width\":\"100%\"},attrs:{\"src\":_vm.data.sources[_vm.currentIndex].sceneImage}}),_c('video',{ref:\"video\",staticStyle:{\"position\":\"absolute\",\"opacity\":\"0\"},attrs:{\"preload\":\"none\",\"controls\":\"true\"}}),_c('canvas',{ref:\"canvas\",staticStyle:{\"position\":\"absolute\",\"width\":\"100%\",\"height\":\"655px\",\"left\":\"0px\"},attrs:{\"id\":\"canvas\"}}),_c('svg',{staticStyle:{\"position\":\"absolute\",\"top\":\"150px\",\"left\":\"0px\",\"width\":\"100%\"},attrs:{\"id\":\"fillArea\",\"viewBox\":\"0 0 1280 720\"}},[_c('polygon',{staticClass:\"area_none\",attrs:{\"id\":\"realArea\"}})]),_c('div',{staticClass:\"nedit_num_text\",domProps:{\"textContent\":_vm._s('#'+(_vm.currentIndex+1))}})]),_c('a',{staticClass:\"prev\",on:{\"click\":function($event){_vm.currentIndex--}}},[_c('img',{staticStyle:{\"position\":\"relative\"},attrs:{\"src\":\"/assets/image/navigation/prev.png\"}})]),_c('a',{staticClass:\"next\",on:{\"click\":function($event){_vm.currentIndex++}}},[_c('img',{staticStyle:{\"position\":\"relative\"},attrs:{\"src\":\"/assets/image/navigation/next.png\"}})])])])]),_c('div',{staticClass:\"nedit_form\"},[_c('table',[_c('tbody',_vm._l((_vm.data.sources[_vm.currentIndex].source),function(item,index){return _c('tr',{key:(item, index),staticClass:\"tr_image\"},[(item.sourceType == 'T')?_c('th',[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit6.png\"}})]):_vm._e(),(item.sourceType == 'T')?_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.uploadData),expression:\"item.uploadData\"}],ref:'t_'+(index+1),refInFor:true,attrs:{\"type\":\"text\",\"placeholder\":\"텍스트를 입력해주세요\",\"name\":_vm.currentIndex+'_'+(index+1),\"maxlength\":item.sourceTextLength[2]},domProps:{\"value\":(item.uploadData)},on:{\"blur\":_vm.patchSource,\"keyup\":function($event){_vm.calcTextLength('t_'+(index+1))},\"click\":function($event){_vm.area('t_'+(index+1))},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"uploadData\", $event.target.value)}}}),_c('button',{staticStyle:{\"background-color\":\"transparent\"},attrs:{\"disabled\":\"\"}},[_c('span',[_c('span',{ref:'c_t_'+(index+1),refInFor:true},[_vm._v(\"0\")]),_vm._v(\" / \"+_vm._s(item.sourceTextLength[2]))])])]):_vm._e(),(item.sourceType == 'I')?_c('th',[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit4.png\"}})]):_vm._e(),(item.sourceType == 'I')?_c('td',[_c('input',{ref:'i_file_'+(index+1),refInFor:true,staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/*\",\"name\":'i'+(index+1)},on:{\"change\":function($event){_vm.changeFile($event, 't_i_file_'+(index+1))}}}),_c('input',{ref:'t_i_file_'+(index+1),refInFor:true,attrs:{\"type\":\"text\",\"placeholder\":item.uploadData ? item.uploadData : '이미지를 등록해주세요',\"data-crop-w\":item.sourceWidth,\"data-crop-h\":item.sourceHeight,\"name\":_vm.currentIndex+'_'+(index+1),\"readonly\":\"\"},on:{\"click\":function($event){_vm.area('t_i_file_'+(index+1))}}}),(!item.uploadData)?_c('button',{on:{\"click\":function($event){_vm.showFilechoose('i_file_'+(index+1))}}},[_vm._v(\"첨부\")]):_c('button',{staticClass:\"delete_btn\",on:{\"click\":function($event){item.uploadData = ''; _vm.reDrawInputUI('t_i_file_'+(index+1))}}},[_vm._v(\"삭제\")])]):_vm._e(),(item.sourceType == 'V')?_c('th',[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit5.png\"}})]):_vm._e(),(item.sourceType == 'V')?_c('td',[_c('input',{ref:'v_file_'+(index+1),refInFor:true,staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"name\":'v_'+(index+1),\"accept\":\"video/mp4\"},on:{\"change\":function($event){_vm.changeFile($event, 't_v_file_'+(index+1))}}}),_c('input',{ref:'t_v_file_'+(index+1),refInFor:true,attrs:{\"type\":\"text\",\"placeholder\":item.uploadData ? item.uploadData : '영상을 등록해주세요',\"data-crop-w\":item.sourceWidth,\"data-crop-h\":item.sourceHeight,\"name\":_vm.currentIndex+'_'+(index+1),\"readonly\":\"\"},on:{\"click\":function($event){_vm.area('t_v_file_'+(index+1))}}}),(!item.uploadData)?_c('button',{on:{\"click\":function($event){_vm.showFilechoose('v_file_'+(index+1))}}},[_vm._v(\"첨부\")]):_c('button',{staticClass:\"delete_btn\",on:{\"click\":function($event){item.uploadData = ''; _vm.reDrawInputUI('t_v_file_'+(index+1));}}},[_vm._v(\"삭제\")])]):_vm._e()])}),0)]),_c('div',{staticClass:\"nec_res\"},[_c('ul',[_c('li',[_vm._m(0),_c('span',{staticClass:\"res_text\"},[_vm._v(_vm._s(_vm.inputCountObject.V.active)+\"/\"+_vm._s(_vm.inputCountObject.V.total))])]),_c('li',[_vm._m(1),_c('span',{staticClass:\"res_text\"},[_vm._v(_vm._s(_vm.inputCountObject.I.active)+\"/\"+_vm._s(_vm.inputCountObject.I.total))])]),_c('li',{staticClass:\"lst_icon\"},[_vm._m(2),_c('span',{staticClass:\"res_text\"},[_vm._v(_vm._s(_vm.inputCountObject.T.active)+\"/\"+_vm._s(_vm.inputCountObject.T.total))])])])]),(_vm.percentage != 100)?_c('div',{staticClass:\"nec_btn cursor\",on:{\"click\":function($event){_vm.currentIndex++}}},[_c('a',[_vm._v(\"다음\")])]):_c('div',{staticClass:\"nec_btn cursor\",on:{\"click\":_vm.makingFilm}},[_c('a',[_vm._v(\"영상제작하기\")])])]),_c('crop-modal',{ref:\"cropModal\"})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"res_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit2.png\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"res_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit1.png\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"res_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/t_icon.jpeg\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isShow),expression:\"isShow\"}],staticStyle:{\"position\":\"absolute\",\"width\":\"100%\",\"top\":\"400px\"}},[_c('div',{staticClass:\"template-area\"},[_c('div',{staticClass:\"in-template\"},[_c('div',{staticClass:\"img\",staticStyle:{\"max-height\":\"650px\",\"height\":\"650px\"}},[_c('img',{ref:\"img\",staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"img\"}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.resourceType.includes('video')),expression:\"!resourceType.includes('video')\"}],staticClass:\"button\"},[_c('ul',[_c('li',{on:{\"click\":function($event){return _vm.rotate(90)}}},[_c('img',{attrs:{\"src\":\"/assets/image/edit/rotate.png\",\"alt\":\"\"}})]),_c('li',{on:{\"click\":function($event){return _vm.scale('x')}}},[_vm._m(0)]),_c('li',{on:{\"click\":function($event){return _vm.scale('y')}}},[_vm._m(1)])])]),_c('br'),_c('br'),_c('ul',{staticClass:\"pre-nt\"},[_c('li',{on:{\"click\":_vm.exit}},[_c('a',[_vm._v(\"나가기\")])]),_c('li',{on:{\"click\":_vm.ok}},[_c('a',[_vm._v(\"다음\")])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',[_c('img',{attrs:{\"src\":\"/assets/image/edit/leftright.png\",\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',[_c('img',{attrs:{\"src\":\"/assets/image/edit/topdown.png\",\"alt\":\"\"}})])}]\n\nexport { render, staticRenderFns }","<template>\n    <section v-show=\"isShow\" style=\"position:absolute; width:100%; top:400px\">\n        <div class=\"template-area\">\n            <div class=\"in-template\">\n                <div class=\"img\" style=\"max-height: 650px; height:650px;\">\n                    <img id=\"img\" ref=\"img\" style=\"width: 100%\">\n                </div>\n                <div class=\"button\" v-show=\"!resourceType.includes('video')\">\n                    <ul>\n                        <li @click=\"rotate(90)\">\n                            <img src=\"/assets/image/edit/rotate.png\" alt=\"\">\n                        </li>\n                        <li @click=\"scale('x')\"><a>\n                            <img src=\"/assets/image/edit/leftright.png\" alt=\"\">\n                        </a></li>\n                        <li @click=\"scale('y')\"><a>\n                            <img src=\"/assets/image/edit/topdown.png\" alt=\"\">\n                        </a></li>\n                    </ul>\n                </div>\n                <br><br>\n                <ul class=\"pre-nt\">\n                    <li @click=\"exit\"><a>나가기</a></li>\n                    <li @click=\"ok\"><a>다음</a></li>\n                </ul>\n            </div>\n        </div>\n    </section>\n</template>\n<script>\n    import Cropper from 'cropperjs'\n    const templateRatio = {\n        0:{image:NaN, video:{w:720,h:720}},\n        1:{image:1/1, video:{w:720,h:720}},\n        2:{image:9/16, video:{w:720,h:1280}},\n        3:{image:16/9, video:{w:1280,h:720}}\n    }\n    export default {\n        data(){\n            return {\n                videoSrc: {},\n                resourceType: '',\n                parent: {},\n                selectedRef: '',\n                isShow: false,\n                scaleX: 1,\n                scaleY: 1,\n                cropper: {}\n            }\n        },\n        methods: {\n            open(imageData, videoData, parent, resoureType, ref, minCropboxW = 1280, minCropboxH = 720){\n                const image = this.$refs.img\n                image.src = imageData\n                this.videoSrc = videoData\n                this.parent = parent\n                this.resourceType = resoureType\n                this.selectedRef = ref\n                this.isShow = true\n                try{\n                    this.cropper.destroy()\n                }catch (e){\n                }\n                document.getElementsByClassName('dim')[0].style.display = 'block'\n                this.cropper = new Cropper(image, {\n                    aspectRatio: parseInt(minCropboxW)/parseInt(minCropboxH),\n                    cropBoxResizable: false,\n                    dragMode: 'move',\n                    viewMode:1,\n                    ready(){\n                        scrollTo(0, 3)\n                    }\n                })\n            },\n            async ok(){\n                this.cropper.getCroppedCanvas().toBlob(async blob=> {\n                    let formData = new FormData()\n                    let data = {}\n                    if (this.resourceType.includes('video')) {\n                        formData.append('file', this.videoSrc)\n                        const cropData = this.cropper.getData()\n                        formData.append('cropWidth', cropData.width)\n                        formData.append('cropHeight', cropData.height)\n                        formData.append('cropX',cropData.x)\n                        formData.append('cropY', cropData.y)\n                        formData.append('scaleWidth', templateRatio[this.parent.data.templateRatio].video.w)\n                        formData.append('scaleHeight',templateRatio[this.parent.data.templateRatio].video.h)\n                        data = await this.$apiService.uploadVideo(formData)\n                    } else {\n                        formData.append('file', blob)\n                        data = await this.$apiService.uploadImage(formData)\n                    }\n                    this.isShow = false;\n                    this.parent.insertCroppedData(this.selectedRef, data.data.url)\n                    document.getElementsByClassName('dim')[0].style.display = 'none'\n                })\n            },\n            exit(){\n                if (!confirm('지금 나가시면 적용된 효과들이 모두 취소됩니다.정말 나가시겠습니까?')) return\n                document.getElementsByClassName('dim')[0].style.display = 'none'\n                this.parent.cancelUploadFile(this.selectedRef)\n                this.isShow = false\n            },\n            scale(mode){\n                if (mode == 'x') {\n                    this.scaleX = this.scaleX == -1 ? 1 : -1\n                    this.cropper.scaleX(this.scaleX)\n                } else {\n                    this.scaleY = this.scaleY == -1 ? 1 : -1\n                    this.cropper.scaleY(this.scaleY)\n                }\n            },\n            rotate(degree){\n                this.cropper.rotate(degree)\n            }\n        },\n    }\n</script>\n<style>\n    @import '../../../node_modules/cropperjs/dist/cropper.min.css';\n</style>\n<style scoped>\n    .template-area {\n        position: absolute;\n        width: 100%;\n        height: 100%;\n    }\n\n    .template-area .in-template {\n        position: absolute;\n        top: 50%;\n        left: 50%;\n        width: 984px;\n        margin: -400px 0 0 -492px;\n        z-index: 100;\n    }\n\n    .template-area .in-template .img {\n        text-align: center;\n    }\n\n    .template-area .in-template .button {\n        width: 100%;\n        background: #000;\n        padding: 42px 0 44px;\n    }\n\n    .template-area .in-template .button ul {\n        overflow: hidden;\n        margin: 0 auto;\n        width: 355px;\n    }\n\n    .template-area .in-template .button ul li {\n        float: left;\n    }\n\n    .template-area .in-template .button ul li:nth-child(2n) {\n        padding: 0 73px 0 72px;\n    }\n\n    .template-area .pre-nt {\n        overflow: hidden;\n        z-index: 100;\n    }\n\n    .template-area .pre-nt li {\n        float: left;\n        width: 50%;\n        text-align: center;\n    }\n\n    .template-area .pre-nt li a {\n        display: block;\n        border: 1px solid #fff;\n        font-size: 25px;\n        width: 491px;\n        text-align: center;\n        padding: 25px 0;\n        color: #fff;\n        font-weight: bold;\n    }\n\n    .template-area .pre-nt li:nth-child(2n) a {\n        /*border-top: 1px solid #000;*/\n        /*border-bottom: 1px solid #000;*/\n        /*border-right: 1px solid #000;*/\n        width: 490px;\n    }\n\n    li {\n        cursor: pointer;\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!./ImageCropModal.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!./ImageCropModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ImageCropModal.vue?vue&type=template&id=7b9e9e80&scoped=true&\"\nimport script from \"./ImageCropModal.vue?vue&type=script&lang=js&\"\nexport * from \"./ImageCropModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ImageCropModal.vue?vue&type=style&index=0&lang=css&\"\nimport style1 from \"./ImageCropModal.vue?vue&type=style&index=1&id=7b9e9e80&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  \"7b9e9e80\",\n  null\n  \n)\n\nexport default component.exports","<template>\n    <section id=\"content\">\n        <div class=\"nedit_top\">\n            <h1>템플릿 완성도 <strong>{{percentage}} %</strong></h1>\n            <a href=\"#\" style=\"border: none; color:black\">\n                <h1>Scene {{(currentIndex+1)}}/{{data.sources.length}}</h1>\n            </a>\n        </div>\n\n        <div class=\"nedit_content\">\n            <div class=\"nec_slide\">\n                <div class=\"nec_container\">\n                    <div class=\"nedit_row\">\n                        <div class=\"column\" v-for=\"(item, index) in sliders\" @click=\"currentIndex = item.sceneIndex\" :key=\"(item, index)\">\n                            <img :class=\"{'active' : currentIndex == item.sceneIndex}\" class=\"demo cursor\" :src=\"item.sceneImage\"\n                                 style=\"width:100%\" alt=\"The Woods\">\n                        </div>\n                    </div>\n                    <br>\n\n                    <div class=\"mySlides\">\n                        <img :src=\"data.sources[currentIndex].sceneImage\" style=\"width:100%\" class=\"slide_img\">\n                        <video preload=\"none\" ref=\"video\" controls=\"true\" style=\"position: absolute; opacity: 0\" >\n                        </video>\n                        <canvas id=\"canvas\" ref=\"canvas\"\n                                style=\"position:absolute; width: 100%; height: 655px; left:0px\"></canvas>\n                        <svg id=\"fillArea\" style=\"position:absolute;top:150px;left:0px;width:100%;\" viewBox=\"0 0 1280 720\">\n                            <polygon id=\"realArea\" class=\"area_none\">\n                                </polygon>\n                            </svg>\n                        <div class=\"nedit_num_text\" v-text=\"'#'+(currentIndex+1)\"></div>\n                    </div>\n\n                    <a class=\"prev\" @click=\"currentIndex--\">\n                        <img src=\"/assets/image/navigation/prev.png\" style=\"position: relative;\">\n                    </a>\n                    <a class=\"next\" @click=\"currentIndex++\">\n                        <img src=\"/assets/image/navigation/next.png\" style=\"position: relative;\">\n                    </a>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"nedit_form\">\n            <table>\n                <tbody>\n                <tr class=\"tr_image\" v-for=\"(item, index) in data.sources[currentIndex].source\" :key=\"(item, index)\">\n                    <th v-if=\"item.sourceType == 'T'\">\n                        <img src=\"/assets/image/icon/nedit6.png\">\n                    </th>\n                    <td v-if=\"item.sourceType == 'T'\">\n                        <input\n                                type=\"text\"\n                                placeholder=\"텍스트를 입력해주세요\"\n                                v-model=\"item.uploadData\"\n                                @blur=\"patchSource\"\n                                @keyup=\"calcTextLength('t_'+(index+1))\"\n                                @click=\"area('t_'+(index+1))\"\n                                :name=\"currentIndex+'_'+(index+1)\"\n                                :ref=\"'t_'+(index+1)\"\n                                :maxlength=\"item.sourceTextLength[2]\"\n                        >\n                        <button disabled style=\"background-color: transparent;\">\n                            <span><span :ref=\"'c_t_'+(index+1)\">0</span> / {{item.sourceTextLength[2]}}</span>\n                        </button>\n                    </td>\n                    <th v-if=\"item.sourceType == 'I'\">\n                        <img src=\"/assets/image/icon/nedit4.png\">\n                    </th>\n                    <td v-if=\"item.sourceType == 'I'\">\n                        <input\n                                type=\"file\"\n                                accept=\"image/*\"\n                                @change=\"changeFile($event, 't_i_file_'+(index+1))\"\n                                :name=\"'i'+(index+1)\"\n                                :ref=\"'i_file_'+(index+1)\"\n                                style=\"display:none\">\n                        <input\n                                type=\"text\"\n                                :placeholder=\"item.uploadData ? item.uploadData : '이미지를 등록해주세요'\"\n                                :data-crop-w=\"item.sourceWidth\"\n                                :data-crop-h=\"item.sourceHeight\"\n                                @click=\"area('t_i_file_'+(index+1))\"\n                                :name=\"currentIndex+'_'+(index+1)\"\n                                :ref=\"'t_i_file_'+(index+1)\" readonly>\n                        <button v-if=\"!item.uploadData\" @click=\"showFilechoose('i_file_'+(index+1))\">첨부</button>\n                        <button v-else  class=\"delete_btn\" @click=\"item.uploadData = ''; reDrawInputUI('t_i_file_'+(index+1))\">삭제</button>\n                    </td>\n                    <th v-if=\"item.sourceType == 'V'\">\n                        <img src=\"/assets/image/icon/nedit5.png\">\n                    </th>\n                    <td v-if=\"item.sourceType == 'V'\">\n                        <input\n                                @change=\"changeFile($event, 't_v_file_'+(index+1))\"\n                                type=\"file\"\n                                :name=\"'v_'+(index+1)\"\n                                :ref=\"'v_file_'+(index+1)\"\n                                style=\"display:none\"\n                                accept=\"video/mp4\">\n                        <input type=\"text\"\n                               :placeholder=\"item.uploadData ? item.uploadData : '영상을 등록해주세요'\"\n                               :data-crop-w=\"item.sourceWidth\"\n                               :data-crop-h=\"item.sourceHeight\"\n                               @click=\"area('t_v_file_'+(index+1))\"\n                               :name=\"currentIndex+'_'+(index+1)\"\n                               :ref=\"'t_v_file_'+(index+1)\" readonly>\n                        <button v-if=\"!item.uploadData\" @click=\"showFilechoose('v_file_'+(index+1))\">첨부</button>\n                        <button class=\"delete_btn\" v-else @click=\"item.uploadData = ''; reDrawInputUI('t_v_file_'+(index+1));\">삭제</button>\n                    </td>\n                </tr>\n                </tbody>\n            </table>\n\n            <div class=\"nec_res\">\n                <ul>\n                    <li><div class=\"res_img\"><img src=\"/assets/image/icon/nedit2.png\"></div><span class=\"res_text\">{{inputCountObject.V.active}}/{{inputCountObject.V.total}}</span></li>\n                    <li><div class=\"res_img\"><img src=\"/assets/image/icon/nedit1.png\"></div><span class=\"res_text\">{{inputCountObject.I.active}}/{{inputCountObject.I.total}}</span></li>\n                    <li class=\"lst_icon\"><div class=\"res_img\"><img src=\"/assets/image/icon/t_icon.jpeg\"></div><span class=\"res_text\">{{inputCountObject.T.active}}/{{inputCountObject.T.total}}</span></li>\n                </ul>\n            </div>\n\n            <div v-if=\"percentage != 100\" @click=\"currentIndex++\" class=\"nec_btn cursor\">\n                <a>다음</a>\n            </div>\n            <div v-else @click=\"makingFilm\" class=\"nec_btn cursor\">\n                <a>영상제작하기</a>\n            </div>\n\n        </div>\n\n        <crop-modal ref=\"cropModal\"></crop-modal>\n    </section>\n\n</template>\n<script>\n    import CropModal from '@/components/modals/ImageCropModal'\n    export default {\n        data(){\n            return {\n                URL : window.URL || window.webkitURL,\n                inputCountObject:{\n                    T:{active:0, total:0},\n                    I:{active:0, total:0},\n                    V:{active:0, total:0}\n                },\n                percentage: 0,\n                id: '',\n                createdSubtemplateId: this.$route.params.id,\n                data: {},\n                itemTextLengths: [],\n                currentIndex: 0,\n            }\n        },\n        created(){\n            this.$apiService.modifyFilm(this.createdSubtemplateId)\n        },\n        components: {\n            CropModal\n        },\n        mounted(){\n            this.$store.commit('title','템플릿 편집실')\n            this.fetchData()\n        },\n        watch: {\n            currentIndex(v){\n                this.data.sources[this.currentIndex].source.forEach((obj,index)=>{\n                    if ( this.$refs[`t_i_file_${index+1}`] ) {\n                        this.$refs[`t_i_file_${index+1}`][0].value = ''\n                    }\n                    if ( this.$refs[`t_v_file_${index+1}`] ) {\n                        this.$refs[`t_v_file_${index+1}`][0].value = ''\n                    }\n                })\n\n                if (v < 0) {\n                    this.currentIndex = this.data.sources.length - 1\n                }\n                if ((this.data.sources.length - 1) < v) {\n                    this.currentIndex = 0\n                }\n            }\n        },\n        computed: {\n            sliders(){\n                let totalPages = this.data.sources.length / 6\n                if ( totalPages <= 1 ) {\n                    return this.data.sources\n                }\n                totalPages = Math.ceil(totalPages)\n                let offset = Math.floor(this.currentIndex / 6) * 6\n                return this.data.sources.slice( offset, offset+6)\n            }\n        },\n        methods: {\n            reDrawInputUI(ref){\n//                const canvas = this.$refs['canvas']\n//                const ctx = canvas.getContext('2d')\n//                ctx.clearRect(0, 0, 1200, 700);\n//                for (const item of this.data.sources[this.currentIndex].source) {\n//                    if ( item.sourceType != 'T') {\n//                        if ( item.uploadData)\n//                            this.drawSourceArea(item.sourceArea[0][0], item.sourceArea[0][1], 100, 100)\n//                    }\n//                }\n                this.$refs[ref][0]['value'] = ''\n                this.$refs[ref.replace('t_', '')][0]['value'] = ''\n                this.patchSource()\n            },\n            calcTextLength(ref){\n                this.$refs[`c_${ref}`][0].innerHTML = this.$refs[`${ref}`][0].value.length\n            },\n            async fetchData() {\n                let {data} = await this.$apiService.fetchSubtemplateById(this.createdSubtemplateId)\n                this.data = data.template\n\n                let index = 0\n                for (let sourceArray of this.data.sources) {\n                    let iindex = 0\n                    for (let sourceObject of sourceArray.source) {\n                        sourceObject['uploadData'] = data.sources[index][iindex]\n                        iindex++\n                    }\n                    index++\n                }\n\n                this.patchSource()\n            },\n            cancelUploadFile(ref){\n                this.$refs[ref][0].value = ''\n                this.$refs[ref.replace('t_', '')][0]['value'] = ''\n            },\n            area(ref){\n                var currentSelect = this.$refs[ref][0][\"attributes\"][\"name\"][\"value\"]\n                var currentScene = parseInt(currentSelect.split('_')[0]);\n                var currentNo = parseInt(currentSelect.split('_')[1]);\n                var theArea = this.data.sources[currentScene][\"source\"][currentNo-1][\"sourceArea\"];\n                var thisValue = this.$refs[ref][0][\"attributes\"][0][\"ownerElement\"][\"value\"];\n                var fill = document.getElementById(\"realArea\");\n                var a = theArea[0][0]\n                var b = theArea[0][1]\n                var c = theArea[1][0]\n                var d = theArea[1][1]\n                var e = theArea[2][0]\n                var f = theArea[2][1]\n                var g = theArea[3][0]\n                var h = theArea[3][1]\n                var location = `${a},${b} ${c},${d} ${e},${f} ${g},${h}`\n                fill.setAttribute(\"points\", location)\n                if(thisValue.length > 0){\n                    if(fill.classList[0] == \"area_none\"){\n                        fill.classList.remove(\"area_none\");\n                    }else if(fill.classList[0] == \"area_off\"){\n                        fill.classList.remove(\"area_off\");\n                    }\n                    fill.classList.add(\"area_value\")\n                }else{\n                    if(fill.classList[0] == \"area_value\"){\n                        fill.classList.remove(\"area_value\");\n                    }else if(fill.classList[0] == \"area_off\"){\n                        fill.classList.remove(\"area_off\");\n                    }\n                    fill.classList.add(\"area_none\");\n                }\n            },\n            showFilechoose(ref) {\n                this.$refs[ref][0].click()\n            },\n            async changeFile(event, ref) {\n                if (event.target.files.length == 0) return\n                this.$refs[ref][0].value = event.target.files[0].name\n                const uploadFile = event.target.files[0]\n                const cropwidth = this.$refs[ref][0].getAttribute('data-crop-w')\n                const cropheight = this.$refs[ref][0].getAttribute('data-crop-h')\n                if ( uploadFile.type.includes('video')){\n                    let videoNode = document.querySelector(\"video\")\n                    videoNode.canPlayType(uploadFile.type)\n                    videoNode.src = this.URL.createObjectURL(uploadFile)\n                    videoNode.onloadeddata = ()=>{\n                        let time = parseInt(videoNode.duration)\n                        videoNode.currentTime = Math.floor(Math.random()*time)+1\n                        let w = videoNode.videoWidth\n                        let h = videoNode.videoHeight\n                        let canvas = document.createElement('canvas')\n                        let ctx = canvas.getContext('2d')\n                        canvas.width  = w\n                        canvas.height = h\n                        ctx.drawImage(videoNode, 0, 0, w, h)\n                        this.$refs.cropModal.open(canvas.toDataURL(), uploadFile, this, uploadFile.type, ref,cropwidth, cropheight)\n                    }\n\n                } else {\n                    this.getBase64(uploadFile).then(data => {\n                        this.$refs.cropModal.open(data, null, this, uploadFile.type, ref,cropwidth, cropheight)\n                    })\n                }\n            },\n            insertCroppedData(ref, url){\n                let sourceIndex = parseInt(ref.substr(ref.length - 1)) - 1\n                this.data.sources[this.currentIndex].source[sourceIndex]['uploadData'] = url\n                this.$forceUpdate()\n//                const sourceArea = this.data.sources[this.currentIndex].source[sourceIndex].sourceArea\n//                const x = sourceArea[0][0]\n//                const y = sourceArea[0][1]\n//                this.drawSourceArea(x, y, 100, 100)\n            },\n            drawSourceArea(x, y, w, h){\n                //const canvas = this.$refs['canvas']\n                //const ctx = canvas.getContext('2d')\n                //ctx.globalAlpha = 0.8\n\n                //ctx.strokeStyle = 'white'\n                //ctx.strokeRect(x/10,y/10,w,h)\n\n                //ctx.globalAlpha = 0.2\n                //ctx.fillStyle = 'white'\n                //ctx.fillRect(x/10,y/10,w,h)\n\n                this.patchSource()\n            },\n            async patchSource(){\n                var fill = document.getElementById(\"realArea\")\n                if(fill.classList[0] === \"area_none\"){\n                    fill.classList.remove(\"area_none\");\n                }else if(fill.classList[0] === \"area_value\"){\n                    fill.classList.remove(\"area_value\");\n                }\n                fill.classList.add(\"area_off\");\n                let index = 0\n                const requestBody = []\n                for (let item of this.data.sources)\n                    requestBody[index++] = []\n                index = 0\n                this.inputCountObject = {\n                    T:{active:0, total:0},\n                    I:{active:0, total:0},\n                    V:{active:0, total:0}\n                }\n                for (let sourceArray of this.data.sources) {\n                    for (let sourceObject of sourceArray.source) {\n                        this.inputCountObject[sourceObject.sourceType].total++\n                        if (sourceObject.uploadData){\n                            this.inputCountObject[sourceObject.sourceType].active++\n                            requestBody[index].push(sourceObject.uploadData)\n                        } else {\n                            requestBody[index].push(null)\n                        }\n                    }\n                    index++;\n                }\n                const {data} = await this.$apiService.patchSubTemplate(this.createdSubtemplateId, requestBody)\n                this.percentage = data.workProgress\n            },\n            async makingFilm(){\n                try {\n                    if ( this.percentage != 100) return\n                    const {data} = await this.$apiService.makingFilm(this.createdSubtemplateId)\n                    if ( data.status == 1 )\n                        alert('렌더링이 시작되었습니다! 완료되면 바로 알려드릴께요')\n                    this.$router.replace('/')\n                }catch (e){\n                    alert('렌더링 요청 중 오류가 발생하였습니다. 잠시 후 다시 요청해주세요.')\n                }\n            },\n            getBase64(file) {\n                return new Promise((resolve, reject) => {\n                    const reader = new FileReader();\n                    reader.readAsDataURL(file);\n                    reader.onload = () => resolve(reader.result);\n                    reader.onerror = error => reject(error);\n                });\n            }\n        }\n    }\n</script>\n<style scoped>\n    .delete_btn{\n        border: 2px solid #2fbaef !important;\n        color:#2fbaef !important;\n        background-color: transparent !important;\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!./SubTemplateEdit.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!./SubTemplateEdit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SubTemplateEdit.vue?vue&type=template&id=ef5290de&scoped=true&\"\nimport script from \"./SubTemplateEdit.vue?vue&type=script&lang=js&\"\nexport * from \"./SubTemplateEdit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SubTemplateEdit.vue?vue&type=style&index=0&id=ef5290de&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  \"ef5290de\",\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('section',{attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"edit_content\"},[_c('br'),_c('div',{staticClass:\"ec_video\"},[_c('video',{ref:\"video\",attrs:{\"controls\":\"\",\"autoplay\":\"\"}},[_c('source',{attrs:{\"src\":_vm.data.resultVideo,\"type\":\"video/mp4\"}})])]),_c('div',{staticClass:\"ec_title\"},[_c('h2',{domProps:{\"textContent\":_vm._s(_vm.data.temTitle)}})]),_vm._m(0),_c('div',{staticClass:\"ec_btn\"},[_c('button',{on:{\"click\":_vm.onClick}},[_vm._v(\"저장하기\")])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticStyle:{\"font-size\":\"20px\"}},[_c('strong',[_vm._v(\"감사합니다\")])]),_c('br'),_c('span',[_vm._v(\"요청하신 영상이 확정되었습니다.\")]),_c('br'),_c('span',[_vm._v(\"앨범에 저장하거나 바로 공유해보세요!\")])])}]\n\nexport { render, staticRenderFns }","<template>\n  <section id=\"content\">\n    <div class=\"edit_content\">\n      <br />\n      <div class=\"ec_video\">\n        <video controls ref=\"video\" autoplay>\n          <source :src=\"data.resultVideo\" type=\"video/mp4\" />\n        </video>\n      </div>\n\n      <div class=\"ec_title\">\n        <h2 v-text=\"data.temTitle\"></h2>\n        <!-- <p v-text=\"data.temAuthor\"></p> -->\n      </div>\n\n      <div class style=\"text-align: center;\">\n        <div style=\"font-size: 20px\">\n          <strong>감사합니다</strong>\n        </div>\n        <br />\n\n        <span>요청하신 영상이 확정되었습니다.</span>\n        <br />\n        <span>앨범에 저장하거나 바로 공유해보세요!</span>\n      </div>\n\n      <div class=\"ec_btn\">\n        <button v-on:click=\"onClick\">저장하기</button>\n        <!-- <a :href=\"data.resultVideo\" download style=\"cursor: pointer\">저장하기</a> -->\n      </div>\n    </div>\n  </section>\n</template>\n\n<script>\nimport category from \"@/components/layouts/category\";\nimport mxCategories from \"@/mixins/categories\";\nexport default {\n  data() {\n    return {\n      id: this.$route.params.id,\n      data: {}\n    };\n  },\n  mixins: [mxCategories],\n  mounted() {\n    this.$store.commit(\"title\", \"템플릿 편집실\");\n    this.fetchData();\n  },\n  methods: {\n    goBack() {\n      window.history.length > 1\n        ? this.$router.go(-1)\n        : this.$router.push(\"/subtemplate\");\n    },\n    async fetchData() {\n      let { data } = await this.$apiService.fetchSubtemplateById(this.id);\n      this.data = data;\n      this.$refs.video.load();\n    },\n    async confirmFilm() {\n      let { data } = await this.$apiService.confirmFilm(this.id);\n      this.$router.replace(\"/confirmed/\" + this.id);\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!./Confirmed.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!./Confirmed.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Confirmed.vue?vue&type=template&id=c8d220a4&\"\nimport script from \"./Confirmed.vue?vue&type=script&lang=js&\"\nexport * from \"./Confirmed.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('section',{attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"nedit_top\"},[_c('h1',[_vm._v(\"템플릿 완성도 \"),_c('strong',[_vm._v(_vm._s(_vm.percentage)+\" %\")])]),_c('a',{staticStyle:{\"border\":\"none\",\"color\":\"black\"},attrs:{\"href\":\"#\"}},[_c('h1',[_vm._v(\"Scene \"+_vm._s((_vm.currentIndex+1))+\"/\"+_vm._s(_vm.data.sources.length))])])]),_c('div',{staticClass:\"nedit_content\"},[_c('div',{staticClass:\"nec_slide\"},[_c('div',{staticClass:\"nec_container\"},[_c('div',{staticClass:\"nedit_row\"},_vm._l((_vm.sliders),function(item,index){return _c('div',{key:(item, index),staticClass:\"column\",on:{\"click\":function($event){_vm.currentIndex = item.sceneIndex}}},[_c('img',{staticClass:\"demo cursor\",class:{'active' : _vm.currentIndex == item.sceneIndex},staticStyle:{\"width\":\"100%\"},attrs:{\"src\":item.sceneImage,\"alt\":\"The Woods\"}})])}),0),_c('br'),_c('div',{staticClass:\"mySlides\"},[_c('img',{staticClass:\"slide_img\",staticStyle:{\"width\":\"100%\"},attrs:{\"src\":_vm.data.sources[_vm.currentIndex].sceneImage}}),_c('video',{ref:\"video\",staticStyle:{\"position\":\"absolute\",\"opacity\":\"0\"},attrs:{\"preload\":\"none\",\"controls\":\"true\"}}),_c('canvas',{ref:\"canvas\",staticStyle:{\"position\":\"absolute\",\"width\":\"100%\",\"height\":\"655px\",\"left\":\"0px\"},attrs:{\"id\":\"canvas\"}}),_c('div',{staticClass:\"nedit_num_text\",domProps:{\"textContent\":_vm._s('#'+(_vm.currentIndex+1))}})]),_c('a',{staticClass:\"prev\",on:{\"click\":function($event){_vm.currentIndex--}}},[_c('img',{staticStyle:{\"position\":\"relative\"},attrs:{\"src\":\"/assets/image/navigation/prev.png\"}})]),_c('a',{staticClass:\"next\",on:{\"click\":function($event){_vm.currentIndex++}}},[_c('img',{staticStyle:{\"position\":\"relative\"},attrs:{\"src\":\"/assets/image/navigation/next.png\"}})])])])]),_c('div',{staticClass:\"nedit_form\"},[_c('table',[_c('tbody',_vm._l((_vm.data.sources[_vm.currentIndex].source),function(item,index){return _c('tr',{key:(item, index),staticClass:\"tr_image\"},[(item.sourceType == 'T')?_c('th',[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit6.png\"}})]):_vm._e(),(item.sourceType == 'T')?_c('td',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.uploadData),expression:\"item.uploadData\"}],ref:'t_'+(index+1),refInFor:true,attrs:{\"type\":\"text\",\"placeholder\":\"텍스트를 입력해주세요\",\"name\":'t_'+(index+1),\"maxlength\":item.sourceTextLength[2]},domProps:{\"value\":(item.uploadData)},on:{\"blur\":_vm.patchSource,\"keyup\":function($event){_vm.calcTextLength('t_'+(index+1))},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"uploadData\", $event.target.value)}}}),_c('button',{staticStyle:{\"background-color\":\"transparent\"},attrs:{\"disabled\":\"\"}},[_c('span',[_c('span',{ref:'c_t_'+(index+1),refInFor:true},[_vm._v(\"0\")]),_vm._v(\" / \"+_vm._s(item.sourceTextLength[2]))])])]):_vm._e(),(item.sourceType == 'I')?_c('th',[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit4.png\"}})]):_vm._e(),(item.sourceType == 'I')?_c('td',[_c('input',{ref:'i_file_'+(index+1),refInFor:true,staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/*\",\"name\":'i_file_'+(index+1)},on:{\"change\":function($event){_vm.changeFile($event, 't_i_file_'+(index+1))}}}),_c('input',{ref:'t_i_file_'+(index+1),refInFor:true,attrs:{\"placeholder\":item.uploadData ? item.uploadData : '이미지를 등록해주세요',\"type\":\"text\",\"data-crop-w\":item.sourceWidth,\"data-crop-h\":item.sourceHeight,\"readonly\":\"\",\"disabled\":\"\"}}),(!item.uploadData)?_c('button',{on:{\"click\":function($event){_vm.showFilechoose('i_file_'+(index+1))}}},[_vm._v(\"첨부\")]):_c('button',{staticClass:\"delete_btn\",on:{\"click\":function($event){item.uploadData = ''; _vm.reDrawInputUI('t_i_file_'+(index+1));}}},[_vm._v(\"삭제\")])]):_vm._e(),(item.sourceType == 'V')?_c('th',[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit5.png\"}})]):_vm._e(),(item.sourceType == 'V')?_c('td',[_c('input',{ref:'v_file_'+(index+1),refInFor:true,staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"name\":'v_file_'+(index+1),\"accept\":\"video/mp4\"},on:{\"change\":function($event){_vm.changeFile($event, 't_v_file_'+(index+1))}}}),_c('input',{ref:'t_v_file_'+(index+1),refInFor:true,attrs:{\"type\":\"text\",\"disabled\":\"\",\"placeholder\":item.uploadData ? item.uploadData : '영상을 등록해주세요',\"data-crop-w\":item.sourceWidth,\"data-crop-h\":item.sourceHeight,\"readonly\":\"\"}}),(!item.uploadData)?_c('button',{on:{\"click\":function($event){_vm.showFilechoose('v_file_'+(index+1))}}},[_vm._v(\"첨부\")]):_c('button',{staticClass:\"delete_btn\",on:{\"click\":function($event){item.uploadData = ''; _vm.reDrawInputUI('t_v_file_'+(index+1));}}},[_vm._v(\"삭제\")])]):_vm._e()])}),0)]),_c('div',{staticClass:\"nec_res\"},[_c('ul',[_c('li',[_vm._m(0),_c('span',{staticClass:\"res_text\"},[_vm._v(_vm._s(_vm.inputCountObject.V.active)+\"/\"+_vm._s(_vm.inputCountObject.V.total))])]),_c('li',[_vm._m(1),_c('span',{staticClass:\"res_text\"},[_vm._v(_vm._s(_vm.inputCountObject.I.active)+\"/\"+_vm._s(_vm.inputCountObject.I.total))])]),_c('li',{staticClass:\"lst_icon\"},[_vm._m(2),_c('span',{staticClass:\"res_text\"},[_vm._v(_vm._s(_vm.inputCountObject.T.active)+\"/\"+_vm._s(_vm.inputCountObject.T.total))])])])]),(_vm.percentage != 100)?_c('div',{staticClass:\"nec_btn cursor\",on:{\"click\":function($event){_vm.currentIndex++}}},[_c('a',[_vm._v(\"다음\")])]):_c('div',{staticClass:\"nec_btn cursor\",on:{\"click\":_vm.makingFilm}},[_c('a',[_vm._v(\"영상제작하기\")])])]),_c('crop-modal',{ref:\"cropModal\"})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"res_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit2.png\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"res_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/nedit1.png\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"res_img\"},[_c('img',{attrs:{\"src\":\"/assets/image/icon/t_icon.jpeg\"}})])}]\n\nexport { render, staticRenderFns }","<template>\n    <section id=\"content\">\n        <div class=\"nedit_top\">\n            <h1>템플릿 완성도 <strong>{{percentage}} %</strong></h1>\n            <a href=\"#\" style=\"border: none; color:black\">\n                <h1>Scene {{(currentIndex+1)}}/{{data.sources.length}}</h1>\n            </a>\n        </div>\n\n        <div class=\"nedit_content\">\n            <div class=\"nec_slide\">\n                <div class=\"nec_container\">\n                    <div class=\"nedit_row\">\n                        <div class=\"column\" v-for=\"(item, index) in sliders\" @click=\"currentIndex = item.sceneIndex\" :key=\"(item, index)\">\n                            <img :class=\"{'active' : currentIndex == item.sceneIndex}\" class=\"demo cursor\" :src=\"item.sceneImage\"\n                                 style=\"width:100%\" alt=\"The Woods\">\n                        </div>\n                    </div>\n                    <br>\n\n                    <div class=\"mySlides\">\n                        <img :src=\"data.sources[currentIndex].sceneImage\" style=\"width:100%\" class=\"slide_img\">\n                        <video preload=\"none\" ref=\"video\" controls=\"true\" style=\"position: absolute; opacity: 0\" >\n                        </video>\n                        <canvas id=\"canvas\" ref=\"canvas\"\n                                style=\"position:absolute; width: 100%; height: 655px; left:0px\"></canvas>\n\n                        <div class=\"nedit_num_text\" v-text=\"'#'+(currentIndex+1)\"></div>\n                    </div>\n\n                    <a class=\"prev\" @click=\"currentIndex--\">\n                        <img src=\"/assets/image/navigation/prev.png\" style=\"position: relative;\">\n                    </a>\n                    <a class=\"next\" @click=\"currentIndex++\">\n                        <img src=\"/assets/image/navigation/next.png\" style=\"position: relative;\">\n                    </a>\n                </div>\n            </div>\n        </div>\n\n\n        <div class=\"nedit_form\">\n            <table>\n                <tbody>\n                <tr class=\"tr_image\" v-for=\"(item, index) in data.sources[currentIndex].source\" :key=\"(item, index)\">\n\n                    <th v-if=\"item.sourceType == 'T'\">\n                        <img src=\"/assets/image/icon/nedit6.png\">\n                    </th>\n                    <td v-if=\"item.sourceType == 'T'\">\n                        <input\n                                type=\"text\"\n                                placeholder=\"텍스트를 입력해주세요\"\n                                v-model=\"item.uploadData\"\n                                @blur=\"patchSource\"\n                                @keyup=\"calcTextLength('t_'+(index+1))\"\n                                :name=\"'t_'+(index+1)\"\n                                :ref=\"'t_'+(index+1)\"\n                                :maxlength=\"item.sourceTextLength[2]\"\n                        >\n                        <button disabled style=\"background-color: transparent;\">\n                            <span><span :ref=\"'c_t_'+(index+1)\">0</span> / {{item.sourceTextLength[2]}}</span>\n                        </button>\n\n                    </td>\n                    <th v-if=\"item.sourceType == 'I'\">\n                        <img src=\"/assets/image/icon/nedit4.png\">\n                    </th>\n                    <td v-if=\"item.sourceType == 'I'\">\n                        <input\n                                type=\"file\"\n                                accept=\"image/*\"\n                                @change=\"changeFile($event, 't_i_file_'+(index+1))\"\n                                :name=\"'i_file_'+(index+1)\"\n                                :ref=\"'i_file_'+(index+1)\"\n                                style=\"display:none\">\n                        <input\n                                :placeholder=\"item.uploadData ? item.uploadData : '이미지를 등록해주세요'\"\n                                type=\"text\"\n                                :data-crop-w=\"item.sourceWidth\"\n                                :data-crop-h=\"item.sourceHeight\"\n                                :ref=\"'t_i_file_'+(index+1)\" readonly disabled>\n                        <button v-if=\"!item.uploadData\" @click=\"showFilechoose('i_file_'+(index+1))\">첨부</button>\n                        <button class=\"delete_btn\" v-else @click=\"item.uploadData = ''; reDrawInputUI('t_i_file_'+(index+1));\">삭제</button>\n                    </td>\n                    <th v-if=\"item.sourceType == 'V'\">\n                        <img src=\"/assets/image/icon/nedit5.png\">\n                    </th>\n                    <td v-if=\"item.sourceType == 'V'\">\n                        <input\n                                @change=\"changeFile($event, 't_v_file_'+(index+1))\"\n                                type=\"file\"\n                                :name=\"'v_file_'+(index+1)\"\n                                :ref=\"'v_file_'+(index+1)\"\n                                style=\"display:none\"\n                                accept=\"video/mp4\">\n                        <input type=\"text\"\n                               disabled\n                               :placeholder=\"item.uploadData ? item.uploadData : '영상을 등록해주세요'\"\n                               :data-crop-w=\"item.sourceWidth\"\n                               :data-crop-h=\"item.sourceHeight\"\n                               :ref=\"'t_v_file_'+(index+1)\" readonly>\n                        <button v-if=\"!item.uploadData\" @click=\"showFilechoose('v_file_'+(index+1))\">첨부</button>\n                        <button class=\"delete_btn\" v-else @click=\"item.uploadData = ''; reDrawInputUI('t_v_file_'+(index+1));\">삭제</button>\n                    </td>\n                </tr>\n                </tbody>\n            </table>\n\n            <div class=\"nec_res\">\n                <ul>\n                    <li>\n                        <div class=\"res_img\"><img src=\"/assets/image/icon/nedit2.png\"></div>\n                        <span class=\"res_text\">{{inputCountObject.V.active}}/{{inputCountObject.V.total}}</span></li>\n                    <li>\n                        <div class=\"res_img\"><img src=\"/assets/image/icon/nedit1.png\"></div>\n                        <span class=\"res_text\">{{inputCountObject.I.active}}/{{inputCountObject.I.total}}</span></li>\n                    <li class=\"lst_icon\">\n                        <div class=\"res_img\"><img src=\"/assets/image/icon/t_icon.jpeg\"></div>\n                        <span class=\"res_text\">{{inputCountObject.T.active}}/{{inputCountObject.T.total}}</span></li>\n                </ul>\n            </div>\n\n            <div v-if=\"percentage != 100\" @click=\"currentIndex++\" class=\"nec_btn cursor\">\n                <a>다음</a>\n            </div>\n            <div v-else @click=\"makingFilm\" class=\"nec_btn cursor\">\n                <a>영상제작하기</a>\n            </div>\n\n\n        </div>\n        <crop-modal ref=\"cropModal\"></crop-modal>\n    </section>\n\n</template>\n<script>\n    import CropModal from '@/components/modals/ImageCropModal'\n    export default {\n\n        data(){\n            return {\n                URL : window.URL || window.webkitURL,\n                inputCountObject: {\n                    T: {active: 0, total: 0},\n                    I: {active: 0, total: 0},\n                    V: {active: 0, total: 0}\n                },\n                percentage: 0,\n                id: this.$route.params.id,\n                createdSubtemplateId: '',\n                data: {},\n                itemTextLengths: [],\n                currentIndex: 0,\n            }\n        },\n        components: {\n            CropModal\n        },\n        mounted(){\n            this.$store.commit('title', '템플릿 편집실')\n            if (this.createSubtemplate()) {\n                this.fetchData()\n            }\n        },\n        watch: {\n            currentIndex(v){\n                this.data.sources[this.currentIndex].source.forEach((obj,index)=>{\n                    if ( this.$refs[`t_i_file_${index+1}`] ) {\n                        this.$refs[`t_i_file_${index+1}`][0].value = ''\n                    }\n                    if ( this.$refs[`t_v_file_${index+1}`] ) {\n                        this.$refs[`t_v_file_${index+1}`][0].value = ''\n                    }\n                })\n                if (v < 0) {\n                    this.currentIndex = this.data.sources.length - 1\n                }\n                if ((this.data.sources.length - 1) < v) {\n                    this.currentIndex = 0\n                }\n            }\n        },\n        computed: {\n            sliders(){\n                let totalPages = this.data.sources.length / 6\n                if ( totalPages <= 1 ) {\n                    return this.data.sources\n                }\n                totalPages = Math.ceil(totalPages)\n                let offset = Math.floor(this.currentIndex / 6) * 6\n                return this.data.sources.slice( offset, offset+6)\n            }\n        },\n        methods: {\n            reDrawInputUI(ref){\n                this.$refs[ref][0]['value'] = ''\n                this.$refs[ref.replace('t_', '')][0]['value'] = ''\n                this.patchSource()\n            },\n            calcTextLength(ref){\n                this.$refs[`c_${ref}`][0].innerHTML = this.$refs[`${ref}`][0].value.length\n            },\n            async createSubtemplate(){\n                let {data} = await this.$apiService.createSubTemplate(this.id)\n                this.createdSubtemplateId = data._id\n            },\n            async fetchData() {\n                let {data} = await this.$apiService.fetchTemplateById(this.id)\n                this.data = data\n                this.patchSource()\n            },\n            cancelUploadFile(ref){\n                this.$refs[ref][0].value = ''\n                this.$refs[ref.replace('t_', '')][0]['value'] = ''\n            },\n            showFilechoose(ref) {\n                this.$refs[ref][0].click()\n            },\n            async changeFile(event, ref) {\n                if (event.target.files.length == 0) return\n                this.$refs[ref][0].value = event.target.files[0].name\n                const uploadFile = event.target.files[0]\n                const cropwidth = this.$refs[ref][0].getAttribute('data-crop-w')\n                const cropheight = this.$refs[ref][0].getAttribute('data-crop-h')\n                if (uploadFile.type.includes('video')) {\n                    let videoNode = document.querySelector(\"video\")\n                    videoNode.canPlayType(uploadFile.type)\n                    videoNode.src = this.URL.createObjectURL(uploadFile)\n                    videoNode.onloadeddata = ()=>{\n                        let time = parseInt(videoNode.duration)\n                        videoNode.currentTime = Math.floor(Math.random()*time)+1\n                        let w = videoNode.videoWidth;\n                        let h = videoNode.videoHeight;\n                        let canvas = document.createElement('canvas')\n                        let ctx = canvas.getContext('2d');\n                        canvas.width  = w;\n                        canvas.height = h;\n                        ctx.drawImage(videoNode, 0, 0, w, h)\n                        this.$refs.cropModal.open(canvas.toDataURL(), uploadFile, this, uploadFile.type, ref, cropwidth, cropheight)\n                    }\n                } else {\n                    this.getBase64(uploadFile).then(data => {\n                        this.$refs.cropModal.open(data, null, this, uploadFile.type, ref, cropwidth, cropheight)\n                    })\n                }\n            },\n            insertCroppedData(ref, url){\n                //console.log('insertCroppedData')\n                let sourceIndex = parseInt(ref.substr(ref.length - 1)) - 1\n                this.data.sources[this.currentIndex].source[sourceIndex]['uploadData'] = url\n                this.$forceUpdate()\n//                const sourceArea = this.data.sources[this.currentIndex].source[sourceIndex].sourceArea\n//                const x = sourceArea[0][0]\n//                const y = sourceArea[0][1]\n//                this.drawSourceArea(x, y, 100, 100)\n            },\n            drawSourceArea(ref){\n                //const canvas = this.$refs['canvas']\n                //const ctx = canvas.getContext('2d')\n                //ctx.globalAlpha = 0.8\n\n                //ctx.strokeStyle = 'white'\n                //ctx.strokeRect(x / 10, y / 10, w, h)\n\n                //ctx.globalAlpha = 0.2\n                //ctx.fillStyle = 'white'\n                //ctx.fillRect(x / 10, y / 10, w, h)\n            },\n            async patchSource(){\n                let index = 0\n                const requestBody = []\n                for (let item of this.data.sources)\n                    requestBody[index++] = []\n                index = 0\n\n                this.inputCountObject = {\n                    T: {active: 0, total: 0},\n                    I: {active: 0, total: 0},\n                    V: {active: 0, total: 0}\n                }\n                for (let sourceArray of this.data.sources) {\n                    for (let sourceObject of sourceArray.source) {\n                        this.inputCountObject[sourceObject.sourceType].total++\n                        if (sourceObject.uploadData) {\n                            this.inputCountObject[sourceObject.sourceType].active++\n                            requestBody[index].push(sourceObject.uploadData)\n                        } else {\n                            requestBody[index].push(null)\n                        }\n                    }\n                    index++;\n                }\n                if (this.createdSubtemplateId) {\n                    const {data} = await this.$apiService.patchSubTemplate(this.createdSubtemplateId, requestBody)\n                    this.percentage = data.workProgress\n                }\n            },\n            async makingFilm(){\n                try {\n                    if (this.percentage != 100) return\n                    const {data} = await this.$apiService.makingFilm(this.createdSubtemplateId)\n                    if (data.status == 1)\n                        alert('렌더링이 시작되었습니다! 완료되면 바로 알려드릴께요')\n                    this.$router.replace('/')\n                } catch (e) {\n                    alert('렌더링 요청 중 오류가 발생하였습니다. 잠시 후 다시 요청해주세요.')\n                }\n            },\n            getBase64(file) {\n                return new Promise((resolve, reject) => {\n                    const reader = new FileReader();\n                    reader.readAsDataURL(file);\n                    reader.onload = () => resolve(reader.result);\n                    reader.onerror = error => reject(error);\n                });\n            }\n        }\n    }\n</script>\n<style scoped>\n    .delete_btn{\n        border: 2px solid #2fbaef !important;\n        color:#2fbaef !important;\n        background-color: transparent !important;;\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!./Edit.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!./Edit.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Edit.vue?vue&type=template&id=915a983a&scoped=true&\"\nimport script from \"./Edit.vue?vue&type=script&lang=js&\"\nexport * from \"./Edit.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Edit.vue?vue&type=style&index=0&id=915a983a&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  \"915a983a\",\n  null\n  \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport Router from \"vue-router\";\nimport Home from \"./views/Home\";\nimport Detail from \"./views/Detail\";\nimport Category from \"./views/Category\";\nimport Subtemplate from \"./views/Subtemplate\";\nimport Confirm from \"./views/Confirm\";\nimport SubtemplateEdit from \"./views/SubTemplateEdit\";\nimport Confirmed from \"./views/Confirmed\";\nimport Edit from \"./views/Edit\";\n//import ImageCrop from \"./components/modals/ImageCropModal.vue\";\n\nVue.use(Router)\n\nexport default new Router({\n  mode: 'history',\n  base: process.env.BASE_URL,\n  routes: [\n    {\n      path: '/',\n      name: 'home',\n      component: Home\n    },\n    {\n      path: '/detail/:id',\n      name: 'detail',\n      component: Detail\n    },\n    {\n      path: '/confirmation/:id',\n      name: 'confirm',\n      component: Confirm\n    },\n    {\n      path: '/thanks/:id',\n      name: 'thanks',\n      component: Confirmed\n    },\n    {\n      path: '/edits/:id', \n      name: 'edit',\n      component: Edit\n    },\n    {\n      path: '/sub/edits/:id',\n      name: 'subEdit',\n      component: SubtemplateEdit\n    },\n    {\n      path: '/categories/:id',\n      name: 'category',\n      component: Category\n    },\n    {\n      path: '/subtemplate',\n      name: 'subtemplate',\n      component: Subtemplate\n    },\n\n  ]\n})\n","/**\n * Created by hucloud on 07/08/2019.\n */\nimport axios from 'axios'\n\nconst http = async(url, param, method)=> {\n    const accessToken = sessionStorage.getItem('TKN')\n    axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`\n\n    if (process.env.NODE_ENV == 'development') {\n        console.log('========[Start][' + method + ']', url, '=========')\n        console.log(\"Parameter :: \", param)\n    }\n\n    let option = {\n        url: url,\n        method: method,\n        data: param,\n        headers: {\n            // \"Authorization\": auth.getToken()\n        }\n    }\n    try{\n        return await axios(option)\n    }catch (e){\n        console.error('HttpRequest Exception')\n        console.error(e)\n        return e\n    }\n\n}\n\nexport default http;\n","\nimport http from '../modules/http'\n\n\nexport default {\n    async fetchHomeData(){\n        return await http('https://api.vplate.io/template/', {}, 'get')\n    },\n    async fetchTemplateById(id){\n        return await http(`https://api.vplate.io/template/${id}/all/`, {}, 'get')\n    },\n    async fetchSubtemplateByMe(){\n        return await http('https://api.vplate.io/subtemplate/', {}, 'get')\n    },\n    async createSubTemplate(templateId){\n        return await http('https://api.vplate.io/subtemplate/', {templateId: templateId}, 'post')\n    },\n    async fetchSubtemplateById(subtemplateId){\n        return await http(`https://api.vplate.io/subtemplate/${subtemplateId}`, {}, 'get')\n    },\n    async patchSubTemplate(subtemplateId, data){\n        return await http(`https://api.vplate.io/subtemplate/${subtemplateId}/sources`, data, 'patch')\n    },\n    async uploadImage(data){\n        return await http(`https://file.vplate.io/upload/image`, data, 'post')\n    },\n    async uploadVideo(data){\n        return await http(`https://file.vplate.io/upload/video/withCrop`, data, 'post')\n    },\n    async makingFilm(subtemplateId){\n        return await http(`https://api.vplate.io/subtemplate/${subtemplateId}/status`, {status:1}, 'patch')\n    },\n    async modifyFilm(subtemplateId){\n        return await http(`https://api.vplate.io/subtemplate/${subtemplateId}/status`, {status:0}, 'patch')\n    },\n    async confirmFilm(subtemplateId){\n        return await http(`https://api.vplate.io/subtemplate/${subtemplateId}/status`, {status:4}, 'patch')\n    }\n}\n\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport apiService from '@/services/api.service'\nimport Axios from 'axios';\nVue.use(Vuex)\n\nconst HOME_DATA = 'homeData';\nconst SUB_HEADER_TITLE = 'title';\nconst enhanceAccessToken = () => {\n    const {accessToken} = localStorage\n    if(!accessToken) return\n    Axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`\n}\nenhanceAccessToken()\n\nexport const store = new Vuex.Store({\n    state: {\n        'homeData':[],\n        'title':''\n    },\n    mutations: {\n        LOGIN(state, {accessToken}){\n            state.accessToken = accessToken\n\n            //토큰을 로컬 스토리지에 저장\n            localStorage.accessToken = accessToken\n        },\n        homeData(state, payload) {\n            this.state[HOME_DATA] = payload\n        },\n        title(state, payload){\n            this.state[SUB_HEADER_TITLE] = payload\n        }\n    },\n    actions: {\n        async homeData(context){\n            try {\n                const {data} = await apiService.fetchHomeData()\n                context.commit(HOME_DATA, data)\n            } catch (e) {\n                console.log(e)\n                console.log('fetchDataError')\n            }\n        }\n    },\n    getters: {\n        homeData(state){\n            return state.homeData\n        }\n    }\n})\nexport default store","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport axios from \"axios\";\nimport api from \"@/services/api.service\";\nimport {store} from '@/stores/main.store'\nVue.config.productionTip = false\nVue.prototype.$apiService = api\naxios.defaults.headers.post['Content-Type'] = 'application/json; charset=utf-8'\n\n\nconst vueInstance = new Vue({\n  router,\n  store,\n  render: h => h(App)\n}).$mount('#app')\n\n// 초기 목록 데이터 가져옴\nvueInstance.$store.dispatch('homeData')\n\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Category.vue?vue&type=style&index=0&id=1f4bbbae&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Category.vue?vue&type=style&index=0&id=1f4bbbae&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_sub.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header_sub.vue?vue&type=style&index=0&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageCropModal.vue?vue&type=style&index=1&id=7b9e9e80&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageCropModal.vue?vue&type=style&index=1&id=7b9e9e80&scoped=true&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Edit.vue?vue&type=style&index=0&id=915a983a&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Edit.vue?vue&type=style&index=0&id=915a983a&scoped=true&lang=css&\"","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageCropModal.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageCropModal.vue?vue&type=style&index=0&lang=css&\""],"sourceRoot":""}