@palerock/exam-qa 1.0.6-patch2 → 1.0.6-patch4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack:///./src/App.vue?2b06","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/utils/index.js","webpack:///./src/db/index.js","webpack:///./src/dao/index.js","webpack:///./src/config/index.js","webpack:///src/components/home-pages/HomeIndex.vue","webpack:///./src/components/home-pages/HomeIndex.vue?ff68","webpack:///./src/components/home-pages/HomeIndex.vue","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?3534","webpack:///./src/components/HelloWorld.vue","webpack:///src/components/HomePage.vue","webpack:///./src/components/HomePage.vue?7fc5","webpack:///./src/components/HomePage.vue","webpack:///src/components/exam/DoExamPage.vue","webpack:///./src/components/exam/DoExamPage.vue?3d1a","webpack:///./src/components/exam/DoExamPage.vue","webpack:///./src/router/index.js","webpack:///./src/plugins/index.js","webpack:///./src/main.js"],"names":["selectortype_template_index_0_src_App","render","_h","this","$createElement","_c","_self","attrs","id","name","direction","staticClass","staticRenderFns","src_App","__webpack_require__","normalizeComponent","data","watch","$route","to","from","toDepth","path","split","length","fromDepth","ssrContext","utils","getHashCode","obj","getStrHashCode","getMessage","concat","getPropertyNames","join","_this","deep","arguments","undefined","includes","typeof_default","Date","flat","entries_default","map","_ref","_ref2","slicedToArray_default","key","value","filter","r","_this2","toString","keys_default","str","i","len","hash","charCodeAt","arr","Infinity","ret","dirty","forEach","item","is_array_default","push","apply","toConsumableArray_default","fromEntries","result","a","Array","storage","getItem","itemStr","localStorage","JSON","parse","e","console","log","setItem","stringify_default","removeItem","groupArray","groupedBy","_this3","array","hashCode","checkedMap","checkItem","Object","groupBy","_objectSpread","checkedHashCode","hashArr","find","values_default","duplicateRemoval","g","randomSort","sort","Math","random","dexieDB","Dexie","version","stores","config","question","bank","historyRecord","configDB","questionDB","bankDB","historyRecordDB","BaseDao","db","defaultEntry","classCallCheck_default","hook","primKey","createDate","now_default","modifyDate","changed","origin","dao__objectSpread","records","bulkPut","put","field","where","query","equals","first","keys","bulkDelete","delete","ConfigDao","possibleConstructorReturn_default","getPrototypeOf_default","call","QuestionDao","describe","type","BankDao","title","questions","HistoryRecordDao","rightTimes","errorTimes","maxTime","minTime","totalTime","hashCodeList","anyOf","toArray","questionDao","bankDao","historyRecordDao","vue_esm","use","loading","dialog","cell","cell_group","es_button","popup","grid","grid_item","es_checkbox","checkbox_group","existsMap","HomeIndex","isShowImporter","isShowOption","isFromOnline","onlineLibs","onlineSelects","questionLib","examList","currentCategory","categories","optionInfo","canReviewError","canDoExam","canClear","computed","selectedLibs","res","lib","HomeIndex__objectSpread","inCategory","methods","doExam","isReviewError","dao_bankDao","then","exam","promise_default","all","q","toArray_default","slice","$router","params","examConfig","alert","message","clearHistory","queryByHashCode","initExamList","showOption","hasHistoryError","selectLib","s","showImporter","importFromExist","_this4","fetchOnlineLib","category","catch","_fetchOnlineLib","asyncToGenerator_default","regenerator_default","mark","_callee","maps","promises","_this5","wrap","_context","prev","next","$http","get","t0","sent","exist","abrupt","stop","importLib","_importLib","_callee3","_this6","_context3","_ref3","_callee2","l","_context2","importSingleLib","_x","_importSingleLib","_callee4","_context4","upsert","_x2","intoCategory","_intoCategory","_callee5","_this7","_args5","_context5","notEqual","banks","sortBy","errorMap","record","relatedQuestion","times","b","_initExamList","_callee6","_this8","_context6","reduce","ac","mounted","home_pages_HomeIndex","_vm","icon","clickable","on","click","$event","slot","_v","_l","_s","model","callback","$$v","expression","staticStyle","max-height","overflow-y","_e","text-align","padding","oi","label","placeholder","rows","size","block","position","components_home_pages_HomeIndex","HomeIndex_normalizeComponent","components_HelloWorld","HelloWorld_normalizeComponent","msg","nav_bar","tabbar","tabbar_item","HomePage","activeTabIndex","pages","api","activePage","components_HomePage","fixed","tag","color","width","page","src_components_HomePage","HomePage_normalizeComponent","row","col","radio_group","es_radio","defaultQuestionInfo","required","score","usingScore","answerOptions","isRight","defaultExamInfo","panel","DoExamPage","answers","questionNum","isShowResult","letterIndex","examInfo","hasSubmit","examHashCode","historyExams","showAcButtons","totalNum","historyErrorHashCodes","DoExamPage__objectSpread","active","questionsInfo","results","single","multi","apis","answer","orderNum","isMulti","opt","getQuestionTitle","getQuestionDesc","errorExam","totalTimes","toFixed","setAnswer","ai","toggleAnswer","checkResult","rightAnswers","option","isMistake","isAnswered","isChecked","isPass","turnTo","confirmSubmit","confirm","submit","answeredNum","requireAllDone","rightNum","rightRate","codeInfo","adaptExamConfig","checkNoAnswer","resultAnswers","checks","invalid","loadHistoryExamInfo","getOptionColor","isPractice","queryMany","swipe","evt","props","default","Boolean","isNew","plus","device","setWakelock","destroyed","exam_DoExamPage","directives","rawName","arg","left-arrow","right-text","click-left","back","click-right","stopPropagation","span","class","exam-right","exam-error","exam-current","style","dblclick","desc","$set","right-answer","error-answer","custom-title","checked-color","components_exam_DoExamPage","DoExamPage_normalizeComponent","Vue","Router","router","routes","component","AlloyFingerPlugin","AlloyFinger","prototype","axios","jsonp","Utils","define_property_default","enumerable","productionTip","el","components","App","template"],"mappings":"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","file":"static/js/app.e9e696870c875d1c99ac.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('transition',{attrs:{\"name\":_vm.direction}},[_c('router-view',{staticClass:\"appView\"})],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-70ce3a13\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-70ce3a13\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70ce3a13\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","<template>\n <div id=\"app\">\n <transition :name=\"direction\">\n <router-view class=\"appView\"/>\n </transition>\n </div>\n</template>\n\n<script>\n export default {\n name: 'App',\n data: () => ({\n direction: \"slide-right\"\n }),\n watch: {\n $route(to, from) {\n const toDepth = to.path.split(\"/\").length;\n const fromDepth = from.path.split(\"/\").length;\n if (to.path === \"/\") {\n this.direction = \"slide-right\";\n } else if (from.path === \"/\") {\n this.direction = \"slide-left\";\n } else {\n this.direction = toDepth < fromDepth ? \"slide-right\" : \"slide-left\";\n }\n }\n }\n }\n</script>\n\n<style>\n #app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n color: #2c3e50;\n margin-top: 60px;\n }\n\n .appView {\n position: absolute;\n width: 100%;\n transition: left .3s ease-out;\n left: 0;\n }\n\n .slide-left-enter {\n /*transform: translate(100%, 0);*/\n left: 100%;\n }\n\n .slide-left-leave-active {\n /*transform: translate(-50%, 0);*/\n left: -50%;\n }\n\n .slide-right-enter {\n /*transform: translate(-50%, 0);*/\n left: -50%;\n z-index: 20;\n }\n\n .slide-right-leave-active {\n /*transform: translate(100%, 0);*/\n left: 100%;\n z-index: 20;\n }\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","export default {\n getHashCode(obj) {\n return this.getStrHashCode(this.getMessage(obj).concat(this.getPropertyNames(obj)).join(''));\n },\n getPropertyNames(_self, deep = 10) {\n if (deep <= 0) {\n return '';\n }\n if (!_self || ['string', 'number', 'boolean', 'function'].includes(typeof _self) || _self instanceof Date) {\n return '';\n }\n return this.flat(\n Object.entries(_self).map(([key, value]) => [key, this.getPropertyNames(value, deep--)])\n ).filter(r => r != null && r !== '')\n },\n getMessage(_self, deep) {\n deep == null && (deep = 10);\n if (deep <= 0) {\n return '';\n }\n if (!_self || ['string', 'number', 'boolean', 'function'].includes(typeof _self) || _self instanceof Date) {\n return [_self != null ? _self.toString() : ''];\n }\n return this.flat(\n Object.keys(_self).map(key => {\n return this.getMessage(_self[key], deep--);\n })\n ).filter(r => r != null && r !== '');\n },\n getStrHashCode(str) {\n let hash = 0, i, chr, len;\n if (str.length === 0) return hash;\n for (i = 0, len = str.length; i < len; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash + '';\n },\n flat(arr, deep = Infinity) {\n let ret = [];\n let dirty = false;\n arr.forEach(item => {\n if (Array.isArray(item)) {\n dirty = true;\n ret.push(...item)\n } else {\n ret.push(item)\n }\n });\n return dirty && deep > 0 ? this.flat(ret, deep--) : ret\n },\n fromEntries(arr) {\n let result = {};\n arr.forEach(a => {\n if (a instanceof Array) {\n result[a[0]] = a[1];\n }\n });\n return result;\n },\n storage: {\n getItem(key) {\n let itemStr = localStorage.getItem('__exam_s0_' + key);\n let result = null;\n try {\n result = JSON.parse(itemStr);\n } catch (e) {\n console.log(`No valid item for key [${key}] to get in storage.`);\n }\n return result;\n },\n setItem(key, value) {\n let result = null;\n try {\n result = JSON.stringify(value);\n localStorage.setItem('__exam_s0_' + key, result);\n } catch (e) {\n console.log(`Not valid item for key [${key}] to set.`);\n }\n },\n removeItem(key) {\n localStorage.removeItem('__exam_s0_' + key);\n },\n },\n groupArray(arr, groupedBy) {\n let array = arr.map(a => ({hashCode: this.getHashCode(a), item: a}));\n if (!(groupedBy instanceof Array)) {\n groupedBy = [groupedBy];\n }\n let checkedArr = array.map(a => ({\n hashCode: a.hashCode,\n checkItem: Object.fromEntries(\n groupedBy.map(groupBy => [groupBy, (a.item || {})[groupBy]])\n )\n })).map(a => ({...a, checkedHashCode: this.getHashCode(a.checkItem)}));\n let checkedMap = {};\n checkedArr.forEach(a => {\n let hashArr = checkedMap[a.checkedHashCode];\n if (!hashArr) {\n hashArr = [];\n }\n hashArr.push(array.find(arr => arr.hashCode === a.hashCode).item);\n checkedMap[a.checkedHashCode] = hashArr;\n });\n return Object.values(checkedMap);\n },\n duplicateRemoval(arr) {\n let array = arr.map(a => ({item: a}));\n let grouped = this.groupArray(array, 'item');\n return grouped.map(g => g[0].item);\n },\n randomSort(arr) {\n return arr.sort(() => {\n return Math.random() - 0.5;\n })\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","import Dexie from \"dexie\";\n\nconst dexieDB = new Dexie('_qa_db');\ndexieDB.version(1).stores({\n config: 'key, value, createDate, modifyDate',\n question: 'hashCode, describe, type, createDate, modifyDate',\n bank: 'hashCode, title, *questions, createDate, modifyDate',\n historyRecord: 'relatedQuestion, rightTimes, errorTimes, maxTime, minTime, totalTime, createDate, modifyDate'\n});\ndexieDB.version(2).stores({\n bank: 'hashCode, title, *questions, category, createDate, modifyDate',\n});\nconst configDB = dexieDB['config'];\nconst questionDB = dexieDB['question'];\nconst bankDB = dexieDB['bank'];\nconst historyRecordDB = dexieDB['historyRecord'];\n\nexport {dexieDB, configDB, questionDB, bankDB, historyRecordDB};\n\n\n// WEBPACK FOOTER //\n// ./src/db/index.js","import {dexieDB, configDB, questionDB, bankDB, historyRecordDB} from '../db';\n\nclass BaseDao {\n constructor(db, defaultEntry) {\n this.db = db;\n this.defaultEntry = defaultEntry || {};\n this.db.hook('creating', (primKey, obj) => {\n obj.createDate = Date.now();\n obj.modifyDate = Date.now();\n });\n this.db.hook('updating', (changed, key, origin) => {\n changed['modifiedDate'] = Date.now();\n if (!origin['createdDate']) {\n changed['createdDate'] = Date.now();\n }\n console.log({...changed});\n return changed;\n })\n }\n\n async upsert(records) {\n if (records instanceof Array) {\n return this.db.bulkPut(records.map(r => ({...this.defaultEntry, ...r})));\n }\n return this.db.put({...this.defaultEntry, ...records});\n }\n\n query(field) {\n return this.db.where(field);\n }\n\n queryByHashCode(hashCode) {\n return this.query('hashCode').equals(hashCode).first();\n }\n\n async delete(keys) {\n if (keys instanceof Array) {\n return this.db.bulkDelete(keys);\n }\n return this.db.delete(keys);\n }\n}\n\n\nclass ConfigDao extends BaseDao {\n constructor() {\n super(configDB, {value: null});\n }\n}\n\nclass QuestionDao extends BaseDao {\n constructor() {\n super(questionDB, {\n describe: '',\n type: 'picklist'\n });\n }\n}\n\nclass BankDao extends BaseDao {\n constructor() {\n super(bankDB, {\n title: '',\n questions: []\n });\n }\n}\n\nclass HistoryRecordDao extends BaseDao {\n constructor() {\n super(historyRecordDB, {\n rightTimes: 0, errorTimes: 0, maxTime: 0, minTime: 0, totalTime: 0\n });\n }\n\n queryByHashCode(hashCode) {\n return this.query('relatedQuestion').equals(hashCode).first();\n }\n\n queryMany(hashCodeList) {\n return this.query('relatedQuestion').anyOf(hashCodeList).toArray();\n }\n}\n\nconst configDao = new ConfigDao();\nconst questionDao = new QuestionDao();\nconst bankDao = new BankDao();\nconst historyRecordDao = new HistoryRecordDao();\n\nexport {configDao, questionDao, bankDao, historyRecordDao}\n\n\n// WEBPACK FOOTER //\n// ./src/dao/index.js","export default {\n version: '1.0.6-patch1',\n domain:'//palerock.cn',\n // domain:'//localhost'\n}\n\n\n// WEBPACK FOOTER //\n// ./src/config/index.js","<template>\n <div>\n <van-grid v-if=\"!inCategory\">\n <van-grid-item\n icon=\"notes-o\"\n clickable\n @click=\"showImporter\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">开始答题(导入)</div>\n </van-grid-item>\n <van-grid-item\n v-for=\"category in categories\"\n :key=\"category\"\n icon=\"notes-o\"\n clickable\n @click=\"intoCategory(category)\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">{{ category }}</div>\n </van-grid-item>\n </van-grid>\n <van-grid v-else>\n <van-grid-item\n icon=\"notes-o\"\n clickable\n @click=\"currentCategory = null\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">返回</div>\n </van-grid-item>\n <van-grid-item\n v-for=\"exam in examList\"\n :key=\"exam.hashCode\"\n icon=\"notes-o\"\n clickable\n @click=\"showOption(exam)\">\n <div slot=\"text\" class=\"van-grid-item__text text-align-center\">{{ exam.title }}</div>\n </van-grid-item>\n </van-grid>\n <van-popup v-model=\"isShowImporter\">\n <div class=\"exam-import-box\">\n <div v-if=\"isFromOnline\" style=\"max-height: 300px;overflow-y: auto;\">\n <div v-if=\"!onlineLibs || onlineLibs.length === 0\" style=\"text-align: center;padding: 10px\">\n <van-loading type=\"spinner\" />\n </div>\n <van-checkbox-group v-model=\"onlineSelects\">\n <van-cell-group>\n <van-cell v-for=\"(lib, oi) in onlineLibs\"\n clickable\n @click=\"selectLib(lib)\"\n :key=\"oi\">\n <template slot=\"title\">\n <span>{{ lib.title }}</span>\n </template>\n <van-checkbox slot=\"right-icon\" :name=\"lib.hashCode\"></van-checkbox>\n </van-cell>\n </van-cell-group>\n </van-checkbox-group>\n </div>\n <div v-if=\"!isFromOnline\">\n <van-cell-group>\n <van-field\n v-model=\"questionLib\"\n label=\"题库\"\n type=\"textarea\"\n placeholder=\"请输入题库\"\n rows=\"10\"></van-field>\n </van-cell-group>\n </div>\n <div>\n <van-button type=\"info\" size=\"small\" block @click=\"importLib\">导入题库</van-button>\n </div>\n <div class=\"exam-m-top-small\">\n <van-button type=\"primary\" size=\"small\" block @click=\"importFromExist\">获取在线题库</van-button>\n </div>\n </div>\n </van-popup>\n <van-popup v-model=\"isShowOption\" position=\"bottom\">\n <div class=\"\">\n <van-button type=\"primary\" block @click=\"doExam(optionInfo.hashCode)\">重新测试\n </van-button>\n <van-button type=\"info\" block @click=\"doExam(optionInfo.hashCode,true)\">复习错题\n </van-button>\n <van-button type=\"danger\" block @click=\"clearHistory(optionInfo.hashCode)\">清空错题\n </van-button>\n </div>\n </van-popup>\n </div>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport {Grid, GridItem} from 'vant';\nimport {Popup} from 'vant';\nimport {Button} from 'vant';\nimport {Field} from 'vant';\nimport {Cell, CellGroup} from 'vant';\nimport utils from '../../utils';\nimport {questionDao, historyRecordDao, bankDao, configDao} from '../../dao';\nimport {Dialog} from 'vant';\nimport config from \"@/config\";\nimport {Checkbox, CheckboxGroup} from 'vant';\nimport { Loading } from 'vant';\n\nVue.use(Loading);\nVue.use(Dialog);\nVue.use(Field).use(Cell).use(CellGroup);\nVue.use(Button);\nVue.use(Popup);\nVue.use(Grid).use(GridItem);\nVue.use(Checkbox).use(CheckboxGroup);\n\nconst existsMap = 'https://unpkg.com/@palerock/exam-qa@latest/lib-json';\nexport default {\n name: \"HomeIndex\",\n data() {\n return {\n isShowImporter: false,\n isShowOption: false,\n isFromOnline: false,\n onlineLibs: [],\n onlineSelects: [],\n questionLib: '',\n examList: [],\n currentCategory: '',\n categories: [],\n optionInfo: {\n canReviewError: true,\n canDoExam: true,\n canClear: true,\n hashCode: ''\n }\n }\n },\n computed: {\n selectedLibs() {\n let res = this.onlineLibs.filter(lib => this.onlineSelects.includes(lib.hashCode)).map(lib => ({...lib}));\n res.forEach(r => {\n delete r.hashCode;\n });\n return res;\n },\n inCategory() {\n return !!this.currentCategory\n }\n },\n methods: {\n doExam(hashCode, isReviewError = false) {\n // let exam = utils.storage.getItem(hashCode);\n bankDao.query('hashCode').equals(hashCode).first()\n .then(exam => {\n return Promise.all([exam, ...exam.questions.map(q => questionDao.query('hashCode').equals(q).first())])\n })\n .then(([exam, ...questions]) => {\n exam.questions = questions;\n if (!exam) {\n Dialog.alert({message: '该题库已失效!'});\n return;\n }\n this.$router.push({\n name: 'DoExamPage',\n params: {\n examConfig: exam,\n isReviewError\n }\n })\n });\n },\n clearHistory(hashCode) {\n bankDao.queryByHashCode(hashCode)\n .then(bankDao => {\n bankDao = bankDao || {};\n return historyRecordDao.delete(bankDao.questions || []);\n }).then(() => {\n console.log('remove the history.');\n this.isShowOption = false;\n this.initExamList();\n }\n );\n },\n showOption(exam) {\n // console.log(exam.hashCode);\n if (exam.hasHistoryError) {\n this.optionInfo.hashCode = exam.hashCode;\n this.isShowOption = true;\n } else {\n this.doExam(exam.hashCode);\n }\n },\n selectLib(lib) {\n this.onlineSelects.includes(lib.hashCode) ? (this.onlineSelects = this.onlineSelects.filter(s => s !== lib.hashCode)) : (this.onlineSelects = [...this.onlineSelects, lib.hashCode])\n this.questionLib = JSON.stringify(this.selectedLibs);\n },\n showImporter() {\n this.isShowImporter = true;\n this.isFromOnline = false;\n },\n importFromExist() {\n this.isFromOnline = true;\n this.fetchOnlineLib().then(res => {\n this.onlineLibs = res.filter(r => r.data).map(r => ({\n ...r.data, hashCode: r.data.hashCode || utils.getHashCode(r.data.title + r.data.category)\n }));\n }).catch(e => {\n console.log(e)\n alert('获取失败,请尝试自行录入');\n this.isShowImporter = false;\n })\n },\n async fetchOnlineLib() {\n const maps = (await this.$http.get(existsMap + \"/map.json\")).data || []\n const promises = maps.map(exist => this.$http.get(existsMap + \"/\" + exist));\n return Promise.all(promises);\n },\n async importLib() {\n try {\n let lib = JSON.parse(this.questionLib);\n if (lib instanceof Array) {\n await Promise.all(lib.map(async l => {\n await this.importSingleLib(l);\n }))\n } else {\n await this.importSingleLib(lib);\n }\n } catch (e) {\n alert(`题库格式错误:${utils.getMessage(e)}`)\n }\n await this.initExamList();\n this.isShowImporter = false;\n this.questionLib = ''\n },\n async importSingleLib(lib) {\n if (!lib.questions || lib.questions.length === 0) {\n return false;\n }\n lib.questions.forEach(q=>{\n q.hashCode = q.hashCode || utils.getHashCode(q)\n })\n const bank = {\n ...lib,\n questions: lib.questions.map(q=>q.hashCode)\n }\n bank.hashCode = lib.hashCode || utils.getHashCode(bank)\n await questionDao.upsert(lib.questions)\n .then(()=>{\n return bankDao.upsert([bank]);\n })\n return true;\n },\n async intoCategory(category = 'default') {\n this.currentCategory = category\n this.examList = []\n await bankDao.query('hashCode').notEqual('').toArray().then(banks => {\n const promises = banks.map(bank => {\n return historyRecordDao.query('relatedQuestion').anyOf(bank.questions).sortBy('createDate')\n .then(records => {\n const errorMap = Object.fromEntries(records.map(record => [record.relatedQuestion, {\n ...record, times: record.errorTimes\n }]));\n const hasHistoryError = !!Object.values(errorMap).find(q => q.times > 0);\n return {...bank, errorMap, hasHistoryError}\n });\n });\n return Promise.all(promises);\n }).then(banks => {\n banks = banks.map(b => {\n b.category = b.category || 'default'\n return b\n })\n this.examList = banks.filter(b => b.category === category);\n })\n },\n async initExamList() {\n await bankDao.query('hashCode').notEqual('').toArray().then(banks => {\n banks = banks.map(b => {\n b.category = b.category || 'default'\n return b\n })\n this.categories = banks.reduce((ac, item) => {\n if (!ac.includes(item.category)) {\n ac.push(item.category)\n }\n return ac\n }, [])\n })\n if (this.currentCategory) {\n this.intoCategory(this.currentCategory)\n }\n },\n },\n mounted() {\n this.initExamList();\n // configDao.query('key').equals('hasSync').first()\n // .then(hasSync => {\n // hasSync = !!hasSync;\n // if (!hasSync) {\n // this.syncDataToIndexDB();\n // }\n // });\n }\n}\n</script>\n\n<style scoped>\n.exam-import-box {\n width: 20rem;\n padding: 1rem;\n}\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/home-pages/HomeIndex.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.inCategory)?_c('van-grid',[_c('van-grid-item',{attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":_vm.showImporter}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(\"开始答题(导入)\")])]),_vm._v(\" \"),_vm._l((_vm.categories),function(category){return _c('van-grid-item',{key:category,attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":function($event){return _vm.intoCategory(category)}}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(category))])])})],2):_c('van-grid',[_c('van-grid-item',{attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":function($event){_vm.currentCategory = null}}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(\"返回\")])]),_vm._v(\" \"),_vm._l((_vm.examList),function(exam){return _c('van-grid-item',{key:exam.hashCode,attrs:{\"icon\":\"notes-o\",\"clickable\":\"\"},on:{\"click\":function($event){return _vm.showOption(exam)}}},[_c('div',{staticClass:\"van-grid-item__text text-align-center\",attrs:{\"slot\":\"text\"},slot:\"text\"},[_vm._v(_vm._s(exam.title))])])})],2),_vm._v(\" \"),_c('van-popup',{model:{value:(_vm.isShowImporter),callback:function ($$v) {_vm.isShowImporter=$$v},expression:\"isShowImporter\"}},[_c('div',{staticClass:\"exam-import-box\"},[(_vm.isFromOnline)?_c('div',{staticStyle:{\"max-height\":\"300px\",\"overflow-y\":\"auto\"}},[(!_vm.onlineLibs || _vm.onlineLibs.length === 0)?_c('div',{staticStyle:{\"text-align\":\"center\",\"padding\":\"10px\"}},[_c('van-loading',{attrs:{\"type\":\"spinner\"}})],1):_vm._e(),_vm._v(\" \"),_c('van-checkbox-group',{model:{value:(_vm.onlineSelects),callback:function ($$v) {_vm.onlineSelects=$$v},expression:\"onlineSelects\"}},[_c('van-cell-group',_vm._l((_vm.onlineLibs),function(lib,oi){return _c('van-cell',{key:oi,attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.selectLib(lib)}}},[_c('template',{slot:\"title\"},[_c('span',[_vm._v(_vm._s(lib.title))])]),_vm._v(\" \"),_c('van-checkbox',{attrs:{\"slot\":\"right-icon\",\"name\":lib.hashCode},slot:\"right-icon\"})],2)}),1)],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.isFromOnline)?_c('div',[_c('van-cell-group',[_c('van-field',{attrs:{\"label\":\"题库\",\"type\":\"textarea\",\"placeholder\":\"请输入题库\",\"rows\":\"10\"},model:{value:(_vm.questionLib),callback:function ($$v) {_vm.questionLib=$$v},expression:\"questionLib\"}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('van-button',{attrs:{\"type\":\"info\",\"size\":\"small\",\"block\":\"\"},on:{\"click\":_vm.importLib}},[_vm._v(\"导入题库\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"exam-m-top-small\"},[_c('van-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"block\":\"\"},on:{\"click\":_vm.importFromExist}},[_vm._v(\"获取在线题库\")])],1)])]),_vm._v(\" \"),_c('van-popup',{attrs:{\"position\":\"bottom\"},model:{value:(_vm.isShowOption),callback:function ($$v) {_vm.isShowOption=$$v},expression:\"isShowOption\"}},[_c('div',{},[_c('van-button',{attrs:{\"type\":\"primary\",\"block\":\"\"},on:{\"click\":function($event){return _vm.doExam(_vm.optionInfo.hashCode)}}},[_vm._v(\"重新测试\\n \")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"info\",\"block\":\"\"},on:{\"click\":function($event){return _vm.doExam(_vm.optionInfo.hashCode,true)}}},[_vm._v(\"复习错题\\n \")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"danger\",\"block\":\"\"},on:{\"click\":function($event){return _vm.clearHistory(_vm.optionInfo.hashCode)}}},[_vm._v(\"清空错题\\n \")])],1)])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5e83e3fc\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/home-pages/HomeIndex.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5e83e3fc\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HomeIndex.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomeIndex.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomeIndex.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5e83e3fc\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./HomeIndex.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5e83e3fc\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/home-pages/HomeIndex.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <van-button type=\"default\">默认按钮</van-button>\n <van-button type=\"primary\">主要按钮</van-button>\n <van-button type=\"info\">信息按钮</van-button>\n <van-button type=\"warning\">警告按钮</van-button>\n <van-button type=\"danger\">危险按钮</van-button>\n </div>\n</template>\n\n<script>\n import Vue from 'vue';\n import { Button } from 'vant';\n\n Vue.use(Button);\n\n export default {\n name: 'HelloWorld',\n data() {\n return {\n msg: 'Welcome to Your Vue.js App'\n }\n }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/HelloWorld.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('van-button',{attrs:{\"type\":\"default\"}},[_vm._v(\"默认按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"primary\"}},[_vm._v(\"主要按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"info\"}},[_vm._v(\"信息按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"warning\"}},[_vm._v(\"警告按钮\")]),_vm._v(\" \"),_c('van-button',{attrs:{\"type\":\"danger\"}},[_vm._v(\"危险按钮\")])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a0448bfc\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a0448bfc\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HelloWorld.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <van-nav-bar\n :title=\"activePage.label\"\n fixed\n ></van-nav-bar>\n <div class=\"is-relation\">\n <component :is=\"activePage.api\"></component>\n <p class=\"text-align-center is-absolute\" style=\"color: #efefef;width: 100%\">{{version}}</p>\n </div>\n <van-tabbar v-model=\"activeTabIndex\">\n <van-tabbar-item v-for=\"(page, i) in pages\" :key=\"i\" :icon=\"page.icon\">{{page.label}}</van-tabbar-item>\n </van-tabbar>\n </div>\n</template>\n\n<script>\n import Vue from 'vue';\n import {NavBar} from 'vant';\n import {Tabbar, TabbarItem} from 'vant';\n import HomeIndex from \"@/components/home-pages/HomeIndex\";\n import HelloWorld from \"@/components/HelloWorld\";\n import config from \"@/config\";\n\n Vue.use(NavBar).use(Tabbar).use(TabbarItem);\n\n export default {\n name: \"HomePage\",\n data() {\n return {\n activeTabIndex: 0,\n pages: [\n {title: '主页', label: 'Home', api: HomeIndex, icon: 'home-o'},\n // {title: '搜索', label: '搜索', api: HelloWorld, icon: 'search'},\n // {title: '朋友', label: '朋友', api: HomeIndex, icon: 'friends-o'},\n // {title: '设置', label: '设置', api: HomeIndex, icon: 'setting-o'},\n ],\n }\n },\n computed: {\n activePage() {\n return this.pages[this.activeTabIndex] || {};\n },\n version() {\n return config.version;\n }\n }\n }\n</script>\n\n<style scoped>\n\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/HomePage.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('van-nav-bar',{attrs:{\"title\":_vm.activePage.label,\"fixed\":\"\"}}),_vm._v(\" \"),_c('div',{staticClass:\"is-relation\"},[_c(_vm.activePage.api,{tag:\"component\"}),_vm._v(\" \"),_c('p',{staticClass:\"text-align-center is-absolute\",staticStyle:{\"color\":\"#efefef\",\"width\":\"100%\"}},[_vm._v(_vm._s(_vm.version))])],1),_vm._v(\" \"),_c('van-tabbar',{model:{value:(_vm.activeTabIndex),callback:function ($$v) {_vm.activeTabIndex=$$v},expression:\"activeTabIndex\"}},_vm._l((_vm.pages),function(page,i){return _c('van-tabbar-item',{key:i,attrs:{\"icon\":page.icon}},[_vm._v(_vm._s(page.label))])}),1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5c9e76e7\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HomePage.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5c9e76e7\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HomePage.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomePage.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HomePage.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c9e76e7\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HomePage.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5c9e76e7\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HomePage.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"exam-root\" v-finger:swipe=\"swipe\">\n <van-nav-bar\n :title=\"examInfo.title\"\n fixed\n left-arrow\n right-text=\"目录\"\n @click-left=\"$router.back()\"\n @click-right=\"showAcButtons = !showAcButtons\"\n ></van-nav-bar>\n <div class=\"ac-qn-backdrop\" v-show=\"showAcButtons\" @click.stop=\"showAcButtons = false\">\n <div class=\"exam-p-around-small ac-qn\" @click.stop>\n <van-row>\n <van-col span=\"4\" v-for=\"(question,i) in questionsInfo\" :key=\"i\">\n <div class=\"exam-circle exam-done\" @click=\"turnTo(i)\"\n :class=\"{'exam-right':question.answer.isPass&&(isShowResult||(question.answer.isChecked&&isPractice)),'exam-error':question.answer.isMistake&&(isShowResult||(question.answer.isChecked&&isPractice)),'exam-current': questionNum === i}\">\n {{ i + 1 }}\n </div>\n </van-col>\n </van-row>\n </div>\n </div>\n <div class=\"question-box\" @dblclick.stop=\"showAcButtons = true\"\n :style=\"`width: ${totalNum*100}%;transform:translate(${-questionNum*100/totalNum}%,0)`\">\n <div class=\"question-item\" v-for=\"(question,i) in questionsInfo\" :key=\"question.hashCode\">\n <van-panel :title=\"getQuestionTitle(question)\" :desc=\"getQuestionDesc(question)\">\n <div v-if=\"question.isMulti\">\n <van-checkbox-group v-model=\"question.answer.multi.apis\" @click.stop @dblclick.stop>\n <van-cell-group>\n <van-cell v-for=\"(option, oi) in question.answerOptions\"\n clickable @click=\"toggleAnswer(i, option.api)\"\n :key=\"oi\">\n <template slot=\"title\">\n <span\n :class=\"{'right-answer':option.isRight&&isShowResult||(option.isRight&&question.answer.isChecked&&isPractice),'error-answer':!option.isRight&&isShowResult||(!option.isRight&&question.answer.isAnswered&&isPractice),'custom-title':true}\">{{\n letterIndex[oi] + '. ' + option.describe\n }}</span>\n </template>\n <van-checkbox slot=\"right-icon\" :name=\"option.api\"\n :checked-color=\"getOptionColor(question,option)\"></van-checkbox>\n </van-cell>\n </van-cell-group>\n </van-checkbox-group>\n </div>\n <div v-if=\"!question.isMulti\">\n <van-radio-group v-model=\"question.answer.single.api\">\n <van-cell-group>\n <van-cell v-for=\"(option, oi) in question.answerOptions\"\n clickable @click=\"setAnswer(i, [option.api])\"\n :key=\"oi\">\n <template slot=\"title\">\n <span\n :class=\"{'right-answer':option.isRight&&isShowResult||(option.isRight&&question.answer.isChecked&&isPractice),'error-answer':!option.isRight&&isShowResult||(!option.isRight&&question.answer.isAnswered&&isPractice),'custom-title':true}\">{{\n letterIndex[oi] + '. ' + option.describe\n }}</span>\n </template>\n <van-radio slot=\"right-icon\" :name=\"option.api\"\n :checked-color=\"getOptionColor(question,option)\"></van-radio>\n </van-cell>\n </van-cell-group>\n </van-radio-group>\n </div>\n </van-panel>\n </div>\n </div>\n <div class=\"text-align-center ac-buttons\" v-if=\"questionsInfo[questionNum]\">\n <van-button size=\"small\" v-if=\"questionNum>0\" @click=\"turnTo(questionNum-1)\">上一题</van-button>\n <van-button size=\"small\" type=\"info\" v-if=\"questionNum<totalNum-1\" @click=\"turnTo(questionNum+1)\">下一题\n </van-button>\n <van-button size=\"small\" type=\"warning\" v-if=\"isPractice&&!questionsInfo[questionNum].answer.isChecked\"\n @click=\"checkResult(questionNum)\">检查该题答案\n </van-button>\n <van-button size=\"small\" type=\"primary\" v-if=\"!hasSubmit\" @click=\"confirmSubmit\">提交\n </van-button>\n </div>\n\n </div>\n</template>\n\n<script>\nimport Vue from 'vue';\nimport {NavBar} from 'vant';\nimport {Panel} from 'vant';\nimport {Button} from 'vant';\nimport {Cell, CellGroup} from 'vant';\nimport {RadioGroup, Radio} from 'vant';\nimport {Checkbox, CheckboxGroup} from 'vant';\nimport {Dialog} from 'vant';\nimport {Row, Col} from 'vant';\nimport utils from '../../utils';\nimport {historyRecordDao, bankDao} from '../../dao'\n\nVue.use(Row).use(Col);\n// 全局注册\nVue.use(Dialog);\nVue.use(Checkbox).use(CheckboxGroup);\nVue.use(RadioGroup);\nVue.use(Radio);\nVue.use(Cell).use(CellGroup);\n\nconst defaultQuestionInfo = {\n required: true,\n score: 1,\n usingScore: false,\n type: 'option', // text, number\n describe: 'Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?Do you love me?',\n answerOptions: [\n {api: 'A', describe: 'Yes', isRight: true},\n {api: 'B', describe: 'No'}\n ]\n};\n\nconst defaultExamInfo = {\n title: '试题测试',\n questions: [defaultQuestionInfo]\n};\n\nVue.use(NavBar).use(Panel).use(Button);\n\nexport default {\n name: \"DoExamPage\",\n data() {\n return {\n answers: [],\n questionNum: 0,\n isShowResult: false,\n letterIndex: [...'ABCDEFGHIJKLMNOPQRSTUVWXYZ'],\n examInfo: {},\n hasSubmit: false,\n examHashCode: 0,\n historyExams: [],\n showAcButtons: false\n }\n },\n computed: {\n totalNum() {\n return this.questions.length;\n },\n questions() {\n return (this.examInfo.questions || []).filter(\n q => this.isReviewError ? this.historyErrorHashCodes.includes(q.hashCode) : true\n ).map((q, i) => ({...q, active: i === this.questionNum}));\n },\n questionsInfo() {\n return this.questions.map(\n (q, i) => {\n if (!this.answers[i]) {\n this.answers[i] = {results: [{}], single: {}, multi: {apis: []}}\n }\n return {\n ...q,\n answer: this.answers[i] || {},\n orderNum: i + 1,\n isMulti: q.answerOptions.filter(opt => opt.isRight).length > 1\n }\n }\n )\n },\n historyErrorHashCodes() {\n return this.historyExams.filter(exam => exam.errorTimes > 0).map(exam => exam.hashCode);\n }\n },\n methods: {\n getQuestionTitle(question) {\n return [`(${this.questionNum + 1}/${this.totalNum})`, question.describe].join(' ');\n },\n getQuestionDesc(question) {\n let result = '';\n if (!question.required) {\n result += '(可选)'\n }\n if (question.type === 'option') {\n if (question.isMulti) {\n result += '多选题'\n } else {\n result += '单选题'\n }\n }\n let errorExam = this.historyExams.find(exam => exam.hashCode === question.hashCode);\n if (errorExam) {\n if (this.isReviewError) {\n if (errorExam.errorTimes) {\n result += ` (做错次数: ${errorExam.errorTimes})`;\n }\n }\n const totalTimes = errorExam.errorTimes + errorExam.rightTimes;\n if (totalTimes > 0) {\n result += `(历史正确率:${(errorExam.rightTimes / totalTimes * 100).toFixed(0)}%)`;\n }\n }\n return result;\n },\n /**\n * @param i\n * @param api {Array}\n */\n setAnswer(i, api) {\n this.answers = [...this.answers].map((answer, ai) => {\n if (ai === i) {\n answer.results = api.map(a => ({api: a}));\n answer.single.api = api[0];\n answer.multi.apis = api;\n }\n return answer;\n });\n },\n toggleAnswer(i, api) {\n let apis = this.answers[i].multi.apis;\n if (apis.includes(api)) {\n apis = apis.filter(a => a !== api);\n } else {\n apis.push(api);\n apis = [...apis];\n }\n this.setAnswer(i, apis);\n },\n checkResult(i) {\n this.answers = [...this.answers].map((answer, ai) => {\n if (i !== ai && i != null) {\n return answer;\n }\n let question = this.questions[ai];\n let rightAnswers = question.answerOptions.filter(option => option.isRight).map(option => option.api);\n answer.results.forEach(res => {\n res.isMistake = !rightAnswers.includes(res.api);\n });\n answer.isAnswered = answer.results.filter(res => res.api).length > 0;\n if (!answer.isChecked && answer.isAnswered) {\n answer.isMistake = answer.results.length !== rightAnswers.length || !!answer.results.find(res => res.isMistake);\n answer.isPass = answer.isAnswered && !answer.isMistake;\n answer.isChecked = true;\n }\n return answer;\n })\n },\n turnTo(i) {\n this.questionNum = i;\n },\n confirmSubmit() {\n Dialog.confirm({\n title: '提交答案',\n message: '确认提交?'\n }).then(() => {\n this.submit();\n }).catch(e => {\n console.log(e);\n });\n },\n submit() {\n this.checkResult();\n let answeredNum = this.questionsInfo.filter(q => q.answer.isAnswered).length;\n if (answeredNum < this.totalNum && this.requireAllDone) {\n Dialog.alert({message: '题目还没有答完:' + `${answeredNum}/${this.totalNum}`});\n return;\n }\n let rightNum = this.questionsInfo.filter(q => q.answer.isPass).length;\n let rightRate = (rightNum / this.totalNum) * 100 + '%';\n\n // 录入错误信息\n let checkedQuestion = this.questionsInfo.filter(q => q.answer.isChecked);\n checkedQuestion.forEach(question => {\n historyRecordDao.queryByHashCode(question.hashCode).then(\n codeInfo => {\n if (!codeInfo) {\n codeInfo = {relatedQuestion: question.hashCode, errorTimes: 0};\n }\n if (question.answer.isPass) {\n codeInfo.rightTimes++;\n } else {\n codeInfo.errorTimes++;\n }\n historyRecordDao.upsert(codeInfo)\n .then(() => {\n console.log('做题信息已保存');\n });\n }\n );\n });\n\n // 显示答题结果\n this.isShowResult = true;\n Dialog.alert({message: '答题结束,成绩如下:' + `正确:${rightNum}(总共:${this.totalNum})(正确率:${rightRate})`});\n this.hasSubmit = true;\n },\n adaptExamConfig() {\n let examInfo = {...defaultExamInfo, ...this.examConfig};\n examInfo.questions = examInfo.questions.map(q => ({\n ...defaultQuestionInfo, ...q, hashCode: q.hashCode,\n answerOptions: !q.answerOptions ? [] : q.answerOptions.map(a => ({\n ...a,\n api: utils.getHashCode(a) + ''\n }))\n })).filter(q => {\n if (!q.describe || q.answerOptions.length === 0) {\n console.log('错误的题目(无描述或无答案).', q);\n return false;\n }\n // 去掉无正确答案的问题\n const checkNoAnswer = utils.groupArray(q.answerOptions, 'isRight');\n if (checkNoAnswer.length === 1 && !checkNoAnswer[0][0].isRight) {\n console.log('错误的题目(无正确答案).', q);\n return false;\n }\n // 去掉问题中重复的答案\n const checkDuplicate = utils.groupArray(q.answerOptions, 'describe');\n const resultAnswers = checkDuplicate.map(checks => {\n if (checks.length > 1) {\n const result = {...checks[0]};\n if (utils.groupArray(checks, 'isRight').length !== checks.length) {\n result.invalid = true;\n }\n return result;\n }\n return checks[0];\n });\n // 去掉答案中有重复描述且对错不一的问题\n if (resultAnswers.find(r => r.invalid)) {\n console.log('错误的题目(答案中有重复描述且对错不一).', q);\n return false;\n }\n q.answerOptions = utils.randomSort(resultAnswers);\n return true;\n });\n examInfo.questions = utils.randomSort(examInfo.questions);\n\n this.examInfo = examInfo;\n this.examHashCode = this.examConfig.hashCode;\n this.loadHistoryExamInfo();\n },\n getOptionColor(question, option) {\n if (this.isShowResult || (this.isPractice && question.answer.isChecked)) {\n return question.answer.results.map(res => res.api).includes(option.api) && option.isRight ? '#44af11' : '#cd0000'\n }\n return '#1989fa';\n },\n loadHistoryExamInfo() {\n historyRecordDao.queryMany(this.examConfig.questions.map(q => q.hashCode))\n .then(records => {\n // console.log(records.map(r => r.relatedQuestion));\n this.historyExams = records.map(r => ({...r, hashCode: r.relatedQuestion}));\n // console.log(this.historyExams);\n });\n // const errorMapKey = 'errorMap_' + this.examHashCode;\n // let errorMap = utils.storage.getItem(errorMapKey);\n // if (errorMap) {\n // this.historyExams = Object.entries(errorMap).map(([key, value]) => ({hashCode: key, ...value}));\n // }\n },\n swipe: function (evt) {\n switch (evt.direction) {\n case 'Left':\n if (this.questionNum < this.totalNum - 1) {\n this.turnTo(this.questionNum + 1);\n }\n break;\n case 'Right':\n if (this.questionNum > 0) {\n this.turnTo(this.questionNum - 1);\n }\n break;\n case 'Up':\n this.showAcButtons = false\n break;\n case 'Down':\n this.showAcButtons = true\n break\n default:\n }\n }\n },\n props: {\n examConfig: {\n type: Object,\n default() {\n return defaultExamInfo;\n }\n },\n isReviewError: {\n type: Boolean,\n default: false\n },\n isNew: {\n type: Boolean,\n default: false\n },\n requireAllDone: {\n type: Boolean,\n default: false\n },\n isPractice: {\n type: Boolean,\n default: true\n }\n },\n watch: {\n examConfig() {\n this.adaptExamConfig();\n }\n },\n mounted() {\n this.adaptExamConfig();\n console.log('开始答题');\n try {\n plus.device.setWakelock(true);\n console.log('打开屏幕常亮');\n } catch (e) {\n // ignore\n }\n },\n destroyed() {\n console.log('结束答题');\n try {\n plus.device.setWakelock(false);\n console.log('关闭屏幕常亮');\n } catch (e) {\n // ignore\n }\n }\n}\n</script>\n\n<style scoped>\n.exam-root {\n overflow-x: hidden;\n top: 0;\n bottom: 0\n}\n\nspan.error-answer {\n color: #cd0000;\n}\n\nspan.right-answer {\n color: #44af11;\n}\n\nspan.custom-title {\n word-break: break-word;\n}\n\n.exam-circle {\n height: 2rem;\n width: 2rem;\n border: 1px solid #1989fa;\n border-radius: 50%;\n line-height: 2rem;\n text-align: center;\n color: #1989fa;\n cursor: pointer;\n margin-bottom: .5rem;\n}\n\n.exam-circle.exam-error {\n color: #cd0000;\n border-color: #cd0000;\n}\n\n.exam-circle.exam-right {\n color: #44af11;\n border-color: #44af11;\n}\n\n.exam-circle.exam-current {\n background-color: #1989fa;\n color: white;\n}\n\n.exam-circle.exam-error.exam-current {\n background-color: #cd0000;\n color: white;\n}\n\n.exam-circle.exam-right.exam-current {\n background-color: #44af11;\n color: white;\n}\n\n.question-box {\n position: relative;\n width: 100%;\n display: flex;\n transition: transform .35s;\n padding-bottom: 70px;\n padding-top: 46px;\n}\n\n.question-item {\n width: 100%;\n}\n\n.question-enter, .question-leave-to {\n opacity: 0;\n}\n\n.ac-buttons {\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100%;\n padding: 20px;\n box-sizing: border-box;\n background: #fff;\n box-shadow: 0 -1px 5px 0 rgba(0, 0, 0, .1);\n}\n\n.ac-qn {\n z-index: 100;\n background: #fff;\n box-shadow: 0 1px 5px 0 rgba(0, 0, 0, .1);\n}\n\n.ac-qn-backdrop{\n position: fixed;\n top: 46px;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, .5);\n z-index: 1;\n}\n\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/exam/DoExamPage.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"finger\",rawName:\"v-finger:swipe\",value:(_vm.swipe),expression:\"swipe\",arg:\"swipe\"}],staticClass:\"exam-root\"},[_c('van-nav-bar',{attrs:{\"title\":_vm.examInfo.title,\"fixed\":\"\",\"left-arrow\":\"\",\"right-text\":\"目录\"},on:{\"click-left\":function($event){return _vm.$router.back()},\"click-right\":function($event){_vm.showAcButtons = !_vm.showAcButtons}}}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAcButtons),expression:\"showAcButtons\"}],staticClass:\"ac-qn-backdrop\",on:{\"click\":function($event){$event.stopPropagation();_vm.showAcButtons = false}}},[_c('div',{staticClass:\"exam-p-around-small ac-qn\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('van-row',_vm._l((_vm.questionsInfo),function(question,i){return _c('van-col',{key:i,attrs:{\"span\":\"4\"}},[_c('div',{staticClass:\"exam-circle exam-done\",class:{'exam-right':question.answer.isPass&&(_vm.isShowResult||(question.answer.isChecked&&_vm.isPractice)),'exam-error':question.answer.isMistake&&(_vm.isShowResult||(question.answer.isChecked&&_vm.isPractice)),'exam-current': _vm.questionNum === i},on:{\"click\":function($event){return _vm.turnTo(i)}}},[_vm._v(\"\\n \"+_vm._s(i + 1)+\"\\n \")])])}),1)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"question-box\",style:((\"width: \" + (_vm.totalNum*100) + \"%;transform:translate(\" + (-_vm.questionNum*100/_vm.totalNum) + \"%,0)\")),on:{\"dblclick\":function($event){$event.stopPropagation();_vm.showAcButtons = true}}},_vm._l((_vm.questionsInfo),function(question,i){return _c('div',{key:question.hashCode,staticClass:\"question-item\"},[_c('van-panel',{attrs:{\"title\":_vm.getQuestionTitle(question),\"desc\":_vm.getQuestionDesc(question)}},[(question.isMulti)?_c('div',[_c('van-checkbox-group',{on:{\"click\":function($event){$event.stopPropagation();},\"dblclick\":function($event){$event.stopPropagation();}},model:{value:(question.answer.multi.apis),callback:function ($$v) {_vm.$set(question.answer.multi, \"apis\", $$v)},expression:\"question.answer.multi.apis\"}},[_c('van-cell-group',_vm._l((question.answerOptions),function(option,oi){return _c('van-cell',{key:oi,attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.toggleAnswer(i, option.api)}}},[_c('template',{slot:\"title\"},[_c('span',{class:{'right-answer':option.isRight&&_vm.isShowResult||(option.isRight&&question.answer.isChecked&&_vm.isPractice),'error-answer':!option.isRight&&_vm.isShowResult||(!option.isRight&&question.answer.isAnswered&&_vm.isPractice),'custom-title':true}},[_vm._v(_vm._s(_vm.letterIndex[oi] + '. ' + option.describe))])]),_vm._v(\" \"),_c('van-checkbox',{attrs:{\"slot\":\"right-icon\",\"name\":option.api,\"checked-color\":_vm.getOptionColor(question,option)},slot:\"right-icon\"})],2)}),1)],1)],1):_vm._e(),_vm._v(\" \"),(!question.isMulti)?_c('div',[_c('van-radio-group',{model:{value:(question.answer.single.api),callback:function ($$v) {_vm.$set(question.answer.single, \"api\", $$v)},expression:\"question.answer.single.api\"}},[_c('van-cell-group',_vm._l((question.answerOptions),function(option,oi){return _c('van-cell',{key:oi,attrs:{\"clickable\":\"\"},on:{\"click\":function($event){return _vm.setAnswer(i, [option.api])}}},[_c('template',{slot:\"title\"},[_c('span',{class:{'right-answer':option.isRight&&_vm.isShowResult||(option.isRight&&question.answer.isChecked&&_vm.isPractice),'error-answer':!option.isRight&&_vm.isShowResult||(!option.isRight&&question.answer.isAnswered&&_vm.isPractice),'custom-title':true}},[_vm._v(_vm._s(_vm.letterIndex[oi] + '. ' + option.describe))])]),_vm._v(\" \"),_c('van-radio',{attrs:{\"slot\":\"right-icon\",\"name\":option.api,\"checked-color\":_vm.getOptionColor(question,option)},slot:\"right-icon\"})],2)}),1)],1)],1):_vm._e()])],1)}),0),_vm._v(\" \"),(_vm.questionsInfo[_vm.questionNum])?_c('div',{staticClass:\"text-align-center ac-buttons\"},[(_vm.questionNum>0)?_c('van-button',{attrs:{\"size\":\"small\"},on:{\"click\":function($event){return _vm.turnTo(_vm.questionNum-1)}}},[_vm._v(\"上一题\")]):_vm._e(),_vm._v(\" \"),(_vm.questionNum<_vm.totalNum-1)?_c('van-button',{attrs:{\"size\":\"small\",\"type\":\"info\"},on:{\"click\":function($event){return _vm.turnTo(_vm.questionNum+1)}}},[_vm._v(\"下一题\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isPractice&&!_vm.questionsInfo[_vm.questionNum].answer.isChecked)?_c('van-button',{attrs:{\"size\":\"small\",\"type\":\"warning\"},on:{\"click\":function($event){return _vm.checkResult(_vm.questionNum)}}},[_vm._v(\"检查该题答案\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.hasSubmit)?_c('van-button',{attrs:{\"size\":\"small\",\"type\":\"primary\"},on:{\"click\":_vm.confirmSubmit}},[_vm._v(\"提交\\n \")]):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4b469db2\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/exam/DoExamPage.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4b469db2\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./DoExamPage.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./DoExamPage.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./DoExamPage.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4b469db2\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./DoExamPage.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-4b469db2\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/exam/DoExamPage.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\nimport HomePage from \"@/components/HomePage\";\nimport DoExamPage from \"@/components/exam/DoExamPage\";\n\nVue.use(Router);\n\nexport default new Router({\n routes: [\n {\n path: '/',\n name: 'HomePage',\n component: HomePage\n },\n {\n path: '/exam',\n name: 'DoExamPage',\n component: DoExamPage,\n props: true\n }\n ]\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from 'vue'\nimport axios from 'axios'\nimport jsonp from 'jsonp'\nimport Utils from '../utils'\nimport AlloyFinger from 'alloyfinger'\nimport AlloyFingerPlugin from 'alloyfinger/vue/alloy_finger_vue'\n\nVue.use(AlloyFingerPlugin,{\n AlloyFinger\n});\n\nVue.prototype.$http = axios;\nVue.prototype.$http.jsonp = jsonp;\n\nif (!Object.fromEntries) {\n Object.fromEntries = Utils.fromEntries;\n}\n\nif (!Array.prototype.flat) {\n try {\n Object.defineProperty(Array.prototype, 'flat', {\n value: function (deep) {\n return Utils.flat(this, deep);\n },\n enumerable: false\n })\n } catch (e) {\n Array.prototype.flat = function (deep) {\n return Utils.flat(this, deep);\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./src/plugins/index.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\nimport './assets/common.css';\nimport './plugins';\n\nVue.config.productionTip = false;\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n components: { App },\n template: '<App/>'\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap 5f9cf6ae68ce330caade"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\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 = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(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(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 5f9cf6ae68ce330caade"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap 2101aeef3b50dde68cad"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,KAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.3ad1d5771e9b13dbdad2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\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 = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(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(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 2101aeef3b50dde68cad"],"sourceRoot":""}