From 51335345b4a2220fe742dbc51437ee4bf62af6ae Mon Sep 17 00:00:00 2001 From: nikolockenvitz Date: Thu, 17 Jun 2021 15:03:11 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=20897c3?= =?UTF-8?q?b4ac18f769c8684e62972f00086d8cb4f53=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- js/{app.dd22d936.js => app.38aa3ed0.js} | 4 +- ...pp.dd22d936.js.map => app.38aa3ed0.js.map} | 2 +- ...dae1c5d0.js => chunk-065f4018.089c1ae0.js} | 2 +- ....js.map => chunk-065f4018.089c1ae0.js.map} | 2 +- ...72b7fa82.js => chunk-2eadd278.9c6c8c4b.js} | 2 +- ....js.map => chunk-2eadd278.9c6c8c4b.js.map} | 2 +- ...bc7e55ca.js => chunk-6e220460.eea51f45.js} | 2 +- ....js.map => chunk-6e220460.eea51f45.js.map} | 2 +- ...b6ba9b47.js => chunk-75fc5bce.31fd23e9.js} | 2 +- ....js.map => chunk-75fc5bce.31fd23e9.js.map} | 2 +- ...afb9ec16.js => chunk-7724eb6e.7b085d09.js} | 2 +- ....js.map => chunk-7724eb6e.7b085d09.js.map} | 2 +- ...2c20a441.js => chunk-c9cd02f0.cd91040b.js} | 2 +- ....js.map => chunk-c9cd02f0.cd91040b.js.map} | 2 +- ...nifest.d2e3d4f8d67bb0a48842b531d52e335e.js | 44 +++++++++---------- service-worker.js | 2 +- 17 files changed, 39 insertions(+), 39 deletions(-) rename js/{app.dd22d936.js => app.38aa3ed0.js} (98%) rename js/{app.dd22d936.js.map => app.38aa3ed0.js.map} (99%) rename js/{chunk-065f4018.dae1c5d0.js => chunk-065f4018.089c1ae0.js} (98%) rename js/{chunk-065f4018.dae1c5d0.js.map => chunk-065f4018.089c1ae0.js.map} (98%) rename js/{chunk-2eadd278.72b7fa82.js => chunk-2eadd278.9c6c8c4b.js} (98%) rename js/{chunk-2eadd278.72b7fa82.js.map => chunk-2eadd278.9c6c8c4b.js.map} (97%) rename js/{chunk-6e220460.bc7e55ca.js => chunk-6e220460.eea51f45.js} (99%) rename js/{chunk-6e220460.bc7e55ca.js.map => chunk-6e220460.eea51f45.js.map} (99%) rename js/{chunk-75fc5bce.b6ba9b47.js => chunk-75fc5bce.31fd23e9.js} (98%) rename js/{chunk-75fc5bce.b6ba9b47.js.map => chunk-75fc5bce.31fd23e9.js.map} (98%) rename js/{chunk-7724eb6e.afb9ec16.js => chunk-7724eb6e.7b085d09.js} (99%) rename js/{chunk-7724eb6e.afb9ec16.js.map => chunk-7724eb6e.7b085d09.js.map} (99%) rename js/{chunk-c9cd02f0.2c20a441.js => chunk-c9cd02f0.cd91040b.js} (99%) rename js/{chunk-c9cd02f0.2c20a441.js.map => chunk-c9cd02f0.cd91040b.js.map} (99%) rename precache-manifest.709634ccb22d5e6356fb89db747ab76d.js => precache-manifest.d2e3d4f8d67bb0a48842b531d52e335e.js (57%) diff --git a/index.html b/index.html index 945e8e8..b978369 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Fancy Flashcard
\ No newline at end of file +Fancy Flashcard
\ No newline at end of file diff --git a/js/app.dd22d936.js b/js/app.38aa3ed0.js similarity index 98% rename from js/app.dd22d936.js rename to js/app.38aa3ed0.js index 3cc9ece..c78f272 100644 --- a/js/app.dd22d936.js +++ b/js/app.38aa3ed0.js @@ -1,2 +1,2 @@ -(function(e){function t(t){for(var a,r,i=t[0],s=t[1],l=t[2],u=0,d=[];u=0;e--){var t=localStorage.key(e);t&&t.startsWith(c)&&localStorage.removeItem(t)}}function u(e){e.propertiesToSyncWithLocalStorage.forEach((function(t){try{if(e[t.key]=JSON.parse(o(t.key)),null===e[t.key])throw new Error("No item found.")}catch(n){e[t.key]=t.defaultValue}}))}function d(e,t){i(t.key,JSON.stringify(e[t.key]))}function f(e){l(),e.propertiesToSyncWithLocalStorage.forEach((function(t){e[t.key]=t.defaultValue})),Object(a["a"])(e,"Removed All App Data From Local Storage.")}},c9b8:function(e,t,n){e.exports=n.p+"img/flash.3ee01593.svg"},cd49:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var a=n("2b0e"),r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("v-window",{attrs:{touch:{left:e.swipeLeft,right:e.swipeRight}}},[n("v-app",{attrs:{id:"inspire"}},[n("v-app",{attrs:{id:"sandbox"}},[n("v-main",[n("NavigationBar",{ref:"navbar",attrs:{title:"Fancy Flashcard",decks:e.decks,numberOfSelectedDecks:e.numberOfSelectedDecks}}),n("router-view",{attrs:{decks:e.decks,numberOfSelectedDecks:e.numberOfSelectedDecks,cardLimit:e.cardLimit}}),n("v-snackbar",{attrs:{app:"",timeout:e.snackbar.timeout},scopedSlots:e._u([{key:"action",fn:function(t){var a=t.attrs;return[n("v-btn",e._b({attrs:{color:"orange darken-1",text:""},on:{click:function(t){e.snackbar.snackbar=!1}}},"v-btn",a,!1),[e._v("Close")])]}}]),model:{value:e.snackbar.snackbar,callback:function(t){e.$set(e.snackbar,"snackbar",t)},expression:"snackbar.snackbar"}},[e._v(" "+e._s(e.snackbar.text)+" ")]),n("CustomDialog",{ref:"customDialog"})],1)],1)],1)],1)],1)},c=[],o=(n("4de4"),n("4160"),n("b0c0"),n("159b"),n("b85c")),i=n("d4ec"),s=n("bee2"),l=n("262e"),u=n("2caf"),d=n("9ab4"),f=n("2fe1"),m=n("ebe2"),v=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"NavBar"},[a("v-navigation-drawer",{attrs:{clipped:e.primaryDrawer.clipped,floating:e.primaryDrawer.floating,"mini-variant":e.primaryDrawer.mini,permanent:"permanent"===e.primaryDrawer.type,temporary:"temporary"===e.primaryDrawer.type,app:"",overflow:""},model:{value:e.primaryDrawer.model,callback:function(t){e.$set(e.primaryDrawer,"model",t)},expression:"primaryDrawer.model"}},[a("v-list",[a("v-list-item",[a("v-img",{staticClass:"ffc-icon",attrs:{src:n("c9b8")}})],1),a("v-divider"),e._l(e.navBarList,(function(t){return a("v-list-item",{key:t.to,attrs:{to:t.to,link:""}},[a("v-list-item-icon",[a("v-icon",[e._v(e._s(t.icon))])],1),a("v-list-item-content",[a("v-list-item-title",[e._v(e._s(t.title))])],1)],1)}))],2)],1),a("v-app-bar",{class:e.colorAppBar,attrs:{"clipped-left":e.primaryDrawer.clipped,app:""}},[e.isInDeckSelection&&e.numberOfSelectedDecks>0?a("v-btn",{attrs:{icon:""},on:{click:e.deselectAll}},[a("v-icon",[e._v("mdi-close")])],1):e.isInLearning?a("v-btn",{attrs:{icon:""},on:{click:e.quitLearning}},[a("v-icon",[e._v("mdi-arrow-left")])],1):a("v-app-bar-nav-icon",{on:{click:function(t){return t.stopPropagation(),e.togglePrimaryDrawer(t)}}}),a("v-toolbar-title",[e._v(e._s(e.toolbarTitle))]),a("v-spacer"),e.isInDeckSelection&&1===e.numberOfSelectedDecks?a("v-btn",{attrs:{icon:""},on:{click:e.showInfoForSelectedDeck}},[a("v-icon",[e._v("mdi-information")])],1):e._e(),e.isInDeckSelection&&e.numberOfSelectedDecks>0?a("v-btn",{attrs:{icon:"",disabled:e.numberOfSelectedDecks===e.decks.length},on:{click:e.selectAll}},[a("v-icon",[e._v("mdi-checkbox-multiple-marked")])],1):e._e(),e.isInDeckSelection&&e.numberOfSelectedDecks>0?a("v-btn",{attrs:{icon:""},on:{click:e.deleteSelected}},[a("v-icon",[e._v("mdi-delete")])],1):e._e()],1)],1)},p=[],b=(n("99af"),n("a9e3"),n("0e26"));n("7db0");function h(e){var t={title:"Delete Deck".concat(e.numberOfSelectedDecks>1?"s":"","?"),message:"Do you really want to delete the ".concat(e.numberOfSelectedDecks>1?e.numberOfSelectedDecks+" ":"","selected\n deck").concat(e.numberOfSelectedDecks>1?"s":"","?"),buttons:[{name:"Cancel",color:"grey"},{name:"Delete",color:"red darken-1",callback:function(){e.$eventHub.$emit("deleteSelectedDecks")}}]};e.$eventHub.$emit("showCustomDialog",t)}function k(e){for(var t,n=e.decks.find((function(e){return e.selected})),a={title:null===n||void 0===n?void 0:n.name,table:[],buttons:[{name:"Close",color:"indigo"}]},r=[{meta:"file",content:[{key:"author",name:"Author"},{key:"version",name:"Version"}]},{meta:"deck",content:[{key:"description",name:"Description"}]}],c=0,i=r;c0?"indigo":""}},{key:"toolbarTitle",get:function(){return this.isInDeckSelection&&this.numberOfSelectedDecks>0?"".concat(this.numberOfSelectedDecks," deck").concat(1===this.numberOfSelectedDecks?"":"s"," selected"):this.title}}]),n}(g);y=Object(d["a"])([f["a"]],y);var _=y,D=_,S=(n("886e"),n("2877")),O=n("6544"),C=n.n(O),w=n("40dc"),E=n("5bc1"),L=n("8336"),A=n("ce7e"),j=n("132d"),I=n("adda"),N=n("8860"),$=n("da13"),T=n("5d23"),x=n("34c3"),R=n("f774"),V=n("2fa4"),H=n("2a7f"),P=Object(S["a"])(D,v,p,!1,null,"ba98dd5c",null),F=P.exports;C()(P,{VAppBar:w["a"],VAppBarNavIcon:E["a"],VBtn:L["a"],VDivider:A["a"],VIcon:j["a"],VImg:I["a"],VList:N["a"],VListItem:$["a"],VListItemContent:T["a"],VListItemIcon:x["a"],VListItemTitle:T["b"],VNavigationDrawer:R["a"],VSpacer:V["a"],VToolbarTitle:H["a"]});var B=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-dialog",{attrs:{"max-width":"400",persistent:""},model:{value:e.showDialog,callback:function(t){e.showDialog=t},expression:"showDialog"}},[n("v-card",{attrs:{color:"#2e2e2e"}},[n("v-card-title",{staticClass:"headline"},[e._v(" "+e._s(e.options.title)+" "),e.options.type?n("v-icon",{staticClass:"mx-2",attrs:{size:"0.9em",color:"indigo"}},[e._v(" "+e._s("sponsored"===e.options.type?"mdi-cash-usd-outline":"curated"===e.options.type?"mdi-check-decagram":"official"===e.options.type?"mdi-flash-circle":null)+" ")]):e._e()],1),e.options.message?n("v-card-text",{staticClass:"text-left"},[e._v(e._s(e.options.message))]):e.options.multipleMessages?n("v-card-text",{staticClass:"text-left"},e._l(e.options.multipleMessages,(function(t){return n("p",{key:t.name,staticClass:"multiple-messages"},[n("b",[e._v(e._s(t.name)+":")]),e._v(" "+e._s(t.value)+" ")])})),0):e._e(),e.options.table?n("v-list",[e.options.tableHead?n("v-list-item",[n("v-list-item-content",{staticClass:"font-weight-bold"},[e._v(e._s(e.options.tableHead.name))]),n("v-list-item-content",{staticClass:"font-weight-bold"},[e._v(e._s(e.options.tableHead.value))])],1):e._e(),e._l(e.options.table,(function(t){return n("v-list-item",{key:t.name},[n("v-list-item-content",[e._v(e._s(t.name))]),n("v-list-item-content",[e._v(e._s(t.value))])],1)}))],2):e._e(),e.options.url?n("div",{staticClass:"share-ffc-url"},[n("v-text-field",{attrs:{type:"text",id:"ffc-url",value:e.options.url}})],1):e._e(),e.options.barChart?n("BarChart",{attrs:{options:e.options.barChart}}):e._e(),n("v-card-actions",[n("v-spacer"),e._l(e.options.buttons,(function(t){return n("v-btn",{key:t.name,attrs:{color:t.color,text:""},on:{click:function(n){return e.close(t)}}},[e._v(e._s(t.name))])}))],2)],1)],1)},M=[],K=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"bar-chart"},[n("div",{staticClass:"bar-container",style:{minHeight:"min(20vw, 100px)"}},e._l(e.options.bars,(function(t,a){return n("div",{key:a,staticClass:"bar-wrapper"},[n("div",{staticClass:"bar-value"},[e._v(e._s(t.value))]),n("div",{staticClass:"bar",style:e.getHeight(t)})])})),0),n("div",{staticClass:"bar-container",staticStyle:{"padding-top":"0"}},e._l(e.options.bars,(function(t,a){return n("div",{key:a,staticClass:"bar-name"},[e._v(e._s(t.name||""))])})),0)])},q=[],W=(n("d81d"),n("2909")),U=a["a"].extend({props:{options:{type:Object}}}),G=function(e){Object(l["a"])(n,e);var t=Object(u["a"])(n);function n(){return Object(i["a"])(this,n),t.apply(this,arguments)}return Object(s["a"])(n,[{key:"getHeight",value:function(e){var t=this.maxBarValue>0?e.value/this.maxBarValue:0;return{height:"".concat(32*t,"vw"),maxHeight:"".concat(150*t,"px")}}},{key:"maxBarValue",get:function(){return Math.max.apply(Math,Object(W["a"])(this.options.bars.map((function(e){return e.value}))))}}]),n}(U);G=Object(d["a"])([f["a"]],G);var J=G,Q=J,Y=(n("5491"),Object(S["a"])(Q,K,q,!1,null,"898ec282",null)),z=Y.exports,X=function(e){Object(l["a"])(n,e);var t=Object(u["a"])(n);function n(){var e;return Object(i["a"])(this,n),e=t.apply(this,arguments),e.showDialog=!1,e.options={title:"",format:"",message:"",tableHead:{name:"",value:""},table:[{name:"",value:""}],buttons:[{name:"Close",color:"indigo",callback:void 0}]},e}return Object(s["a"])(n,[{key:"hide",value:function(){this.showDialog=!1}},{key:"show",value:function(e){this.showDialog=!0,this.options=e,(!this.options.buttons||this.options.buttons&&0===this.options.buttons.length)&&(this.options.buttons=[{name:"Close",color:"indigo",callback:void 0}])}},{key:"close",value:function(e){this.showDialog=!1,e&&e.callback&&e.callback()}}]),n}(a["a"]);X=Object(d["a"])([Object(f["a"])({components:{BarChart:z}})],X);var Z=X,ee=Z,te=(n("9ae4"),n("b0af")),ne=n("99d9"),ae=n("169a"),re=n("8654"),ce=Object(S["a"])(ee,B,M,!1,null,"114d3862",null),oe=ce.exports;C()(ce,{VBtn:L["a"],VCard:te["a"],VCardActions:ne["a"],VCardText:ne["b"],VCardTitle:ne["c"],VDialog:ae["a"],VIcon:j["a"],VList:N["a"],VListItem:$["a"],VListItemContent:T["a"],VSpacer:V["a"],VTextField:re["a"]});n("ac1f"),n("5319");var ie=n("c97c"),se=(n("13d5"),n("a434"),n("5530")),le=n("076d");function ue(e,t,n){try{de(e,JSON.parse(t),n)}catch(a){Object(le["a"])(e,a)}}function de(e,t,n){var a=[];try{var r,c=!1;for(var o in t.decks){var i=[];for(var s in t.decks[o].cards)i.push({id:Number(s),q:t.decks[o].cards[s].q,a:t.decks[o].cards[s].a,r:[]});var l=fe(e.decks,o,t,n);if(l.status)c=!0,a.push({name:l.deckName||"",numberOfCards:i.length,addedCards:l.addedCards,updatedCards:l.updatedCards,deletedCards:l.deletedCards});else{var u=t.decks[o].meta.deck_name||o;e.decks.push({id:e.decks.reduce((function(e,t){return Math.max(e,t.id)}),0)+1,selected:!1,name:u,meta:{file:Object(se["a"])(Object(se["a"])({},t.meta),{},{url:n}),deck:Object(se["a"])(Object(se["a"])({},t.decks[o].meta),{},{short_name:o})},cards:i}),a.push({name:u,numberOfCards:i.length})}}var d=null===t||void 0===t||null===(r=t.meta)||void 0===r?void 0:r.version;me(e,a,d,c)}catch(f){Object(le["a"])(e,f)}}function fe(e,t,n,a){var r,c=Object(o["a"])(e);try{for(c.s();!(r=c.n()).done;){var i=r.value;if((i.meta.file.url&&i.meta.file.url===a||!i.meta.file.url&&i.meta.file.uuid&&i.meta.file.uuid===n.meta.uuid)&&i.meta.deck.short_name===t){var s=0,l=0,u=0;i.name=n.decks[t].meta.deck_name||t,i.meta={file:Object(se["a"])(Object(se["a"])({},n.meta),{},{url:i.meta.file.url}),deck:Object(se["a"])(Object(se["a"])({},n.decks[t].meta),{},{short_name:t})};for(var d={},f=0;f0?", ":"")+t.name}),""),buttons:[{name:"Discard Session",color:"grey",callback:function(){Object(be["a"])(),"DeckSelection"!==t.currentRoute.name&&t.replace("/")}},{name:"Resume",color:"indigo",callback:function(){a.decks.forEach((function(e){var t=n.find((function(t){return t.id===e.id}));t&&(t.selected=!0)})),"Learn"!==t.currentRoute.name&&t.replace("learn")}}]};e.$emit("showCustomDialog",r)}}var ke=a["a"].extend({props:{title:String}}),ge=function(e){Object(l["a"])(n,e);var t=Object(u["a"])(n);function n(){var e;return Object(i["a"])(this,n),e=t.apply(this,arguments),e.propertiesToSyncWithLocalStorage=[{key:"decks",defaultValue:[]},{key:"cardLimit",defaultValue:""}],e.cardLimit="",e.decks=[],e.snackbar={text:"",snackbar:!1},e}return Object(s["a"])(n,[{key:"setSelectedStatusForAllDecks",value:function(e){this.decks.forEach((function(t){t.selected=e}))}},{key:"created",value:function(){var e=this;pe(this);var t,n=Object(o["a"])(this.propertiesToSyncWithLocalStorage);try{var a=function(){var n=t.value;e.$watch(n.key,(function(){Object(ie["e"])(this,n)}),{deep:!0})};for(n.s();!(t=n.n()).done;)a()}catch(r){n.e(r)}finally{n.f()}}},{key:"mounted",value:function(){Object(ie["c"])(this),this.setSelectedStatusForAllDecks(!1),he(this.$eventHub,this.$router,this.decks)}},{key:"swipeLeft",value:function(){"Learn"!==this.$route.name?this.$refs.navbar.hideDrawer():this.$eventHub.$emit(m["a"].SWIPE_LEFT_IN_LEARN)}},{key:"swipeRight",value:function(){"Learn"!==this.$route.name?this.$refs.navbar.showDrawer():this.$eventHub.$emit(m["a"].SWIPE_RIGHT_IN_LEARN)}},{key:"showCustomDialog",value:function(e){this.$refs.customDialog.show(e)}},{key:"numberOfSelectedDecks",get:function(){return this.decks.filter((function(e){return e.selected})).length}}]),n}(ke);ge=Object(d["a"])([Object(f["a"])({components:{NavigationBar:F,CustomDialog:oe}})],ge);var ye=ge,_e=ye,De=(n("034f"),n("7496")),Se=n("f6c4"),Oe=n("2db4"),Ce=n("f665"),we=Object(S["a"])(_e,r,c,!1,null,null,null),Ee=we.exports;C()(we,{VApp:De["a"],VBtn:L["a"],VMain:Se["a"],VSnackbar:Oe["a"],VWindow:Ce["a"]});var Le=n("9483");Object(Le["a"])("".concat("/ffc/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh.")},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});n("d3b7");var Ae=n("8c4f");a["a"].use(Ae["a"]);var je=[{path:"/",name:"DeckSelection",component:function(){return n.e("chunk-2eadd278").then(n.bind(null,"bb51"))},props:!0},{path:"/learn",name:"Learn",component:function(){return n.e("chunk-7724eb6e").then(n.bind(null,"41ce"))},props:!0},{path:"/add",name:"Add New Deck",component:function(){return Promise.all([n.e("chunk-f88b53c8"),n.e("chunk-6e220460")]).then(n.bind(null,"f28b"))},props:!0},{path:"/thirdparty",name:"Third Party Decks",component:function(){return n.e("chunk-c9cd02f0").then(n.bind(null,"72ad"))}},{path:"/settings",name:"Settings",component:function(){return Promise.all([n.e("chunk-f88b53c8"),n.e("chunk-75fc5bce")]).then(n.bind(null,"26d3"))}},{path:"/about",name:"About",component:function(){return Promise.all([n.e("chunk-f88b53c8"),n.e("chunk-065f4018")]).then(n.bind(null,"f820"))}}],Ie=new Ae["a"]({base:"/ffc/",routes:je}),Ne=Ie,$e=n("f309");a["a"].use($e["a"]);var Te=new $e["a"]({theme:{dark:!0}});a["a"].config.productionTip=!1,a["a"].prototype.$eventHub=new a["a"],new a["a"]({router:Ne,vuetify:Te,render:function(e){return e(Ee)}}).$mount("#app")},ebe2:function(e,t,n){"use strict";var a,r;n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return r})),function(e){e[e["USER_ACTION"]=1]="USER_ACTION",e[e["NO_MORE_CARDS"]=2]="NO_MORE_CARDS"}(a||(a={})),function(e){e["DELETE_SELECTED_DECKS"]="deleteSelectedDecks",e["ADD_DECKS_FROM_FILE"]="addDecksFromFile",e["ADD_DECKS_FROM_JSON"]="addDecksFromJSON",e["SNACKBAR_EVENT"]="snackbarEvent",e["CLEAR_LOCAL_STORAGE"]="clearLocalStorage",e["SHOW_CUSTOM_DIALOG"]="showCustomDialog",e["QUIT_LEARNING"]="quitLearning",e["PREPARE_QUIT_LEARNING"]="prepareQuitLearning",e["SELECT_ALL_DECKS"]="selectAllDecks",e["DESELECT_ALL_DECKS"]="deselectAllDecks",e["SWIPE_LEFT_IN_LEARN"]="swipeLeftInLearn",e["SWIPE_RIGHT_IN_LEARN"]="swipeRightInLearn",e["UPDATE_CARD_LIMIT"]="updateCardLimit"}(r||(r={}))}}); -//# sourceMappingURL=app.dd22d936.js.map \ No newline at end of file +(function(e){function t(t){for(var a,r,i=t[0],s=t[1],l=t[2],u=0,d=[];u=0;e--){var t=localStorage.key(e);t&&t.startsWith(c)&&localStorage.removeItem(t)}}function u(e){e.propertiesToSyncWithLocalStorage.forEach((function(t){try{if(e[t.key]=JSON.parse(o(t.key)),null===e[t.key])throw new Error("No item found.")}catch(n){e[t.key]=t.defaultValue}}))}function d(e,t){i(t.key,JSON.stringify(e[t.key]))}function f(e){l(),e.propertiesToSyncWithLocalStorage.forEach((function(t){e[t.key]=t.defaultValue})),Object(a["a"])(e,"Removed All App Data From Local Storage.")}},c9b8:function(e,t,n){e.exports=n.p+"img/flash.3ee01593.svg"},cd49:function(e,t,n){"use strict";n.r(t);n("e260"),n("e6cf"),n("cca6"),n("a79d");var a=n("2b0e"),r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("v-window",{attrs:{touch:{left:e.swipeLeft,right:e.swipeRight}}},[n("v-app",{attrs:{id:"inspire"}},[n("v-app",{attrs:{id:"sandbox"}},[n("v-main",[n("NavigationBar",{ref:"navbar",attrs:{title:"Fancy Flashcard",decks:e.decks,numberOfSelectedDecks:e.numberOfSelectedDecks}}),n("router-view",{attrs:{decks:e.decks,numberOfSelectedDecks:e.numberOfSelectedDecks,cardLimit:e.cardLimit}}),n("v-snackbar",{attrs:{app:"",timeout:e.snackbar.timeout},scopedSlots:e._u([{key:"action",fn:function(t){var a=t.attrs;return[n("v-btn",e._b({attrs:{color:"orange darken-1",text:""},on:{click:function(t){e.snackbar.snackbar=!1}}},"v-btn",a,!1),[e._v("Close")])]}}]),model:{value:e.snackbar.snackbar,callback:function(t){e.$set(e.snackbar,"snackbar",t)},expression:"snackbar.snackbar"}},[e._v(" "+e._s(e.snackbar.text)+" ")]),n("CustomDialog",{ref:"customDialog"})],1)],1)],1)],1)],1)},c=[],o=(n("4de4"),n("4160"),n("b0c0"),n("159b"),n("b85c")),i=n("d4ec"),s=n("bee2"),l=n("262e"),u=n("2caf"),d=n("9ab4"),f=n("2fe1"),m=n("ebe2"),v=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"NavBar"},[a("v-navigation-drawer",{attrs:{clipped:e.primaryDrawer.clipped,floating:e.primaryDrawer.floating,"mini-variant":e.primaryDrawer.mini,permanent:"permanent"===e.primaryDrawer.type,temporary:"temporary"===e.primaryDrawer.type,app:"",overflow:""},model:{value:e.primaryDrawer.model,callback:function(t){e.$set(e.primaryDrawer,"model",t)},expression:"primaryDrawer.model"}},[a("v-list",[a("v-list-item",[a("v-img",{staticClass:"ffc-icon",attrs:{src:n("c9b8")}})],1),a("v-divider"),e._l(e.navBarList,(function(t){return a("v-list-item",{key:t.to,attrs:{to:t.to,link:""}},[a("v-list-item-icon",[a("v-icon",[e._v(e._s(t.icon))])],1),a("v-list-item-content",[a("v-list-item-title",[e._v(e._s(t.title))])],1)],1)}))],2)],1),a("v-app-bar",{class:e.colorAppBar,attrs:{"clipped-left":e.primaryDrawer.clipped,app:""}},[e.isInDeckSelection&&e.numberOfSelectedDecks>0?a("v-btn",{attrs:{icon:""},on:{click:e.deselectAll}},[a("v-icon",[e._v("mdi-close")])],1):e.isInLearning?a("v-btn",{attrs:{icon:""},on:{click:e.quitLearning}},[a("v-icon",[e._v("mdi-arrow-left")])],1):a("v-app-bar-nav-icon",{on:{click:function(t){return t.stopPropagation(),e.togglePrimaryDrawer(t)}}}),a("v-toolbar-title",[e._v(e._s(e.toolbarTitle))]),a("v-spacer"),e.isInDeckSelection&&1===e.numberOfSelectedDecks?a("v-btn",{attrs:{icon:""},on:{click:e.showInfoForSelectedDeck}},[a("v-icon",[e._v("mdi-information")])],1):e._e(),e.isInDeckSelection&&e.numberOfSelectedDecks>0?a("v-btn",{attrs:{icon:"",disabled:e.numberOfSelectedDecks===e.decks.length},on:{click:e.selectAll}},[a("v-icon",[e._v("mdi-checkbox-multiple-marked")])],1):e._e(),e.isInDeckSelection&&e.numberOfSelectedDecks>0?a("v-btn",{attrs:{icon:""},on:{click:e.deleteSelected}},[a("v-icon",[e._v("mdi-delete")])],1):e._e()],1)],1)},p=[],b=(n("99af"),n("a9e3"),n("0e26"));n("7db0");function h(e){var t={title:"Delete Deck".concat(e.numberOfSelectedDecks>1?"s":"","?"),message:"Do you really want to delete the ".concat(e.numberOfSelectedDecks>1?e.numberOfSelectedDecks+" ":"","selected\n deck").concat(e.numberOfSelectedDecks>1?"s":"","?"),buttons:[{name:"Cancel",color:"grey"},{name:"Delete",color:"red darken-1",callback:function(){e.$eventHub.$emit("deleteSelectedDecks")}}]};e.$eventHub.$emit("showCustomDialog",t)}function k(e){for(var t,n=e.decks.find((function(e){return e.selected})),a={title:null===n||void 0===n?void 0:n.name,table:[],buttons:[{name:"Close",color:"indigo"}]},r=[{meta:"file",content:[{key:"author",name:"Author"},{key:"version",name:"Version"}]},{meta:"deck",content:[{key:"description",name:"Description"}]}],c=0,i=r;c0?"indigo":""}},{key:"toolbarTitle",get:function(){return this.isInDeckSelection&&this.numberOfSelectedDecks>0?"".concat(this.numberOfSelectedDecks," deck").concat(1===this.numberOfSelectedDecks?"":"s"," selected"):this.title}}]),n}(g);y=Object(d["a"])([f["a"]],y);var _=y,D=_,S=(n("886e"),n("2877")),O=n("6544"),C=n.n(O),w=n("40dc"),E=n("5bc1"),L=n("8336"),A=n("ce7e"),j=n("132d"),I=n("adda"),N=n("8860"),$=n("da13"),T=n("5d23"),x=n("34c3"),R=n("f774"),V=n("2fa4"),H=n("2a7f"),P=Object(S["a"])(D,v,p,!1,null,"ba98dd5c",null),F=P.exports;C()(P,{VAppBar:w["a"],VAppBarNavIcon:E["a"],VBtn:L["a"],VDivider:A["a"],VIcon:j["a"],VImg:I["a"],VList:N["a"],VListItem:$["a"],VListItemContent:T["a"],VListItemIcon:x["a"],VListItemTitle:T["b"],VNavigationDrawer:R["a"],VSpacer:V["a"],VToolbarTitle:H["a"]});var B=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("v-dialog",{attrs:{"max-width":"400",persistent:""},model:{value:e.showDialog,callback:function(t){e.showDialog=t},expression:"showDialog"}},[n("v-card",{attrs:{color:"#2e2e2e"}},[n("v-card-title",{staticClass:"headline"},[e._v(" "+e._s(e.options.title)+" "),e.options.type?n("v-icon",{staticClass:"mx-2",attrs:{size:"0.9em",color:"indigo"}},[e._v(" "+e._s("sponsored"===e.options.type?"mdi-cash-usd-outline":"curated"===e.options.type?"mdi-check-decagram":"official"===e.options.type?"mdi-flash-circle":null)+" ")]):e._e()],1),e.options.message?n("v-card-text",{staticClass:"text-left"},[e._v(e._s(e.options.message))]):e.options.multipleMessages?n("v-card-text",{staticClass:"text-left"},e._l(e.options.multipleMessages,(function(t){return n("p",{key:t.name,staticClass:"multiple-messages"},[n("b",[e._v(e._s(t.name)+":")]),e._v(" "+e._s(t.value)+" ")])})),0):e._e(),e.options.table?n("v-list",[e.options.tableHead?n("v-list-item",[n("v-list-item-content",{staticClass:"font-weight-bold"},[e._v(e._s(e.options.tableHead.name))]),n("v-list-item-content",{staticClass:"font-weight-bold"},[e._v(e._s(e.options.tableHead.value))])],1):e._e(),e._l(e.options.table,(function(t){return n("v-list-item",{key:t.name},[n("v-list-item-content",[e._v(e._s(t.name))]),n("v-list-item-content",[e._v(e._s(t.value))])],1)}))],2):e._e(),e.options.url?n("div",{staticClass:"share-ffc-url"},[n("v-text-field",{attrs:{type:"text",id:"ffc-url",value:e.options.url}})],1):e._e(),e.options.barChart?n("BarChart",{attrs:{options:e.options.barChart}}):e._e(),n("v-card-actions",[n("v-spacer"),e._l(e.options.buttons,(function(t){return n("v-btn",{key:t.name,attrs:{color:t.color,text:""},on:{click:function(n){return e.close(t)}}},[e._v(e._s(t.name))])}))],2)],1)],1)},M=[],K=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"bar-chart"},[n("div",{staticClass:"bar-container",style:{minHeight:"min(20vw, 100px)"}},e._l(e.options.bars,(function(t,a){return n("div",{key:a,staticClass:"bar-wrapper"},[n("div",{staticClass:"bar-value"},[e._v(e._s(t.value))]),n("div",{staticClass:"bar",style:e.getHeight(t)})])})),0),n("div",{staticClass:"bar-container",staticStyle:{"padding-top":"0"}},e._l(e.options.bars,(function(t,a){return n("div",{key:a,staticClass:"bar-name"},[e._v(e._s(t.name||""))])})),0)])},q=[],W=(n("d81d"),n("2909")),U=a["a"].extend({props:{options:{type:Object}}}),G=function(e){Object(l["a"])(n,e);var t=Object(u["a"])(n);function n(){return Object(i["a"])(this,n),t.apply(this,arguments)}return Object(s["a"])(n,[{key:"getHeight",value:function(e){var t=this.maxBarValue>0?e.value/this.maxBarValue:0;return{height:"".concat(32*t,"vw"),maxHeight:"".concat(150*t,"px")}}},{key:"maxBarValue",get:function(){return Math.max.apply(Math,Object(W["a"])(this.options.bars.map((function(e){return e.value}))))}}]),n}(U);G=Object(d["a"])([f["a"]],G);var J=G,Q=J,Y=(n("5491"),Object(S["a"])(Q,K,q,!1,null,"898ec282",null)),z=Y.exports,X=function(e){Object(l["a"])(n,e);var t=Object(u["a"])(n);function n(){var e;return Object(i["a"])(this,n),e=t.apply(this,arguments),e.showDialog=!1,e.options={title:"",format:"",message:"",tableHead:{name:"",value:""},table:[{name:"",value:""}],buttons:[{name:"Close",color:"indigo",callback:void 0}]},e}return Object(s["a"])(n,[{key:"hide",value:function(){this.showDialog=!1}},{key:"show",value:function(e){this.showDialog=!0,this.options=e,(!this.options.buttons||this.options.buttons&&0===this.options.buttons.length)&&(this.options.buttons=[{name:"Close",color:"indigo",callback:void 0}])}},{key:"close",value:function(e){this.showDialog=!1,e&&e.callback&&e.callback()}}]),n}(a["a"]);X=Object(d["a"])([Object(f["a"])({components:{BarChart:z}})],X);var Z=X,ee=Z,te=(n("9ae4"),n("b0af")),ne=n("99d9"),ae=n("169a"),re=n("8654"),ce=Object(S["a"])(ee,B,M,!1,null,"114d3862",null),oe=ce.exports;C()(ce,{VBtn:L["a"],VCard:te["a"],VCardActions:ne["a"],VCardText:ne["b"],VCardTitle:ne["c"],VDialog:ae["a"],VIcon:j["a"],VList:N["a"],VListItem:$["a"],VListItemContent:T["a"],VSpacer:V["a"],VTextField:re["a"]});n("ac1f"),n("5319");var ie=n("c97c"),se=(n("13d5"),n("a434"),n("5530")),le=n("076d");function ue(e,t,n){try{de(e,JSON.parse(t),n)}catch(a){Object(le["a"])(e,a)}}function de(e,t,n){var a=[];try{var r,c=!1;for(var o in t.decks){var i=[];for(var s in t.decks[o].cards)i.push({id:Number(s),q:t.decks[o].cards[s].q,a:t.decks[o].cards[s].a,r:[]});var l=fe(e.decks,o,t,n);if(l.status)c=!0,a.push({name:l.deckName||"",numberOfCards:i.length,addedCards:l.addedCards,updatedCards:l.updatedCards,deletedCards:l.deletedCards});else{var u=t.decks[o].meta.deck_name||o;e.decks.push({id:e.decks.reduce((function(e,t){return Math.max(e,t.id)}),0)+1,selected:!1,name:u,meta:{file:Object(se["a"])(Object(se["a"])({},t.meta),{},{url:n}),deck:Object(se["a"])(Object(se["a"])({},t.decks[o].meta),{},{short_name:o})},cards:i}),a.push({name:u,numberOfCards:i.length})}}var d=null===t||void 0===t||null===(r=t.meta)||void 0===r?void 0:r.version;me(e,a,d,c)}catch(f){Object(le["a"])(e,f)}}function fe(e,t,n,a){var r,c=Object(o["a"])(e);try{for(c.s();!(r=c.n()).done;){var i=r.value;if((i.meta.file.url&&i.meta.file.url===a||!i.meta.file.url&&i.meta.file.uuid&&i.meta.file.uuid===n.meta.uuid)&&i.meta.deck.short_name===t){var s=0,l=0,u=0;i.name=n.decks[t].meta.deck_name||t,i.meta={file:Object(se["a"])(Object(se["a"])({},n.meta),{},{url:i.meta.file.url}),deck:Object(se["a"])(Object(se["a"])({},n.decks[t].meta),{},{short_name:t})};for(var d={},f=0;f0?", ":"")+t.name}),""),buttons:[{name:"Discard Session",color:"grey",callback:function(){Object(be["a"])(),"DeckSelection"!==t.currentRoute.name&&t.replace("/")}},{name:"Resume",color:"indigo",callback:function(){a.decks.forEach((function(e){var t=n.find((function(t){return t.id===e.id}));t&&(t.selected=!0)})),"Learn"!==t.currentRoute.name&&t.replace("learn")}}]};e.$emit("showCustomDialog",r)}}var ke=a["a"].extend({props:{title:String}}),ge=function(e){Object(l["a"])(n,e);var t=Object(u["a"])(n);function n(){var e;return Object(i["a"])(this,n),e=t.apply(this,arguments),e.propertiesToSyncWithLocalStorage=[{key:"decks",defaultValue:[]},{key:"cardLimit",defaultValue:""}],e.cardLimit="",e.decks=[],e.snackbar={text:"",snackbar:!1},e}return Object(s["a"])(n,[{key:"setSelectedStatusForAllDecks",value:function(e){this.decks.forEach((function(t){t.selected=e}))}},{key:"created",value:function(){var e=this;pe(this);var t,n=Object(o["a"])(this.propertiesToSyncWithLocalStorage);try{var a=function(){var n=t.value;e.$watch(n.key,(function(){Object(ie["e"])(this,n)}),{deep:!0})};for(n.s();!(t=n.n()).done;)a()}catch(r){n.e(r)}finally{n.f()}}},{key:"mounted",value:function(){Object(ie["c"])(this),this.setSelectedStatusForAllDecks(!1),he(this.$eventHub,this.$router,this.decks)}},{key:"swipeLeft",value:function(){"Learn"!==this.$route.name?this.$refs.navbar.hideDrawer():this.$eventHub.$emit(m["a"].SWIPE_LEFT_IN_LEARN)}},{key:"swipeRight",value:function(){"Learn"!==this.$route.name?this.$refs.navbar.showDrawer():this.$eventHub.$emit(m["a"].SWIPE_RIGHT_IN_LEARN)}},{key:"showCustomDialog",value:function(e){this.$refs.customDialog.show(e)}},{key:"numberOfSelectedDecks",get:function(){return this.decks.filter((function(e){return e.selected})).length}}]),n}(ke);ge=Object(d["a"])([Object(f["a"])({components:{NavigationBar:F,CustomDialog:oe}})],ge);var ye=ge,_e=ye,De=(n("034f"),n("7496")),Se=n("f6c4"),Oe=n("2db4"),Ce=n("f665"),we=Object(S["a"])(_e,r,c,!1,null,null,null),Ee=we.exports;C()(we,{VApp:De["a"],VBtn:L["a"],VMain:Se["a"],VSnackbar:Oe["a"],VWindow:Ce["a"]});var Le=n("9483");Object(Le["a"])("".concat("/ffc/","service-worker.js"),{ready:function(){console.log("App is being served from cache by a service worker.\nFor more details, visit https://goo.gl/AFskqB")},registered:function(){console.log("Service worker has been registered.")},cached:function(){console.log("Content has been cached for offline use.")},updatefound:function(){console.log("New content is downloading.")},updated:function(){console.log("New content is available; please refresh.")},offline:function(){console.log("No internet connection found. App is running in offline mode.")},error:function(e){console.error("Error during service worker registration:",e)}});n("d3b7");var Ae=n("8c4f");a["a"].use(Ae["a"]);var je=[{path:"/",name:"DeckSelection",component:function(){return n.e("chunk-2eadd278").then(n.bind(null,"bb51"))},props:!0},{path:"/learn",name:"Learn",component:function(){return n.e("chunk-7724eb6e").then(n.bind(null,"41ce"))},props:!0},{path:"/add",name:"Add New Deck",component:function(){return Promise.all([n.e("chunk-f88b53c8"),n.e("chunk-6e220460")]).then(n.bind(null,"f28b"))},props:!0},{path:"/thirdparty",name:"Third Party Decks",component:function(){return n.e("chunk-c9cd02f0").then(n.bind(null,"72ad"))}},{path:"/settings",name:"Settings",component:function(){return Promise.all([n.e("chunk-f88b53c8"),n.e("chunk-75fc5bce")]).then(n.bind(null,"26d3"))}},{path:"/about",name:"About",component:function(){return Promise.all([n.e("chunk-f88b53c8"),n.e("chunk-065f4018")]).then(n.bind(null,"f820"))}}],Ie=new Ae["a"]({base:"/ffc/",routes:je}),Ne=Ie,$e=n("f309");a["a"].use($e["a"]);var Te=new $e["a"]({theme:{dark:!0}});a["a"].config.productionTip=!1,a["a"].prototype.$eventHub=new a["a"],new a["a"]({router:Ne,vuetify:Te,render:function(e){return e(Ee)}}).$mount("#app")},ebe2:function(e,t,n){"use strict";var a,r;n.d(t,"b",(function(){return a})),n.d(t,"a",(function(){return r})),function(e){e[e["USER_ACTION"]=1]="USER_ACTION",e[e["NO_MORE_CARDS"]=2]="NO_MORE_CARDS"}(a||(a={})),function(e){e["DELETE_SELECTED_DECKS"]="deleteSelectedDecks",e["ADD_DECKS_FROM_FILE"]="addDecksFromFile",e["ADD_DECKS_FROM_JSON"]="addDecksFromJSON",e["SNACKBAR_EVENT"]="snackbarEvent",e["CLEAR_LOCAL_STORAGE"]="clearLocalStorage",e["SHOW_CUSTOM_DIALOG"]="showCustomDialog",e["QUIT_LEARNING"]="quitLearning",e["PREPARE_QUIT_LEARNING"]="prepareQuitLearning",e["SELECT_ALL_DECKS"]="selectAllDecks",e["DESELECT_ALL_DECKS"]="deselectAllDecks",e["SWIPE_LEFT_IN_LEARN"]="swipeLeftInLearn",e["SWIPE_RIGHT_IN_LEARN"]="swipeRightInLearn",e["UPDATE_CARD_LIMIT"]="updateCardLimit"}(r||(r={}))}}); +//# sourceMappingURL=app.38aa3ed0.js.map \ No newline at end of file diff --git a/js/app.dd22d936.js.map b/js/app.38aa3ed0.js.map similarity index 99% rename from js/app.dd22d936.js.map rename to js/app.38aa3ed0.js.map index ec0c010..3b5393b 100644 --- a/js/app.dd22d936.js.map +++ b/js/app.38aa3ed0.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?0f16","webpack:///./src/helpers/snackbarHelper.ts","webpack:///./src/components/customdialog/BarChart.vue?4637","webpack:///./src/helpers/learningSessionStorageHelper.ts","webpack:///./src/components/layout/NavigationBar.vue?4db5","webpack:///./src/components/customdialog/CustomDialog.vue?1cb8","webpack:///./src/helpers/localStorageHelper.ts","webpack:///./src/assets/flash.svg","webpack:///./src/App.vue?8139","webpack:///./src/components/layout/NavigationBar.vue?b33c","webpack:///./src/helpers/selectedDeckDialogHelper.ts","webpack:///./src/components/layout/NavigationBar.vue","webpack:///./src/components/layout/NavigationBar.vue?9827","webpack:///./src/components/layout/NavigationBar.vue?45b9","webpack:///./src/components/customdialog/CustomDialog.vue?664e","webpack:///./src/components/customdialog/BarChart.vue?6446","webpack:///./src/components/customdialog/BarChart.vue","webpack:///./src/components/customdialog/BarChart.vue?68a8","webpack:///./src/components/customdialog/BarChart.vue?7efa","webpack:///./src/components/customdialog/CustomDialog.vue","webpack:///./src/components/customdialog/CustomDialog.vue?3540","webpack:///./src/components/customdialog/CustomDialog.vue?8aa4","webpack:///./src/helpers/addDecksHelper.ts","webpack:///./src/helpers/eventListener.ts","webpack:///./src/helpers/continueLearningHelper.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?4dbd","webpack:///./src/App.vue?4195","webpack:///./src/registerServiceWorker.ts","webpack:///./src/router/index.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/main.ts","webpack:///./src/types/index.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","DEFAULT_SNACKBAR_TIMEOUT","showSnackbar","context","text","snackbar","factor","LS_NAME_LEARNING_SESSION_MANAGER_DATA","saveLearningSessionManagerDataToLocalStorage","learningSessionManager","JSON","stringify","getLearningSessionManagerDataFromLocalStorage","learningSessionMangerData","parse","checkIfDataIsLearningSessionManagerData","clearLearningSessionManagerDataInLocalStorage","attribute","url","URL","location","LOCAL_STORAGE_APP_CONTEXT","pathname","split","localStorage","getItem","set","setItem","remove","removeItem","clearAppData","startsWith","readFromLocalStorage","propertiesToSyncWithLocalStorage","forEach","item","defaultValue","saveToLocalStorage","clearLocalStorage","_vm","this","_h","$createElement","_c","_self","attrs","left","swipeLeft","right","swipeRight","ref","decks","numberOfSelectedDecks","cardLimit","scopedSlots","_u","fn","_b","on","$event","_v","model","callback","$$v","$set","expression","_s","staticRenderFns","staticClass","primaryDrawer","clipped","floating","mini","_l","navItem","to","icon","title","class","colorAppBar","isInDeckSelection","deselectAll","quitLearning","stopPropagation","togglePrimaryDrawer","toolbarTitle","showInfoForSelectedDeck","_e","selectAll","deleteSelected","options","buttons","color","$eventHub","$emit","selectedDeck","find","deck","selected","table","infos","meta","content","info","file","String","cards","NavigationBarProps","extend","props","Array","Number","navBarList","DESELECT_ALL_DECKS","SELECT_ALL_DECKS","PREPARE_QUIT_LEARNING","$route","component","VAppBar","VAppBarNavIcon","VBtn","VDivider","VIcon","VImg","VList","VListItem","VListItemContent","VListItemIcon","VListItemTitle","VNavigationDrawer","VSpacer","VToolbarTitle","VToolbar","showDialog","tableHead","barChart","btn","close","style","minHeight","bar","index","getHeight","staticStyle","BarChartProps","relValue","maxBarValue","height","maxHeight","Math","max","bars","map","format","components","BarChart","VCard","VCardActions","VCardText","VCardTitle","VDialog","VTextField","addDecksFromFile","fileContent","addDecksFromJSON","addedDecksAndCards","updatedInsteadOfAddedFile","deckShortName","cardId","id","q","a","updated","updateDeckIfItExistsAndReturnStatusAndNumberOfCards","status","deckName","numberOfCards","addedCards","updatedCards","deletedCards","deck_name","reduce","acc","cur","short_name","version","showAddedDecksConfirmation","uuid","alreadyExistingCardIdMap","addedDeckAndCards","numberOfAddedCards","total","persistent","showUpdatedInfoForDeckIfUpdated","$router","showCustomDialog","registerEventListenerForMainApp","$on","DELETE_SELECTED_DECKS","filter","setSelectedStatusForAllDecks","ADD_DECKS_FROM_FILE","ADD_DECKS_FROM_JSON","SNACKBAR_EVENT","CLEAR_LOCAL_STORAGE","SHOW_CUSTOM_DIALOG","QUIT_LEARNING","reason","NO_MORE_CARDS","replace","UPDATE_CARD_LIMIT","newValue","continueCurrentLearningSessionIfPresent","eventHub","router","str","currentRoute","deckFromLastSession","curDeck","deckInUse","AppProps","$watch","deep","$refs","navbar","hideDrawer","SWIPE_LEFT_IN_LEARN","showDrawer","SWIPE_RIGHT_IN_LEARN","customDialog","show","NavigationBar","CustomDialog","VApp","VMain","VSnackbar","VWindow","ready","log","registered","cached","updatefound","offline","use","routes","path","base","theme","dark","config","productionTip","vuetify","render","h","$mount","QuitLearningReason","Event"],"mappings":"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","file":"js/app.dd22d936.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2eadd278\":\"72b7fa82\",\"chunk-7724eb6e\":\"afb9ec16\",\"chunk-c9cd02f0\":\"2c20a441\",\"chunk-f88b53c8\":\"c362a2c7\",\"chunk-065f4018\":\"dae1c5d0\",\"chunk-6e220460\":\"bc7e55ca\",\"chunk-75fc5bce\":\"b6ba9b47\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-2eadd278\":1,\"chunk-7724eb6e\":1,\"chunk-c9cd02f0\":1,\"chunk-f88b53c8\":1,\"chunk-065f4018\":1,\"chunk-6e220460\":1,\"chunk-75fc5bce\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2eadd278\":\"67146ca8\",\"chunk-7724eb6e\":\"854399cf\",\"chunk-c9cd02f0\":\"966620a7\",\"chunk-f88b53c8\":\"85e964b6\",\"chunk-065f4018\":\"2db77a3e\",\"chunk-6e220460\":\"506e66e1\",\"chunk-75fc5bce\":\"905fd344\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/ffc/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","const DEFAULT_SNACKBAR_TIMEOUT = 2000;\n\nexport function showSnackbar(\n context: any,\n text: string,\n timeout?: { value?: number; factor?: number }\n) {\n context.snackbar.text = text;\n context.snackbar.timeout = timeout\n ? timeout.value || (timeout.factor || 1) * DEFAULT_SNACKBAR_TIMEOUT\n : DEFAULT_SNACKBAR_TIMEOUT;\n context.snackbar.snackbar = true;\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!./BarChart.vue?vue&type=style&index=0&id=898ec282&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!./BarChart.vue?vue&type=style&index=0&id=898ec282&scoped=true&lang=css&\"","import LearningSessionManager from \"./learningSessionManager\";\nimport { set, get, remove } from \"./localStorageHelper\";\n\nconst LS_NAME_LEARNING_SESSION_MANAGER_DATA = \"learningSessionManagerData\";\n\nexport function saveLearningSessionManagerDataToLocalStorage(\n learningSessionManager: LearningSessionManager\n) {\n set(\n LS_NAME_LEARNING_SESSION_MANAGER_DATA,\n JSON.stringify(learningSessionManager)\n );\n}\n\nexport function getLearningSessionManagerDataFromLocalStorage() {\n try {\n const learningSessionMangerData = JSON.parse(\n get(LS_NAME_LEARNING_SESSION_MANAGER_DATA)\n );\n if (!checkIfDataIsLearningSessionManagerData(learningSessionMangerData)) {\n throw new Error(\n \"Stored data is broken and can not be used to create a learning session manager\"\n );\n }\n return learningSessionMangerData;\n } catch (error) {\n return null;\n }\n}\n\nexport function clearLearningSessionManagerDataInLocalStorage() {\n remove(LS_NAME_LEARNING_SESSION_MANAGER_DATA);\n}\n\nfunction checkIfDataIsLearningSessionManagerData(\n learningSessionManager: LearningSessionManager\n): boolean {\n if (!learningSessionManager) return false;\n for (const attribute of [\n \"decks\",\n \"numberOfRecentCardsToIgnoreWhenSelectingNextCard\",\n \"cardsToSelectFrom\",\n \"learningSession\",\n ]) {\n if (!(attribute in learningSessionManager)) {\n return false;\n }\n }\n\n return true;\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!./NavigationBar.vue?vue&type=style&index=0&id=ba98dd5c&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!./NavigationBar.vue?vue&type=style&index=0&id=ba98dd5c&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!./CustomDialog.vue?vue&type=style&index=0&id=114d3862&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!./CustomDialog.vue?vue&type=style&index=0&id=114d3862&scoped=true&lang=css&\"","import { showSnackbar } from \"./snackbarHelper\";\n\n// const LOCAL_STORAGE_APP_CONTEXT = \"ffc_\";\n \nconst url = new URL(window.location.href);\nconst LOCAL_STORAGE_APP_CONTEXT = url.pathname.split('/')[1] + \"_\";\n\nexport interface SyncItem {\n key: string;\n defaultValue: any;\n}\n\ninterface Context {\n propertiesToSyncWithLocalStorage: SyncItem[];\n [x: string]: any;\n}\n\nexport function get(key: string): string {\n return localStorage.getItem(LOCAL_STORAGE_APP_CONTEXT + key) || \"\";\n}\n\nexport function set(key: string, value: string): void {\n localStorage.setItem(LOCAL_STORAGE_APP_CONTEXT + key, value);\n}\n\nexport function remove(key: string): void {\n localStorage.removeItem(LOCAL_STORAGE_APP_CONTEXT + key);\n}\n\nfunction clearAppData(): void {\n for (let i = localStorage.length - 1; i >= 0; i--) {\n const key = localStorage.key(i);\n if (key && key.startsWith(LOCAL_STORAGE_APP_CONTEXT)) {\n localStorage.removeItem(key);\n }\n }\n}\n\nexport function readFromLocalStorage(context: Context) {\n context.propertiesToSyncWithLocalStorage.forEach((item) => {\n try {\n context[item.key] = JSON.parse(get(item.key));\n if (context[item.key] === null) {\n throw new Error(\"No item found.\");\n }\n } catch (e) {\n context[item.key] = item.defaultValue;\n }\n });\n}\nexport function saveToLocalStorage(context: Context, item: SyncItem) {\n set(item.key, JSON.stringify(context[item.key]));\n}\nexport function clearLocalStorage(context: Context) {\n clearAppData();\n context.propertiesToSyncWithLocalStorage.forEach((item) => {\n context[item.key] = item.defaultValue;\n });\n showSnackbar(context, \"Removed All App Data From Local Storage.\");\n}\n","module.exports = __webpack_public_path__ + \"img/flash.3ee01593.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('v-window',{attrs:{\"touch\":{ left: _vm.swipeLeft, right: _vm.swipeRight }}},[_c('v-app',{attrs:{\"id\":\"inspire\"}},[_c('v-app',{attrs:{\"id\":\"sandbox\"}},[_c('v-main',[_c('NavigationBar',{ref:\"navbar\",attrs:{\"title\":\"Fancy Flashcard\",\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks}}),_c('router-view',{attrs:{\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks,\"cardLimit\":_vm.cardLimit}}),_c('v-snackbar',{attrs:{\"app\":\"\",\"timeout\":_vm.snackbar.timeout},scopedSlots:_vm._u([{key:\"action\",fn:function(ref){\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._b({attrs:{\"color\":\"orange darken-1\",\"text\":\"\"},on:{\"click\":function($event){_vm.snackbar.snackbar = false}}},'v-btn',attrs,false),[_vm._v(\"Close\")])]}}]),model:{value:(_vm.snackbar.snackbar),callback:function ($$v) {_vm.$set(_vm.snackbar, \"snackbar\", $$v)},expression:\"snackbar.snackbar\"}},[_vm._v(\" \"+_vm._s(_vm.snackbar.text)+\" \")]),_c('CustomDialog',{ref:\"customDialog\"})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"NavBar\"},[_c('v-navigation-drawer',{attrs:{\"clipped\":_vm.primaryDrawer.clipped,\"floating\":_vm.primaryDrawer.floating,\"mini-variant\":_vm.primaryDrawer.mini,\"permanent\":_vm.primaryDrawer.type === 'permanent',\"temporary\":_vm.primaryDrawer.type === 'temporary',\"app\":\"\",\"overflow\":\"\"},model:{value:(_vm.primaryDrawer.model),callback:function ($$v) {_vm.$set(_vm.primaryDrawer, \"model\", $$v)},expression:\"primaryDrawer.model\"}},[_c('v-list',[_c('v-list-item',[_c('v-img',{staticClass:\"ffc-icon\",attrs:{\"src\":require(\"../../assets/flash.svg\")}})],1),_c('v-divider'),_vm._l((_vm.navBarList),function(navItem){return _c('v-list-item',{key:navItem.to,attrs:{\"to\":navItem.to,\"link\":\"\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(navItem.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(navItem.title))])],1)],1)})],2)],1),_c('v-app-bar',{class:_vm.colorAppBar,attrs:{\"clipped-left\":_vm.primaryDrawer.clipped,\"app\":\"\"}},[(_vm.isInDeckSelection && _vm.numberOfSelectedDecks>0)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.deselectAll}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1):(_vm.isInLearning)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.quitLearning}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1):_c('v-app-bar-nav-icon',{on:{\"click\":function($event){$event.stopPropagation();return _vm.togglePrimaryDrawer($event)}}}),_c('v-toolbar-title',[_vm._v(_vm._s(_vm.toolbarTitle))]),_c('v-spacer'),(_vm.isInDeckSelection && _vm.numberOfSelectedDecks===1)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.showInfoForSelectedDeck}},[_c('v-icon',[_vm._v(\"mdi-information\")])],1):_vm._e(),(_vm.isInDeckSelection && _vm.numberOfSelectedDecks>0)?_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.numberOfSelectedDecks === _vm.decks.length},on:{\"click\":_vm.selectAll}},[_c('v-icon',[_vm._v(\"mdi-checkbox-multiple-marked\")])],1):_vm._e(),(_vm.isInDeckSelection && _vm.numberOfSelectedDecks>0)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.deleteSelected}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport { Deck, CustomDialogOptions } from '@/types';\nimport router from '@/router';\n\ninterface Context {\n numberOfSelectedDecks: number,\n $eventHub: typeof Vue,\n decks: Deck[],\n deselectAll: Function,\n $router: typeof router,\n}\n\nexport function deleteSelected(context: any) {\n const options = {\n title: `Delete Deck${context.numberOfSelectedDecks > 1 ? \"s\" : \"\"}?`,\n message: `Do you really want to delete the ${\n context.numberOfSelectedDecks > 1\n ? context.numberOfSelectedDecks + \" \"\n : \"\"\n }selected\n deck${context.numberOfSelectedDecks > 1 ? \"s\" : \"\"}?`,\n buttons: [\n {\n name: \"Cancel\",\n color: \"grey\",\n },\n {\n name: \"Delete\",\n color: \"red darken-1\",\n callback: () => {\n context.$eventHub.$emit(\"deleteSelectedDecks\");\n },\n },\n ],\n };\n context.$eventHub.$emit(\"showCustomDialog\", options);\n}\n\nexport function showInfoForSelectedDeck(context: any) {\n const selectedDeck = context.decks.find((deck: any) => deck.selected);\n const options = {\n title: selectedDeck?.name,\n table: [],\n buttons: [\n {\n name: \"Close\",\n color: \"indigo\",\n },\n ],\n } as CustomDialogOptions;\n const infos = [\n {\n meta: \"file\",\n content: [\n {\n key: \"author\",\n name: \"Author\",\n },\n {\n key: \"version\",\n name: \"Version\",\n },\n ],\n },\n {\n meta: \"deck\",\n content: [\n {\n key: \"description\",\n name: \"Description\",\n },\n ],\n },\n ];\n for (const info of infos) {\n for (const content of info.content) {\n if (info.meta === \"file\") {\n options.table?.push({\n name: content.name,\n value: selectedDeck?.meta.file[content.key] || \"-\",\n });\n } else if (info.meta === \"deck\") {\n options.table?.push({\n name: content.name,\n value: selectedDeck?.meta.deck[content.key] || \"-\",\n });\n }\n }\n }\n options.table?.push({\n name: \"Number of Cards\",\n value: String(selectedDeck?.cards.length || 0),\n });\n context.$eventHub.$emit(\"showCustomDialog\", options);\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck, Event, NavBarConfigItem } from '../../types';\nimport navBarConfigJson from './navbar.json';\n\nimport * as selectedDeckDialogHelper from \"../../helpers/selectedDeckDialogHelper\";\n\nconst NavigationBarProps = Vue.extend({\n props: {\n title: String,\n decks: {type: Array as () => Deck[]},\n numberOfSelectedDecks: Number,\n }\n});\n\n@Component\nexport default class NavigationBar extends NavigationBarProps {\n primaryDrawer = {\n model: false,\n type: \"temporary\",\n clipped: true,\n floating: false,\n mini: false\n };\n navBarList = navBarConfigJson as NavBarConfigItem[];\n\n get isInDeckSelection() {\n return this.$route.name === \"DeckSelection\";\n }\n get isInLearning() {\n return this.$route.name === \"Learn\";\n }\n get colorAppBar() {\n if (this.isInDeckSelection && this.numberOfSelectedDecks > 0) {\n return \"indigo\";\n }\n return \"\";\n }\n get toolbarTitle() {\n if (this.isInDeckSelection && this.numberOfSelectedDecks > 0) {\n return `${this.numberOfSelectedDecks} deck${\n this.numberOfSelectedDecks === 1 ? \"\" : \"s\"\n } selected`;\n }\n return this.title;\n }\n\n deselectAll() {\n this.$eventHub.$emit(Event.DESELECT_ALL_DECKS);\n }\n selectAll() {\n this.$eventHub.$emit(Event.SELECT_ALL_DECKS);\n }\n deleteSelected() {\n selectedDeckDialogHelper.deleteSelected(this);\n }\n showInfoForSelectedDeck() {\n selectedDeckDialogHelper.showInfoForSelectedDeck(this);\n }\n showDrawer() {\n this.primaryDrawer.model = true;\n }\n hideDrawer() {\n this.primaryDrawer.model = false;\n }\n quitLearning() {\n this.$eventHub.$emit(Event.PREPARE_QUIT_LEARNING);\n }\n togglePrimaryDrawer() {\n this.primaryDrawer.model = !this.primaryDrawer.model;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavigationBar.vue?vue&type=template&id=ba98dd5c&scoped=true&\"\nimport script from \"./NavigationBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavigationBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavigationBar.vue?vue&type=style&index=0&id=ba98dd5c&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 \"ba98dd5c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VAppBarNavIcon,VBtn,VDivider,VIcon,VImg,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VNavigationDrawer,VSpacer,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"400\",\"persistent\":\"\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',{attrs:{\"color\":\"#2e2e2e\"}},[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.options.title)+\" \"),(_vm.options.type)?_c('v-icon',{staticClass:\"mx-2\",attrs:{\"size\":\"0.9em\",\"color\":\"indigo\"}},[_vm._v(\" \"+_vm._s(_vm.options.type === 'sponsored' ? 'mdi-cash-usd-outline' : _vm.options.type === 'curated' ? 'mdi-check-decagram' : _vm.options.type === 'official' ? 'mdi-flash-circle' : null)+\" \")]):_vm._e()],1),(_vm.options.message)?_c('v-card-text',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.options.message))]):(_vm.options.multipleMessages)?_c('v-card-text',{staticClass:\"text-left\"},_vm._l((_vm.options.multipleMessages),function(message){return _c('p',{key:message.name,staticClass:\"multiple-messages\"},[_c('b',[_vm._v(_vm._s(message.name)+\":\")]),_vm._v(\" \"+_vm._s(message.value)+\" \")])}),0):_vm._e(),(_vm.options.table)?_c('v-list',[(_vm.options.tableHead)?_c('v-list-item',[_c('v-list-item-content',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.options.tableHead.name))]),_c('v-list-item-content',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.options.tableHead.value))])],1):_vm._e(),_vm._l((_vm.options.table),function(item){return _c('v-list-item',{key:item.name},[_c('v-list-item-content',[_vm._v(_vm._s(item.name))]),_c('v-list-item-content',[_vm._v(_vm._s(item.value))])],1)})],2):_vm._e(),(_vm.options.url)?_c('div',{staticClass:\"share-ffc-url\"},[_c('v-text-field',{attrs:{\"type\":\"text\",\"id\":\"ffc-url\",\"value\":_vm.options.url}})],1):_vm._e(),(_vm.options.barChart)?_c('BarChart',{attrs:{\"options\":_vm.options.barChart}}):_vm._e(),_c('v-card-actions',[_c('v-spacer'),_vm._l((_vm.options.buttons),function(btn){return _c('v-btn',{key:btn.name,attrs:{\"color\":btn.color,\"text\":\"\"},on:{\"click\":function($event){return _vm.close(btn)}}},[_vm._v(_vm._s(btn.name))])})],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"bar-chart\"},[_c('div',{staticClass:\"bar-container\",style:({ minHeight: 'min(20vw, 100px)' })},_vm._l((_vm.options.bars),function(bar,index){return _c('div',{key:index,staticClass:\"bar-wrapper\"},[_c('div',{staticClass:\"bar-value\"},[_vm._v(_vm._s(bar.value))]),_c('div',{staticClass:\"bar\",style:(_vm.getHeight(bar))})])}),0),_c('div',{staticClass:\"bar-container\",staticStyle:{\"padding-top\":\"0\"}},_vm._l((_vm.options.bars),function(bar,index){return _c('div',{key:index,staticClass:\"bar-name\"},[_vm._v(_vm._s(bar.name || \"\"))])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport {\n CustomDialogOptionsBarChart,\n CustomDialogOptionsBarChartBar\n} from \"../../types\";\n\nconst BarChartProps = Vue.extend({\n props: {\n options: { type: Object as () => CustomDialogOptionsBarChart }\n }\n});\n\n@Component\nexport default class BarChart extends BarChartProps {\n getHeight(bar: CustomDialogOptionsBarChartBar) {\n const relValue = this.maxBarValue > 0 ? bar.value / this.maxBarValue : 0;\n return {\n height: `${relValue*32}vw`,\n maxHeight: `${relValue*150}px`\n };\n }\n get maxBarValue (): number {\n return Math.max(...this.options.bars.map(bar => bar.value));\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BarChart.vue?vue&type=template&id=898ec282&scoped=true&\"\nimport script from \"./BarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./BarChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BarChart.vue?vue&type=style&index=0&id=898ec282&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 \"898ec282\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { CustomDialogOptions, CustomDialogOptionsButton } from \"../../types\";\nimport BarChart from \"./BarChart.vue\";\n\n@Component({\n components: {\n BarChart\n }\n})\nexport default class Dialog extends Vue {\n showDialog = false;\n options = {\n title: \"\",\n format: \"\",\n message: \"\",\n tableHead: {\n name: \"\",\n value: \"\"\n },\n table: [\n {\n name: \"\",\n value: \"\"\n }\n ],\n buttons: [\n {\n name: \"Close\",\n color: \"indigo\",\n callback: undefined\n }\n ]\n } as CustomDialogOptions;\n\n hide() {\n this.showDialog = false;\n }\n show(options: CustomDialogOptions) {\n this.showDialog = true;\n this.options = options;\n if (\n !this.options.buttons ||\n (this.options.buttons && this.options.buttons.length === 0)\n ) {\n this.options.buttons = [\n {\n name: \"Close\",\n color: \"indigo\",\n callback: undefined\n }\n ];\n }\n }\n close(btn?: CustomDialogOptionsButton) {\n this.showDialog = false;\n if (btn && btn.callback) {\n btn.callback();\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomDialog.vue?vue&type=template&id=114d3862&scoped=true&\"\nimport script from \"./CustomDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CustomDialog.vue?vue&type=style&index=0&id=114d3862&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 \"114d3862\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VList,VListItem,VListItemContent,VSpacer,VTextField})\n","import { FFCFile, Deck, Card, CustomDialogOptions } from \"@/types\";\nimport router from \"@/router\";\nimport { showSnackbar } from \"./snackbarHelper\";\n\ninterface Context {\n decks: Deck[];\n showCustomDialog: Function;\n $router: typeof router;\n}\n\nexport function addDecksFromFile(\n context: Context,\n fileContent: string,\n url?: string\n) {\n try {\n addDecksFromJSON(context, JSON.parse(fileContent), url);\n } catch (e) {\n showSnackbar(context, e);\n }\n}\n\ninterface addedDeckAndCards {\n name: string;\n numberOfCards: number;\n addedCards?: number;\n updatedCards?: number;\n deletedCards?: number;\n}\n\nexport function addDecksFromJSON(\n context: Context,\n fileContent: FFCFile,\n url?: string\n) {\n const addedDecksAndCards = [] as addedDeckAndCards[];\n try {\n let updatedInsteadOfAddedFile = false;\n for (const deckShortName in fileContent.decks) {\n const cards: Card[] = [];\n for (const cardId in fileContent.decks[deckShortName].cards) {\n cards.push({\n id: Number(cardId),\n q: fileContent.decks[deckShortName].cards[cardId].q,\n a: fileContent.decks[deckShortName].cards[cardId].a,\n r: [],\n });\n }\n\n // check if deck exists already\n const updated = updateDeckIfItExistsAndReturnStatusAndNumberOfCards(\n context.decks,\n deckShortName,\n fileContent,\n url\n );\n if (updated.status) {\n updatedInsteadOfAddedFile = true;\n addedDecksAndCards.push({\n name: updated.deckName || \"\",\n numberOfCards: cards.length,\n addedCards: updated.addedCards,\n updatedCards: updated.updatedCards,\n deletedCards: updated.deletedCards,\n });\n continue;\n }\n\n const name =\n fileContent.decks[deckShortName].meta.deck_name || deckShortName;\n context.decks.push({\n id: context.decks.reduce((acc, cur) => Math.max(acc, cur.id), 0) + 1,\n selected: false,\n name,\n meta: {\n file: {\n ...fileContent.meta,\n url,\n },\n deck: {\n ...fileContent.decks[deckShortName].meta,\n short_name: deckShortName,\n },\n },\n cards,\n });\n addedDecksAndCards.push({ name, numberOfCards: cards.length });\n }\n\n const version = fileContent?.meta?.version;\n\n showAddedDecksConfirmation(\n context,\n addedDecksAndCards,\n version,\n updatedInsteadOfAddedFile\n );\n } catch (e) {\n showSnackbar(context, e);\n }\n}\n\nfunction updateDeckIfItExistsAndReturnStatusAndNumberOfCards(\n decks: Deck[],\n deckShortName: string,\n fileContent: FFCFile,\n url?: string\n): {\n status: boolean;\n deckName?: string;\n addedCards?: number;\n updatedCards?: number;\n deletedCards?: number;\n} {\n for (const deck of decks) {\n // if url is known for the local deck, it should only be updated when url matches\n // this should prevent from maliciously using same uuid to overwrite other decks\n if (\n ((deck.meta.file.url && deck.meta.file.url === url) ||\n (!deck.meta.file.url &&\n deck.meta.file.uuid &&\n deck.meta.file.uuid === fileContent.meta.uuid)) &&\n deck.meta.deck.short_name === deckShortName\n ) {\n // should be updated\n let addedCards = 0,\n updatedCards = 0,\n deletedCards = 0;\n\n deck.name =\n fileContent.decks[deckShortName].meta.deck_name || deckShortName;\n deck.meta = {\n file: {\n ...fileContent.meta,\n url: deck.meta.file.url,\n },\n deck: {\n ...fileContent.decks[deckShortName].meta,\n short_name: deckShortName,\n },\n };\n const alreadyExistingCardIdMap: { [cardId: number]: boolean } = {};\n for (let i = 0; i < deck.cards.length; i++) {\n if (deck.cards[i].id in fileContent.decks[deckShortName].cards) {\n if (\n deck.cards[i].q !==\n fileContent.decks[deckShortName].cards[deck.cards[i].id].q ||\n deck.cards[i].a !==\n fileContent.decks[deckShortName].cards[deck.cards[i].id].a\n ) {\n deck.cards[i].q =\n fileContent.decks[deckShortName].cards[deck.cards[i].id].q;\n deck.cards[i].a =\n fileContent.decks[deckShortName].cards[deck.cards[i].id].a;\n updatedCards += 1;\n }\n alreadyExistingCardIdMap[deck.cards[i].id] = true;\n } else {\n deck.cards.splice(i, 1);\n deletedCards += 1;\n }\n }\n for (const cardId in fileContent.decks[deckShortName].cards) {\n if (cardId in alreadyExistingCardIdMap) continue;\n deck.cards.push({\n id: Number(cardId),\n q: fileContent.decks[deckShortName].cards[cardId].q,\n a: fileContent.decks[deckShortName].cards[cardId].a,\n r: [],\n });\n addedCards += 1;\n }\n return {\n status: true,\n deckName: deck.name,\n addedCards,\n updatedCards,\n deletedCards,\n };\n }\n }\n return { status: false };\n}\n\nfunction showAddedDecksConfirmation(\n context: Context,\n addedDeckAndCards: addedDeckAndCards[],\n version: string,\n updatedInsteadOfAddedFile: boolean\n) {\n const numberOfAddedCards = addedDeckAndCards.reduce(\n (total, deck) => total + deck.numberOfCards,\n 0\n );\n if (numberOfAddedCards === 0) {\n throw new Error(\"No decks have been added\");\n }\n\n const options = {\n persistent: false,\n title: \"Successfully Imported Decks\",\n message: updatedInsteadOfAddedFile\n ? \"Following decks have been updated\" +\n (version ? \" to version \" + version : \"\") +\n \" (number of cards added / updated / deleted):\"\n : \"The following decks\" +\n (version ? \" (version: \" + version + \") \" : \"\") +\n \"have been added:\",\n tableHead: { name: \"Deck\", value: \"Number of Cards\" },\n table: addedDeckAndCards.map((deck) => {\n return {\n name: deck.name,\n value:\n String(deck.numberOfCards) + showUpdatedInfoForDeckIfUpdated(deck),\n };\n }),\n buttons: [\n {\n name: \"Close\",\n color: \"grey\",\n },\n {\n name: \"Go Home\",\n color: \"indigo\",\n callback: function() {\n context.$router.push(\"/\");\n },\n },\n ],\n } as CustomDialogOptions;\n context.showCustomDialog(options);\n}\n\nfunction showUpdatedInfoForDeckIfUpdated(deck: addedDeckAndCards): string {\n if (\n \"addedCards\" in deck &&\n \"updatedCards\" in deck &&\n \"deletedCards\" in deck\n ) {\n return ` (${deck.addedCards}/${deck.updatedCards}/${deck.deletedCards})`;\n }\n return \"\";\n}\n","import {\n QuitLearningReason,\n CustomDialogOptions,\n FFCFile,\n Event,\n Deck,\n} from \"@/types\";\nimport { clearLocalStorage } from \"./localStorageHelper\";\nimport { addDecksFromJSON, addDecksFromFile } from \"./addDecksHelper\";\nimport { showSnackbar } from \"./snackbarHelper\";\n\nexport function registerEventListenerForMainApp(context: any) {\n context.$eventHub.$on(Event.DELETE_SELECTED_DECKS, () => {\n context.decks = context.decks.filter((deck: Deck) => !deck.selected);\n });\n context.$eventHub.$on(Event.SELECT_ALL_DECKS, () => {\n context.setSelectedStatusForAllDecks(true);\n });\n context.$eventHub.$on(Event.DESELECT_ALL_DECKS, () => {\n context.setSelectedStatusForAllDecks(false);\n });\n context.$eventHub.$on(Event.ADD_DECKS_FROM_FILE, (fileContent: string) => {\n addDecksFromFile(context, fileContent);\n });\n context.$eventHub.$on(\n Event.ADD_DECKS_FROM_JSON,\n (fileContent: FFCFile, url?: string) => {\n addDecksFromJSON(context, fileContent, url);\n }\n );\n context.$eventHub.$on(Event.SNACKBAR_EVENT, (message: string) => {\n showSnackbar(context, message);\n });\n context.$eventHub.$on(Event.CLEAR_LOCAL_STORAGE, () => {\n clearLocalStorage(context);\n });\n context.$eventHub.$on(\n Event.SHOW_CUSTOM_DIALOG,\n (options: CustomDialogOptions) => {\n context.showCustomDialog(options);\n }\n );\n context.$eventHub.$on(Event.QUIT_LEARNING, (reason: QuitLearningReason) => {\n if (reason === QuitLearningReason.NO_MORE_CARDS) {\n context.setSelectedStatusForAllDecks(false);\n }\n context.$router.replace(\"/\");\n });\n context.$eventHub.$on(Event.UPDATE_CARD_LIMIT, (newValue: string) => {\n context.cardLimit = newValue;\n });\n}\n","import Vue from \"vue\";\nimport { Deck } from \"@/types\";\nimport VueRouter from \"vue-router\";\nimport {\n getLearningSessionManagerDataFromLocalStorage,\n clearLearningSessionManagerDataInLocalStorage,\n} from \"./learningSessionStorageHelper\";\n\nexport default function continueCurrentLearningSessionIfPresent(\n eventHub: Vue,\n router: VueRouter,\n decks: Deck[]\n) {\n const data = getLearningSessionManagerDataFromLocalStorage();\n if (data) {\n const options = {\n title: `Continue Learning?`,\n message:\n `You didn't finish your last learning session. Do you want to resume learning where you stopped last session?\n Your last session included the following decks: ` +\n data.decks.reduce(\n (str: string, deck: Deck, index: number) =>\n str + (index > 0 ? \", \" : \"\") + deck.name,\n \"\"\n ),\n buttons: [\n {\n name: \"Discard Session\",\n color: \"grey\",\n callback: () => {\n clearLearningSessionManagerDataInLocalStorage();\n if (router.currentRoute.name !== \"DeckSelection\") {\n router.replace(\"/\");\n }\n },\n },\n {\n name: \"Resume\",\n color: \"indigo\",\n callback: () => {\n data.decks.forEach((deckFromLastSession: Deck) => {\n const curDeck = decks.find(\n (deckInUse) => deckInUse.id === deckFromLastSession.id\n );\n if (curDeck) {\n curDeck.selected = true;\n }\n });\n if (router.currentRoute.name !== \"Learn\") {\n router.replace(\"learn\");\n }\n },\n },\n ],\n };\n eventHub.$emit(\"showCustomDialog\", options);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck, CustomDialogOptions, Event } from \"./types\";\n\nimport NavigationBar from \"./components/layout/NavigationBar.vue\";\nimport CustomDialog from \"./components/customdialog/CustomDialog.vue\";\nimport { registerEventListenerForMainApp } from \"./helpers/eventListener\";\nimport {\n readFromLocalStorage,\n saveToLocalStorage,\n SyncItem\n} from \"./helpers/localStorageHelper\";\nimport continueCurrentLearningSessionIfPresent from \"./helpers/continueLearningHelper\";\n\nconst AppProps = Vue.extend({\n props: {\n title: String\n }\n});\n\n@Component({\n components: {\n NavigationBar,\n CustomDialog\n }\n})\nexport default class App extends AppProps {\n propertiesToSyncWithLocalStorage = [\n { key: \"decks\", defaultValue: [] },\n { key: \"cardLimit\", defaultValue: \"\" }\n ] as SyncItem[];\n cardLimit = \"\";\n decks = [] as Deck[];\n snackbar = {\n text: \"\",\n snackbar: false\n };\n\n $refs!: {\n navbar: NavigationBar;\n customDialog: CustomDialog;\n };\n\n setSelectedStatusForAllDecks(status: boolean) {\n this.decks.forEach(deck => {\n deck.selected = status;\n });\n }\n\n created() {\n registerEventListenerForMainApp(this);\n\n for (const item of this.propertiesToSyncWithLocalStorage) {\n this.$watch(\n item.key,\n function() {\n saveToLocalStorage(this, item);\n },\n { deep: true }\n );\n }\n }\n\n mounted() {\n readFromLocalStorage(this);\n this.setSelectedStatusForAllDecks(false);\n continueCurrentLearningSessionIfPresent(\n this.$eventHub,\n this.$router,\n this.decks\n );\n }\n\n get numberOfSelectedDecks() {\n return this.decks.filter(deck => deck.selected).length;\n }\n\n swipeLeft() {\n if (this.$route.name === \"Learn\") {\n this.$eventHub.$emit(Event.SWIPE_LEFT_IN_LEARN);\n return;\n }\n this.$refs.navbar.hideDrawer();\n }\n swipeRight() {\n if (this.$route.name === \"Learn\") {\n this.$eventHub.$emit(Event.SWIPE_RIGHT_IN_LEARN);\n return;\n }\n this.$refs.navbar.showDrawer();\n }\n showCustomDialog(options: CustomDialogOptions) {\n this.$refs.customDialog.show(options);\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=c5f7ed28&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VWindow } from 'vuetify/lib/components/VWindow';\ninstallComponents(component, {VApp,VBtn,VMain,VSnackbar,VWindow})\n","/* eslint-disable no-console */\n\nimport { register } from \"register-service-worker\";\n\nif (process.env.NODE_ENV === \"production\") {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n \"App is being served from cache by a service worker.\\n\" +\n \"For more details, visit https://goo.gl/AFskqB\"\n );\n },\n registered() {\n console.log(\"Service worker has been registered.\");\n },\n cached() {\n console.log(\"Content has been cached for offline use.\");\n },\n updatefound() {\n console.log(\"New content is downloading.\");\n },\n updated() {\n console.log(\"New content is available; please refresh.\");\n },\n offline() {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n },\n error(error) {\n console.error(\"Error during service worker registration:\", error);\n }\n });\n}\n","import Vue from \"vue\";\nimport VueRouter, { RouteConfig } from \"vue-router\";\n\nVue.use(VueRouter);\n\nconst routes: Array = [\n {\n path: '/',\n name: 'DeckSelection',\n component: () => import('../views/Home.vue'),\n props: true,\n },\n {\n path: '/learn',\n name: 'Learn',\n component: () => import('../views/Learn.vue'),\n props: true,\n },\n {\n path: '/add',\n name: 'Add New Deck',\n component: () => import('../views/AddNewDeck.vue'),\n props: true,\n },\n {\n path: '/thirdparty',\n name: 'Third Party Decks',\n component: () => import('../views/ThirdPartyDecks.vue'),\n },\n {\n path: '/settings',\n name: 'Settings',\n component: () => import('../views/Settings.vue'),\n },\n {\n path: '/about',\n name: 'About',\n component: () => import('../views/About.vue'),\n }\n];\n\nconst router = new VueRouter({\n base: process.env.BASE_URL,\n routes\n});\n\nexport default router;\n","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: {\n dark: true,\n },\n});\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport \"./registerServiceWorker\";\nimport router from \"./router\";\nimport vuetify from \"./plugins/vuetify\";\n\nVue.config.productionTip = false;\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $eventHub: Vue;\n }\n}\nVue.prototype.$eventHub = new Vue();\n\nnew Vue({\n router,\n vuetify,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","export interface FFCFile {\n meta: {\n author: string;\n uuid?: string;\n [x: string]: any;\n };\n decks: {\n [deck_short_name: string]: {\n meta: {\n deck_name: string;\n description: string;\n next_card_id: number;\n [x: string]: any;\n };\n cards: {\n [cardId: string]: {\n q: string;\n a: string;\n };\n };\n };\n };\n}\n\nexport interface Deck {\n id: number;\n selected: boolean;\n name: string;\n meta: {\n file: {\n uuid?: string;\n url?: string;\n [x: string]: any;\n };\n deck: {\n short_name: string;\n [x: string]: any;\n };\n };\n cards: Card[];\n}\n\nexport interface Card {\n id: number;\n q: string;\n a: string;\n r?: CardRating[];\n}\n\nexport interface CardRating {\n t: number;\n r: number;\n}\n\nexport interface LearningSession {\n elements: LearningSessionElement[];\n currentElementIndex: number;\n}\n\nexport interface LearningSessionElement {\n deckId: number;\n cardId: number;\n showAnswer?: boolean;\n rating?: CardRating;\n card?: Card;\n weight?: number;\n}\n\nexport interface CustomDialogOptions {\n title: string;\n format?: string;\n message?: string;\n tableHead?: {\n name: string;\n value: string;\n };\n table?: CustomDialogOptionsTableRow[];\n barChart?: CustomDialogOptionsBarChart;\n buttons?: CustomDialogOptionsButton[];\n}\n\nexport interface CustomDialogOptionsTableRow {\n name: string;\n value: string;\n}\n\nexport interface CustomDialogOptionsBarChart {\n bars: CustomDialogOptionsBarChartBar[];\n}\n\nexport interface CustomDialogOptionsBarChartBar {\n name?: string;\n value: number;\n}\n\nexport interface CustomDialogOptionsButton {\n name: string;\n color: string;\n callback?: Function;\n}\n\nexport enum QuitLearningReason {\n USER_ACTION = 1,\n NO_MORE_CARDS = 2,\n}\n\nexport enum Event {\n DELETE_SELECTED_DECKS = \"deleteSelectedDecks\",\n ADD_DECKS_FROM_FILE = \"addDecksFromFile\",\n ADD_DECKS_FROM_JSON = \"addDecksFromJSON\",\n SNACKBAR_EVENT = \"snackbarEvent\",\n CLEAR_LOCAL_STORAGE = \"clearLocalStorage\",\n SHOW_CUSTOM_DIALOG = \"showCustomDialog\",\n QUIT_LEARNING = \"quitLearning\",\n PREPARE_QUIT_LEARNING = \"prepareQuitLearning\",\n SELECT_ALL_DECKS = \"selectAllDecks\",\n DESELECT_ALL_DECKS = \"deselectAllDecks\",\n SWIPE_LEFT_IN_LEARN = \"swipeLeftInLearn\",\n SWIPE_RIGHT_IN_LEARN = \"swipeRightInLearn\",\n UPDATE_CARD_LIMIT = \"updateCardLimit\",\n}\n\nexport interface NavBarConfigItem {\n to: string;\n icon: string;\n title: string;\n}\n\nexport interface ThirdPartyDeck {\n type: string;\n name: string;\n author: string;\n desc: string;\n url: string;\n}\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?0f16","webpack:///./src/helpers/snackbarHelper.ts","webpack:///./src/components/customdialog/BarChart.vue?4637","webpack:///./src/helpers/learningSessionStorageHelper.ts","webpack:///./src/components/layout/NavigationBar.vue?4db5","webpack:///./src/components/customdialog/CustomDialog.vue?1cb8","webpack:///./src/helpers/localStorageHelper.ts","webpack:///./src/assets/flash.svg","webpack:///./src/App.vue?aefa","webpack:///./src/components/layout/NavigationBar.vue?8693","webpack:///./src/helpers/selectedDeckDialogHelper.ts","webpack:///./src/components/layout/NavigationBar.vue","webpack:///./src/components/layout/NavigationBar.vue?9827","webpack:///./src/components/layout/NavigationBar.vue?45b9","webpack:///./src/components/customdialog/CustomDialog.vue?d55a","webpack:///./src/components/customdialog/BarChart.vue?3cba","webpack:///./src/components/customdialog/BarChart.vue","webpack:///./src/components/customdialog/BarChart.vue?68a8","webpack:///./src/components/customdialog/BarChart.vue?7efa","webpack:///./src/components/customdialog/CustomDialog.vue","webpack:///./src/components/customdialog/CustomDialog.vue?3540","webpack:///./src/components/customdialog/CustomDialog.vue?8aa4","webpack:///./src/helpers/addDecksHelper.ts","webpack:///./src/helpers/eventListener.ts","webpack:///./src/helpers/continueLearningHelper.ts","webpack:///./src/App.vue","webpack:///./src/App.vue?4dbd","webpack:///./src/App.vue?4195","webpack:///./src/registerServiceWorker.ts","webpack:///./src/router/index.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/main.ts","webpack:///./src/types/index.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","DEFAULT_SNACKBAR_TIMEOUT","showSnackbar","context","text","snackbar","factor","LS_NAME_LEARNING_SESSION_MANAGER_DATA","saveLearningSessionManagerDataToLocalStorage","learningSessionManager","JSON","stringify","getLearningSessionManagerDataFromLocalStorage","learningSessionMangerData","parse","checkIfDataIsLearningSessionManagerData","clearLearningSessionManagerDataInLocalStorage","attribute","url","URL","location","LOCAL_STORAGE_APP_CONTEXT","pathname","split","localStorage","getItem","set","setItem","remove","removeItem","clearAppData","startsWith","readFromLocalStorage","propertiesToSyncWithLocalStorage","forEach","item","defaultValue","saveToLocalStorage","clearLocalStorage","_vm","this","_h","$createElement","_c","_self","attrs","left","swipeLeft","right","swipeRight","ref","decks","numberOfSelectedDecks","cardLimit","scopedSlots","_u","fn","_b","on","$event","_v","model","callback","$$v","$set","expression","_s","staticRenderFns","staticClass","primaryDrawer","clipped","floating","mini","_l","navItem","to","icon","title","class","colorAppBar","isInDeckSelection","deselectAll","quitLearning","stopPropagation","togglePrimaryDrawer","toolbarTitle","showInfoForSelectedDeck","_e","selectAll","deleteSelected","options","buttons","color","$eventHub","$emit","selectedDeck","find","deck","selected","table","infos","meta","content","info","file","String","cards","NavigationBarProps","extend","props","Array","Number","navBarList","DESELECT_ALL_DECKS","SELECT_ALL_DECKS","PREPARE_QUIT_LEARNING","$route","component","VAppBar","VAppBarNavIcon","VBtn","VDivider","VIcon","VImg","VList","VListItem","VListItemContent","VListItemIcon","VListItemTitle","VNavigationDrawer","VSpacer","VToolbarTitle","VToolbar","showDialog","tableHead","barChart","btn","close","style","minHeight","bar","index","getHeight","staticStyle","BarChartProps","relValue","maxBarValue","height","maxHeight","Math","max","bars","map","format","components","BarChart","VCard","VCardActions","VCardText","VCardTitle","VDialog","VTextField","addDecksFromFile","fileContent","addDecksFromJSON","addedDecksAndCards","updatedInsteadOfAddedFile","deckShortName","cardId","id","q","a","updated","updateDeckIfItExistsAndReturnStatusAndNumberOfCards","status","deckName","numberOfCards","addedCards","updatedCards","deletedCards","deck_name","reduce","acc","cur","short_name","version","showAddedDecksConfirmation","uuid","alreadyExistingCardIdMap","addedDeckAndCards","numberOfAddedCards","total","persistent","showUpdatedInfoForDeckIfUpdated","$router","showCustomDialog","registerEventListenerForMainApp","$on","DELETE_SELECTED_DECKS","filter","setSelectedStatusForAllDecks","ADD_DECKS_FROM_FILE","ADD_DECKS_FROM_JSON","SNACKBAR_EVENT","CLEAR_LOCAL_STORAGE","SHOW_CUSTOM_DIALOG","QUIT_LEARNING","reason","NO_MORE_CARDS","replace","UPDATE_CARD_LIMIT","newValue","continueCurrentLearningSessionIfPresent","eventHub","router","str","currentRoute","deckFromLastSession","curDeck","deckInUse","AppProps","$watch","deep","$refs","navbar","hideDrawer","SWIPE_LEFT_IN_LEARN","showDrawer","SWIPE_RIGHT_IN_LEARN","customDialog","show","NavigationBar","CustomDialog","VApp","VMain","VSnackbar","VWindow","ready","log","registered","cached","updatefound","offline","use","routes","path","base","theme","dark","config","productionTip","vuetify","render","h","$mount","QuitLearningReason","Event"],"mappings":"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","file":"js/app.38aa3ed0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2eadd278\":\"9c6c8c4b\",\"chunk-7724eb6e\":\"7b085d09\",\"chunk-c9cd02f0\":\"cd91040b\",\"chunk-f88b53c8\":\"c362a2c7\",\"chunk-065f4018\":\"089c1ae0\",\"chunk-6e220460\":\"eea51f45\",\"chunk-75fc5bce\":\"31fd23e9\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-2eadd278\":1,\"chunk-7724eb6e\":1,\"chunk-c9cd02f0\":1,\"chunk-f88b53c8\":1,\"chunk-065f4018\":1,\"chunk-6e220460\":1,\"chunk-75fc5bce\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-2eadd278\":\"67146ca8\",\"chunk-7724eb6e\":\"854399cf\",\"chunk-c9cd02f0\":\"966620a7\",\"chunk-f88b53c8\":\"85e964b6\",\"chunk-065f4018\":\"2db77a3e\",\"chunk-6e220460\":\"506e66e1\",\"chunk-75fc5bce\":\"905fd344\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/ffc/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=css&\"","const DEFAULT_SNACKBAR_TIMEOUT = 2000;\n\nexport function showSnackbar(\n context: any,\n text: string,\n timeout?: { value?: number; factor?: number }\n) {\n context.snackbar.text = text;\n context.snackbar.timeout = timeout\n ? timeout.value || (timeout.factor || 1) * DEFAULT_SNACKBAR_TIMEOUT\n : DEFAULT_SNACKBAR_TIMEOUT;\n context.snackbar.snackbar = true;\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!./BarChart.vue?vue&type=style&index=0&id=898ec282&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!./BarChart.vue?vue&type=style&index=0&id=898ec282&scoped=true&lang=css&\"","import LearningSessionManager from \"./learningSessionManager\";\nimport { set, get, remove } from \"./localStorageHelper\";\n\nconst LS_NAME_LEARNING_SESSION_MANAGER_DATA = \"learningSessionManagerData\";\n\nexport function saveLearningSessionManagerDataToLocalStorage(\n learningSessionManager: LearningSessionManager\n) {\n set(\n LS_NAME_LEARNING_SESSION_MANAGER_DATA,\n JSON.stringify(learningSessionManager)\n );\n}\n\nexport function getLearningSessionManagerDataFromLocalStorage() {\n try {\n const learningSessionMangerData = JSON.parse(\n get(LS_NAME_LEARNING_SESSION_MANAGER_DATA)\n );\n if (!checkIfDataIsLearningSessionManagerData(learningSessionMangerData)) {\n throw new Error(\n \"Stored data is broken and can not be used to create a learning session manager\"\n );\n }\n return learningSessionMangerData;\n } catch (error) {\n return null;\n }\n}\n\nexport function clearLearningSessionManagerDataInLocalStorage() {\n remove(LS_NAME_LEARNING_SESSION_MANAGER_DATA);\n}\n\nfunction checkIfDataIsLearningSessionManagerData(\n learningSessionManager: LearningSessionManager\n): boolean {\n if (!learningSessionManager) return false;\n for (const attribute of [\n \"decks\",\n \"numberOfRecentCardsToIgnoreWhenSelectingNextCard\",\n \"cardsToSelectFrom\",\n \"learningSession\",\n ]) {\n if (!(attribute in learningSessionManager)) {\n return false;\n }\n }\n\n return true;\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!./NavigationBar.vue?vue&type=style&index=0&id=ba98dd5c&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!./NavigationBar.vue?vue&type=style&index=0&id=ba98dd5c&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!./CustomDialog.vue?vue&type=style&index=0&id=114d3862&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!./CustomDialog.vue?vue&type=style&index=0&id=114d3862&scoped=true&lang=css&\"","import { showSnackbar } from \"./snackbarHelper\";\n\n// const LOCAL_STORAGE_APP_CONTEXT = \"ffc_\";\n \nconst url = new URL(window.location.href);\nconst LOCAL_STORAGE_APP_CONTEXT = url.pathname.split('/')[1] + \"_\";\n\nexport interface SyncItem {\n key: string;\n defaultValue: any;\n}\n\ninterface Context {\n propertiesToSyncWithLocalStorage: SyncItem[];\n [x: string]: any;\n}\n\nexport function get(key: string): string {\n return localStorage.getItem(LOCAL_STORAGE_APP_CONTEXT + key) || \"\";\n}\n\nexport function set(key: string, value: string): void {\n localStorage.setItem(LOCAL_STORAGE_APP_CONTEXT + key, value);\n}\n\nexport function remove(key: string): void {\n localStorage.removeItem(LOCAL_STORAGE_APP_CONTEXT + key);\n}\n\nfunction clearAppData(): void {\n for (let i = localStorage.length - 1; i >= 0; i--) {\n const key = localStorage.key(i);\n if (key && key.startsWith(LOCAL_STORAGE_APP_CONTEXT)) {\n localStorage.removeItem(key);\n }\n }\n}\n\nexport function readFromLocalStorage(context: Context) {\n context.propertiesToSyncWithLocalStorage.forEach((item) => {\n try {\n context[item.key] = JSON.parse(get(item.key));\n if (context[item.key] === null) {\n throw new Error(\"No item found.\");\n }\n } catch (e) {\n context[item.key] = item.defaultValue;\n }\n });\n}\nexport function saveToLocalStorage(context: Context, item: SyncItem) {\n set(item.key, JSON.stringify(context[item.key]));\n}\nexport function clearLocalStorage(context: Context) {\n clearAppData();\n context.propertiesToSyncWithLocalStorage.forEach((item) => {\n context[item.key] = item.defaultValue;\n });\n showSnackbar(context, \"Removed All App Data From Local Storage.\");\n}\n","module.exports = __webpack_public_path__ + \"img/flash.3ee01593.svg\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('v-window',{attrs:{\"touch\":{ left: _vm.swipeLeft, right: _vm.swipeRight }}},[_c('v-app',{attrs:{\"id\":\"inspire\"}},[_c('v-app',{attrs:{\"id\":\"sandbox\"}},[_c('v-main',[_c('NavigationBar',{ref:\"navbar\",attrs:{\"title\":\"Fancy Flashcard\",\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks}}),_c('router-view',{attrs:{\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks,\"cardLimit\":_vm.cardLimit}}),_c('v-snackbar',{attrs:{\"app\":\"\",\"timeout\":_vm.snackbar.timeout},scopedSlots:_vm._u([{key:\"action\",fn:function(ref){\nvar attrs = ref.attrs;\nreturn [_c('v-btn',_vm._b({attrs:{\"color\":\"orange darken-1\",\"text\":\"\"},on:{\"click\":function($event){_vm.snackbar.snackbar = false}}},'v-btn',attrs,false),[_vm._v(\"Close\")])]}}]),model:{value:(_vm.snackbar.snackbar),callback:function ($$v) {_vm.$set(_vm.snackbar, \"snackbar\", $$v)},expression:\"snackbar.snackbar\"}},[_vm._v(\" \"+_vm._s(_vm.snackbar.text)+\" \")]),_c('CustomDialog',{ref:\"customDialog\"})],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"NavBar\"},[_c('v-navigation-drawer',{attrs:{\"clipped\":_vm.primaryDrawer.clipped,\"floating\":_vm.primaryDrawer.floating,\"mini-variant\":_vm.primaryDrawer.mini,\"permanent\":_vm.primaryDrawer.type === 'permanent',\"temporary\":_vm.primaryDrawer.type === 'temporary',\"app\":\"\",\"overflow\":\"\"},model:{value:(_vm.primaryDrawer.model),callback:function ($$v) {_vm.$set(_vm.primaryDrawer, \"model\", $$v)},expression:\"primaryDrawer.model\"}},[_c('v-list',[_c('v-list-item',[_c('v-img',{staticClass:\"ffc-icon\",attrs:{\"src\":require(\"../../assets/flash.svg\")}})],1),_c('v-divider'),_vm._l((_vm.navBarList),function(navItem){return _c('v-list-item',{key:navItem.to,attrs:{\"to\":navItem.to,\"link\":\"\"}},[_c('v-list-item-icon',[_c('v-icon',[_vm._v(_vm._s(navItem.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(navItem.title))])],1)],1)})],2)],1),_c('v-app-bar',{class:_vm.colorAppBar,attrs:{\"clipped-left\":_vm.primaryDrawer.clipped,\"app\":\"\"}},[(_vm.isInDeckSelection && _vm.numberOfSelectedDecks>0)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.deselectAll}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1):(_vm.isInLearning)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.quitLearning}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1):_c('v-app-bar-nav-icon',{on:{\"click\":function($event){$event.stopPropagation();return _vm.togglePrimaryDrawer($event)}}}),_c('v-toolbar-title',[_vm._v(_vm._s(_vm.toolbarTitle))]),_c('v-spacer'),(_vm.isInDeckSelection && _vm.numberOfSelectedDecks===1)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.showInfoForSelectedDeck}},[_c('v-icon',[_vm._v(\"mdi-information\")])],1):_vm._e(),(_vm.isInDeckSelection && _vm.numberOfSelectedDecks>0)?_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":_vm.numberOfSelectedDecks === _vm.decks.length},on:{\"click\":_vm.selectAll}},[_c('v-icon',[_vm._v(\"mdi-checkbox-multiple-marked\")])],1):_vm._e(),(_vm.isInDeckSelection && _vm.numberOfSelectedDecks>0)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.deleteSelected}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue';\nimport { Deck, CustomDialogOptions } from '@/types';\nimport router from '@/router';\n\ninterface Context {\n numberOfSelectedDecks: number,\n $eventHub: typeof Vue,\n decks: Deck[],\n deselectAll: Function,\n $router: typeof router,\n}\n\nexport function deleteSelected(context: any) {\n const options = {\n title: `Delete Deck${context.numberOfSelectedDecks > 1 ? \"s\" : \"\"}?`,\n message: `Do you really want to delete the ${\n context.numberOfSelectedDecks > 1\n ? context.numberOfSelectedDecks + \" \"\n : \"\"\n }selected\n deck${context.numberOfSelectedDecks > 1 ? \"s\" : \"\"}?`,\n buttons: [\n {\n name: \"Cancel\",\n color: \"grey\",\n },\n {\n name: \"Delete\",\n color: \"red darken-1\",\n callback: () => {\n context.$eventHub.$emit(\"deleteSelectedDecks\");\n },\n },\n ],\n };\n context.$eventHub.$emit(\"showCustomDialog\", options);\n}\n\nexport function showInfoForSelectedDeck(context: any) {\n const selectedDeck = context.decks.find((deck: any) => deck.selected);\n const options = {\n title: selectedDeck?.name,\n table: [],\n buttons: [\n {\n name: \"Close\",\n color: \"indigo\",\n },\n ],\n } as CustomDialogOptions;\n const infos = [\n {\n meta: \"file\",\n content: [\n {\n key: \"author\",\n name: \"Author\",\n },\n {\n key: \"version\",\n name: \"Version\",\n },\n ],\n },\n {\n meta: \"deck\",\n content: [\n {\n key: \"description\",\n name: \"Description\",\n },\n ],\n },\n ];\n for (const info of infos) {\n for (const content of info.content) {\n if (info.meta === \"file\") {\n options.table?.push({\n name: content.name,\n value: selectedDeck?.meta.file[content.key] || \"-\",\n });\n } else if (info.meta === \"deck\") {\n options.table?.push({\n name: content.name,\n value: selectedDeck?.meta.deck[content.key] || \"-\",\n });\n }\n }\n }\n options.table?.push({\n name: \"Number of Cards\",\n value: String(selectedDeck?.cards.length || 0),\n });\n context.$eventHub.$emit(\"showCustomDialog\", options);\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck, Event, NavBarConfigItem } from '../../types';\nimport navBarConfigJson from './navbar.json';\n\nimport * as selectedDeckDialogHelper from \"../../helpers/selectedDeckDialogHelper\";\n\nconst NavigationBarProps = Vue.extend({\n props: {\n title: String,\n decks: {type: Array as () => Deck[]},\n numberOfSelectedDecks: Number,\n }\n});\n\n@Component\nexport default class NavigationBar extends NavigationBarProps {\n primaryDrawer = {\n model: false,\n type: \"temporary\",\n clipped: true,\n floating: false,\n mini: false\n };\n navBarList = navBarConfigJson as NavBarConfigItem[];\n\n get isInDeckSelection() {\n return this.$route.name === \"DeckSelection\";\n }\n get isInLearning() {\n return this.$route.name === \"Learn\";\n }\n get colorAppBar() {\n if (this.isInDeckSelection && this.numberOfSelectedDecks > 0) {\n return \"indigo\";\n }\n return \"\";\n }\n get toolbarTitle() {\n if (this.isInDeckSelection && this.numberOfSelectedDecks > 0) {\n return `${this.numberOfSelectedDecks} deck${\n this.numberOfSelectedDecks === 1 ? \"\" : \"s\"\n } selected`;\n }\n return this.title;\n }\n\n deselectAll() {\n this.$eventHub.$emit(Event.DESELECT_ALL_DECKS);\n }\n selectAll() {\n this.$eventHub.$emit(Event.SELECT_ALL_DECKS);\n }\n deleteSelected() {\n selectedDeckDialogHelper.deleteSelected(this);\n }\n showInfoForSelectedDeck() {\n selectedDeckDialogHelper.showInfoForSelectedDeck(this);\n }\n showDrawer() {\n this.primaryDrawer.model = true;\n }\n hideDrawer() {\n this.primaryDrawer.model = false;\n }\n quitLearning() {\n this.$eventHub.$emit(Event.PREPARE_QUIT_LEARNING);\n }\n togglePrimaryDrawer() {\n this.primaryDrawer.model = !this.primaryDrawer.model;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NavigationBar.vue?vue&type=template&id=ba98dd5c&scoped=true&\"\nimport script from \"./NavigationBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./NavigationBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./NavigationBar.vue?vue&type=style&index=0&id=ba98dd5c&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 \"ba98dd5c\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\ninstallComponents(component, {VAppBar,VAppBarNavIcon,VBtn,VDivider,VIcon,VImg,VList,VListItem,VListItemContent,VListItemIcon,VListItemTitle,VNavigationDrawer,VSpacer,VToolbarTitle})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{attrs:{\"max-width\":\"400\",\"persistent\":\"\"},model:{value:(_vm.showDialog),callback:function ($$v) {_vm.showDialog=$$v},expression:\"showDialog\"}},[_c('v-card',{attrs:{\"color\":\"#2e2e2e\"}},[_c('v-card-title',{staticClass:\"headline\"},[_vm._v(\" \"+_vm._s(_vm.options.title)+\" \"),(_vm.options.type)?_c('v-icon',{staticClass:\"mx-2\",attrs:{\"size\":\"0.9em\",\"color\":\"indigo\"}},[_vm._v(\" \"+_vm._s(_vm.options.type === 'sponsored' ? 'mdi-cash-usd-outline' : _vm.options.type === 'curated' ? 'mdi-check-decagram' : _vm.options.type === 'official' ? 'mdi-flash-circle' : null)+\" \")]):_vm._e()],1),(_vm.options.message)?_c('v-card-text',{staticClass:\"text-left\"},[_vm._v(_vm._s(_vm.options.message))]):(_vm.options.multipleMessages)?_c('v-card-text',{staticClass:\"text-left\"},_vm._l((_vm.options.multipleMessages),function(message){return _c('p',{key:message.name,staticClass:\"multiple-messages\"},[_c('b',[_vm._v(_vm._s(message.name)+\":\")]),_vm._v(\" \"+_vm._s(message.value)+\" \")])}),0):_vm._e(),(_vm.options.table)?_c('v-list',[(_vm.options.tableHead)?_c('v-list-item',[_c('v-list-item-content',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.options.tableHead.name))]),_c('v-list-item-content',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.options.tableHead.value))])],1):_vm._e(),_vm._l((_vm.options.table),function(item){return _c('v-list-item',{key:item.name},[_c('v-list-item-content',[_vm._v(_vm._s(item.name))]),_c('v-list-item-content',[_vm._v(_vm._s(item.value))])],1)})],2):_vm._e(),(_vm.options.url)?_c('div',{staticClass:\"share-ffc-url\"},[_c('v-text-field',{attrs:{\"type\":\"text\",\"id\":\"ffc-url\",\"value\":_vm.options.url}})],1):_vm._e(),(_vm.options.barChart)?_c('BarChart',{attrs:{\"options\":_vm.options.barChart}}):_vm._e(),_c('v-card-actions',[_c('v-spacer'),_vm._l((_vm.options.buttons),function(btn){return _c('v-btn',{key:btn.name,attrs:{\"color\":btn.color,\"text\":\"\"},on:{\"click\":function($event){return _vm.close(btn)}}},[_vm._v(_vm._s(btn.name))])})],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"bar-chart\"},[_c('div',{staticClass:\"bar-container\",style:({ minHeight: 'min(20vw, 100px)' })},_vm._l((_vm.options.bars),function(bar,index){return _c('div',{key:index,staticClass:\"bar-wrapper\"},[_c('div',{staticClass:\"bar-value\"},[_vm._v(_vm._s(bar.value))]),_c('div',{staticClass:\"bar\",style:(_vm.getHeight(bar))})])}),0),_c('div',{staticClass:\"bar-container\",staticStyle:{\"padding-top\":\"0\"}},_vm._l((_vm.options.bars),function(bar,index){return _c('div',{key:index,staticClass:\"bar-name\"},[_vm._v(_vm._s(bar.name || \"\"))])}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport {\n CustomDialogOptionsBarChart,\n CustomDialogOptionsBarChartBar\n} from \"../../types\";\n\nconst BarChartProps = Vue.extend({\n props: {\n options: { type: Object as () => CustomDialogOptionsBarChart }\n }\n});\n\n@Component\nexport default class BarChart extends BarChartProps {\n getHeight(bar: CustomDialogOptionsBarChartBar) {\n const relValue = this.maxBarValue > 0 ? bar.value / this.maxBarValue : 0;\n return {\n height: `${relValue*32}vw`,\n maxHeight: `${relValue*150}px`\n };\n }\n get maxBarValue (): number {\n return Math.max(...this.options.bars.map(bar => bar.value));\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BarChart.vue?vue&type=template&id=898ec282&scoped=true&\"\nimport script from \"./BarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./BarChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BarChart.vue?vue&type=style&index=0&id=898ec282&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 \"898ec282\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { CustomDialogOptions, CustomDialogOptionsButton } from \"../../types\";\nimport BarChart from \"./BarChart.vue\";\n\n@Component({\n components: {\n BarChart\n }\n})\nexport default class Dialog extends Vue {\n showDialog = false;\n options = {\n title: \"\",\n format: \"\",\n message: \"\",\n tableHead: {\n name: \"\",\n value: \"\"\n },\n table: [\n {\n name: \"\",\n value: \"\"\n }\n ],\n buttons: [\n {\n name: \"Close\",\n color: \"indigo\",\n callback: undefined\n }\n ]\n } as CustomDialogOptions;\n\n hide() {\n this.showDialog = false;\n }\n show(options: CustomDialogOptions) {\n this.showDialog = true;\n this.options = options;\n if (\n !this.options.buttons ||\n (this.options.buttons && this.options.buttons.length === 0)\n ) {\n this.options.buttons = [\n {\n name: \"Close\",\n color: \"indigo\",\n callback: undefined\n }\n ];\n }\n }\n close(btn?: CustomDialogOptionsButton) {\n this.showDialog = false;\n if (btn && btn.callback) {\n btn.callback();\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CustomDialog.vue?vue&type=template&id=114d3862&scoped=true&\"\nimport script from \"./CustomDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CustomDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CustomDialog.vue?vue&type=style&index=0&id=114d3862&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 \"114d3862\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VDialog,VIcon,VList,VListItem,VListItemContent,VSpacer,VTextField})\n","import { FFCFile, Deck, Card, CustomDialogOptions } from \"@/types\";\nimport router from \"@/router\";\nimport { showSnackbar } from \"./snackbarHelper\";\n\ninterface Context {\n decks: Deck[];\n showCustomDialog: Function;\n $router: typeof router;\n}\n\nexport function addDecksFromFile(\n context: Context,\n fileContent: string,\n url?: string\n) {\n try {\n addDecksFromJSON(context, JSON.parse(fileContent), url);\n } catch (e) {\n showSnackbar(context, e);\n }\n}\n\ninterface addedDeckAndCards {\n name: string;\n numberOfCards: number;\n addedCards?: number;\n updatedCards?: number;\n deletedCards?: number;\n}\n\nexport function addDecksFromJSON(\n context: Context,\n fileContent: FFCFile,\n url?: string\n) {\n const addedDecksAndCards = [] as addedDeckAndCards[];\n try {\n let updatedInsteadOfAddedFile = false;\n for (const deckShortName in fileContent.decks) {\n const cards: Card[] = [];\n for (const cardId in fileContent.decks[deckShortName].cards) {\n cards.push({\n id: Number(cardId),\n q: fileContent.decks[deckShortName].cards[cardId].q,\n a: fileContent.decks[deckShortName].cards[cardId].a,\n r: [],\n });\n }\n\n // check if deck exists already\n const updated = updateDeckIfItExistsAndReturnStatusAndNumberOfCards(\n context.decks,\n deckShortName,\n fileContent,\n url\n );\n if (updated.status) {\n updatedInsteadOfAddedFile = true;\n addedDecksAndCards.push({\n name: updated.deckName || \"\",\n numberOfCards: cards.length,\n addedCards: updated.addedCards,\n updatedCards: updated.updatedCards,\n deletedCards: updated.deletedCards,\n });\n continue;\n }\n\n const name =\n fileContent.decks[deckShortName].meta.deck_name || deckShortName;\n context.decks.push({\n id: context.decks.reduce((acc, cur) => Math.max(acc, cur.id), 0) + 1,\n selected: false,\n name,\n meta: {\n file: {\n ...fileContent.meta,\n url,\n },\n deck: {\n ...fileContent.decks[deckShortName].meta,\n short_name: deckShortName,\n },\n },\n cards,\n });\n addedDecksAndCards.push({ name, numberOfCards: cards.length });\n }\n\n const version = fileContent?.meta?.version;\n\n showAddedDecksConfirmation(\n context,\n addedDecksAndCards,\n version,\n updatedInsteadOfAddedFile\n );\n } catch (e) {\n showSnackbar(context, e);\n }\n}\n\nfunction updateDeckIfItExistsAndReturnStatusAndNumberOfCards(\n decks: Deck[],\n deckShortName: string,\n fileContent: FFCFile,\n url?: string\n): {\n status: boolean;\n deckName?: string;\n addedCards?: number;\n updatedCards?: number;\n deletedCards?: number;\n} {\n for (const deck of decks) {\n // if url is known for the local deck, it should only be updated when url matches\n // this should prevent from maliciously using same uuid to overwrite other decks\n if (\n ((deck.meta.file.url && deck.meta.file.url === url) ||\n (!deck.meta.file.url &&\n deck.meta.file.uuid &&\n deck.meta.file.uuid === fileContent.meta.uuid)) &&\n deck.meta.deck.short_name === deckShortName\n ) {\n // should be updated\n let addedCards = 0,\n updatedCards = 0,\n deletedCards = 0;\n\n deck.name =\n fileContent.decks[deckShortName].meta.deck_name || deckShortName;\n deck.meta = {\n file: {\n ...fileContent.meta,\n url: deck.meta.file.url,\n },\n deck: {\n ...fileContent.decks[deckShortName].meta,\n short_name: deckShortName,\n },\n };\n const alreadyExistingCardIdMap: { [cardId: number]: boolean } = {};\n for (let i = 0; i < deck.cards.length; i++) {\n if (deck.cards[i].id in fileContent.decks[deckShortName].cards) {\n if (\n deck.cards[i].q !==\n fileContent.decks[deckShortName].cards[deck.cards[i].id].q ||\n deck.cards[i].a !==\n fileContent.decks[deckShortName].cards[deck.cards[i].id].a\n ) {\n deck.cards[i].q =\n fileContent.decks[deckShortName].cards[deck.cards[i].id].q;\n deck.cards[i].a =\n fileContent.decks[deckShortName].cards[deck.cards[i].id].a;\n updatedCards += 1;\n }\n alreadyExistingCardIdMap[deck.cards[i].id] = true;\n } else {\n deck.cards.splice(i, 1);\n deletedCards += 1;\n }\n }\n for (const cardId in fileContent.decks[deckShortName].cards) {\n if (cardId in alreadyExistingCardIdMap) continue;\n deck.cards.push({\n id: Number(cardId),\n q: fileContent.decks[deckShortName].cards[cardId].q,\n a: fileContent.decks[deckShortName].cards[cardId].a,\n r: [],\n });\n addedCards += 1;\n }\n return {\n status: true,\n deckName: deck.name,\n addedCards,\n updatedCards,\n deletedCards,\n };\n }\n }\n return { status: false };\n}\n\nfunction showAddedDecksConfirmation(\n context: Context,\n addedDeckAndCards: addedDeckAndCards[],\n version: string,\n updatedInsteadOfAddedFile: boolean\n) {\n const numberOfAddedCards = addedDeckAndCards.reduce(\n (total, deck) => total + deck.numberOfCards,\n 0\n );\n if (numberOfAddedCards === 0) {\n throw new Error(\"No decks have been added\");\n }\n\n const options = {\n persistent: false,\n title: \"Successfully Imported Decks\",\n message: updatedInsteadOfAddedFile\n ? \"Following decks have been updated\" +\n (version ? \" to version \" + version : \"\") +\n \" (number of cards added / updated / deleted):\"\n : \"The following decks\" +\n (version ? \" (version: \" + version + \") \" : \"\") +\n \"have been added:\",\n tableHead: { name: \"Deck\", value: \"Number of Cards\" },\n table: addedDeckAndCards.map((deck) => {\n return {\n name: deck.name,\n value:\n String(deck.numberOfCards) + showUpdatedInfoForDeckIfUpdated(deck),\n };\n }),\n buttons: [\n {\n name: \"Close\",\n color: \"grey\",\n },\n {\n name: \"Go Home\",\n color: \"indigo\",\n callback: function() {\n context.$router.push(\"/\");\n },\n },\n ],\n } as CustomDialogOptions;\n context.showCustomDialog(options);\n}\n\nfunction showUpdatedInfoForDeckIfUpdated(deck: addedDeckAndCards): string {\n if (\n \"addedCards\" in deck &&\n \"updatedCards\" in deck &&\n \"deletedCards\" in deck\n ) {\n return ` (${deck.addedCards}/${deck.updatedCards}/${deck.deletedCards})`;\n }\n return \"\";\n}\n","import {\n QuitLearningReason,\n CustomDialogOptions,\n FFCFile,\n Event,\n Deck,\n} from \"@/types\";\nimport { clearLocalStorage } from \"./localStorageHelper\";\nimport { addDecksFromJSON, addDecksFromFile } from \"./addDecksHelper\";\nimport { showSnackbar } from \"./snackbarHelper\";\n\nexport function registerEventListenerForMainApp(context: any) {\n context.$eventHub.$on(Event.DELETE_SELECTED_DECKS, () => {\n context.decks = context.decks.filter((deck: Deck) => !deck.selected);\n });\n context.$eventHub.$on(Event.SELECT_ALL_DECKS, () => {\n context.setSelectedStatusForAllDecks(true);\n });\n context.$eventHub.$on(Event.DESELECT_ALL_DECKS, () => {\n context.setSelectedStatusForAllDecks(false);\n });\n context.$eventHub.$on(Event.ADD_DECKS_FROM_FILE, (fileContent: string) => {\n addDecksFromFile(context, fileContent);\n });\n context.$eventHub.$on(\n Event.ADD_DECKS_FROM_JSON,\n (fileContent: FFCFile, url?: string) => {\n addDecksFromJSON(context, fileContent, url);\n }\n );\n context.$eventHub.$on(Event.SNACKBAR_EVENT, (message: string) => {\n showSnackbar(context, message);\n });\n context.$eventHub.$on(Event.CLEAR_LOCAL_STORAGE, () => {\n clearLocalStorage(context);\n });\n context.$eventHub.$on(\n Event.SHOW_CUSTOM_DIALOG,\n (options: CustomDialogOptions) => {\n context.showCustomDialog(options);\n }\n );\n context.$eventHub.$on(Event.QUIT_LEARNING, (reason: QuitLearningReason) => {\n if (reason === QuitLearningReason.NO_MORE_CARDS) {\n context.setSelectedStatusForAllDecks(false);\n }\n context.$router.replace(\"/\");\n });\n context.$eventHub.$on(Event.UPDATE_CARD_LIMIT, (newValue: string) => {\n context.cardLimit = newValue;\n });\n}\n","import Vue from \"vue\";\nimport { Deck } from \"@/types\";\nimport VueRouter from \"vue-router\";\nimport {\n getLearningSessionManagerDataFromLocalStorage,\n clearLearningSessionManagerDataInLocalStorage,\n} from \"./learningSessionStorageHelper\";\n\nexport default function continueCurrentLearningSessionIfPresent(\n eventHub: Vue,\n router: VueRouter,\n decks: Deck[]\n) {\n const data = getLearningSessionManagerDataFromLocalStorage();\n if (data) {\n const options = {\n title: `Continue Learning?`,\n message:\n `You didn't finish your last learning session. Do you want to resume learning where you stopped last session?\n Your last session included the following decks: ` +\n data.decks.reduce(\n (str: string, deck: Deck, index: number) =>\n str + (index > 0 ? \", \" : \"\") + deck.name,\n \"\"\n ),\n buttons: [\n {\n name: \"Discard Session\",\n color: \"grey\",\n callback: () => {\n clearLearningSessionManagerDataInLocalStorage();\n if (router.currentRoute.name !== \"DeckSelection\") {\n router.replace(\"/\");\n }\n },\n },\n {\n name: \"Resume\",\n color: \"indigo\",\n callback: () => {\n data.decks.forEach((deckFromLastSession: Deck) => {\n const curDeck = decks.find(\n (deckInUse) => deckInUse.id === deckFromLastSession.id\n );\n if (curDeck) {\n curDeck.selected = true;\n }\n });\n if (router.currentRoute.name !== \"Learn\") {\n router.replace(\"learn\");\n }\n },\n },\n ],\n };\n eventHub.$emit(\"showCustomDialog\", options);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck, CustomDialogOptions, Event } from \"./types\";\n\nimport NavigationBar from \"./components/layout/NavigationBar.vue\";\nimport CustomDialog from \"./components/customdialog/CustomDialog.vue\";\nimport { registerEventListenerForMainApp } from \"./helpers/eventListener\";\nimport {\n readFromLocalStorage,\n saveToLocalStorage,\n SyncItem\n} from \"./helpers/localStorageHelper\";\nimport continueCurrentLearningSessionIfPresent from \"./helpers/continueLearningHelper\";\n\nconst AppProps = Vue.extend({\n props: {\n title: String\n }\n});\n\n@Component({\n components: {\n NavigationBar,\n CustomDialog\n }\n})\nexport default class App extends AppProps {\n propertiesToSyncWithLocalStorage = [\n { key: \"decks\", defaultValue: [] },\n { key: \"cardLimit\", defaultValue: \"\" }\n ] as SyncItem[];\n cardLimit = \"\";\n decks = [] as Deck[];\n snackbar = {\n text: \"\",\n snackbar: false\n };\n\n $refs!: {\n navbar: NavigationBar;\n customDialog: CustomDialog;\n };\n\n setSelectedStatusForAllDecks(status: boolean) {\n this.decks.forEach(deck => {\n deck.selected = status;\n });\n }\n\n created() {\n registerEventListenerForMainApp(this);\n\n for (const item of this.propertiesToSyncWithLocalStorage) {\n this.$watch(\n item.key,\n function() {\n saveToLocalStorage(this, item);\n },\n { deep: true }\n );\n }\n }\n\n mounted() {\n readFromLocalStorage(this);\n this.setSelectedStatusForAllDecks(false);\n continueCurrentLearningSessionIfPresent(\n this.$eventHub,\n this.$router,\n this.decks\n );\n }\n\n get numberOfSelectedDecks() {\n return this.decks.filter(deck => deck.selected).length;\n }\n\n swipeLeft() {\n if (this.$route.name === \"Learn\") {\n this.$eventHub.$emit(Event.SWIPE_LEFT_IN_LEARN);\n return;\n }\n this.$refs.navbar.hideDrawer();\n }\n swipeRight() {\n if (this.$route.name === \"Learn\") {\n this.$eventHub.$emit(Event.SWIPE_RIGHT_IN_LEARN);\n return;\n }\n this.$refs.navbar.showDrawer();\n }\n showCustomDialog(options: CustomDialogOptions) {\n this.$refs.customDialog.show(options);\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--14-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--14-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=c5f7ed28&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VWindow } from 'vuetify/lib/components/VWindow';\ninstallComponents(component, {VApp,VBtn,VMain,VSnackbar,VWindow})\n","/* eslint-disable no-console */\n\nimport { register } from \"register-service-worker\";\n\nif (process.env.NODE_ENV === \"production\") {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n \"App is being served from cache by a service worker.\\n\" +\n \"For more details, visit https://goo.gl/AFskqB\"\n );\n },\n registered() {\n console.log(\"Service worker has been registered.\");\n },\n cached() {\n console.log(\"Content has been cached for offline use.\");\n },\n updatefound() {\n console.log(\"New content is downloading.\");\n },\n updated() {\n console.log(\"New content is available; please refresh.\");\n },\n offline() {\n console.log(\n \"No internet connection found. App is running in offline mode.\"\n );\n },\n error(error) {\n console.error(\"Error during service worker registration:\", error);\n }\n });\n}\n","import Vue from \"vue\";\nimport VueRouter, { RouteConfig } from \"vue-router\";\n\nVue.use(VueRouter);\n\nconst routes: Array = [\n {\n path: '/',\n name: 'DeckSelection',\n component: () => import('../views/Home.vue'),\n props: true,\n },\n {\n path: '/learn',\n name: 'Learn',\n component: () => import('../views/Learn.vue'),\n props: true,\n },\n {\n path: '/add',\n name: 'Add New Deck',\n component: () => import('../views/AddNewDeck.vue'),\n props: true,\n },\n {\n path: '/thirdparty',\n name: 'Third Party Decks',\n component: () => import('../views/ThirdPartyDecks.vue'),\n },\n {\n path: '/settings',\n name: 'Settings',\n component: () => import('../views/Settings.vue'),\n },\n {\n path: '/about',\n name: 'About',\n component: () => import('../views/About.vue'),\n }\n];\n\nconst router = new VueRouter({\n base: process.env.BASE_URL,\n routes\n});\n\nexport default router;\n","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: {\n dark: true,\n },\n});\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport \"./registerServiceWorker\";\nimport router from \"./router\";\nimport vuetify from \"./plugins/vuetify\";\n\nVue.config.productionTip = false;\n\ndeclare module \"vue/types/vue\" {\n interface Vue {\n $eventHub: Vue;\n }\n}\nVue.prototype.$eventHub = new Vue();\n\nnew Vue({\n router,\n vuetify,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","export interface FFCFile {\n meta: {\n author: string;\n uuid?: string;\n [x: string]: any;\n };\n decks: {\n [deck_short_name: string]: {\n meta: {\n deck_name: string;\n description: string;\n next_card_id: number;\n [x: string]: any;\n };\n cards: {\n [cardId: string]: {\n q: string;\n a: string;\n };\n };\n };\n };\n}\n\nexport interface Deck {\n id: number;\n selected: boolean;\n name: string;\n meta: {\n file: {\n uuid?: string;\n url?: string;\n [x: string]: any;\n };\n deck: {\n short_name: string;\n [x: string]: any;\n };\n };\n cards: Card[];\n}\n\nexport interface Card {\n id: number;\n q: string;\n a: string;\n r?: CardRating[];\n}\n\nexport interface CardRating {\n t: number;\n r: number;\n}\n\nexport interface LearningSession {\n elements: LearningSessionElement[];\n currentElementIndex: number;\n}\n\nexport interface LearningSessionElement {\n deckId: number;\n cardId: number;\n showAnswer?: boolean;\n rating?: CardRating;\n card?: Card;\n weight?: number;\n}\n\nexport interface CustomDialogOptions {\n title: string;\n format?: string;\n message?: string;\n tableHead?: {\n name: string;\n value: string;\n };\n table?: CustomDialogOptionsTableRow[];\n barChart?: CustomDialogOptionsBarChart;\n buttons?: CustomDialogOptionsButton[];\n}\n\nexport interface CustomDialogOptionsTableRow {\n name: string;\n value: string;\n}\n\nexport interface CustomDialogOptionsBarChart {\n bars: CustomDialogOptionsBarChartBar[];\n}\n\nexport interface CustomDialogOptionsBarChartBar {\n name?: string;\n value: number;\n}\n\nexport interface CustomDialogOptionsButton {\n name: string;\n color: string;\n callback?: Function;\n}\n\nexport enum QuitLearningReason {\n USER_ACTION = 1,\n NO_MORE_CARDS = 2,\n}\n\nexport enum Event {\n DELETE_SELECTED_DECKS = \"deleteSelectedDecks\",\n ADD_DECKS_FROM_FILE = \"addDecksFromFile\",\n ADD_DECKS_FROM_JSON = \"addDecksFromJSON\",\n SNACKBAR_EVENT = \"snackbarEvent\",\n CLEAR_LOCAL_STORAGE = \"clearLocalStorage\",\n SHOW_CUSTOM_DIALOG = \"showCustomDialog\",\n QUIT_LEARNING = \"quitLearning\",\n PREPARE_QUIT_LEARNING = \"prepareQuitLearning\",\n SELECT_ALL_DECKS = \"selectAllDecks\",\n DESELECT_ALL_DECKS = \"deselectAllDecks\",\n SWIPE_LEFT_IN_LEARN = \"swipeLeftInLearn\",\n SWIPE_RIGHT_IN_LEARN = \"swipeRightInLearn\",\n UPDATE_CARD_LIMIT = \"updateCardLimit\",\n}\n\nexport interface NavBarConfigItem {\n to: string;\n icon: string;\n title: string;\n}\n\nexport interface ThirdPartyDeck {\n type: string;\n name: string;\n author: string;\n desc: string;\n url: string;\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-065f4018.dae1c5d0.js b/js/chunk-065f4018.089c1ae0.js similarity index 98% rename from js/chunk-065f4018.dae1c5d0.js rename to js/chunk-065f4018.089c1ae0.js index ff9a265..394804f 100644 --- a/js/chunk-065f4018.dae1c5d0.js +++ b/js/chunk-065f4018.089c1ae0.js @@ -1,2 +1,2 @@ (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-065f4018"],{"5ed6":function(t,e,a){"use strict";var s=a("6318"),i=a.n(s);i.a},6318:function(t,e,a){},b5b6:function(t,e,a){},f820:function(t,e,a){"use strict";a.r(e);var s=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"about"},[a("v-container",{attrs:{fluid:""}},[a("v-row",{attrs:{align:"center",justify:"center"}},[a("v-col",{attrs:{cols:"10"}},[a("span",{staticClass:"title"},[t._v("Fancy Flashcard")]),a("br"),a("span",{staticClass:"version"},[t._v("Version "+t._s(t.getVersion()))]),a("br"),a("v-btn",{staticClass:"my-4",attrs:{color:"indigo"},on:{click:t.shareApp}},[t._v("Share Fancy Flashcard")]),a("v-footer",{attrs:{app:""}},[a("span",{staticClass:"px-4 copyright"},[t._v(" © "+t._s((new Date).getFullYear())+" Niko Lockenvitz & Rene-Pascal Fischer "),a("br"),a("a",{attrs:{href:"https://github.com/fancy-flashcard/ffc"}},[t._v("https://github.com/fancy-flashcard/ffc")])])])],1)],1)],1)],1)},i=[],o=a("d4ec"),n=a("bee2"),c=a("262e"),r=a("2caf"),l=a("9ab4"),h=a("2b0e"),f=a("2fe1"),u=a("ebe2");function p(){var t=document.getElementById("ffc-url");t&&(t.select(),t.setSelectionRange(0,t.value.length),document.execCommand("copy"),t.blur())}var d=function(t){Object(c["a"])(a,t);var e=Object(r["a"])(a);function a(){return Object(o["a"])(this,a),e.apply(this,arguments)}return Object(n["a"])(a,[{key:"shareApp",value:function(){if(navigator.share)navigator.share({title:"Fancy Flashcard",url:"https://fancy-flashcard.github.io/ffc/",text:"Try out this cool app I found."}).then((function(){console.log("Thanks for sharing!")})).catch(console.error);else{var t={title:"Share Fancy Flashcard",url:"https://fancy-flashcard.github.io/ffc/",buttons:[{name:"Close",color:"grey"},{name:"Copy URL",color:"indigo",callback:p}]};this.$eventHub.$emit(u["a"].SHOW_CUSTOM_DIALOG,t)}}},{key:"getVersion",value:function(){return"2.2.1"}}]),a}(h["a"]);d=Object(l["a"])([f["a"]],d);var b=d,v=b,g=(a("5ed6"),a("2877")),y=a("6544"),m=a.n(y),O=a("8336"),j=a("62ad"),C=a("a523"),F=(a("a9e3"),a("c7cd"),a("5530")),k=(a("b5b6"),a("8dd9")),_=a("3a66"),w=a("d10f"),$=a("58df"),x=a("80d2"),B=Object($["a"])(k["a"],Object(_["a"])("footer",["height","inset"]),w["a"]).extend({name:"v-footer",props:{height:{default:"auto",type:[Number,String]},inset:Boolean,padless:Boolean,tag:{type:String,default:"footer"}},computed:{applicationProperty:function(){return this.inset?"insetFooter":"footer"},classes:function(){return Object(F["a"])(Object(F["a"])({},k["a"].options.computed.classes.call(this)),{},{"v-footer--absolute":this.absolute,"v-footer--fixed":!this.absolute&&(this.app||this.fixed),"v-footer--padless":this.padless,"v-footer--inset":this.inset})},computedBottom:function(){if(this.isPositioned)return this.app?this.$vuetify.application.bottom:0},computedLeft:function(){if(this.isPositioned)return this.app&&this.inset?this.$vuetify.application.left:0},computedRight:function(){if(this.isPositioned)return this.app&&this.inset?this.$vuetify.application.right:0},isPositioned:function(){return Boolean(this.absolute||this.fixed||this.app)},styles:function(){var t=parseInt(this.height);return Object(F["a"])(Object(F["a"])({},k["a"].options.computed.styles.call(this)),{},{height:isNaN(t)?t:Object(x["f"])(t),left:Object(x["f"])(this.computedLeft),right:Object(x["f"])(this.computedRight),bottom:Object(x["f"])(this.computedBottom)})}},methods:{updateApplication:function(){var t=parseInt(this.height);return isNaN(t)?this.$el?this.$el.clientHeight:0:t}},render:function(t){var e=this.setBackgroundColor(this.color,{staticClass:"v-footer",class:this.classes,style:this.styles});return t(this.tag,e,this.$slots.default)}}),V=a("0fd9"),S=Object(g["a"])(v,s,i,!1,null,"6ffe5d5d",null);e["default"]=S.exports;m()(S,{VBtn:O["a"],VCol:j["a"],VContainer:C["a"],VFooter:B,VRow:V["a"]})}}]); -//# sourceMappingURL=chunk-065f4018.dae1c5d0.js.map \ No newline at end of file +//# sourceMappingURL=chunk-065f4018.089c1ae0.js.map \ No newline at end of file diff --git a/js/chunk-065f4018.dae1c5d0.js.map b/js/chunk-065f4018.089c1ae0.js.map similarity index 98% rename from js/chunk-065f4018.dae1c5d0.js.map rename to js/chunk-065f4018.089c1ae0.js.map index d3513df..4e74acb 100644 --- a/js/chunk-065f4018.dae1c5d0.js.map +++ b/js/chunk-065f4018.089c1ae0.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/views/About.vue?4068","webpack:///./src/views/About.vue?4f7e","webpack:///./src/helpers/copyToClipboardHelper.ts","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?7c53","webpack:///../../../src/components/VFooter/VFooter.ts","webpack:///./src/views/About.vue?10d8"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","getVersion","on","shareApp","Date","getFullYear","staticRenderFns","copyToClipboard","ffcURL","document","getElementById","select","setSelectionRange","value","length","execCommand","blur","navigator","share","title","url","text","then","console","log","catch","error","options","buttons","name","color","callback","$eventHub","$emit","SHOW_CUSTOM_DIALOG","mixins","props","height","default","type","Number","String","inset","padless","tag","computed","applicationProperty","classes","VSheet","app","computedBottom","$vuetify","application","computedLeft","computedRight","isPositioned","Boolean","absolute","styles","parseInt","isNaN","left","right","bottom","methods","updateApplication","$el","data","setBackgroundColor","class","style","h","$slots","component","VBtn","VCol","VContainer","VFooter","VRow"],"mappings":"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","file":"js/chunk-065f4018.dae1c5d0.js","sourcesContent":["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!./About.vue?vue&type=style&index=0&id=6ffe5d5d&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!./About.vue?vue&type=style&index=0&id=6ffe5d5d&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"about\"},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('span',{staticClass:\"title\"},[_vm._v(\"Fancy Flashcard\")]),_c('br'),_c('span',{staticClass:\"version\"},[_vm._v(\"Version \"+_vm._s(_vm.getVersion()))]),_c('br'),_c('v-btn',{staticClass:\"my-4\",attrs:{\"color\":\"indigo\"},on:{\"click\":_vm.shareApp}},[_vm._v(\"Share Fancy Flashcard\")]),_c('v-footer',{attrs:{\"app\":\"\"}},[_c('span',{staticClass:\"px-4 copyright\"},[_vm._v(\" © \"+_vm._s(new Date().getFullYear())+\" Niko Lockenvitz & Rene-Pascal Fischer \"),_c('br'),_c('a',{attrs:{\"href\":\"https://github.com/fancy-flashcard/ffc\"}},[_vm._v(\"https://github.com/fancy-flashcard/ffc\")])])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function copyToClipboard() {\n const ffcURL = document.getElementById(\"ffc-url\") as HTMLInputElement;\n if (!ffcURL) return;\n ffcURL.select();\n ffcURL.setSelectionRange(0, ffcURL.value.length);\n document.execCommand(\"copy\");\n ffcURL.blur();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Event } from \"../types\";\nimport { copyToClipboard } from \"../helpers/copyToClipboardHelper\";\n\n@Component\nexport default class About extends Vue {\n shareApp() {\n if (navigator.share) {\n navigator\n .share({\n title: \"Fancy Flashcard\",\n url: \"https://fancy-flashcard.github.io/ffc/\",\n text: \"Try out this cool app I found.\"\n })\n .then(() => {\n console.log(\"Thanks for sharing!\");\n })\n .catch(console.error);\n } else {\n const options = {\n title: \"Share Fancy Flashcard\",\n url: \"https://fancy-flashcard.github.io/ffc/\",\n buttons: [\n {\n name: \"Close\",\n color: \"grey\"\n },\n {\n name: \"Copy URL\",\n color: \"indigo\",\n callback: copyToClipboard\n }\n ]\n };\n this.$eventHub.$emit(Event.SHOW_CUSTOM_DIALOG, options);\n }\n }\n getVersion() {\n return process.env.VERSION;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VFooter.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types/vnode'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Applicationable('footer', [\n 'height',\n 'inset',\n ]),\n SSRBootable\n).extend({\n name: 'v-footer',\n\n props: {\n height: {\n default: 'auto',\n type: [Number, String],\n },\n inset: Boolean,\n padless: Boolean,\n tag: {\n type: String,\n default: 'footer',\n },\n },\n\n computed: {\n applicationProperty (): string {\n return this.inset ? 'insetFooter' : 'footer'\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-footer--absolute': this.absolute,\n 'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-footer--padless': this.padless,\n 'v-footer--inset': this.inset,\n }\n },\n computedBottom (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app\n ? this.$vuetify.application.bottom\n : 0\n },\n computedLeft (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.left\n : 0\n },\n computedRight (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.right\n : 0\n },\n isPositioned (): boolean {\n return Boolean(\n this.absolute ||\n this.fixed ||\n this.app\n )\n },\n styles (): object {\n const height = parseInt(this.height)\n\n return {\n ...VSheet.options.computed.styles.call(this),\n height: isNaN(height) ? height : convertToUnit(height),\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n bottom: convertToUnit(this.computedBottom),\n }\n },\n },\n\n methods: {\n updateApplication () {\n const height = parseInt(this.height)\n\n return isNaN(height)\n ? this.$el ? this.$el.clientHeight : 0\n : height\n },\n },\n\n render (h): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n class: this.classes,\n style: this.styles,\n })\n\n return h(this.tag, data, this.$slots.default)\n },\n})\n","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=6ffe5d5d&scoped=true&\"\nimport script from \"./About.vue?vue&type=script&lang=ts&\"\nexport * from \"./About.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./About.vue?vue&type=style&index=0&id=6ffe5d5d&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 \"6ffe5d5d\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VContainer,VFooter,VRow})\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/views/About.vue?4068","webpack:///./src/views/About.vue?56ea","webpack:///./src/helpers/copyToClipboardHelper.ts","webpack:///./src/views/About.vue","webpack:///./src/views/About.vue?7c53","webpack:///../../../src/components/VFooter/VFooter.ts","webpack:///./src/views/About.vue?10d8"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","getVersion","on","shareApp","Date","getFullYear","staticRenderFns","copyToClipboard","ffcURL","document","getElementById","select","setSelectionRange","value","length","execCommand","blur","navigator","share","title","url","text","then","console","log","catch","error","options","buttons","name","color","callback","$eventHub","$emit","SHOW_CUSTOM_DIALOG","mixins","props","height","default","type","Number","String","inset","padless","tag","computed","applicationProperty","classes","VSheet","app","computedBottom","$vuetify","application","computedLeft","computedRight","isPositioned","Boolean","absolute","styles","parseInt","isNaN","left","right","bottom","methods","updateApplication","$el","data","setBackgroundColor","class","style","h","$slots","component","VBtn","VCol","VContainer","VFooter","VRow"],"mappings":"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","file":"js/chunk-065f4018.089c1ae0.js","sourcesContent":["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!./About.vue?vue&type=style&index=0&id=6ffe5d5d&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!./About.vue?vue&type=style&index=0&id=6ffe5d5d&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"about\"},[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"10\"}},[_c('span',{staticClass:\"title\"},[_vm._v(\"Fancy Flashcard\")]),_c('br'),_c('span',{staticClass:\"version\"},[_vm._v(\"Version \"+_vm._s(_vm.getVersion()))]),_c('br'),_c('v-btn',{staticClass:\"my-4\",attrs:{\"color\":\"indigo\"},on:{\"click\":_vm.shareApp}},[_vm._v(\"Share Fancy Flashcard\")]),_c('v-footer',{attrs:{\"app\":\"\"}},[_c('span',{staticClass:\"px-4 copyright\"},[_vm._v(\" © \"+_vm._s(new Date().getFullYear())+\" Niko Lockenvitz & Rene-Pascal Fischer \"),_c('br'),_c('a',{attrs:{\"href\":\"https://github.com/fancy-flashcard/ffc\"}},[_vm._v(\"https://github.com/fancy-flashcard/ffc\")])])])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function copyToClipboard() {\n const ffcURL = document.getElementById(\"ffc-url\") as HTMLInputElement;\n if (!ffcURL) return;\n ffcURL.select();\n ffcURL.setSelectionRange(0, ffcURL.value.length);\n document.execCommand(\"copy\");\n ffcURL.blur();\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Event } from \"../types\";\nimport { copyToClipboard } from \"../helpers/copyToClipboardHelper\";\n\n@Component\nexport default class About extends Vue {\n shareApp() {\n if (navigator.share) {\n navigator\n .share({\n title: \"Fancy Flashcard\",\n url: \"https://fancy-flashcard.github.io/ffc/\",\n text: \"Try out this cool app I found.\"\n })\n .then(() => {\n console.log(\"Thanks for sharing!\");\n })\n .catch(console.error);\n } else {\n const options = {\n title: \"Share Fancy Flashcard\",\n url: \"https://fancy-flashcard.github.io/ffc/\",\n buttons: [\n {\n name: \"Close\",\n color: \"grey\"\n },\n {\n name: \"Copy URL\",\n color: \"indigo\",\n callback: copyToClipboard\n }\n ]\n };\n this.$eventHub.$emit(Event.SHOW_CUSTOM_DIALOG, options);\n }\n }\n getVersion() {\n return process.env.VERSION;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./About.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VFooter.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types/vnode'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Applicationable('footer', [\n 'height',\n 'inset',\n ]),\n SSRBootable\n).extend({\n name: 'v-footer',\n\n props: {\n height: {\n default: 'auto',\n type: [Number, String],\n },\n inset: Boolean,\n padless: Boolean,\n tag: {\n type: String,\n default: 'footer',\n },\n },\n\n computed: {\n applicationProperty (): string {\n return this.inset ? 'insetFooter' : 'footer'\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-footer--absolute': this.absolute,\n 'v-footer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-footer--padless': this.padless,\n 'v-footer--inset': this.inset,\n }\n },\n computedBottom (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app\n ? this.$vuetify.application.bottom\n : 0\n },\n computedLeft (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.left\n : 0\n },\n computedRight (): number | undefined {\n if (!this.isPositioned) return undefined\n\n return this.app && this.inset\n ? this.$vuetify.application.right\n : 0\n },\n isPositioned (): boolean {\n return Boolean(\n this.absolute ||\n this.fixed ||\n this.app\n )\n },\n styles (): object {\n const height = parseInt(this.height)\n\n return {\n ...VSheet.options.computed.styles.call(this),\n height: isNaN(height) ? height : convertToUnit(height),\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n bottom: convertToUnit(this.computedBottom),\n }\n },\n },\n\n methods: {\n updateApplication () {\n const height = parseInt(this.height)\n\n return isNaN(height)\n ? this.$el ? this.$el.clientHeight : 0\n : height\n },\n },\n\n render (h): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-footer',\n class: this.classes,\n style: this.styles,\n })\n\n return h(this.tag, data, this.$slots.default)\n },\n})\n","import { render, staticRenderFns } from \"./About.vue?vue&type=template&id=6ffe5d5d&scoped=true&\"\nimport script from \"./About.vue?vue&type=script&lang=ts&\"\nexport * from \"./About.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./About.vue?vue&type=style&index=0&id=6ffe5d5d&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 \"6ffe5d5d\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VContainer,VFooter,VRow})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-2eadd278.72b7fa82.js b/js/chunk-2eadd278.9c6c8c4b.js similarity index 98% rename from js/chunk-2eadd278.72b7fa82.js rename to js/chunk-2eadd278.9c6c8c4b.js index 1c95142..985d489 100644 --- a/js/chunk-2eadd278.72b7fa82.js +++ b/js/chunk-2eadd278.9c6c8c4b.js @@ -1,2 +1,2 @@ (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2eadd278"],{"0bc6":function(e,t,n){},"45e0":function(e,t,n){"use strict";var c=n("ebc8"),i=n.n(c);i.a},bb51:function(e,t,n){"use strict";n.r(t);var c=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"deckselection"},[n("DeckSelection",{attrs:{decks:e.decks,numberOfSelectedDecks:e.numberOfSelectedDecks}})],1)},i=[],s=(n("a9e3"),n("d4ec")),a=n("262e"),o=n("2caf"),r=n("9ab4"),d=n("2b0e"),l=n("2fe1"),u=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"DeckSelection"},[n("v-subheader",[e._v("Decks")]),e.decks.length>0?n("v-list",[n("v-list-item-group",{attrs:{multiple:"",color:"indigo"},model:{value:e.deckModel,callback:function(t){e.deckModel=t},expression:"deckModel"}},e._l(e.decks,(function(t){return n("v-list-item",{key:t.id,attrs:{value:t.id,id:t.id}},[n("v-list-item-content",[n("v-list-item-title",{domProps:{textContent:e._s(t.name)}})],1),n("v-list-item-icon",{class:{hidden:0===e.numberOfSelectedDecks,visible:e.numberOfSelectedDecks>0}},[t.selected?n("v-icon",[e._v("mdi-check-box-outline")]):n("v-icon",[e._v("mdi-checkbox-blank-outline")])],1)],1)})),1)],1):n("p",{attrs:{id:"no-decks-yet-notice"}},[e._v(" You don't have any decks yet. You might want to add some by clicking on the button in the bottom right corner. ")]),n("v-btn",{staticClass:"mx-2",attrs:{id:"btn-fixed-bottom-right-corner",fab:"",dark:"",color:"indigo"},on:{click:e.onButtonClick}},[n("v-icon",{class:{"rotate-90":e.numberOfSelectedDecks>0},domProps:{textContent:e._s(0===e.numberOfSelectedDecks?"mdi-plus":"mdi-navigation")}})],1)],1)},b=[],k=(n("4de4"),n("7db0"),n("4160"),n("caad"),n("d81d"),n("2532"),n("159b"),n("bee2")),f=d["a"].extend({props:{decks:{type:Array},numberOfSelectedDecks:Number}}),h=function(e){Object(a["a"])(n,e);var t=Object(o["a"])(n);function n(){return Object(s["a"])(this,n),t.apply(this,arguments)}return Object(k["a"])(n,[{key:"onButtonClick",value:function(){0===this.numberOfSelectedDecks?this.$router.push("add"):this.$router.push("learn")}},{key:"deckModel",get:function(){return this.decks.map((function(e){return e.selected?e.id:void 0})).filter((function(e){return void 0!==e}))},set:function(e){this.decks.forEach((function(t){t.selected=e.includes(t.id)}))}},{key:"selectedDeck",get:function(){var e=this;return 1!==this.deckModel.length?null:this.decks.find((function(t){return t.id===e.deckModel[0]}))}}]),n}(f);h=Object(r["a"])([l["a"]],h);var m=h,v=m,p=(n("45e0"),n("2877")),O=n("6544"),j=n.n(O),y=n("8336"),D=n("132d"),S=n("8860"),g=n("da13"),x=n("5d23"),_=n("1baa"),C=n("34c3"),V=n("e0c7"),w=Object(p["a"])(v,u,b,!1,null,"16f0e076",null),I=w.exports;j()(w,{VBtn:y["a"],VIcon:D["a"],VList:S["a"],VListItem:g["a"],VListItemContent:x["a"],VListItemGroup:_["a"],VListItemIcon:C["a"],VListItemTitle:x["b"],VSubheader:V["a"]});var $=d["a"].extend({props:{decks:{type:Array},numberOfSelectedDecks:Number}}),L=function(e){Object(a["a"])(n,e);var t=Object(o["a"])(n);function n(){return Object(s["a"])(this,n),t.apply(this,arguments)}return n}($);L=Object(r["a"])([Object(l["a"])({components:{DeckSelection:I}})],L);var M=L,B=M,E=Object(p["a"])(B,c,i,!1,null,null,null);t["default"]=E.exports},e0c7:function(e,t,n){"use strict";var c=n("5530"),i=(n("0bc6"),n("7560")),s=n("58df");t["a"]=Object(s["a"])(i["a"]).extend({name:"v-subheader",props:{inset:Boolean},render:function(e){return e("div",{staticClass:"v-subheader",class:Object(c["a"])({"v-subheader--inset":this.inset},this.themeClasses),attrs:this.$attrs,on:this.$listeners},this.$slots.default)}})},ebc8:function(e,t,n){}}]); -//# sourceMappingURL=chunk-2eadd278.72b7fa82.js.map \ No newline at end of file +//# sourceMappingURL=chunk-2eadd278.9c6c8c4b.js.map \ No newline at end of file diff --git a/js/chunk-2eadd278.72b7fa82.js.map b/js/chunk-2eadd278.9c6c8c4b.js.map similarity index 97% rename from js/chunk-2eadd278.72b7fa82.js.map rename to js/chunk-2eadd278.9c6c8c4b.js.map index 7f96e45..7504970 100644 --- a/js/chunk-2eadd278.72b7fa82.js.map +++ b/js/chunk-2eadd278.9c6c8c4b.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/components/deckselection/DeckSelection.vue?17e7","webpack:///./src/views/Home.vue?f188","webpack:///./src/components/deckselection/DeckSelection.vue?f738","webpack:///./src/components/deckselection/DeckSelection.vue","webpack:///./src/components/deckselection/DeckSelection.vue?b642","webpack:///./src/components/deckselection/DeckSelection.vue?554b","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?2823","webpack:///./src/views/Home.vue?1e69","webpack:///../../../src/components/VSubheader/VSubheader.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","decks","numberOfSelectedDecks","staticRenderFns","_v","length","model","value","callback","$$v","deckModel","expression","_l","deck","key","id","domProps","_s","name","class","hidden","visible","on","onButtonClick","DeckSelectionProps","extend","props","type","Array","Number","$router","push","map","selected","undefined","filter","newModel","forEach","includes","find","component","VBtn","VIcon","VList","VListItem","VListItemContent","VListItemGroup","VListItemIcon","VListItemTitle","VSubheader","HomeProps","components","DeckSelection","inset","Boolean","h","themeClasses","$listeners","$slots"],"mappings":"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","file":"js/chunk-2eadd278.72b7fa82.js","sourcesContent":["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!./DeckSelection.vue?vue&type=style&index=0&id=16f0e076&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!./DeckSelection.vue?vue&type=style&index=0&id=16f0e076&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"deckselection\"},[_c('DeckSelection',{attrs:{\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"DeckSelection\"},[_c('v-subheader',[_vm._v(\"Decks\")]),(_vm.decks.length > 0)?_c('v-list',[_c('v-list-item-group',{attrs:{\"multiple\":\"\",\"color\":\"indigo\"},model:{value:(_vm.deckModel),callback:function ($$v) {_vm.deckModel=$$v},expression:\"deckModel\"}},_vm._l((_vm.decks),function(deck){return _c('v-list-item',{key:deck.id,attrs:{\"value\":deck.id,\"id\":deck.id}},[_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(deck.name)}})],1),_c('v-list-item-icon',{class:{ hidden: _vm.numberOfSelectedDecks===0, visible: _vm.numberOfSelectedDecks>0 }},[(deck.selected)?_c('v-icon',[_vm._v(\"mdi-check-box-outline\")]):_c('v-icon',[_vm._v(\"mdi-checkbox-blank-outline\")])],1)],1)}),1)],1):_c('p',{attrs:{\"id\":\"no-decks-yet-notice\"}},[_vm._v(\" You don't have any decks yet. You might want to add some by clicking on the button in the bottom right corner. \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"id\":\"btn-fixed-bottom-right-corner\",\"fab\":\"\",\"dark\":\"\",\"color\":\"indigo\"},on:{\"click\":_vm.onButtonClick}},[_c('v-icon',{class:{ 'rotate-90': _vm.numberOfSelectedDecks > 0 },domProps:{\"textContent\":_vm._s(_vm.numberOfSelectedDecks === 0 ? 'mdi-plus' : 'mdi-navigation')}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck } from \"../../types\";\n\nconst DeckSelectionProps = Vue.extend({\n props: {\n decks: { type: Array as () => Deck[] },\n numberOfSelectedDecks: Number\n }\n});\n\n@Component\nexport default class DeckSelection extends DeckSelectionProps {\n get deckModel() {\n return this.decks\n .map(deck => (deck.selected ? deck.id : undefined))\n .filter(id => id !== undefined);\n }\n set deckModel(newModel) {\n this.decks.forEach(deck => {\n deck.selected = newModel.includes(deck.id);\n });\n }\n\n get selectedDeck() {\n return this.deckModel.length !== 1\n ? null\n : this.decks.find(deck => deck.id === this.deckModel[0]);\n }\n\n onButtonClick() {\n if (this.numberOfSelectedDecks === 0) {\n this.$router.push(\"add\");\n } else {\n // start learning with selected decks\n this.$router.push(\"learn\");\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeckSelection.vue?vue&type=template&id=16f0e076&scoped=true&\"\nimport script from \"./DeckSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeckSelection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DeckSelection.vue?vue&type=style&index=0&id=16f0e076&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 \"16f0e076\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemContent,VListItemGroup,VListItemIcon,VListItemTitle,VSubheader})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck } from \"../types\";\n\nimport DeckSelection from \"../components/deckselection/DeckSelection.vue\";\n\nconst HomeProps = Vue.extend({\n props: {\n decks: {type: Array as () => Deck[]},\n numberOfSelectedDecks: Number\n }\n});\n\n@Component({\n components: {\n DeckSelection\n }\n})\nexport default class Home extends HomeProps {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=6cf6bca2&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/components/deckselection/DeckSelection.vue?17e7","webpack:///./src/views/Home.vue?a34b","webpack:///./src/components/deckselection/DeckSelection.vue?de9c","webpack:///./src/components/deckselection/DeckSelection.vue","webpack:///./src/components/deckselection/DeckSelection.vue?b642","webpack:///./src/components/deckselection/DeckSelection.vue?554b","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?2823","webpack:///./src/views/Home.vue?1e69","webpack:///../../../src/components/VSubheader/VSubheader.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","decks","numberOfSelectedDecks","staticRenderFns","_v","length","model","value","callback","$$v","deckModel","expression","_l","deck","key","id","domProps","_s","name","class","hidden","visible","on","onButtonClick","DeckSelectionProps","extend","props","type","Array","Number","$router","push","map","selected","undefined","filter","newModel","forEach","includes","find","component","VBtn","VIcon","VList","VListItem","VListItemContent","VListItemGroup","VListItemIcon","VListItemTitle","VSubheader","HomeProps","components","DeckSelection","inset","Boolean","h","themeClasses","$listeners","$slots"],"mappings":"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","file":"js/chunk-2eadd278.9c6c8c4b.js","sourcesContent":["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!./DeckSelection.vue?vue&type=style&index=0&id=16f0e076&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!./DeckSelection.vue?vue&type=style&index=0&id=16f0e076&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"deckselection\"},[_c('DeckSelection',{attrs:{\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"DeckSelection\"},[_c('v-subheader',[_vm._v(\"Decks\")]),(_vm.decks.length > 0)?_c('v-list',[_c('v-list-item-group',{attrs:{\"multiple\":\"\",\"color\":\"indigo\"},model:{value:(_vm.deckModel),callback:function ($$v) {_vm.deckModel=$$v},expression:\"deckModel\"}},_vm._l((_vm.decks),function(deck){return _c('v-list-item',{key:deck.id,attrs:{\"value\":deck.id,\"id\":deck.id}},[_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(deck.name)}})],1),_c('v-list-item-icon',{class:{ hidden: _vm.numberOfSelectedDecks===0, visible: _vm.numberOfSelectedDecks>0 }},[(deck.selected)?_c('v-icon',[_vm._v(\"mdi-check-box-outline\")]):_c('v-icon',[_vm._v(\"mdi-checkbox-blank-outline\")])],1)],1)}),1)],1):_c('p',{attrs:{\"id\":\"no-decks-yet-notice\"}},[_vm._v(\" You don't have any decks yet. You might want to add some by clicking on the button in the bottom right corner. \")]),_c('v-btn',{staticClass:\"mx-2\",attrs:{\"id\":\"btn-fixed-bottom-right-corner\",\"fab\":\"\",\"dark\":\"\",\"color\":\"indigo\"},on:{\"click\":_vm.onButtonClick}},[_c('v-icon',{class:{ 'rotate-90': _vm.numberOfSelectedDecks > 0 },domProps:{\"textContent\":_vm._s(_vm.numberOfSelectedDecks === 0 ? 'mdi-plus' : 'mdi-navigation')}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck } from \"../../types\";\n\nconst DeckSelectionProps = Vue.extend({\n props: {\n decks: { type: Array as () => Deck[] },\n numberOfSelectedDecks: Number\n }\n});\n\n@Component\nexport default class DeckSelection extends DeckSelectionProps {\n get deckModel() {\n return this.decks\n .map(deck => (deck.selected ? deck.id : undefined))\n .filter(id => id !== undefined);\n }\n set deckModel(newModel) {\n this.decks.forEach(deck => {\n deck.selected = newModel.includes(deck.id);\n });\n }\n\n get selectedDeck() {\n return this.deckModel.length !== 1\n ? null\n : this.decks.find(deck => deck.id === this.deckModel[0]);\n }\n\n onButtonClick() {\n if (this.numberOfSelectedDecks === 0) {\n this.$router.push(\"add\");\n } else {\n // start learning with selected decks\n this.$router.push(\"learn\");\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeckSelection.vue?vue&type=template&id=16f0e076&scoped=true&\"\nimport script from \"./DeckSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeckSelection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DeckSelection.vue?vue&type=style&index=0&id=16f0e076&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 \"16f0e076\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemContent,VListItemGroup,VListItemIcon,VListItemTitle,VSubheader})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck } from \"../types\";\n\nimport DeckSelection from \"../components/deckselection/DeckSelection.vue\";\n\nconst HomeProps = Vue.extend({\n props: {\n decks: {type: Array as () => Deck[]},\n numberOfSelectedDecks: Number\n }\n});\n\n@Component({\n components: {\n DeckSelection\n }\n})\nexport default class Home extends HomeProps {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=6cf6bca2&\"\nimport script from \"./Home.vue?vue&type=script&lang=ts&\"\nexport * from \"./Home.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-6e220460.bc7e55ca.js b/js/chunk-6e220460.eea51f45.js similarity index 99% rename from js/chunk-6e220460.bc7e55ca.js rename to js/chunk-6e220460.eea51f45.js index 56146ad..3db7061 100644 --- a/js/chunk-6e220460.bc7e55ca.js +++ b/js/chunk-6e220460.eea51f45.js @@ -1,2 +1,2 @@ (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-6e220460"],{"0ad5":function(t,e,n){"use strict";var r=n("a80f"),i=n.n(r);i.a},"119d":function(t,e,n){"use strict";var r=n("3715"),i=n.n(r);i.a},"1da1":function(t,e,n){"use strict";n.d(e,"a",(function(){return i}));n("d3b7");function r(t,e,n,r,i,a,o){try{var c=t[a](o),s=c.value}catch(l){return void n(l)}c.done?e(s):Promise.resolve(s).then(r,i)}function i(t){return function(){var e=this,n=arguments;return new Promise((function(i,a){var o=t.apply(e,n);function c(t){r(o,i,a,c,s,"next",t)}function s(t){r(o,i,a,c,s,"throw",t)}c(void 0)}))}}},2677:function(t,e,n){"use strict";var r=n("8654");e["a"]=r["a"]},3715:function(t,e,n){},"4d63":function(t,e,n){var r=n("83ab"),i=n("da84"),a=n("94ca"),o=n("7156"),c=n("9bf2").f,s=n("241c").f,l=n("44e7"),u=n("ad6d"),h=n("9f7f"),f=n("6eeb"),p=n("d039"),d=n("69f3").set,v=n("2626"),b=n("b622"),g=b("match"),y=i.RegExp,m=y.prototype,w=/a/g,x=/a/g,O=new y(w)!==w,j=h.UNSUPPORTED_Y,C=r&&a("RegExp",!O||j||p((function(){return x[g]=!1,y(w)!=w||y(x)==x||"/a/i"!=y(w,"i")})));if(C){var k=function(t,e){var n,r=this instanceof k,i=l(t),a=void 0===e;if(!r&&i&&t.constructor===k&&a)return t;O?i&&!a&&(t=t.source):t instanceof k&&(a&&(e=u.call(t)),t=t.source),j&&(n=!!e&&e.indexOf("y")>-1,n&&(e=e.replace(/y/g,"")));var c=o(O?new y(t,e):y(t,e),r?this:m,k);return j&&n&&d(c,{sticky:n}),c},_=function(t){t in k||c(k,t,{configurable:!0,get:function(){return y[t]},set:function(e){y[t]=e}})},S=s(y),V=0;while(S.length>V)_(S[V++]);m.constructor=k,k.prototype=m,f(i,"RegExp",k)}v("RegExp")},5803:function(t,e,n){},"79fc":function(t,e,n){},"8a27":function(t,e,n){"use strict";var r=n("79fc"),i=n.n(r);i.a},"8adc":function(t,e,n){},"96cf":function(t,e,n){var r=function(t){"use strict";var e,n=Object.prototype,r=n.hasOwnProperty,i="function"===typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",o=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function s(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(F){s=function(t,e,n){return t[e]=n}}function l(t,e,n,r){var i=e&&e.prototype instanceof b?e:b,a=Object.create(i.prototype),o=new E(r||[]);return a._invoke=k(t,n,o),a}function u(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(F){return{type:"throw",arg:F}}}t.wrap=l;var h="suspendedStart",f="suspendedYield",p="executing",d="completed",v={};function b(){}function g(){}function y(){}var m={};m[a]=function(){return this};var w=Object.getPrototypeOf,x=w&&w(w(L([])));x&&x!==n&&r.call(x,a)&&(m=x);var O=y.prototype=b.prototype=Object.create(m);function j(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function C(t,e){function n(i,a,o,c){var s=u(t[i],t,a);if("throw"!==s.type){var l=s.arg,h=l.value;return h&&"object"===typeof h&&r.call(h,"__await")?e.resolve(h.__await).then((function(t){n("next",t,o,c)}),(function(t){n("throw",t,o,c)})):e.resolve(h).then((function(t){l.value=t,o(l)}),(function(t){return n("throw",t,o,c)}))}c(s.arg)}var i;function a(t,r){function a(){return new e((function(e,i){n(t,r,e,i)}))}return i=i?i.then(a,a):a()}this._invoke=a}function k(t,e,n){var r=h;return function(i,a){if(r===p)throw new Error("Generator is already running");if(r===d){if("throw"===i)throw a;return $()}n.method=i,n.arg=a;while(1){var o=n.delegate;if(o){var c=_(o,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===h)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=p;var s=u(t,e,n);if("normal"===s.type){if(r=n.done?d:f,s.arg===v)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r=d,n.method="throw",n.arg=s.arg)}}}function _(t,n){var r=t.iterator[n.method];if(r===e){if(n.delegate=null,"throw"===n.method){if(t.iterator["return"]&&(n.method="return",n.arg=e,_(t,n),"throw"===n.method))return v;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var i=u(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var a=i.arg;return a?a.done?(n[t.resultName]=a.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function V(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function E(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function L(t){if(t){var n=t[a];if(n)return n.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function n(){while(++i=0;--a){var o=this.tryEntries[a],c=o.completion;if("root"===o.tryLoc)return i("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),l=r.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),V(n),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;V(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:L(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}(t.exports);try{regeneratorRuntime=r}catch(i){Function("r","regeneratorRuntime = r")(r)}},a80f:function(t,e,n){},f28b:function(t,e,n){"use strict";n.r(e);var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"addnewdeck"},[n("AddNewDeckComponent")],1)},i=[],a=n("d4ec"),o=n("262e"),c=n("2caf"),s=n("9ab4"),l=n("2b0e"),u=n("2fe1"),h=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("v-container",{attrs:{fluid:""}},[n("v-row",[n("ThirdPartyDeckCard"),n("ImportDeckFromURL"),n("ImportDeckFromFile"),n("DeckCreator")],1)],1)],1)},f=[],p=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-col",{attrs:{cols:"12",sm:"12",md:"6",lg:"4",xl:"4"}},[n("v-card",{attrs:{height:"100%",raised:""}},[n("v-card-title",[t._v("Import Deck From URL")]),n("v-card-text",[n("v-text-field",{staticClass:"deck-input",attrs:{label:"Provide a File URL (Raw JSON)",outlined:"",clearable:"",rules:t.urlRules},model:{value:t.chosenURL,callback:function(e){t.chosenURL=e},expression:"chosenURL"}},[n("v-icon",{attrs:{slot:"prepend"},slot:"prepend"},[t._v("mdi-web")])],1)],1),n("v-card-actions",{staticClass:"button-padding"},[n("v-spacer"),n("v-btn",{attrs:{color:"indigo",right:""},on:{click:t.loadFileFromURL}},[t._v("Import File")])],1)],1)],1)},d=[],v=(n("d3b7"),n("4d63"),n("ac1f"),n("25f0"),n("96cf"),n("1da1")),b=n("bee2"),g=n("ebe2"),y=function(t){Object(o["a"])(n,t);var e=Object(c["a"])(n);function n(){var t;return Object(a["a"])(this,n),t=e.apply(this,arguments),t.chosenURL="",t.fileContent="",t.urlRules=[function(t){return null!==new RegExp("^https://.*/.*.json$").exec(t)||"Please provide a correct URL"}],t}return Object(b["a"])(n,[{key:"loadFileFromURL",value:function(){var t=Object(v["a"])(regeneratorRuntime.mark((function t(){var e,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,fetch(this.chosenURL);case 3:return e=t.sent,t.next=6,e.json();case 6:n=t.sent,this.$eventHub.$emit(g["a"].ADD_DECKS_FROM_JSON,n,this.chosenURL),t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),this.$eventHub.$emit(g["a"].SNACKBAR_EVENT,"An error occurred while loading the file");case 13:case"end":return t.stop()}}),t,this,[[0,10]])})));function e(){return t.apply(this,arguments)}return e}()}]),n}(l["a"]);y=Object(s["a"])([u["a"]],y);var m=y,w=m,x=(n("119d"),n("2877")),O=n("6544"),j=n.n(O),C=n("8336"),k=n("b0af"),_=n("99d9"),S=n("62ad"),V=n("132d"),E=n("2fa4"),L=n("8654"),$=Object(x["a"])(w,p,d,!1,null,"5ec5e837",null),F=$.exports;j()($,{VBtn:C["a"],VCard:k["a"],VCardActions:_["a"],VCardText:_["b"],VCardTitle:_["c"],VCol:S["a"],VIcon:V["a"],VSpacer:E["a"],VTextField:L["a"]});var R=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("v-col",{attrs:{cols:"12",sm:"12",md:"6",lg:"4",xl:"4"}},[n("v-card",{attrs:{height:"100%",raised:""}},[n("v-card-title",[t._v("Import a JSON File")]),n("v-card-text",[n("v-file-input",{staticClass:"deck-input",attrs:{outlined:"",clearable:"",label:"Select a JSON File",accept:".json"},model:{value:t.chosenFile,callback:function(e){t.chosenFile=e},expression:"chosenFile"}})],1),n("v-card-actions",{staticClass:"button-padding"},[n("v-spacer"),n("v-btn",{attrs:{color:"indigo",right:""},on:{click:t.importFile}},[t._v("Import File")])],1)],1)],1)},I=[],D=(n("b0c0"),function(t){Object(o["a"])(n,t);var e=Object(c["a"])(n);function n(){var t;return Object(a["a"])(this,n),t=e.apply(this,arguments),t.chosenFile=null,t.fileContent="",t}return Object(b["a"])(n,[{key:"importFile",value:function(){var t=this,e=new FileReader;try{if(null===this.chosenFile)throw new Error("No file chosen.");if(".json"!==this.chosenFile.name.substr(this.chosenFile.name.length-5))throw new Error("Wrong file format!");e.readAsText(this.chosenFile),e.onload=function(){t.$eventHub.$emit("addDecksFromFile",e.result)}}catch(n){this.$eventHub.$emit("snackbarEvent",n)}}}]),n}(l["a"]));D=Object(s["a"])([u["a"]],D);var T=D,B=T,N=(n("0ad5"),n("99af"),n("a623"),n("4160"),n("caad"),n("d81d"),n("13d5"),n("fb6a"),n("a434"),n("a9e3"),n("159b"),n("2909")),P=n("5530"),z=n("53ca"),A=(n("5803"),n("2677")),G=(n("4de4"),n("3835")),U=(n("8adc"),n("58df")),M=n("0789"),J=n("9d26"),H=n("a9ad"),Y=n("4e82"),K=n("7560"),W=n("f2e7"),q=n("1c87"),Q=n("af2b"),X=n("d9bd"),Z=Object(U["a"])(H["a"],Q["a"],q["a"],K["a"],Object(Y["a"])("chipGroup"),Object(W["b"])("inputValue")).extend({name:"v-chip",props:{active:{type:Boolean,default:!0},activeClass:{type:String,default:function(){return this.chipGroup?this.chipGroup.activeClass:""}},close:Boolean,closeIcon:{type:String,default:"$delete"},disabled:Boolean,draggable:Boolean,filter:Boolean,filterIcon:{type:String,default:"$complete"},label:Boolean,link:Boolean,outlined:Boolean,pill:Boolean,tag:{type:String,default:"span"},textColor:String,value:null},data:function(){return{proxyClass:"v-chip--active"}},computed:{classes:function(){return Object(P["a"])(Object(P["a"])(Object(P["a"])(Object(P["a"])({"v-chip":!0},q["a"].options.computed.classes.call(this)),{},{"v-chip--clickable":this.isClickable,"v-chip--disabled":this.disabled,"v-chip--draggable":this.draggable,"v-chip--label":this.label,"v-chip--link":this.isLink,"v-chip--no-color":!this.color,"v-chip--outlined":this.outlined,"v-chip--pill":this.pill,"v-chip--removable":this.hasClose},this.themeClasses),this.sizeableClasses),this.groupClasses)},hasClose:function(){return Boolean(this.close)},isClickable:function(){return Boolean(q["a"].options.computed.isClickable.call(this)||this.chipGroup)}},created:function(){var t=this,e=[["outline","outlined"],["selected","input-value"],["value","active"],["@input","@active.sync"]];e.forEach((function(e){var n=Object(G["a"])(e,2),r=n[0],i=n[1];t.$attrs.hasOwnProperty(r)&&Object(X["a"])(r,i,t)}))},methods:{click:function(t){this.$emit("click",t),this.chipGroup&&this.toggle()},genFilter:function(){var t=[];return this.isActive&&t.push(this.$createElement(J["a"],{staticClass:"v-chip__filter",props:{left:!0}},this.filterIcon)),this.$createElement(M["b"],t)},genClose:function(){var t=this;return this.$createElement(J["a"],{staticClass:"v-chip__close",props:{right:!0,size:18},on:{click:function(e){e.stopPropagation(),e.preventDefault(),t.$emit("click:close"),t.$emit("update:active",!1)}}},this.closeIcon)},genContent:function(){return this.$createElement("span",{staticClass:"v-chip__content"},[this.filter&&this.genFilter(),this.$slots.default,this.hasClose&&this.genClose()])}},render:function(t){var e=[this.genContent()],n=this.generateRouteLink(),r=n.tag,i=n.data;i.attrs=Object(P["a"])(Object(P["a"])({},i.attrs),{},{draggable:this.draggable?"true":void 0,tabindex:this.chipGroup&&!this.disabled?0:i.attrs.tabindex}),i.directives.push({name:"show",value:this.active}),i=this.setBackgroundColor(this.color,i);var a=this.textColor||this.outlined&&this.color;return t(r,this.setTextColor(a,i),e)}}),tt=n("80d2"),et=n("d9f7"),nt=A["a"].extend({name:"v-file-input",model:{prop:"value",event:"change"},props:{chips:Boolean,clearable:{type:Boolean,default:!0},counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,placeholder:String,prependIcon:{type:String,default:"$file"},readonly:{type:Boolean,default:!1},showSize:{type:[Boolean,Number],default:!1,validator:function(t){return"boolean"===typeof t||[1e3,1024].includes(t)}},smallChips:Boolean,truncateLength:{type:[Number,String],default:22},type:{type:String,default:"file"},value:{default:void 0,validator:function(t){return Object(tt["w"])(t).every((function(t){return null!=t&&"object"===Object(z["a"])(t)}))}}},computed:{classes:function(){return Object(P["a"])(Object(P["a"])({},A["a"].options.computed.classes.call(this)),{},{"v-file-input":!0})},computedCounterValue:function(){var t=this.isMultiple&&this.lazyValue?this.lazyValue.length:this.lazyValue instanceof File?1:0;if(!this.showSize)return this.$vuetify.lang.t(this.counterString,t);var e=this.internalArrayValue.reduce((function(t,e){var n=e.size,r=void 0===n?0:n;return t+r}),0);return this.$vuetify.lang.t(this.counterSizeString,t,Object(tt["o"])(e,1024===this.base))},internalArrayValue:function(){return Object(tt["w"])(this.internalValue)},internalValue:{get:function(){return this.lazyValue},set:function(t){this.lazyValue=t,this.$emit("change",this.lazyValue)}},isDirty:function(){return this.internalArrayValue.length>0},isLabelActive:function(){return this.isDirty},isMultiple:function(){return this.$attrs.hasOwnProperty("multiple")},text:function(){var t=this;return this.isDirty?this.internalArrayValue.map((function(e){var n=e.name,r=void 0===n?"":n,i=e.size,a=void 0===i?0:i,o=t.truncateText(r);return t.showSize?"".concat(o," (").concat(Object(tt["o"])(a,1024===t.base),")"):o})):[this.placeholder]},base:function(){return"boolean"!==typeof this.showSize?this.showSize:void 0},hasChips:function(){return this.chips||this.smallChips}},watch:{readonly:{handler:function(t){!0===t&&Object(X["b"])("readonly is not supported on ",this)},immediate:!0},value:function(t){var e=this.isMultiple?t:t?[t]:[];Object(tt["h"])(e,this.$refs.input.files)||(this.$refs.input.value="")}},methods:{clearableCallback:function(){this.internalValue=this.isMultiple?[]:void 0,this.$refs.input.value=""},genChips:function(){var t=this;return this.isDirty?this.text.map((function(e,n){return t.$createElement(Z,{props:{small:t.smallChips},on:{"click:close":function(){var e=t.internalValue;e.splice(n,1),t.internalValue=e}}},[e])})):[]},genControl:function(){var t=A["a"].options.methods.genControl.call(this);return this.hideInput&&(t.data.style=Object(et["b"])(t.data.style,{display:"none"})),t},genInput:function(){var t=A["a"].options.methods.genInput.call(this);return delete t.data.domProps.value,delete t.data.on.input,t.data.on.change=this.onInput,[this.genSelections(),t]},genPrependSlot:function(){var t=this;if(!this.prependIcon)return null;var e=this.genIcon("prepend",(function(){t.$refs.input.click()}));return this.genSlot("prepend","outer",[e])},genSelectionText:function(){var t=this.text.length;return t<2?this.text:this.showSize&&!this.counter?[this.computedCounterValue]:[this.$vuetify.lang.t(this.counterString,t)]},genSelections:function(){var t=this,e=[];return this.isDirty&&this.$scopedSlots.selection?this.internalArrayValue.forEach((function(n,r){t.$scopedSlots.selection&&e.push(t.$scopedSlots.selection({text:t.text[r],file:n,index:r}))})):e.push(this.hasChips&&this.isDirty?this.genChips():this.genSelectionText()),this.$createElement("div",{staticClass:"v-file-input__text",class:{"v-file-input__text--placeholder":this.placeholder&&!this.isDirty,"v-file-input__text--chips":this.hasChips&&!this.$scopedSlots.selection}},e)},genTextFieldSlot:function(){var t=this,e=A["a"].options.methods.genTextFieldSlot.call(this);return e.data.on=Object(P["a"])(Object(P["a"])({},e.data.on||{}),{},{click:function(){return t.$refs.input.click()}}),e},onInput:function(t){var e=Object(N["a"])(t.target.files||[]);this.internalValue=this.isMultiple?e:e[0],this.initialValue=this.internalValue},onKeyDown:function(t){this.$emit("keydown",t)},truncateText:function(t){if(t.length -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\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!./ThirdPartyDeckCard.vue?vue&type=style&index=0&id=504d8998&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!./ThirdPartyDeckCard.vue?vue&type=style&index=0&id=504d8998&scoped=true&lang=css&\"","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"addnewdeck\"},[_c('AddNewDeckComponent')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('ThirdPartyDeckCard'),_c('ImportDeckFromURL'),_c('ImportDeckFromFile'),_c('DeckCreator')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Import Deck From URL\")]),_c('v-card-text',[_c('v-text-field',{staticClass:\"deck-input\",attrs:{\"label\":\"Provide a File URL (Raw JSON)\",\"outlined\":\"\",\"clearable\":\"\",\"rules\":_vm.urlRules},model:{value:(_vm.chosenURL),callback:function ($$v) {_vm.chosenURL=$$v},expression:\"chosenURL\"}},[_c('v-icon',{attrs:{\"slot\":\"prepend\"},slot:\"prepend\"},[_vm._v(\"mdi-web\")])],1)],1),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"indigo\",\"right\":\"\"},on:{\"click\":_vm.loadFileFromURL}},[_vm._v(\"Import File\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Event } from \"../../types\";\n\n@Component\nexport default class ImportDeckFromURL extends Vue {\n chosenURL = \"\";\n fileContent = \"\";\n urlRules = [\n (value: string) =>\n new RegExp(\"^https://.*/.*.json$\").exec(value) !== null ||\n \"Please provide a correct URL\"\n ];\n async loadFileFromURL() {\n try {\n const response = await fetch(this.chosenURL);\n const fileContent = await response.json();\n this.$eventHub.$emit(Event.ADD_DECKS_FROM_JSON, fileContent, this.chosenURL);\n } catch (error) {\n // console.log(error);\n // TODO: cors?!\n this.$eventHub.$emit(\n Event.SNACKBAR_EVENT,\n \"An error occurred while loading the file\"\n );\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImportDeckFromURL.vue?vue&type=template&id=5ec5e837&scoped=true&\"\nimport script from \"./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImportDeckFromURL.vue?vue&type=style&index=0&id=5ec5e837&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 \"5ec5e837\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VIcon,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Import a JSON File\")]),_c('v-card-text',[_c('v-file-input',{staticClass:\"deck-input\",attrs:{\"outlined\":\"\",\"clearable\":\"\",\"label\":\"Select a JSON File\",\"accept\":\".json\"},model:{value:(_vm.chosenFile),callback:function ($$v) {_vm.chosenFile=$$v},expression:\"chosenFile\"}})],1),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"indigo\",\"right\":\"\"},on:{\"click\":_vm.importFile}},[_vm._v(\"Import File\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class ImportDeckFromFile extends Vue {\n chosenFile: File | null = null;\n fileContent = \"\";\n importFile() {\n const reader = new FileReader();\n try {\n if (this.chosenFile === null) {\n throw new Error(\"No file chosen.\");\n }\n if (\n this.chosenFile.name.substr(this.chosenFile.name.length - 5) !== \".json\"\n ) {\n throw new Error(\"Wrong file format!\");\n }\n reader.readAsText(this.chosenFile);\n reader.onload = () => {\n this.$eventHub.$emit(\"addDecksFromFile\", reader.result);\n };\n } catch (e) {\n this.$eventHub.$emit(\"snackbarEvent\", e);\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.isMultiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n isMultiple (): boolean {\n return this.$attrs.hasOwnProperty('multiple')\n },\n text (): string[] {\n if (!this.isDirty) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on ', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.isMultiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.isMultiple ? [] : undefined\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.isMultiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","import { render, staticRenderFns } from \"./ImportDeckFromFile.vue?vue&type=template&id=59404c0a&scoped=true&\"\nimport script from \"./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImportDeckFromFile.vue?vue&type=style&index=0&id=59404c0a&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 \"59404c0a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VFileInput,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Third Party Decks\")]),_c('v-card-text',[_vm._v(\" Easily import decks created by others. If you want to add your own deck to the selection, check out our \"),_c('a',{attrs:{\"href\":\"https://github.com/fancy-flashcard/ffc/\"}},[_vm._v(\"GitHub repository\")]),_vm._v(\"! \")]),_c('div',{staticClass:\"horizontal-spacer\"}),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"indigo\",\"right\":\"\"},on:{\"click\":function($event){return _vm.$router.push('thirdparty')}}},[_vm._v(\"View Third Party Decks\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class ThirdPartyDecks extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ThirdPartyDeckCard.vue?vue&type=template&id=504d8998&scoped=true&\"\nimport script from \"./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ThirdPartyDeckCard.vue?vue&type=style&index=0&id=504d8998&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 \"504d8998\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Deck Creator\")]),_c('v-card-text',[_c('p',[_vm._v(\"You will be able to natively create a new deck here.\")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class DeckCreator extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckCreator.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckCreator.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeckCreator.vue?vue&type=template&id=497952e4&scoped=true&\"\nimport script from \"./DeckCreator.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeckCreator.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"497952e4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCardTitle,VCol})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ImportDeckFromURL from \"./ImportDeckFromURL.vue\";\nimport ImportDeckFromFile from \"./ImportDeckFromFile.vue\";\nimport ThirdPartyDeckCard from \"./ThirdPartyDeckCard.vue\"\nimport DeckCreator from \"./DeckCreator.vue\";\n\n@Component({\n components: {\n ImportDeckFromURL,\n ImportDeckFromFile,\n ThirdPartyDeckCard,\n DeckCreator\n }\n})\nexport default class AddNewDeck extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddNewDeck.vue?vue&type=template&id=06c21afa&scoped=true&\"\nimport script from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06c21afa\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VContainer,VRow})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport AddNewDeckComponent from \"../components/addnewdeck/AddNewDeck.vue\";\n\n@Component({\n components: {\n AddNewDeckComponent\n }\n})\nexport default class AddNewDeck extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddNewDeck.vue?vue&type=template&id=5250e1c0&scoped=true&\"\nimport script from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5250e1c0\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/components/addnewdeck/ImportDeckFromFile.vue?53e3","webpack:///./src/components/addnewdeck/ImportDeckFromURL.vue?ece1","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///../../../src/components/VTextField/index.ts","webpack:///./node_modules/core-js/modules/es.regexp.constructor.js","webpack:///./src/components/addnewdeck/ThirdPartyDeckCard.vue?050e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./src/views/AddNewDeck.vue?c842","webpack:///./src/components/addnewdeck/AddNewDeck.vue?9d40","webpack:///./src/components/addnewdeck/ImportDeckFromURL.vue?a1dd","webpack:///./src/components/addnewdeck/ImportDeckFromURL.vue","webpack:///./src/components/addnewdeck/ImportDeckFromURL.vue?8647","webpack:///./src/components/addnewdeck/ImportDeckFromURL.vue?4b4c","webpack:///./src/components/addnewdeck/ImportDeckFromFile.vue?9967","webpack:///./src/components/addnewdeck/ImportDeckFromFile.vue","webpack:///./src/components/addnewdeck/ImportDeckFromFile.vue?34cc","webpack:///../../../src/components/VChip/VChip.ts","webpack:///../../../src/components/VFileInput/VFileInput.ts","webpack:///./src/components/addnewdeck/ImportDeckFromFile.vue?dfb2","webpack:///./src/components/addnewdeck/ThirdPartyDeckCard.vue?7f1f","webpack:///./src/components/addnewdeck/ThirdPartyDeckCard.vue","webpack:///./src/components/addnewdeck/ThirdPartyDeckCard.vue?eb2d","webpack:///./src/components/addnewdeck/ThirdPartyDeckCard.vue?bd81","webpack:///./src/components/addnewdeck/DeckCreator.vue?1d13","webpack:///./src/components/addnewdeck/DeckCreator.vue","webpack:///./src/components/addnewdeck/DeckCreator.vue?3465","webpack:///./src/components/addnewdeck/DeckCreator.vue?abb1","webpack:///./src/components/addnewdeck/AddNewDeck.vue","webpack:///./src/components/addnewdeck/AddNewDeck.vue?8742","webpack:///./src/components/addnewdeck/AddNewDeck.vue?2179","webpack:///./src/views/AddNewDeck.vue","webpack:///./src/views/AddNewDeck.vue?5098","webpack:///./src/views/AddNewDeck.vue?2fe7"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","DESCRIPTORS","global","isForced","inheritIfRequired","defineProperty","f","getOwnPropertyNames","isRegExp","getFlags","stickyHelpers","redefine","fails","setInternalState","set","setSpecies","wellKnownSymbol","MATCH","NativeRegExp","RegExp","RegExpPrototype","prototype","re1","re2","CORRECT_NEW","UNSUPPORTED_Y","FORCED","RegExpWrapper","pattern","flags","sticky","thisIsRegExp","patternIsRegExp","flagsAreUndefined","constructor","source","call","indexOf","replace","result","proxy","configurable","get","it","keys","index","length","runtime","exports","Op","Object","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","enumerable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","type","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","i","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","iter","toString","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","_vm","_h","$createElement","_c","_self","staticClass","staticRenderFns","attrs","_v","urlRules","model","callback","$$v","chosenURL","expression","slot","on","loadFileFromURL","fileContent","exec","fetch","response","json","$eventHub","$emit","ADD_DECKS_FROM_JSON","SNACKBAR_EVENT","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VIcon","VSpacer","VTextField","chosenFile","importFile","reader","FileReader","substr","readAsText","onload","e","mixins","props","active","default","activeClass","chipGroup","close","closeIcon","disabled","draggable","filter","filterIcon","label","link","outlined","pill","tag","textColor","data","proxyClass","computed","classes","groupClasses","hasClose","Boolean","isClickable","created","breakingProps","original","replacement","methods","click","genFilter","children","left","genClose","right","size","genContent","$slots","render","tabindex","setBackgroundColor","color","h","setTextColor","prop","event","chips","clearable","counterSizeString","counterString","hideInput","placeholder","prependIcon","readonly","showSize","validator","v","includes","smallChips","truncateLength","Number","val","computedCounterValue","fileCount","isMultiple","lazyValue","$vuetify","lang","t","bytes","internalArrayValue","reduce","base","internalValue","isDirty","isLabelActive","$attrs","text","map","file","truncatedText","hasChips","watch","handler","console","immediate","$refs","input","clearableCallback","genChips","small","genControl","display","genInput","genPrependSlot","icon","genIcon","genSlot","genSelectionText","genSelections","$scopedSlots","class","selection","genTextFieldSlot","node","onInput","files","onKeyDown","truncateText","str","charsKeepOneSide","Math","VFileInput","$event","$router","components","ImportDeckFromURL","ImportDeckFromFile","ThirdPartyDeckCard","DeckCreator","VContainer","VRow","AddNewDeckComponent"],"mappings":"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","file":"js/chunk-6e220460.eea51f45.js","sourcesContent":["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!./ImportDeckFromFile.vue?vue&type=style&index=0&id=59404c0a&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!./ImportDeckFromFile.vue?vue&type=style&index=0&id=59404c0a&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!./ImportDeckFromURL.vue?vue&type=style&index=0&id=5ec5e837&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!./ImportDeckFromURL.vue?vue&type=style&index=0&id=5ec5e837&scoped=true&lang=css&\"","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import VTextField from './VTextField'\n\nexport { VTextField }\nexport default VTextField\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isRegExp = require('../internals/is-regexp');\nvar getFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar setInternalState = require('../internals/internal-state').set;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar FORCED = DESCRIPTORS && isForced('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n})));\n\n// `RegExp` constructor\n// https://tc39.github.io/ecma262/#sec-regexp-constructor\nif (FORCED) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = this instanceof RegExpWrapper;\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var sticky;\n\n if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {\n return pattern;\n }\n\n if (CORRECT_NEW) {\n if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;\n } else if (pattern instanceof RegExpWrapper) {\n if (flagsAreUndefined) flags = getFlags.call(pattern);\n pattern = pattern.source;\n }\n\n if (UNSUPPORTED_Y) {\n sticky = !!flags && flags.indexOf('y') > -1;\n if (sticky) flags = flags.replace(/y/g, '');\n }\n\n var result = inheritIfRequired(\n CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),\n thisIsRegExp ? this : RegExpPrototype,\n RegExpWrapper\n );\n\n if (UNSUPPORTED_Y && sticky) setInternalState(result, { sticky: sticky });\n\n return result;\n };\n var proxy = function (key) {\n key in RegExpWrapper || defineProperty(RegExpWrapper, key, {\n configurable: true,\n get: function () { return NativeRegExp[key]; },\n set: function (it) { NativeRegExp[key] = it; }\n });\n };\n var keys = getOwnPropertyNames(NativeRegExp);\n var index = 0;\n while (keys.length > index) proxy(keys[index++]);\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n redefine(global, 'RegExp', RegExpWrapper);\n}\n\n// https://tc39.github.io/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\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!./ThirdPartyDeckCard.vue?vue&type=style&index=0&id=504d8998&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!./ThirdPartyDeckCard.vue?vue&type=style&index=0&id=504d8998&scoped=true&lang=css&\"","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"addnewdeck\"},[_c('AddNewDeckComponent')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('ThirdPartyDeckCard'),_c('ImportDeckFromURL'),_c('ImportDeckFromFile'),_c('DeckCreator')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Import Deck From URL\")]),_c('v-card-text',[_c('v-text-field',{staticClass:\"deck-input\",attrs:{\"label\":\"Provide a File URL (Raw JSON)\",\"outlined\":\"\",\"clearable\":\"\",\"rules\":_vm.urlRules},model:{value:(_vm.chosenURL),callback:function ($$v) {_vm.chosenURL=$$v},expression:\"chosenURL\"}},[_c('v-icon',{attrs:{\"slot\":\"prepend\"},slot:\"prepend\"},[_vm._v(\"mdi-web\")])],1)],1),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"indigo\",\"right\":\"\"},on:{\"click\":_vm.loadFileFromURL}},[_vm._v(\"Import File\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Event } from \"../../types\";\n\n@Component\nexport default class ImportDeckFromURL extends Vue {\n chosenURL = \"\";\n fileContent = \"\";\n urlRules = [\n (value: string) =>\n new RegExp(\"^https://.*/.*.json$\").exec(value) !== null ||\n \"Please provide a correct URL\"\n ];\n async loadFileFromURL() {\n try {\n const response = await fetch(this.chosenURL);\n const fileContent = await response.json();\n this.$eventHub.$emit(Event.ADD_DECKS_FROM_JSON, fileContent, this.chosenURL);\n } catch (error) {\n // console.log(error);\n // TODO: cors?!\n this.$eventHub.$emit(\n Event.SNACKBAR_EVENT,\n \"An error occurred while loading the file\"\n );\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImportDeckFromURL.vue?vue&type=template&id=5ec5e837&scoped=true&\"\nimport script from \"./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportDeckFromURL.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImportDeckFromURL.vue?vue&type=style&index=0&id=5ec5e837&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 \"5ec5e837\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VIcon,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Import a JSON File\")]),_c('v-card-text',[_c('v-file-input',{staticClass:\"deck-input\",attrs:{\"outlined\":\"\",\"clearable\":\"\",\"label\":\"Select a JSON File\",\"accept\":\".json\"},model:{value:(_vm.chosenFile),callback:function ($$v) {_vm.chosenFile=$$v},expression:\"chosenFile\"}})],1),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"indigo\",\"right\":\"\"},on:{\"click\":_vm.importFile}},[_vm._v(\"Import File\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class ImportDeckFromFile extends Vue {\n chosenFile: File | null = null;\n fileContent = \"\";\n importFile() {\n const reader = new FileReader();\n try {\n if (this.chosenFile === null) {\n throw new Error(\"No file chosen.\");\n }\n if (\n this.chosenFile.name.substr(this.chosenFile.name.length - 5) !== \".json\"\n ) {\n throw new Error(\"Wrong file format!\");\n }\n reader.readAsText(this.chosenFile);\n reader.onload = () => {\n this.$eventHub.$emit(\"addDecksFromFile\", reader.result);\n };\n } catch (e) {\n this.$eventHub.$emit(\"snackbarEvent\", e);\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.isMultiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n isMultiple (): boolean {\n return this.$attrs.hasOwnProperty('multiple')\n },\n text (): string[] {\n if (!this.isDirty) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on ', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.isMultiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.isMultiple ? [] : undefined\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.isMultiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","import { render, staticRenderFns } from \"./ImportDeckFromFile.vue?vue&type=template&id=59404c0a&scoped=true&\"\nimport script from \"./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImportDeckFromFile.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImportDeckFromFile.vue?vue&type=style&index=0&id=59404c0a&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 \"59404c0a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VFileInput,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Third Party Decks\")]),_c('v-card-text',[_vm._v(\" Easily import decks created by others. If you want to add your own deck to the selection, check out our \"),_c('a',{attrs:{\"href\":\"https://github.com/fancy-flashcard/ffc/\"}},[_vm._v(\"GitHub repository\")]),_vm._v(\"! \")]),_c('div',{staticClass:\"horizontal-spacer\"}),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"indigo\",\"right\":\"\"},on:{\"click\":function($event){return _vm.$router.push('thirdparty')}}},[_vm._v(\"View Third Party Decks\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class ThirdPartyDecks extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ThirdPartyDeckCard.vue?vue&type=template&id=504d8998&scoped=true&\"\nimport script from \"./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThirdPartyDeckCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ThirdPartyDeckCard.vue?vue&type=style&index=0&id=504d8998&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 \"504d8998\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VSpacer})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"4\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Deck Creator\")]),_c('v-card-text',[_c('p',[_vm._v(\"You will be able to natively create a new deck here.\")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\n@Component\nexport default class DeckCreator extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckCreator.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeckCreator.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DeckCreator.vue?vue&type=template&id=497952e4&scoped=true&\"\nimport script from \"./DeckCreator.vue?vue&type=script&lang=ts&\"\nexport * from \"./DeckCreator.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"497952e4\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCard,VCardText,VCardTitle,VCol})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ImportDeckFromURL from \"./ImportDeckFromURL.vue\";\nimport ImportDeckFromFile from \"./ImportDeckFromFile.vue\";\nimport ThirdPartyDeckCard from \"./ThirdPartyDeckCard.vue\"\nimport DeckCreator from \"./DeckCreator.vue\";\n\n@Component({\n components: {\n ImportDeckFromURL,\n ImportDeckFromFile,\n ThirdPartyDeckCard,\n DeckCreator\n }\n})\nexport default class AddNewDeck extends Vue {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddNewDeck.vue?vue&type=template&id=06c21afa&scoped=true&\"\nimport script from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06c21afa\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VContainer,VRow})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport AddNewDeckComponent from \"../components/addnewdeck/AddNewDeck.vue\";\n\n@Component({\n components: {\n AddNewDeckComponent\n }\n})\nexport default class AddNewDeck extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewDeck.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AddNewDeck.vue?vue&type=template&id=5250e1c0&scoped=true&\"\nimport script from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\nexport * from \"./AddNewDeck.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5250e1c0\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-75fc5bce.b6ba9b47.js b/js/chunk-75fc5bce.31fd23e9.js similarity index 98% rename from js/chunk-75fc5bce.b6ba9b47.js rename to js/chunk-75fc5bce.31fd23e9.js index 774dd7d..9ad59e6 100644 --- a/js/chunk-75fc5bce.b6ba9b47.js +++ b/js/chunk-75fc5bce.31fd23e9.js @@ -1,2 +1,2 @@ (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-75fc5bce"],{1820:function(t,a,e){"use strict";var r=e("5238"),i=e.n(r);i.a},"26d3":function(t,a,e){"use strict";e.r(a);var r=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",{staticClass:"settings"},[e("SettingsComponent",{attrs:{cardLimit:t.cardLimit}})],1)},i=[],n=e("d4ec"),c=e("262e"),l=e("2caf"),s=e("9ab4"),o=e("2b0e"),d=e("2fe1"),u=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("div",[e("v-container",{attrs:{fluid:""}},[e("v-row",[e("CardLimit",{attrs:{cardLimit:t.cardLimit}}),e("ClearLocalStorage")],1)],1)],1)},v=[],b=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("v-col",{attrs:{cols:"12",sm:"12",md:"6",lg:"6",xl:"6"}},[e("v-card",{attrs:{height:"100%",raised:""}},[e("v-card-title",[t._v("Card Limit")]),e("v-card-text",[e("p",{staticClass:"paragraph"},[t._v(" Limit the number of cards that will be in each learning session. "),e("v-icon",{staticClass:"mx-1",attrs:{size:"1em"},on:{click:function(a){t.showHelpText=!t.showHelpText}}},[t._v("mdi-help-circle-outline")])],1),e("p",{directives:[{name:"show",rawName:"v-show",value:t.showHelpText,expression:"showHelpText"}],staticClass:"description"},[t._v("If the given deck(s) has (have) less cards it will default to the number of cards in the given deck(s).")]),e("v-text-field",{attrs:{type:"number",min:"1",label:t.label,"hide-details":"auto",outlined:""},model:{value:t.curCardLimit,callback:function(a){t.curCardLimit=a},expression:"curCardLimit"}})],1),e("v-card-actions",{staticClass:"button-padding"},[e("v-spacer"),e("v-btn",{attrs:{color:"red",right:""},on:{click:t.deactivatecardLimit}},[t._v("Deactivate Limit")])],1)],1)],1)},m=[],p=e("bee2"),h=e("ebe2"),f=o["a"].extend({props:{cardLimit:String}}),C=function(t){Object(c["a"])(e,t);var a=Object(l["a"])(e);function e(){var t;return Object(n["a"])(this,e),t=a.apply(this,arguments),t.noLimitString="Currently no limit",t.defaultLabel="Card Limit",t.showHelpText=!1,t}return Object(p["a"])(e,[{key:"deactivatecardLimit",value:function(){this.$eventHub.$emit(h["a"].UPDATE_CARD_LIMIT,"0")}},{key:"label",get:function(){return this.curCardLimit?this.defaultLabel:this.noLimitString}},{key:"curCardLimit",get:function(){return"0"!==this.cardLimit&&this.cardLimit?this.cardLimit:null},set:function(t){this.$eventHub.$emit(h["a"].UPDATE_CARD_LIMIT,t)}}]),e}(f);C=Object(s["a"])([d["a"]],C);var g=C,L=g,O=(e("5f6b"),e("2877")),j=e("6544"),x=e.n(j),w=e("8336"),_=e("b0af"),S=e("99d9"),V=e("62ad"),k=e("132d"),y=e("2fa4"),T=e("8654"),$=Object(O["a"])(L,b,m,!1,null,"6087d784",null),A=$.exports;x()($,{VBtn:w["a"],VCard:_["a"],VCardActions:S["a"],VCardText:S["b"],VCardTitle:S["c"],VCol:V["a"],VIcon:k["a"],VSpacer:y["a"],VTextField:T["a"]});var E=function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("v-col",{attrs:{cols:"12",sm:"12",md:"6",lg:"6",xl:"6"}},[e("v-card",{attrs:{height:"100%",raised:""}},[e("v-card-title",[t._v("Clear Local Storage")]),e("v-card-text",[e("p",[t._v("Delete all imported decks as well as your learning progess in the app.")])]),e("div",{staticClass:"horizontal-spacer"}),e("v-card-actions",{staticClass:"button-padding"},[e("v-spacer"),e("v-btn",{attrs:{color:"red",right:""},on:{click:t.clearLocalStorage}},[t._v("Clear Local Storage")])],1)],1)],1)},H=[];function D(t){t.$eventHub.$emit("showCustomDialog",{title:"Clear Storage?",message:"Do you really want to clear your local storage? Every deck and learning progress will be lost.",buttons:[{name:"Cancel",color:"grey"},{name:"Clear Storage",color:"orange darken-1",callback:function(){t.$eventHub.$emit(h["a"].CLEAR_LOCAL_STORAGE)}}]})}var I=function(t){Object(c["a"])(e,t);var a=Object(l["a"])(e);function e(){return Object(n["a"])(this,e),a.apply(this,arguments)}return Object(p["a"])(e,[{key:"clearLocalStorage",value:function(){D(this)}}]),e}(o["a"]);I=Object(s["a"])([d["a"]],I);var R=I,z=R,B=(e("1820"),Object(O["a"])(z,E,H,!1,null,"8d3280ae",null)),J=B.exports;x()(B,{VBtn:w["a"],VCard:_["a"],VCardActions:S["a"],VCardText:S["b"],VCardTitle:S["c"],VCol:V["a"],VSpacer:y["a"]});var M=o["a"].extend({props:{cardLimit:String}}),P=function(t){Object(c["a"])(e,t);var a=Object(l["a"])(e);function e(){return Object(n["a"])(this,e),a.apply(this,arguments)}return e}(M);P=Object(s["a"])([Object(d["a"])({components:{CardLimit:A,ClearLocalStorage:J}})],P);var U=P,F=U,G=e("a523"),N=e("0fd9"),q=Object(O["a"])(F,u,v,!1,null,"5f69376a",null),K=q.exports;x()(q,{VContainer:G["a"],VRow:N["a"]});var Q=o["a"].extend({props:{cardLimit:String}}),W=function(t){Object(c["a"])(e,t);var a=Object(l["a"])(e);function e(){return Object(n["a"])(this,e),a.apply(this,arguments)}return e}(Q);W=Object(s["a"])([Object(d["a"])({components:{SettingsComponent:K}})],W);var X=W,Y=X,Z=Object(O["a"])(Y,r,i,!1,null,"2698e76f",null);a["default"]=Z.exports},5238:function(t,a,e){},"5f6b":function(t,a,e){"use strict";var r=e("9d37"),i=e.n(r);i.a},"9d37":function(t,a,e){}}]); -//# sourceMappingURL=chunk-75fc5bce.b6ba9b47.js.map \ No newline at end of file +//# sourceMappingURL=chunk-75fc5bce.31fd23e9.js.map \ No newline at end of file diff --git a/js/chunk-75fc5bce.b6ba9b47.js.map b/js/chunk-75fc5bce.31fd23e9.js.map similarity index 98% rename from js/chunk-75fc5bce.b6ba9b47.js.map rename to js/chunk-75fc5bce.31fd23e9.js.map index 673adc0..2f94d87 100644 --- a/js/chunk-75fc5bce.b6ba9b47.js.map +++ b/js/chunk-75fc5bce.31fd23e9.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/components/settings/ClearLocalStorage.vue?1262","webpack:///./src/views/Settings.vue?d9fc","webpack:///./src/components/settings/Settings.vue?1761","webpack:///./src/components/settings/CardLimit.vue?7bce","webpack:///./src/components/settings/CardLimit.vue","webpack:///./src/components/settings/CardLimit.vue?ec2a","webpack:///./src/components/settings/CardLimit.vue?3255","webpack:///./src/components/settings/ClearLocalStorage.vue?1f3e","webpack:///./src/helpers/clearStorageDialogHelper.ts","webpack:///./src/components/settings/ClearLocalStorage.vue","webpack:///./src/components/settings/ClearLocalStorage.vue?c0ba","webpack:///./src/components/settings/ClearLocalStorage.vue?aab2","webpack:///./src/components/settings/Settings.vue","webpack:///./src/components/settings/Settings.vue?a62e","webpack:///./src/components/settings/Settings.vue?9336","webpack:///./src/views/Settings.vue","webpack:///./src/views/Settings.vue?e7f2","webpack:///./src/views/Settings.vue?bf82","webpack:///./src/components/settings/CardLimit.vue?93e6"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","cardLimit","staticRenderFns","_v","on","$event","showHelpText","directives","name","rawName","value","expression","label","model","callback","$$v","curCardLimit","deactivatecardLimit","CardLimitProps","extend","props","String","noLimitString","defaultLabel","$eventHub","$emit","UPDATE_CARD_LIMIT","newValue","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VIcon","VSpacer","VTextField","clearLocalStorage","clearLocalStorageDialog","context","title","message","buttons","color","CLEAR_LOCAL_STORAGE","SettingProps","components","CardLimit","ClearLocalStorage","VContainer","VRow","SettingsComponent"],"mappings":"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","file":"js/chunk-75fc5bce.b6ba9b47.js","sourcesContent":["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!./ClearLocalStorage.vue?vue&type=style&index=0&id=8d3280ae&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!./ClearLocalStorage.vue?vue&type=style&index=0&id=8d3280ae&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings\"},[_c('SettingsComponent',{attrs:{\"cardLimit\":_vm.cardLimit}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('CardLimit',{attrs:{\"cardLimit\":_vm.cardLimit}}),_c('ClearLocalStorage')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Card Limit\")]),_c('v-card-text',[_c('p',{staticClass:\"paragraph\"},[_vm._v(\" Limit the number of cards that will be in each learning session. \"),_c('v-icon',{staticClass:\"mx-1\",attrs:{\"size\":\"1em\"},on:{\"click\":function($event){_vm.showHelpText = !_vm.showHelpText}}},[_vm._v(\"mdi-help-circle-outline\")])],1),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showHelpText),expression:\"showHelpText\"}],staticClass:\"description\"},[_vm._v(\"If the given deck(s) has (have) less cards it will default to the number of cards in the given deck(s).\")]),_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"1\",\"label\":_vm.label,\"hide-details\":\"auto\",\"outlined\":\"\"},model:{value:(_vm.curCardLimit),callback:function ($$v) {_vm.curCardLimit=$$v},expression:\"curCardLimit\"}})],1),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\",\"right\":\"\"},on:{\"click\":_vm.deactivatecardLimit}},[_vm._v(\"Deactivate Limit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Event } from \"../../types\";\n\nconst CardLimitProps = Vue.extend({\n props: {\n cardLimit: String\n }\n});\n\n@Component\nexport default class CardLimit extends CardLimitProps {\n noLimitString = \"Currently no limit\";\n defaultLabel = \"Card Limit\";\n showHelpText = false;\n\n get label() {\n return this.curCardLimit ? this.defaultLabel : this.noLimitString;\n }\n\n get curCardLimit() {\n return this.cardLimit === \"0\" || !this.cardLimit ? null : this.cardLimit;\n }\n\n set curCardLimit(newValue) {\n this.$eventHub.$emit(Event.UPDATE_CARD_LIMIT, newValue);\n }\n\n deactivatecardLimit() {\n this.$eventHub.$emit(Event.UPDATE_CARD_LIMIT, \"0\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLimit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLimit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardLimit.vue?vue&type=template&id=6087d784&scoped=true&\"\nimport script from \"./CardLimit.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardLimit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardLimit.vue?vue&type=style&index=0&id=6087d784&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 \"6087d784\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VIcon,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Clear Local Storage\")]),_c('v-card-text',[_c('p',[_vm._v(\"Delete all imported decks as well as your learning progess in the app.\")])]),_c('div',{staticClass:\"horizontal-spacer\"}),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\",\"right\":\"\"},on:{\"click\":_vm.clearLocalStorage}},[_vm._v(\"Clear Local Storage\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Event } from \"../types\";\n\nexport function clearLocalStorageDialog(context: any) {\n context.$eventHub.$emit(\"showCustomDialog\", {\n title: \"Clear Storage?\",\n message:\n \"Do you really want to clear your local storage? Every deck and learning progress will be lost.\",\n buttons: [\n {\n name: \"Cancel\",\n color: \"grey\",\n },\n {\n name: \"Clear Storage\",\n color: \"orange darken-1\",\n callback: () => {\n context.$eventHub.$emit(\n Event.CLEAR_LOCAL_STORAGE\n );\n },\n },\n ],\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport * as clearStorageDialogHelper from \"../../helpers/clearStorageDialogHelper\";\n\n@Component\nexport default class ClearLocalStorage extends Vue {\n clearLocalStorage() {\n clearStorageDialogHelper.clearLocalStorageDialog(this);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearLocalStorage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearLocalStorage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ClearLocalStorage.vue?vue&type=template&id=8d3280ae&scoped=true&\"\nimport script from \"./ClearLocalStorage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ClearLocalStorage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ClearLocalStorage.vue?vue&type=style&index=0&id=8d3280ae&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 \"8d3280ae\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport CardLimit from \"./CardLimit.vue\";\nimport ClearLocalStorage from \"./ClearLocalStorage.vue\";\n\nconst SettingProps = Vue.extend({\n props: {\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n CardLimit,\n ClearLocalStorage\n }\n})\nexport default class Settings extends SettingProps {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=5f69376a&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f69376a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VContainer,VRow})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport SettingsComponent from \"../components/settings/Settings.vue\";\n\nconst SettingProps = Vue.extend({\n props: {\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n SettingsComponent\n }\n})\nexport default class Settings extends SettingProps {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=2698e76f&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2698e76f\",\n null\n \n)\n\nexport default component.exports","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!./CardLimit.vue?vue&type=style&index=0&id=6087d784&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!./CardLimit.vue?vue&type=style&index=0&id=6087d784&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/components/settings/ClearLocalStorage.vue?1262","webpack:///./src/views/Settings.vue?973d","webpack:///./src/components/settings/Settings.vue?4504","webpack:///./src/components/settings/CardLimit.vue?5702","webpack:///./src/components/settings/CardLimit.vue","webpack:///./src/components/settings/CardLimit.vue?ec2a","webpack:///./src/components/settings/CardLimit.vue?3255","webpack:///./src/components/settings/ClearLocalStorage.vue?dd5c","webpack:///./src/helpers/clearStorageDialogHelper.ts","webpack:///./src/components/settings/ClearLocalStorage.vue","webpack:///./src/components/settings/ClearLocalStorage.vue?c0ba","webpack:///./src/components/settings/ClearLocalStorage.vue?aab2","webpack:///./src/components/settings/Settings.vue","webpack:///./src/components/settings/Settings.vue?a62e","webpack:///./src/components/settings/Settings.vue?9336","webpack:///./src/views/Settings.vue","webpack:///./src/views/Settings.vue?e7f2","webpack:///./src/views/Settings.vue?bf82","webpack:///./src/components/settings/CardLimit.vue?93e6"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","cardLimit","staticRenderFns","_v","on","$event","showHelpText","directives","name","rawName","value","expression","label","model","callback","$$v","curCardLimit","deactivatecardLimit","CardLimitProps","extend","props","String","noLimitString","defaultLabel","$eventHub","$emit","UPDATE_CARD_LIMIT","newValue","component","VBtn","VCard","VCardActions","VCardText","VCardTitle","VCol","VIcon","VSpacer","VTextField","clearLocalStorage","clearLocalStorageDialog","context","title","message","buttons","color","CLEAR_LOCAL_STORAGE","SettingProps","components","CardLimit","ClearLocalStorage","VContainer","VRow","SettingsComponent"],"mappings":"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","file":"js/chunk-75fc5bce.31fd23e9.js","sourcesContent":["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!./ClearLocalStorage.vue?vue&type=style&index=0&id=8d3280ae&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!./ClearLocalStorage.vue?vue&type=style&index=0&id=8d3280ae&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings\"},[_c('SettingsComponent',{attrs:{\"cardLimit\":_vm.cardLimit}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('v-row',[_c('CardLimit',{attrs:{\"cardLimit\":_vm.cardLimit}}),_c('ClearLocalStorage')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Card Limit\")]),_c('v-card-text',[_c('p',{staticClass:\"paragraph\"},[_vm._v(\" Limit the number of cards that will be in each learning session. \"),_c('v-icon',{staticClass:\"mx-1\",attrs:{\"size\":\"1em\"},on:{\"click\":function($event){_vm.showHelpText = !_vm.showHelpText}}},[_vm._v(\"mdi-help-circle-outline\")])],1),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showHelpText),expression:\"showHelpText\"}],staticClass:\"description\"},[_vm._v(\"If the given deck(s) has (have) less cards it will default to the number of cards in the given deck(s).\")]),_c('v-text-field',{attrs:{\"type\":\"number\",\"min\":\"1\",\"label\":_vm.label,\"hide-details\":\"auto\",\"outlined\":\"\"},model:{value:(_vm.curCardLimit),callback:function ($$v) {_vm.curCardLimit=$$v},expression:\"curCardLimit\"}})],1),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\",\"right\":\"\"},on:{\"click\":_vm.deactivatecardLimit}},[_vm._v(\"Deactivate Limit\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Event } from \"../../types\";\n\nconst CardLimitProps = Vue.extend({\n props: {\n cardLimit: String\n }\n});\n\n@Component\nexport default class CardLimit extends CardLimitProps {\n noLimitString = \"Currently no limit\";\n defaultLabel = \"Card Limit\";\n showHelpText = false;\n\n get label() {\n return this.curCardLimit ? this.defaultLabel : this.noLimitString;\n }\n\n get curCardLimit() {\n return this.cardLimit === \"0\" || !this.cardLimit ? null : this.cardLimit;\n }\n\n set curCardLimit(newValue) {\n this.$eventHub.$emit(Event.UPDATE_CARD_LIMIT, newValue);\n }\n\n deactivatecardLimit() {\n this.$eventHub.$emit(Event.UPDATE_CARD_LIMIT, \"0\");\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLimit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardLimit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CardLimit.vue?vue&type=template&id=6087d784&scoped=true&\"\nimport script from \"./CardLimit.vue?vue&type=script&lang=ts&\"\nexport * from \"./CardLimit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CardLimit.vue?vue&type=style&index=0&id=6087d784&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 \"6087d784\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VIcon,VSpacer,VTextField})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"6\",\"lg\":\"6\",\"xl\":\"6\"}},[_c('v-card',{attrs:{\"height\":\"100%\",\"raised\":\"\"}},[_c('v-card-title',[_vm._v(\"Clear Local Storage\")]),_c('v-card-text',[_c('p',[_vm._v(\"Delete all imported decks as well as your learning progess in the app.\")])]),_c('div',{staticClass:\"horizontal-spacer\"}),_c('v-card-actions',{staticClass:\"button-padding\"},[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"red\",\"right\":\"\"},on:{\"click\":_vm.clearLocalStorage}},[_vm._v(\"Clear Local Storage\")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Event } from \"../types\";\n\nexport function clearLocalStorageDialog(context: any) {\n context.$eventHub.$emit(\"showCustomDialog\", {\n title: \"Clear Storage?\",\n message:\n \"Do you really want to clear your local storage? Every deck and learning progress will be lost.\",\n buttons: [\n {\n name: \"Cancel\",\n color: \"grey\",\n },\n {\n name: \"Clear Storage\",\n color: \"orange darken-1\",\n callback: () => {\n context.$eventHub.$emit(\n Event.CLEAR_LOCAL_STORAGE\n );\n },\n },\n ],\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport * as clearStorageDialogHelper from \"../../helpers/clearStorageDialogHelper\";\n\n@Component\nexport default class ClearLocalStorage extends Vue {\n clearLocalStorage() {\n clearStorageDialogHelper.clearLocalStorageDialog(this);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearLocalStorage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearLocalStorage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ClearLocalStorage.vue?vue&type=template&id=8d3280ae&scoped=true&\"\nimport script from \"./ClearLocalStorage.vue?vue&type=script&lang=ts&\"\nexport * from \"./ClearLocalStorage.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ClearLocalStorage.vue?vue&type=style&index=0&id=8d3280ae&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 \"8d3280ae\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardActions,VCardText,VCardTitle,VCol,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport CardLimit from \"./CardLimit.vue\";\nimport ClearLocalStorage from \"./ClearLocalStorage.vue\";\n\nconst SettingProps = Vue.extend({\n props: {\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n CardLimit,\n ClearLocalStorage\n }\n})\nexport default class Settings extends SettingProps {}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=5f69376a&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f69376a\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VContainer,VRow})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport SettingsComponent from \"../components/settings/Settings.vue\";\n\nconst SettingProps = Vue.extend({\n props: {\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n SettingsComponent\n }\n})\nexport default class Settings extends SettingProps {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=2698e76f&scoped=true&\"\nimport script from \"./Settings.vue?vue&type=script&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2698e76f\",\n null\n \n)\n\nexport default component.exports","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!./CardLimit.vue?vue&type=style&index=0&id=6087d784&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!./CardLimit.vue?vue&type=style&index=0&id=6087d784&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-7724eb6e.afb9ec16.js b/js/chunk-7724eb6e.7b085d09.js similarity index 99% rename from js/chunk-7724eb6e.afb9ec16.js rename to js/chunk-7724eb6e.7b085d09.js index f717fc2..c270eb6 100644 --- a/js/chunk-7724eb6e.afb9ec16.js +++ b/js/chunk-7724eb6e.7b085d09.js @@ -1,2 +1,2 @@ (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-7724eb6e"],{2320:function(e,n,t){},"41ce":function(e,n,t){"use strict";t.r(n);var r=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"learn"},[t("LearnComponent",{attrs:{decks:e.decks,numberOfSelectedDecks:e.numberOfSelectedDecks,learningSession:e.learningSession,cardLimit:e.cardLimit}})],1)},i=[],a=(t("a9e3"),t("d4ec")),s=t("262e"),o=t("2caf"),c=t("9ab4"),l=t("2b0e"),u=t("2fe1"),d=function(){var e=this,n=e.$createElement,t=e._self._c||n;return e.numberOfSelectedDecks>0?t("div",{staticClass:"learn"},[t("div",{staticClass:"max-height"},[e._v(e._s(e.curLearningElement.card.q))]),t("div",{staticClass:"max-height"},[e.curLearningElement.showAnswer?t("span",[e._v(e._s(e.curLearningElement.card.a))]):t("v-btn",{on:{click:e.revealAnswer}},[e._v("Reveal Answer")])],1),e.curLearningElement.showAnswer?t("Rating",{ref:"rating",attrs:{numberOfStars:e.numberOfStarsInRating},on:{rated:e.onRating}}):e._e(),t("v-card-actions",[t("v-btn",{attrs:{text:"",disabled:0===e.learningSessionManager.learningSession.currentElementIndex,color:"grey lighten-1"},on:{click:e.moveToPrev}},[e._v("Previous")]),t("v-spacer"),t("v-btn",{attrs:{text:"",color:e.buttonNext.color},on:{click:e.moveToNext}},[e._v(e._s(e.buttonNext.text))])],1)],1):e._e()},g=[],h=(t("4de4"),t("ac1f"),t("5319"),t("b85c")),v=t("bee2"),f=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{staticClass:"rating"},e._l(e.numberOfStars,(function(n){return t("div",{key:n,staticClass:"star-wrapper"},[t("span",{staticClass:"overline grey--text text--darken-1",class:{invisible:1!==n&&n!==e.numberOfStars}},[e._v(e._s(1===n?"Hard":"Easy"))]),t("svg",{staticClass:"star",class:{filled:e.numberOfSelectedStar>=n},attrs:{viewBox:"0 0 100 100"}},[t("polygon",{attrs:{points:"50,10 39.4,35.4 10.1,37 32.9,55.6 25.3,84 50,68, 74.7,84 67.1,55.6 89.9,37 60.6,35.4"},on:{click:function(t){return e.onClickStar(n)}}})])])})),0)},m=[],S=l["a"].extend({props:{numberOfStars:Number}}),b=function(e){Object(s["a"])(t,e);var n=Object(o["a"])(t);function t(){var e;return Object(a["a"])(this,t),e=n.apply(this,arguments),e.numberOfSelectedStar=0,e}return Object(v["a"])(t,[{key:"onClickStar",value:function(e){this.numberOfSelectedStar=e,this.$emit("rated",e)}},{key:"setRating",value:function(e){this.numberOfSelectedStar=e,this.$emit("rated",e,!0)}}]),t}(S);b=Object(c["a"])([u["a"]],b);var k=b,O=k,E=(t("6eaf"),t("2877")),p=Object(E["a"])(O,f,m,!1,null,"9d3d01fc",null),I=p.exports,y=t("ebe2"),C=(t("7db0"),t("4160"),t("13d5"),t("a434"),t("159b"),(new Date).getTime());function L(e){var n,t=80;if(void 0===e.r||0===e.r.length)n=t;else{var r=e.r.reduce((function(e,n){return n.t>e.t?n:e})),i=(C-r.t)/864e5,a=r.r-i;n=Math.max(0,100-a)||1}return n}var x=function(){function e(n){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Object(a["a"])(this,e),this.decks=[],this.numberOfRecentCardsToIgnoreWhenSelectingNextCard={},this.cardsToSelectFrom=[],this.learningSession={},this.decks=n,this.numberOfRecentCardsToIgnoreWhenSelectingNextCard=r,this.cardsToSelectFrom=[],this.decks.forEach((function(e){e.cards.forEach((function(n){t.cardsToSelectFrom.push({deckId:e.id,cardId:n.id,showAnswer:!1,rating:void 0,card:void 0,weight:L(n)})}))})),this.learningSession={elements:[],currentElementIndex:0},this.injectNewCard()}return Object(v["a"])(e,[{key:"injectNewCard",value:function(){if(0===this.cardsToSelectFrom.length)return!1;var e=this.getRandomCardIndex();for(var n in this.learningSession.elements.push(this.cardsToSelectFrom[e]),this.cardsToSelectFrom.splice(e,1),this.numberOfRecentCardsToIgnoreWhenSelectingNextCard){var t=this.learningSession.elements.length-(this.numberOfRecentCardsToIgnoreWhenSelectingNextCard[Number(n)]+1);if(t>=0){var r,i=this.learningSession.elements[t];(null===(r=i.rating)||void 0===r?void 0:r.r)===Number(n)&&this.cardsToSelectFrom.push({deckId:i.deckId,cardId:i.cardId})}}return!0}},{key:"getRandomCardIndex",value:function(){for(var e=this.cardsToSelectFrom.reduce((function(e,n){return e+(n.weight||0)}),0),n=Math.random()*e,t=0,r=0;rn)return r;return Math.floor(Math.random()*this.cardsToSelectFrom.length)}},{key:"getCurrentLearningSessionElementWithCardDetails",value:function(){var e,n=this.learningSession.elements[this.learningSession.currentElementIndex];return n.card=null===(e=this.decks.find((function(e){return e.id===n.deckId})))||void 0===e?void 0:e.cards.find((function(e){return e.id===n.cardId})),n}},{key:"moveToNextLearningSessionElement",value:function(){(this.learningSession.currentElementIndex!==this.learningSession.elements.length-1||this.injectNewCard())&&this.learningSession.currentElementIndex++}},{key:"moveToPrevLearningSessionElement",value:function(){this.learningSession.currentElementIndex>0&&this.learningSession.currentElementIndex--}},{key:"revealAnswerForCurrentLearningSessionElement",value:function(){var e=this.learningSession.elements[this.learningSession.currentElementIndex];e.showAnswer=!0}},{key:"saveRatingForCurrentLearningSessionElement",value:function(e){var n,t=this.learningSession.elements[this.learningSession.currentElementIndex],r=(new Date).getTime(),i=!1,a=this.decks.find((function(e){return e.id===t.deckId})),s=null===a||void 0===a?void 0:a.cards.find((function(e){return e.id===t.cardId}));if(null===(n=t.rating)||void 0===n?void 0:n.t){var o,c=null===s||void 0===s||null===(o=s.r)||void 0===o?void 0:o.find((function(e){var n;return e.t===(null===(n=t.rating)||void 0===n?void 0:n.t)}));c&&(c.t=r,c.r=e,i=!0)}else s&&(Array.isArray(null===s||void 0===s?void 0:s.r)||(s.r=[]),s.r.push({t:r,r:e}));return t.rating={t:r,r:e},Boolean(i)}}]),e}(),T=function(e){Object(s["a"])(t,e);var n=Object(o["a"])(t);function t(e){var r;return Object(a["a"])(this,t),r=n.call(this,e.decks,e.numberOfRecentCardsToIgnoreWhenSelectingNextCard),r.cardsToSelectFrom=e.cardsToSelectFrom,r.learningSession=e.learningSession,r}return t}(x),R=t("8276");function N(e,n,t){var r={title:"Finish Learning?",message:"You just finished your learning session. Do you want to finish and go to the deck selection?",barChart:{bars:n},buttons:[{name:"Review Cards",color:"grey"},{name:"Finish",color:"indigo",callback:function(){e.$eventHub.$emit(y["a"].QUIT_LEARNING,y["b"].NO_MORE_CARDS),Object(R["a"])(),t()}}]};e.$eventHub.$emit(y["a"].SHOW_CUSTOM_DIALOG,r)}function _(e,n){e.$eventHub.$emit("showCustomDialog",{title:"Quit Learning?",message:"Do you really want to quit learning? Nevertheless, your progress is saved.",barChart:{bars:n},buttons:[{name:"Cancel",color:"grey"},{name:"Quit",color:"orange darken-1",callback:function(){e.$eventHub.$emit(y["a"].QUIT_LEARNING,y["b"].USER_ACTION),Object(R["a"])()}}]})}var F=l["a"].extend({props:{decks:{type:Array},numberOfSelectedDecks:Number,cardLimit:String}}),w=function(e){Object(s["a"])(t,e);var n=Object(o["a"])(t);function t(){var e;return Object(a["a"])(this,t),e=n.apply(this,arguments),e.numberOfStarsInRating=5,e.learningSessionManager=new x([]),e.isLearningSessionFinishedAndComponentWillBeDestroyedSoon=!1,e.curLearningElement={deckId:0,cardId:0,showAnswer:!1,rating:{},card:{id:0,q:"",a:""}},e}return Object(v["a"])(t,[{key:"created",value:function(){var e=this;this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon=!1,this.$eventHub.$on(y["a"].SWIPE_LEFT_IN_LEARN,(function(){e.moveToNext()})),this.$eventHub.$on(y["a"].SWIPE_RIGHT_IN_LEARN,(function(){e.moveToPrev()})),this.$eventHub.$on(y["a"].PREPARE_QUIT_LEARNING,(function(){e.quitLearning()}))}},{key:"destroyed",value:function(){this.$eventHub.$off(y["a"].SWIPE_LEFT_IN_LEARN),this.$eventHub.$off(y["a"].SWIPE_RIGHT_IN_LEARN),this.$eventHub.$off(y["a"].PREPARE_QUIT_LEARNING)}},{key:"updateCurLearningElement",value:function(){this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon||(this.curLearningElement=this.learningSessionManager.getCurrentLearningSessionElementWithCardDetails(),this.updateRatingForCurrentLearningElement(),Object(R["c"])(this.learningSessionManager))}},{key:"updateRatingForCurrentLearningElement",value:function(){var e,n=this,t=0;void 0!==(null===(e=this.curLearningElement.rating)||void 0===e?void 0:e.r)&&(t=this.mapRatingFrom100ToStars(this.curLearningElement.rating.r)),this.$nextTick((function(){n.$refs.rating&&n.$refs.rating.setRating(t)}))}},{key:"beforeMount",value:function(){var e=Object(R["b"])();if(e)this.learningSessionManager=new T(e);else{if(0===this.numberOfSelectedDecks)return void this.$router.replace("/");this.learningSessionManager=new x(this.decks.filter((function(e){return e.selected})))}this.updateCurLearningElement()}},{key:"checkIfCardIsEndOfSession",value:function(){var e=this.learningSessionManager.learningSession.currentElementIndex===this.learningSessionManager.learningSession.elements.length-1&&0===this.learningSessionManager.cardsToSelectFrom.length||"0"!==this.cardLimit&&this.learningSessionManager.learningSession.currentElementIndex===parseInt(this.cardLimit)-1;return e}},{key:"moveToNext",value:function(){this.checkIfCardIsEndOfSession()&&this.finishSession(),this.learningSessionManager.moveToNextLearningSessionElement()}},{key:"moveToPrev",value:function(){this.learningSessionManager.moveToPrevLearningSessionElement()}},{key:"revealAnswer",value:function(){this.learningSessionManager.revealAnswerForCurrentLearningSessionElement()}},{key:"onRating",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!n){var t=this.mapRatingFromStarsTo100(e);this.learningSessionManager.saveRatingForCurrentLearningSessionElement(t),Object(R["c"])(this.learningSessionManager)}}},{key:"mapRatingFromStarsTo100",value:function(e){return 100*(e-1)/(this.numberOfStarsInRating-1)}},{key:"mapRatingFrom100ToStars",value:function(e){return e*(this.numberOfStarsInRating-1)/100+1}},{key:"finishSession",value:function(){var e=this;N(this,this.getBarsForFinishLearningDialog(),(function(){e.isLearningSessionFinishedAndComponentWillBeDestroyedSoon=!0}))}},{key:"getBarsForFinishLearningDialog",value:function(){for(var e=[],n=1;n<=this.numberOfStarsInRating;n++)e.push({name:"".concat(n),value:0});var t,r=Object(h["a"])(this.learningSessionManager.learningSession.elements);try{for(r.s();!(t=r.n()).done;){var i,a=t.value;void 0!==(null===(i=a.rating)||void 0===i?void 0:i.r)&&(e[this.mapRatingFrom100ToStars(a.rating.r)-1].value+=1)}}catch(s){r.e(s)}finally{r.f()}return e}},{key:"quitLearning",value:function(){_(this,this.getBarsForFinishLearningDialog())}},{key:"updateVerticalCentering",value:function(){var e,n=Object(h["a"])(document.getElementsByClassName("max-height"));try{for(n.s();!(e=n.n()).done;){var t=e.value;t.scrollHeight>t.clientHeight?t.classList.remove("flex-center"):t.classList.add("flex-center")}}catch(r){n.e(r)}finally{n.f()}}},{key:"mounted",value:function(){this.updateVerticalCentering()}},{key:"updated",value:function(){this.updateVerticalCentering(),this.updateCurLearningElement()}},{key:"buttonNext",get:function(){return this.checkIfCardIsEndOfSession()?{text:"Finish",color:"indigo lighten-1"}:{text:"Next",color:"grey lighten-1"}}}]),t}(F);w=Object(c["a"])([Object(u["a"])({components:{Rating:I}})],w);var j=w,A=j,$=(t("f040"),t("6544")),M=t.n($),D=t("8336"),H=t("99d9"),W=t("2fa4"),P=Object(E["a"])(A,d,g,!1,null,"7b6129e6",null),B=P.exports;M()(P,{VBtn:D["a"],VCardActions:H["a"],VSpacer:W["a"]});var G=l["a"].extend({props:{decks:{type:Array},learningSession:{type:Object},numberOfSelectedDecks:Number,cardLimit:String}}),Q=function(e){Object(s["a"])(t,e);var n=Object(o["a"])(t);function t(){return Object(a["a"])(this,t),n.apply(this,arguments)}return t}(G);Q=Object(c["a"])([Object(u["a"])({components:{LearnComponent:B}})],Q);var U=Q,V=U,q=(t("991f"),Object(E["a"])(V,r,i,!1,null,"6cc4e3a0",null));n["default"]=q.exports},"6eaf":function(e,n,t){"use strict";var r=t("2320"),i=t.n(r);i.a},"991f":function(e,n,t){"use strict";var r=t("ed09"),i=t.n(r);i.a},a47c:function(e,n,t){},ed09:function(e,n,t){},f040:function(e,n,t){"use strict";var r=t("a47c"),i=t.n(r);i.a}}]); -//# sourceMappingURL=chunk-7724eb6e.afb9ec16.js.map \ No newline at end of file +//# sourceMappingURL=chunk-7724eb6e.7b085d09.js.map \ No newline at end of file diff --git a/js/chunk-7724eb6e.afb9ec16.js.map b/js/chunk-7724eb6e.7b085d09.js.map similarity index 99% rename from js/chunk-7724eb6e.afb9ec16.js.map rename to js/chunk-7724eb6e.7b085d09.js.map index f641419..36000d2 100644 --- a/js/chunk-7724eb6e.afb9ec16.js.map +++ b/js/chunk-7724eb6e.7b085d09.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./src/views/Learn.vue?e7d3","webpack:///./src/components/learn/Learn.vue?a9d0","webpack:///./src/components/learn/Rating.vue?a929","webpack:///./src/components/learn/Rating.vue","webpack:///./src/components/learn/Rating.vue?d1f3","webpack:///./src/components/learn/Rating.vue?fb99","webpack:///./src/helpers/learningSessionManager.ts","webpack:///./src/helpers/followUpLearningSessionManager.ts","webpack:///./src/helpers/finishLearningDialogHelper.ts","webpack:///./src/helpers/quitLearningDialogHelper.ts","webpack:///./src/components/learn/Learn.vue","webpack:///./src/components/learn/Learn.vue?1110","webpack:///./src/components/learn/Learn.vue?9625","webpack:///./src/views/Learn.vue","webpack:///./src/views/Learn.vue?5360","webpack:///./src/views/Learn.vue?7c4f","webpack:///./src/components/learn/Rating.vue?dafd","webpack:///./src/views/Learn.vue?c692","webpack:///./src/components/learn/Learn.vue?812d"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","decks","numberOfSelectedDecks","learningSession","cardLimit","staticRenderFns","_v","_s","curLearningElement","card","q","a","on","revealAnswer","ref","numberOfStarsInRating","onRating","_e","learningSessionManager","currentElementIndex","moveToPrev","buttonNext","color","moveToNext","text","_l","n","key","class","numberOfStars","numberOfSelectedStar","$event","onClickStar","RatingProps","extend","props","Number","$emit","component","today","Date","getTime","getCardWeigthBasedOnRecentRatings","weight","defaultWeightForUnusedCards","undefined","r","length","mostRecentCardRating","reduce","mostRecentRatingObj","curRatingObj","t","daysSinceLastRating","virtualRating","Math","max","selectedDecks","numberOfRecentCardsToIgnoreWhenSelectingNextCard","cardsToSelectFrom","forEach","deck","cards","push","deckId","id","cardId","showAnswer","rating","elements","injectNewCard","randomCardIndex","getRandomCardIndex","ruleRating","splice","indexOfCardToBePossiblyUsedAgainForSelection","cardToBeUsedAgainForSelection","sumWeights","sum","randomNumberInWeightSumRange","random","curWeightSum","index","floor","currentLearningSessionElement","find","didOverwriteOldRating","oldRating","oldRatingObject","Array","isArray","Boolean","data","finishLearningDialog","context","bars","callbackLearningFinished","options","title","message","barChart","buttons","name","callback","$eventHub","QUIT_LEARNING","NO_MORE_CARDS","SHOW_CUSTOM_DIALOG","quitLearningDialog","USER_ACTION","LearnProps","type","String","isLearningSessionFinishedAndComponentWillBeDestroyedSoon","$on","SWIPE_LEFT_IN_LEARN","SWIPE_RIGHT_IN_LEARN","PREPARE_QUIT_LEARNING","quitLearning","$off","getCurrentLearningSessionElementWithCardDetails","updateRatingForCurrentLearningElement","mapRatingFrom100ToStars","$nextTick","$refs","setRating","learningSessionManagerDataInLocalStorage","$router","replace","filter","selected","updateCurLearningElement","endOfSession","parseInt","checkIfCardIsEndOfSession","finishSession","moveToNextLearningSessionElement","moveToPrevLearningSessionElement","revealAnswerForCurrentLearningSessionElement","programmatically","mapRatingFromStarsTo100","saveRatingForCurrentLearningSessionElement","getBarsForFinishLearningDialog","value","element","document","getElementsByClassName","el","scrollHeight","clientHeight","classList","remove","add","updateVerticalCentering","components","Rating","VBtn","VCardActions","VCard","VSpacer","Object","LearnComponent"],"mappings":"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","file":"js/chunk-7724eb6e.afb9ec16.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"learn\"},[_c('LearnComponent',{attrs:{\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks,\"learningSession\":_vm.learningSession,\"cardLimit\":_vm.cardLimit}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.numberOfSelectedDecks>0)?_c('div',{staticClass:\"learn\"},[_c('div',{staticClass:\"max-height\"},[_vm._v(_vm._s(_vm.curLearningElement.card.q))]),_c('div',{staticClass:\"max-height\"},[(_vm.curLearningElement.showAnswer)?_c('span',[_vm._v(_vm._s(_vm.curLearningElement.card.a))]):_c('v-btn',{on:{\"click\":_vm.revealAnswer}},[_vm._v(\"Reveal Answer\")])],1),(_vm.curLearningElement.showAnswer)?_c('Rating',{ref:\"rating\",attrs:{\"numberOfStars\":_vm.numberOfStarsInRating},on:{\"rated\":_vm.onRating}}):_vm._e(),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":_vm.learningSessionManager.learningSession.currentElementIndex === 0,\"color\":\"grey lighten-1\"},on:{\"click\":_vm.moveToPrev}},[_vm._v(\"Previous\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":_vm.buttonNext.color},on:{\"click\":_vm.moveToNext}},[_vm._v(_vm._s(_vm.buttonNext.text))])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rating\"},_vm._l((_vm.numberOfStars),function(n){return _c('div',{key:n,staticClass:\"star-wrapper\"},[_c('span',{staticClass:\"overline grey--text text--darken-1\",class:{ 'invisible': (n !== 1 && n !== _vm.numberOfStars) }},[_vm._v(_vm._s(n === 1 ? \"Hard\" : \"Easy\"))]),_c('svg',{staticClass:\"star\",class:{ 'filled': (_vm.numberOfSelectedStar >= n) },attrs:{\"viewBox\":\"0 0 100 100\"}},[_c('polygon',{attrs:{\"points\":\"50,10 39.4,35.4 10.1,37 32.9,55.6 25.3,84 50,68, 74.7,84 67.1,55.6 89.9,37 60.6,35.4\"},on:{\"click\":function($event){return _vm.onClickStar(n)}}})])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nconst RatingProps = Vue.extend({\n props: {\n numberOfStars: Number\n }\n});\n\n@Component\nexport default class Rating extends RatingProps {\n numberOfSelectedStar = 0;\n onClickStar(n: number) {\n this.numberOfSelectedStar = n;\n this.$emit(\"rated\", n);\n }\n setRating(n: number) {\n this.numberOfSelectedStar = n;\n this.$emit(\"rated\", n, true);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rating.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rating.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Rating.vue?vue&type=template&id=9d3d01fc&scoped=true&\"\nimport script from \"./Rating.vue?vue&type=script&lang=ts&\"\nexport * from \"./Rating.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Rating.vue?vue&type=style&index=0&id=9d3d01fc&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 \"9d3d01fc\",\n null\n \n)\n\nexport default component.exports","import { Card, Deck, LearningSession, LearningSessionElement } from \"@/types\";\n\n/* numberOfRecentCardsToIgnoreWhenSelectingNextCard defines when a card can be used again;\n * it's an object where the key defines the rating for which this rule applies and the value\n * says how many other cards need to be used before the card can be used again\n */\n\nconst today = new Date().getTime();\nfunction getCardWeigthBasedOnRecentRatings(card: Card): number {\n const defaultWeightForUnusedCards = 80;\n let weight;\n if (card.r === undefined || card.r.length === 0) {\n weight = defaultWeightForUnusedCards;\n } else {\n const mostRecentCardRating = card.r.reduce(\n (mostRecentRatingObj, curRatingObj) =>\n curRatingObj.t > mostRecentRatingObj.t\n ? curRatingObj\n : mostRecentRatingObj\n );\n // downgrade rating (0-100) by one for each day\n const daysSinceLastRating =\n (today - mostRecentCardRating.t) / (1000 * 60 * 60 * 24);\n const virtualRating = mostRecentCardRating.r - daysSinceLastRating;\n // map virtual rating to weight\n weight = Math.max(0, 100 - virtualRating) || 1;\n }\n return weight;\n}\n\nexport default class LearningSessionManager {\n decks = [] as Deck[];\n numberOfRecentCardsToIgnoreWhenSelectingNextCard: {\n [rating: number]: number;\n } = {};\n cardsToSelectFrom = [] as LearningSessionElement[];\n learningSession = {} as LearningSession;\n\n constructor(\n selectedDecks: Deck[],\n numberOfRecentCardsToIgnoreWhenSelectingNextCard: {\n [rating: number]: number;\n } = {}\n ) {\n this.decks = selectedDecks;\n this.numberOfRecentCardsToIgnoreWhenSelectingNextCard = numberOfRecentCardsToIgnoreWhenSelectingNextCard;\n this.cardsToSelectFrom = [];\n\n this.decks.forEach((deck) => {\n deck.cards.forEach((card) => {\n this.cardsToSelectFrom.push({\n deckId: deck.id,\n cardId: card.id,\n showAnswer: false,\n rating: undefined,\n card: undefined,\n weight: getCardWeigthBasedOnRecentRatings(card),\n });\n });\n });\n this.learningSession = { elements: [], currentElementIndex: 0 };\n this.injectNewCard();\n }\n\n injectNewCard(): boolean {\n if (this.cardsToSelectFrom.length === 0) {\n return false;\n }\n const randomCardIndex = this.getRandomCardIndex();\n this.learningSession.elements.push(this.cardsToSelectFrom[randomCardIndex]);\n this.cardsToSelectFrom.splice(randomCardIndex, 1);\n\n for (const ruleRating in this\n .numberOfRecentCardsToIgnoreWhenSelectingNextCard) {\n const indexOfCardToBePossiblyUsedAgainForSelection =\n this.learningSession.elements.length -\n (this.numberOfRecentCardsToIgnoreWhenSelectingNextCard[\n Number(ruleRating)\n ] +\n 1);\n if (indexOfCardToBePossiblyUsedAgainForSelection >= 0) {\n const cardToBeUsedAgainForSelection = this.learningSession.elements[\n indexOfCardToBePossiblyUsedAgainForSelection\n ];\n if (cardToBeUsedAgainForSelection.rating?.r === Number(ruleRating)) {\n this.cardsToSelectFrom.push({\n deckId: cardToBeUsedAgainForSelection.deckId,\n cardId: cardToBeUsedAgainForSelection.cardId,\n });\n }\n }\n }\n return true;\n }\n\n getRandomCardIndex(): number {\n const sumWeights = this.cardsToSelectFrom.reduce(\n (sum, card) => sum + (card.weight || 0),\n 0\n );\n const randomNumberInWeightSumRange = Math.random() * sumWeights;\n let curWeightSum = 0;\n for (let index = 0; index < this.cardsToSelectFrom.length; index++) {\n curWeightSum += this.cardsToSelectFrom[index].weight || 0;\n if (curWeightSum > randomNumberInWeightSumRange) {\n return index;\n }\n }\n // if random card selection based on some weighted distribution didn't work, assume even distribution\n return Math.floor(Math.random() * this.cardsToSelectFrom.length);\n }\n\n getCurrentLearningSessionElementWithCardDetails(): LearningSessionElement {\n const currentLearningSessionElement = this.learningSession.elements[\n this.learningSession.currentElementIndex\n ];\n currentLearningSessionElement.card = this.decks\n .find((deck) => deck.id === currentLearningSessionElement.deckId)\n ?.cards.find((card) => card.id === currentLearningSessionElement.cardId);\n return currentLearningSessionElement;\n }\n\n moveToNextLearningSessionElement(): void {\n if (\n this.learningSession.currentElementIndex ===\n this.learningSession.elements.length - 1\n ) {\n if (!this.injectNewCard()) {\n return;\n }\n }\n this.learningSession.currentElementIndex++;\n }\n\n moveToPrevLearningSessionElement(): void {\n if (this.learningSession.currentElementIndex > 0) {\n this.learningSession.currentElementIndex--;\n }\n }\n\n revealAnswerForCurrentLearningSessionElement(): void {\n const currentLearningSessionElement = this.learningSession.elements[\n this.learningSession.currentElementIndex\n ];\n currentLearningSessionElement.showAnswer = true;\n }\n\n saveRatingForCurrentLearningSessionElement(rating: number): boolean {\n const currentLearningSessionElement = this.learningSession.elements[\n this.learningSession.currentElementIndex\n ];\n const t = new Date().getTime();\n let didOverwriteOldRating = false;\n const deck = this.decks.find(\n (deck) => deck.id === currentLearningSessionElement.deckId\n );\n const card = deck?.cards.find(\n (card) => card.id === currentLearningSessionElement.cardId\n );\n if (currentLearningSessionElement.rating?.t) {\n const oldRating = card?.r?.find(\n (oldRatingObject) =>\n oldRatingObject.t === currentLearningSessionElement.rating?.t\n );\n if (oldRating) {\n oldRating.t = t;\n oldRating.r = rating;\n didOverwriteOldRating = true;\n }\n } else {\n if (card) {\n if (!Array.isArray(card?.r)) {\n card.r = [];\n }\n card.r.push({ t, r: rating });\n }\n }\n currentLearningSessionElement.rating = { t, r: rating };\n return Boolean(didOverwriteOldRating);\n }\n}\n","import LearningSessionManager from \"./learningSessionManager\";\n\nexport default class FollowUpLearningSessionManager extends LearningSessionManager {\n constructor(data: LearningSessionManager) {\n super(data.decks, data.numberOfRecentCardsToIgnoreWhenSelectingNextCard);\n this.cardsToSelectFrom = data.cardsToSelectFrom;\n this.learningSession = data.learningSession;\n }\n}\n","import {\n Event,\n QuitLearningReason,\n CustomDialogOptions,\n CustomDialogOptionsBarChartBar,\n} from \"../types\";\n\nimport { clearLearningSessionManagerDataInLocalStorage } from \"./learningSessionStorageHelper\";\n\nexport function finishLearningDialog(\n context: any,\n bars: CustomDialogOptionsBarChartBar[],\n callbackLearningFinished: { (): void }\n) {\n const options = {\n title: \"Finish Learning?\",\n message:\n \"You just finished your learning session. Do you want to finish and go to the deck selection?\",\n barChart: {\n bars,\n },\n buttons: [\n {\n name: \"Review Cards\",\n color: \"grey\",\n },\n {\n name: \"Finish\",\n color: \"indigo\",\n callback: () => {\n context.$eventHub.$emit(\n Event.QUIT_LEARNING,\n QuitLearningReason.NO_MORE_CARDS\n );\n clearLearningSessionManagerDataInLocalStorage();\n callbackLearningFinished();\n },\n },\n ],\n } as CustomDialogOptions;\n context.$eventHub.$emit(Event.SHOW_CUSTOM_DIALOG, options);\n}\n","import { Event, QuitLearningReason, CustomDialogOptionsBarChartBar } from \"../types\";\nimport { clearLearningSessionManagerDataInLocalStorage } from \"./learningSessionStorageHelper\";\n\nexport function quitLearningDialog(\n context: any,\n bars: CustomDialogOptionsBarChartBar[]\n) {\n context.$eventHub.$emit(\"showCustomDialog\", {\n title: \"Quit Learning?\",\n message:\n \"Do you really want to quit learning? Nevertheless, your progress is saved.\",\n barChart: {\n bars,\n },\n buttons: [\n {\n name: \"Cancel\",\n color: \"grey\",\n },\n {\n name: \"Quit\",\n color: \"orange darken-1\",\n callback: () => {\n context.$eventHub.$emit(\n Event.QUIT_LEARNING,\n QuitLearningReason.USER_ACTION\n );\n clearLearningSessionManagerDataInLocalStorage();\n },\n },\n ],\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Rating from \"./Rating.vue\";\nimport {\n Deck,\n LearningSessionElement,\n Event,\n CustomDialogOptionsBarChartBar\n} from \"../../types\";\nimport LearningSessionManager from \"../../helpers/learningSessionManager\";\nimport FollowUpLearningSessionManager from \"../../helpers/followUpLearningSessionManager\";\n\nimport { finishLearningDialog } from \"../../helpers/finishLearningDialogHelper\";\nimport { quitLearningDialog } from \"../../helpers/quitLearningDialogHelper\";\nimport {\n saveLearningSessionManagerDataToLocalStorage,\n getLearningSessionManagerDataFromLocalStorage\n} from \"../../helpers/learningSessionStorageHelper\";\n\nconst LearnProps = Vue.extend({\n props: {\n decks: { type: Array as () => Deck[] },\n numberOfSelectedDecks: Number,\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n Rating\n }\n})\nexport default class Learn extends LearnProps {\n numberOfStarsInRating = 5;\n learningSessionManager = new LearningSessionManager([]);\n isLearningSessionFinishedAndComponentWillBeDestroyedSoon = false;\n curLearningElement = {\n deckId: 0,\n cardId: 0,\n showAnswer: false,\n rating: {},\n card: {\n id: 0,\n q: \"\",\n a: \"\"\n }\n } as LearningSessionElement;\n\n $refs!: {\n rating: Rating;\n };\n\n created() {\n this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon = false;\n this.$eventHub.$on(Event.SWIPE_LEFT_IN_LEARN, () => {\n this.moveToNext();\n });\n this.$eventHub.$on(Event.SWIPE_RIGHT_IN_LEARN, () => {\n this.moveToPrev();\n });\n this.$eventHub.$on(Event.PREPARE_QUIT_LEARNING, () => {\n this.quitLearning();\n });\n }\n destroyed() {\n this.$eventHub.$off(Event.SWIPE_LEFT_IN_LEARN);\n this.$eventHub.$off(Event.SWIPE_RIGHT_IN_LEARN);\n this.$eventHub.$off(Event.PREPARE_QUIT_LEARNING);\n }\n\n updateCurLearningElement() {\n if (this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon) return;\n this.curLearningElement = this.learningSessionManager.getCurrentLearningSessionElementWithCardDetails();\n this.updateRatingForCurrentLearningElement();\n saveLearningSessionManagerDataToLocalStorage(this.learningSessionManager);\n }\n\n updateRatingForCurrentLearningElement() {\n let r = 0;\n if (this.curLearningElement.rating?.r !== undefined) {\n r = this.mapRatingFrom100ToStars(this.curLearningElement.rating.r);\n }\n // rating component is not mounted yet due to re-rendering\n this.$nextTick(() => {\n if (this.$refs.rating) {\n this.$refs.rating.setRating(r);\n }\n });\n }\n\n beforeMount() {\n const learningSessionManagerDataInLocalStorage = getLearningSessionManagerDataFromLocalStorage();\n if (learningSessionManagerDataInLocalStorage) {\n this.learningSessionManager = new FollowUpLearningSessionManager(\n learningSessionManagerDataInLocalStorage\n );\n } else {\n if (this.numberOfSelectedDecks === 0) {\n this.$router.replace(\"/\");\n return;\n }\n this.learningSessionManager = new LearningSessionManager(\n this.decks.filter(deck => deck.selected)\n );\n }\n this.updateCurLearningElement();\n }\n\n checkIfCardIsEndOfSession(): boolean {\n const endOfSession =\n (this.learningSessionManager.learningSession.currentElementIndex ===\n this.learningSessionManager.learningSession.elements.length - 1 &&\n this.learningSessionManager.cardsToSelectFrom.length === 0) ||\n (this.cardLimit === \"0\"\n ? false\n : this.learningSessionManager.learningSession.currentElementIndex ===\n parseInt(this.cardLimit) - 1);\n return endOfSession;\n }\n\n moveToNext() {\n if (this.checkIfCardIsEndOfSession()) {\n this.finishSession();\n }\n this.learningSessionManager.moveToNextLearningSessionElement();\n }\n\n get buttonNext(): { text: string; color: string } {\n if (this.checkIfCardIsEndOfSession()) {\n return {\n text: \"Finish\",\n color: \"indigo lighten-1\"\n };\n } else {\n return {\n text: \"Next\",\n color: \"grey lighten-1\"\n };\n }\n }\n\n moveToPrev() {\n this.learningSessionManager.moveToPrevLearningSessionElement();\n }\n\n revealAnswer() {\n this.learningSessionManager.revealAnswerForCurrentLearningSessionElement();\n }\n\n onRating(rating: number, programmatically = false) {\n if (programmatically) return;\n const r = this.mapRatingFromStarsTo100(rating);\n this.learningSessionManager.saveRatingForCurrentLearningSessionElement(r);\n saveLearningSessionManagerDataToLocalStorage(this.learningSessionManager);\n }\n\n mapRatingFromStarsTo100(rating: number): number {\n // map 1-n -> 0-100\n return ((rating - 1) * 100) / (this.numberOfStarsInRating - 1);\n }\n mapRatingFrom100ToStars(rating: number): number {\n // map 0-100 -> 1-n\n return (rating * (this.numberOfStarsInRating - 1)) / 100 + 1;\n }\n\n finishSession() {\n finishLearningDialog(this, this.getBarsForFinishLearningDialog(), () => {\n this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon = true;\n });\n }\n\n getBarsForFinishLearningDialog(): CustomDialogOptionsBarChartBar[] {\n const bars = [];\n for (let rating = 1; rating <= this.numberOfStarsInRating; rating++) {\n bars.push({ name: `${rating}`, value: 0 });\n }\n for (const element of this.learningSessionManager.learningSession\n .elements) {\n if (element.rating?.r !== undefined) {\n bars[this.mapRatingFrom100ToStars(element.rating.r) - 1].value += 1;\n }\n }\n return bars;\n }\n\n quitLearning() {\n quitLearningDialog(this, this.getBarsForFinishLearningDialog());\n }\n\n updateVerticalCentering() {\n for (const el of document.getElementsByClassName(\"max-height\")) {\n if (el.scrollHeight > el.clientHeight) {\n el.classList.remove(\"flex-center\");\n } else {\n el.classList.add(\"flex-center\");\n }\n }\n }\n mounted() {\n this.updateVerticalCentering();\n }\n updated() {\n this.updateVerticalCentering();\n this.updateCurLearningElement();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Learn.vue?vue&type=template&id=7b6129e6&scoped=true&\"\nimport script from \"./Learn.vue?vue&type=script&lang=ts&\"\nexport * from \"./Learn.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Learn.vue?vue&type=style&index=0&id=7b6129e6&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 \"7b6129e6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCardActions,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck, LearningSession } from \"../types\";\n\nimport LearnComponent from \"../components/learn/Learn.vue\";\n\nconst LearnProps = Vue.extend({\n props: {\n decks: { type: Array as () => Deck[] },\n learningSession: { type: Object as () => LearningSession },\n numberOfSelectedDecks: Number,\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n LearnComponent\n }\n})\nexport default class Learn extends LearnProps {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Learn.vue?vue&type=template&id=6cc4e3a0&scoped=true&\"\nimport script from \"./Learn.vue?vue&type=script&lang=ts&\"\nexport * from \"./Learn.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Learn.vue?vue&type=style&index=0&id=6cc4e3a0&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 \"6cc4e3a0\",\n null\n \n)\n\nexport default component.exports","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!./Rating.vue?vue&type=style&index=0&id=9d3d01fc&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!./Rating.vue?vue&type=style&index=0&id=9d3d01fc&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!./Learn.vue?vue&type=style&index=0&id=6cc4e3a0&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!./Learn.vue?vue&type=style&index=0&id=6cc4e3a0&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!./Learn.vue?vue&type=style&index=0&id=7b6129e6&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!./Learn.vue?vue&type=style&index=0&id=7b6129e6&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/views/Learn.vue?4495","webpack:///./src/components/learn/Learn.vue?c3ad","webpack:///./src/components/learn/Rating.vue?bb72","webpack:///./src/components/learn/Rating.vue","webpack:///./src/components/learn/Rating.vue?d1f3","webpack:///./src/components/learn/Rating.vue?fb99","webpack:///./src/helpers/learningSessionManager.ts","webpack:///./src/helpers/followUpLearningSessionManager.ts","webpack:///./src/helpers/finishLearningDialogHelper.ts","webpack:///./src/helpers/quitLearningDialogHelper.ts","webpack:///./src/components/learn/Learn.vue","webpack:///./src/components/learn/Learn.vue?1110","webpack:///./src/components/learn/Learn.vue?9625","webpack:///./src/views/Learn.vue","webpack:///./src/views/Learn.vue?5360","webpack:///./src/views/Learn.vue?7c4f","webpack:///./src/components/learn/Rating.vue?dafd","webpack:///./src/views/Learn.vue?c692","webpack:///./src/components/learn/Learn.vue?812d"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","decks","numberOfSelectedDecks","learningSession","cardLimit","staticRenderFns","_v","_s","curLearningElement","card","q","a","on","revealAnswer","ref","numberOfStarsInRating","onRating","_e","learningSessionManager","currentElementIndex","moveToPrev","buttonNext","color","moveToNext","text","_l","n","key","class","numberOfStars","numberOfSelectedStar","$event","onClickStar","RatingProps","extend","props","Number","$emit","component","today","Date","getTime","getCardWeigthBasedOnRecentRatings","weight","defaultWeightForUnusedCards","undefined","r","length","mostRecentCardRating","reduce","mostRecentRatingObj","curRatingObj","t","daysSinceLastRating","virtualRating","Math","max","selectedDecks","numberOfRecentCardsToIgnoreWhenSelectingNextCard","cardsToSelectFrom","forEach","deck","cards","push","deckId","id","cardId","showAnswer","rating","elements","injectNewCard","randomCardIndex","getRandomCardIndex","ruleRating","splice","indexOfCardToBePossiblyUsedAgainForSelection","cardToBeUsedAgainForSelection","sumWeights","sum","randomNumberInWeightSumRange","random","curWeightSum","index","floor","currentLearningSessionElement","find","didOverwriteOldRating","oldRating","oldRatingObject","Array","isArray","Boolean","data","finishLearningDialog","context","bars","callbackLearningFinished","options","title","message","barChart","buttons","name","callback","$eventHub","QUIT_LEARNING","NO_MORE_CARDS","SHOW_CUSTOM_DIALOG","quitLearningDialog","USER_ACTION","LearnProps","type","String","isLearningSessionFinishedAndComponentWillBeDestroyedSoon","$on","SWIPE_LEFT_IN_LEARN","SWIPE_RIGHT_IN_LEARN","PREPARE_QUIT_LEARNING","quitLearning","$off","getCurrentLearningSessionElementWithCardDetails","updateRatingForCurrentLearningElement","mapRatingFrom100ToStars","$nextTick","$refs","setRating","learningSessionManagerDataInLocalStorage","$router","replace","filter","selected","updateCurLearningElement","endOfSession","parseInt","checkIfCardIsEndOfSession","finishSession","moveToNextLearningSessionElement","moveToPrevLearningSessionElement","revealAnswerForCurrentLearningSessionElement","programmatically","mapRatingFromStarsTo100","saveRatingForCurrentLearningSessionElement","getBarsForFinishLearningDialog","value","element","document","getElementsByClassName","el","scrollHeight","clientHeight","classList","remove","add","updateVerticalCentering","components","Rating","VBtn","VCardActions","VCard","VSpacer","Object","LearnComponent"],"mappings":"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","file":"js/chunk-7724eb6e.7b085d09.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"learn\"},[_c('LearnComponent',{attrs:{\"decks\":_vm.decks,\"numberOfSelectedDecks\":_vm.numberOfSelectedDecks,\"learningSession\":_vm.learningSession,\"cardLimit\":_vm.cardLimit}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.numberOfSelectedDecks>0)?_c('div',{staticClass:\"learn\"},[_c('div',{staticClass:\"max-height\"},[_vm._v(_vm._s(_vm.curLearningElement.card.q))]),_c('div',{staticClass:\"max-height\"},[(_vm.curLearningElement.showAnswer)?_c('span',[_vm._v(_vm._s(_vm.curLearningElement.card.a))]):_c('v-btn',{on:{\"click\":_vm.revealAnswer}},[_vm._v(\"Reveal Answer\")])],1),(_vm.curLearningElement.showAnswer)?_c('Rating',{ref:\"rating\",attrs:{\"numberOfStars\":_vm.numberOfStarsInRating},on:{\"rated\":_vm.onRating}}):_vm._e(),_c('v-card-actions',[_c('v-btn',{attrs:{\"text\":\"\",\"disabled\":_vm.learningSessionManager.learningSession.currentElementIndex === 0,\"color\":\"grey lighten-1\"},on:{\"click\":_vm.moveToPrev}},[_vm._v(\"Previous\")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":_vm.buttonNext.color},on:{\"click\":_vm.moveToNext}},[_vm._v(_vm._s(_vm.buttonNext.text))])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"rating\"},_vm._l((_vm.numberOfStars),function(n){return _c('div',{key:n,staticClass:\"star-wrapper\"},[_c('span',{staticClass:\"overline grey--text text--darken-1\",class:{ 'invisible': (n !== 1 && n !== _vm.numberOfStars) }},[_vm._v(_vm._s(n === 1 ? \"Hard\" : \"Easy\"))]),_c('svg',{staticClass:\"star\",class:{ 'filled': (_vm.numberOfSelectedStar >= n) },attrs:{\"viewBox\":\"0 0 100 100\"}},[_c('polygon',{attrs:{\"points\":\"50,10 39.4,35.4 10.1,37 32.9,55.6 25.3,84 50,68, 74.7,84 67.1,55.6 89.9,37 60.6,35.4\"},on:{\"click\":function($event){return _vm.onClickStar(n)}}})])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nconst RatingProps = Vue.extend({\n props: {\n numberOfStars: Number\n }\n});\n\n@Component\nexport default class Rating extends RatingProps {\n numberOfSelectedStar = 0;\n onClickStar(n: number) {\n this.numberOfSelectedStar = n;\n this.$emit(\"rated\", n);\n }\n setRating(n: number) {\n this.numberOfSelectedStar = n;\n this.$emit(\"rated\", n, true);\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rating.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Rating.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Rating.vue?vue&type=template&id=9d3d01fc&scoped=true&\"\nimport script from \"./Rating.vue?vue&type=script&lang=ts&\"\nexport * from \"./Rating.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Rating.vue?vue&type=style&index=0&id=9d3d01fc&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 \"9d3d01fc\",\n null\n \n)\n\nexport default component.exports","import { Card, Deck, LearningSession, LearningSessionElement } from \"@/types\";\n\n/* numberOfRecentCardsToIgnoreWhenSelectingNextCard defines when a card can be used again;\n * it's an object where the key defines the rating for which this rule applies and the value\n * says how many other cards need to be used before the card can be used again\n */\n\nconst today = new Date().getTime();\nfunction getCardWeigthBasedOnRecentRatings(card: Card): number {\n const defaultWeightForUnusedCards = 80;\n let weight;\n if (card.r === undefined || card.r.length === 0) {\n weight = defaultWeightForUnusedCards;\n } else {\n const mostRecentCardRating = card.r.reduce(\n (mostRecentRatingObj, curRatingObj) =>\n curRatingObj.t > mostRecentRatingObj.t\n ? curRatingObj\n : mostRecentRatingObj\n );\n // downgrade rating (0-100) by one for each day\n const daysSinceLastRating =\n (today - mostRecentCardRating.t) / (1000 * 60 * 60 * 24);\n const virtualRating = mostRecentCardRating.r - daysSinceLastRating;\n // map virtual rating to weight\n weight = Math.max(0, 100 - virtualRating) || 1;\n }\n return weight;\n}\n\nexport default class LearningSessionManager {\n decks = [] as Deck[];\n numberOfRecentCardsToIgnoreWhenSelectingNextCard: {\n [rating: number]: number;\n } = {};\n cardsToSelectFrom = [] as LearningSessionElement[];\n learningSession = {} as LearningSession;\n\n constructor(\n selectedDecks: Deck[],\n numberOfRecentCardsToIgnoreWhenSelectingNextCard: {\n [rating: number]: number;\n } = {}\n ) {\n this.decks = selectedDecks;\n this.numberOfRecentCardsToIgnoreWhenSelectingNextCard = numberOfRecentCardsToIgnoreWhenSelectingNextCard;\n this.cardsToSelectFrom = [];\n\n this.decks.forEach((deck) => {\n deck.cards.forEach((card) => {\n this.cardsToSelectFrom.push({\n deckId: deck.id,\n cardId: card.id,\n showAnswer: false,\n rating: undefined,\n card: undefined,\n weight: getCardWeigthBasedOnRecentRatings(card),\n });\n });\n });\n this.learningSession = { elements: [], currentElementIndex: 0 };\n this.injectNewCard();\n }\n\n injectNewCard(): boolean {\n if (this.cardsToSelectFrom.length === 0) {\n return false;\n }\n const randomCardIndex = this.getRandomCardIndex();\n this.learningSession.elements.push(this.cardsToSelectFrom[randomCardIndex]);\n this.cardsToSelectFrom.splice(randomCardIndex, 1);\n\n for (const ruleRating in this\n .numberOfRecentCardsToIgnoreWhenSelectingNextCard) {\n const indexOfCardToBePossiblyUsedAgainForSelection =\n this.learningSession.elements.length -\n (this.numberOfRecentCardsToIgnoreWhenSelectingNextCard[\n Number(ruleRating)\n ] +\n 1);\n if (indexOfCardToBePossiblyUsedAgainForSelection >= 0) {\n const cardToBeUsedAgainForSelection = this.learningSession.elements[\n indexOfCardToBePossiblyUsedAgainForSelection\n ];\n if (cardToBeUsedAgainForSelection.rating?.r === Number(ruleRating)) {\n this.cardsToSelectFrom.push({\n deckId: cardToBeUsedAgainForSelection.deckId,\n cardId: cardToBeUsedAgainForSelection.cardId,\n });\n }\n }\n }\n return true;\n }\n\n getRandomCardIndex(): number {\n const sumWeights = this.cardsToSelectFrom.reduce(\n (sum, card) => sum + (card.weight || 0),\n 0\n );\n const randomNumberInWeightSumRange = Math.random() * sumWeights;\n let curWeightSum = 0;\n for (let index = 0; index < this.cardsToSelectFrom.length; index++) {\n curWeightSum += this.cardsToSelectFrom[index].weight || 0;\n if (curWeightSum > randomNumberInWeightSumRange) {\n return index;\n }\n }\n // if random card selection based on some weighted distribution didn't work, assume even distribution\n return Math.floor(Math.random() * this.cardsToSelectFrom.length);\n }\n\n getCurrentLearningSessionElementWithCardDetails(): LearningSessionElement {\n const currentLearningSessionElement = this.learningSession.elements[\n this.learningSession.currentElementIndex\n ];\n currentLearningSessionElement.card = this.decks\n .find((deck) => deck.id === currentLearningSessionElement.deckId)\n ?.cards.find((card) => card.id === currentLearningSessionElement.cardId);\n return currentLearningSessionElement;\n }\n\n moveToNextLearningSessionElement(): void {\n if (\n this.learningSession.currentElementIndex ===\n this.learningSession.elements.length - 1\n ) {\n if (!this.injectNewCard()) {\n return;\n }\n }\n this.learningSession.currentElementIndex++;\n }\n\n moveToPrevLearningSessionElement(): void {\n if (this.learningSession.currentElementIndex > 0) {\n this.learningSession.currentElementIndex--;\n }\n }\n\n revealAnswerForCurrentLearningSessionElement(): void {\n const currentLearningSessionElement = this.learningSession.elements[\n this.learningSession.currentElementIndex\n ];\n currentLearningSessionElement.showAnswer = true;\n }\n\n saveRatingForCurrentLearningSessionElement(rating: number): boolean {\n const currentLearningSessionElement = this.learningSession.elements[\n this.learningSession.currentElementIndex\n ];\n const t = new Date().getTime();\n let didOverwriteOldRating = false;\n const deck = this.decks.find(\n (deck) => deck.id === currentLearningSessionElement.deckId\n );\n const card = deck?.cards.find(\n (card) => card.id === currentLearningSessionElement.cardId\n );\n if (currentLearningSessionElement.rating?.t) {\n const oldRating = card?.r?.find(\n (oldRatingObject) =>\n oldRatingObject.t === currentLearningSessionElement.rating?.t\n );\n if (oldRating) {\n oldRating.t = t;\n oldRating.r = rating;\n didOverwriteOldRating = true;\n }\n } else {\n if (card) {\n if (!Array.isArray(card?.r)) {\n card.r = [];\n }\n card.r.push({ t, r: rating });\n }\n }\n currentLearningSessionElement.rating = { t, r: rating };\n return Boolean(didOverwriteOldRating);\n }\n}\n","import LearningSessionManager from \"./learningSessionManager\";\n\nexport default class FollowUpLearningSessionManager extends LearningSessionManager {\n constructor(data: LearningSessionManager) {\n super(data.decks, data.numberOfRecentCardsToIgnoreWhenSelectingNextCard);\n this.cardsToSelectFrom = data.cardsToSelectFrom;\n this.learningSession = data.learningSession;\n }\n}\n","import {\n Event,\n QuitLearningReason,\n CustomDialogOptions,\n CustomDialogOptionsBarChartBar,\n} from \"../types\";\n\nimport { clearLearningSessionManagerDataInLocalStorage } from \"./learningSessionStorageHelper\";\n\nexport function finishLearningDialog(\n context: any,\n bars: CustomDialogOptionsBarChartBar[],\n callbackLearningFinished: { (): void }\n) {\n const options = {\n title: \"Finish Learning?\",\n message:\n \"You just finished your learning session. Do you want to finish and go to the deck selection?\",\n barChart: {\n bars,\n },\n buttons: [\n {\n name: \"Review Cards\",\n color: \"grey\",\n },\n {\n name: \"Finish\",\n color: \"indigo\",\n callback: () => {\n context.$eventHub.$emit(\n Event.QUIT_LEARNING,\n QuitLearningReason.NO_MORE_CARDS\n );\n clearLearningSessionManagerDataInLocalStorage();\n callbackLearningFinished();\n },\n },\n ],\n } as CustomDialogOptions;\n context.$eventHub.$emit(Event.SHOW_CUSTOM_DIALOG, options);\n}\n","import { Event, QuitLearningReason, CustomDialogOptionsBarChartBar } from \"../types\";\nimport { clearLearningSessionManagerDataInLocalStorage } from \"./learningSessionStorageHelper\";\n\nexport function quitLearningDialog(\n context: any,\n bars: CustomDialogOptionsBarChartBar[]\n) {\n context.$eventHub.$emit(\"showCustomDialog\", {\n title: \"Quit Learning?\",\n message:\n \"Do you really want to quit learning? Nevertheless, your progress is saved.\",\n barChart: {\n bars,\n },\n buttons: [\n {\n name: \"Cancel\",\n color: \"grey\",\n },\n {\n name: \"Quit\",\n color: \"orange darken-1\",\n callback: () => {\n context.$eventHub.$emit(\n Event.QUIT_LEARNING,\n QuitLearningReason.USER_ACTION\n );\n clearLearningSessionManagerDataInLocalStorage();\n },\n },\n ],\n });\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport Rating from \"./Rating.vue\";\nimport {\n Deck,\n LearningSessionElement,\n Event,\n CustomDialogOptionsBarChartBar\n} from \"../../types\";\nimport LearningSessionManager from \"../../helpers/learningSessionManager\";\nimport FollowUpLearningSessionManager from \"../../helpers/followUpLearningSessionManager\";\n\nimport { finishLearningDialog } from \"../../helpers/finishLearningDialogHelper\";\nimport { quitLearningDialog } from \"../../helpers/quitLearningDialogHelper\";\nimport {\n saveLearningSessionManagerDataToLocalStorage,\n getLearningSessionManagerDataFromLocalStorage\n} from \"../../helpers/learningSessionStorageHelper\";\n\nconst LearnProps = Vue.extend({\n props: {\n decks: { type: Array as () => Deck[] },\n numberOfSelectedDecks: Number,\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n Rating\n }\n})\nexport default class Learn extends LearnProps {\n numberOfStarsInRating = 5;\n learningSessionManager = new LearningSessionManager([]);\n isLearningSessionFinishedAndComponentWillBeDestroyedSoon = false;\n curLearningElement = {\n deckId: 0,\n cardId: 0,\n showAnswer: false,\n rating: {},\n card: {\n id: 0,\n q: \"\",\n a: \"\"\n }\n } as LearningSessionElement;\n\n $refs!: {\n rating: Rating;\n };\n\n created() {\n this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon = false;\n this.$eventHub.$on(Event.SWIPE_LEFT_IN_LEARN, () => {\n this.moveToNext();\n });\n this.$eventHub.$on(Event.SWIPE_RIGHT_IN_LEARN, () => {\n this.moveToPrev();\n });\n this.$eventHub.$on(Event.PREPARE_QUIT_LEARNING, () => {\n this.quitLearning();\n });\n }\n destroyed() {\n this.$eventHub.$off(Event.SWIPE_LEFT_IN_LEARN);\n this.$eventHub.$off(Event.SWIPE_RIGHT_IN_LEARN);\n this.$eventHub.$off(Event.PREPARE_QUIT_LEARNING);\n }\n\n updateCurLearningElement() {\n if (this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon) return;\n this.curLearningElement = this.learningSessionManager.getCurrentLearningSessionElementWithCardDetails();\n this.updateRatingForCurrentLearningElement();\n saveLearningSessionManagerDataToLocalStorage(this.learningSessionManager);\n }\n\n updateRatingForCurrentLearningElement() {\n let r = 0;\n if (this.curLearningElement.rating?.r !== undefined) {\n r = this.mapRatingFrom100ToStars(this.curLearningElement.rating.r);\n }\n // rating component is not mounted yet due to re-rendering\n this.$nextTick(() => {\n if (this.$refs.rating) {\n this.$refs.rating.setRating(r);\n }\n });\n }\n\n beforeMount() {\n const learningSessionManagerDataInLocalStorage = getLearningSessionManagerDataFromLocalStorage();\n if (learningSessionManagerDataInLocalStorage) {\n this.learningSessionManager = new FollowUpLearningSessionManager(\n learningSessionManagerDataInLocalStorage\n );\n } else {\n if (this.numberOfSelectedDecks === 0) {\n this.$router.replace(\"/\");\n return;\n }\n this.learningSessionManager = new LearningSessionManager(\n this.decks.filter(deck => deck.selected)\n );\n }\n this.updateCurLearningElement();\n }\n\n checkIfCardIsEndOfSession(): boolean {\n const endOfSession =\n (this.learningSessionManager.learningSession.currentElementIndex ===\n this.learningSessionManager.learningSession.elements.length - 1 &&\n this.learningSessionManager.cardsToSelectFrom.length === 0) ||\n (this.cardLimit === \"0\"\n ? false\n : this.learningSessionManager.learningSession.currentElementIndex ===\n parseInt(this.cardLimit) - 1);\n return endOfSession;\n }\n\n moveToNext() {\n if (this.checkIfCardIsEndOfSession()) {\n this.finishSession();\n }\n this.learningSessionManager.moveToNextLearningSessionElement();\n }\n\n get buttonNext(): { text: string; color: string } {\n if (this.checkIfCardIsEndOfSession()) {\n return {\n text: \"Finish\",\n color: \"indigo lighten-1\"\n };\n } else {\n return {\n text: \"Next\",\n color: \"grey lighten-1\"\n };\n }\n }\n\n moveToPrev() {\n this.learningSessionManager.moveToPrevLearningSessionElement();\n }\n\n revealAnswer() {\n this.learningSessionManager.revealAnswerForCurrentLearningSessionElement();\n }\n\n onRating(rating: number, programmatically = false) {\n if (programmatically) return;\n const r = this.mapRatingFromStarsTo100(rating);\n this.learningSessionManager.saveRatingForCurrentLearningSessionElement(r);\n saveLearningSessionManagerDataToLocalStorage(this.learningSessionManager);\n }\n\n mapRatingFromStarsTo100(rating: number): number {\n // map 1-n -> 0-100\n return ((rating - 1) * 100) / (this.numberOfStarsInRating - 1);\n }\n mapRatingFrom100ToStars(rating: number): number {\n // map 0-100 -> 1-n\n return (rating * (this.numberOfStarsInRating - 1)) / 100 + 1;\n }\n\n finishSession() {\n finishLearningDialog(this, this.getBarsForFinishLearningDialog(), () => {\n this.isLearningSessionFinishedAndComponentWillBeDestroyedSoon = true;\n });\n }\n\n getBarsForFinishLearningDialog(): CustomDialogOptionsBarChartBar[] {\n const bars = [];\n for (let rating = 1; rating <= this.numberOfStarsInRating; rating++) {\n bars.push({ name: `${rating}`, value: 0 });\n }\n for (const element of this.learningSessionManager.learningSession\n .elements) {\n if (element.rating?.r !== undefined) {\n bars[this.mapRatingFrom100ToStars(element.rating.r) - 1].value += 1;\n }\n }\n return bars;\n }\n\n quitLearning() {\n quitLearningDialog(this, this.getBarsForFinishLearningDialog());\n }\n\n updateVerticalCentering() {\n for (const el of document.getElementsByClassName(\"max-height\")) {\n if (el.scrollHeight > el.clientHeight) {\n el.classList.remove(\"flex-center\");\n } else {\n el.classList.add(\"flex-center\");\n }\n }\n }\n mounted() {\n this.updateVerticalCentering();\n }\n updated() {\n this.updateVerticalCentering();\n this.updateCurLearningElement();\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Learn.vue?vue&type=template&id=7b6129e6&scoped=true&\"\nimport script from \"./Learn.vue?vue&type=script&lang=ts&\"\nexport * from \"./Learn.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Learn.vue?vue&type=style&index=0&id=7b6129e6&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 \"7b6129e6\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCardActions,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport { Deck, LearningSession } from \"../types\";\n\nimport LearnComponent from \"../components/learn/Learn.vue\";\n\nconst LearnProps = Vue.extend({\n props: {\n decks: { type: Array as () => Deck[] },\n learningSession: { type: Object as () => LearningSession },\n numberOfSelectedDecks: Number,\n cardLimit: String\n }\n});\n\n@Component({\n components: {\n LearnComponent\n }\n})\nexport default class Learn extends LearnProps {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Learn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Learn.vue?vue&type=template&id=6cc4e3a0&scoped=true&\"\nimport script from \"./Learn.vue?vue&type=script&lang=ts&\"\nexport * from \"./Learn.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Learn.vue?vue&type=style&index=0&id=6cc4e3a0&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 \"6cc4e3a0\",\n null\n \n)\n\nexport default component.exports","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!./Rating.vue?vue&type=style&index=0&id=9d3d01fc&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!./Rating.vue?vue&type=style&index=0&id=9d3d01fc&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!./Learn.vue?vue&type=style&index=0&id=6cc4e3a0&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!./Learn.vue?vue&type=style&index=0&id=6cc4e3a0&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!./Learn.vue?vue&type=style&index=0&id=7b6129e6&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!./Learn.vue?vue&type=style&index=0&id=7b6129e6&scoped=true&lang=css&\""],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-c9cd02f0.2c20a441.js b/js/chunk-c9cd02f0.cd91040b.js similarity index 99% rename from js/chunk-c9cd02f0.2c20a441.js rename to js/chunk-c9cd02f0.cd91040b.js index a88b6ec..8aa3b48 100644 --- a/js/chunk-c9cd02f0.2c20a441.js +++ b/js/chunk-c9cd02f0.cd91040b.js @@ -1,2 +1,2 @@ (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-c9cd02f0"],{"0bc6":function(t,e,r){},"1da1":function(t,e,r){"use strict";r.d(e,"a",(function(){return o}));r("d3b7");function n(t,e,r,n,o,i,a){try{var c=t[i](a),s=c.value}catch(u){return void r(u)}c.done?e(s):Promise.resolve(s).then(n,o)}function o(t){return function(){var e=this,r=arguments;return new Promise((function(o,i){var a=t.apply(e,r);function c(t){n(a,o,i,c,s,"next",t)}function s(t){n(a,o,i,c,s,"throw",t)}c(void 0)}))}}},3464:function(t){t.exports=JSON.parse('[{"type":"official","name":"Official Test Deck","author":"Niko Lockenvitz","desc":"Example Deck created with FFC CLI","url":"https://raw.githubusercontent.com/fancy-flashcard/ffc/master/cli/test.json"}]')},"71b8":function(t,e,r){},"72ad":function(t,e,r){"use strict";r.r(e);var n=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"thirdpartydecks"},[r("ThirdPartyDeckSelection")],1)},o=[],i=r("d4ec"),a=r("262e"),c=r("2caf"),s=r("9ab4"),u=r("2b0e"),l=r("2fe1"),h=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"ThirdPartyDeckSelection"},[r("v-subheader",[t._v("Third Party Decks "),r("v-icon",{staticClass:"mx-1",attrs:{size:"1em"},on:{click:function(e){t.showHelpText=!t.showHelpText}}},[t._v("mdi-help-circle-outline")])],1),r("p",{directives:[{name:"show",rawName:"v-show",value:t.showHelpText,expression:"showHelpText"}],staticClass:"description"},[t._v(" Easily import decks created by others. If you want to add your own deck to the selection, check out our "),r("a",{attrs:{href:"https://github.com/fancy-flashcard/ffc/"}},[t._v("GitHub repository")]),t._v("! Decks can be official "),r("v-icon",{attrs:{size:"1em",color:"indigo"}},[t._v("mdi-flash-circle")]),t._v(", curated "),r("v-icon",{attrs:{size:"1em",color:"indigo"}},[t._v("mdi-check-decagram")]),t._v(", sponsored "),r("v-icon",{attrs:{size:"1em",color:"indigo"}},[t._v("mdi-cash-usd-outline")]),t._v(" or just plain old normal decks. "),r("br"),t._v(" Click on a deck to see the details and add it by clicking on the download button. ")],1),r("v-list",[r("v-list-item-group",{on:{change:t.onChange},model:{value:t.deckModel,callback:function(e){t.deckModel=e},expression:"deckModel"}},t._l(t.thirdPartyList,(function(e,n){return r("v-list-item",{key:n,attrs:{value:e.url,id:e.url}},[r("v-list-item-content",[r("v-list-item-title",[t._v(" "+t._s(e.name)+" "),r("v-icon",{attrs:{size:"1em",color:"indigo"}},[t._v(" "+t._s("sponsored"===e.type?"mdi-cash-usd-outline":"curated"===e.type?"mdi-check-decagram":"official"===e.type?"mdi-flash-circle":null)+" ")])],1)],1),r("v-list-item-icon",[r("v-btn",{attrs:{icon:"",dark:""},on:{click:function(r){return r.stopPropagation(),t.onDownload(e.url)}}},[r("v-icon",[t._v("mdi-download")])],1)],1)],1)})),1)],1)],1)},f=[],d=(r("7db0"),r("b0c0"),r("d3b7"),r("96cf"),r("1da1")),v=r("bee2"),p=r("3464"),y=r("ebe2"),m=function(t){Object(a["a"])(r,t);var e=Object(c["a"])(r);function r(){var t;return Object(i["a"])(this,r),t=e.apply(this,arguments),t.thirdPartyList=p,t.deckModel=null,t.showHelpText=!1,t}return Object(v["a"])(r,[{key:"onChange",value:function(){var t=this,e=this.deckModel,r=p.find((function(t){return t.url===e})),n={title:null===r||void 0===r?void 0:r.name,type:null===r||void 0===r?void 0:r.type,multipleMessages:[{name:"Author",value:null===r||void 0===r?void 0:r.author},{name:"Description",value:null===r||void 0===r?void 0:r.desc},{name:"Type",value:null===r||void 0===r?void 0:r.type}],buttons:[{name:"Close",color:"indigo",callback:function(){t.deckModel=null}}]};this.$eventHub.$emit(y["a"].SHOW_CUSTOM_DIALOG,n)}},{key:"onDownload",value:function(){var t=Object(d["a"])(regeneratorRuntime.mark((function t(e){var r,n;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,fetch(e);case 3:return r=t.sent,t.next=6,r.json();case 6:n=t.sent,this.$eventHub.$emit(y["a"].ADD_DECKS_FROM_JSON,n,e),t.next=13;break;case 10:t.prev=10,t.t0=t["catch"](0),this.$eventHub.$emit(y["a"].SNACKBAR_EVENT,"An error occurred while loading the third party deck");case 13:this.deckModel=null;case 14:case"end":return t.stop()}}),t,this,[[0,10]])})));function e(e){return t.apply(this,arguments)}return e}()}]),r}(u["a"]);m=Object(s["a"])([l["a"]],m);var g=m,w=g,b=(r("de9e"),r("2877")),k=r("6544"),x=r.n(k),_=r("8336"),L=r("132d"),O=r("8860"),j=r("da13"),E=r("5d23"),T=r("1baa"),C=r("34c3"),S=r("e0c7"),P=Object(b["a"])(w,h,f,!1,null,"5a19b7f8",null),D=P.exports;x()(P,{VBtn:_["a"],VIcon:L["a"],VList:O["a"],VListItem:j["a"],VListItemContent:E["a"],VListItemGroup:T["a"],VListItemIcon:C["a"],VListItemTitle:E["b"],VSubheader:S["a"]});var N=function(t){Object(a["a"])(r,t);var e=Object(c["a"])(r);function r(){return Object(i["a"])(this,r),e.apply(this,arguments)}return r}(u["a"]);N=Object(s["a"])([Object(l["a"])({components:{ThirdPartyDeckSelection:D}})],N);var I=N,G=I,$=Object(b["a"])(G,n,o,!1,null,"283759ed",null);e["default"]=$.exports},"96cf":function(t,e,r){var n=function(t){"use strict";var e,r=Object.prototype,n=r.hasOwnProperty,o="function"===typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(D){s=function(t,e,r){return t[e]=r}}function u(t,e,r,n){var o=e&&e.prototype instanceof y?e:y,i=Object.create(o.prototype),a=new C(n||[]);return i._invoke=O(t,r,a),i}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(D){return{type:"throw",arg:D}}}t.wrap=u;var h="suspendedStart",f="suspendedYield",d="executing",v="completed",p={};function y(){}function m(){}function g(){}var w={};w[i]=function(){return this};var b=Object.getPrototypeOf,k=b&&b(b(S([])));k&&k!==r&&n.call(k,i)&&(w=k);var x=g.prototype=y.prototype=Object.create(w);function _(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function r(o,i,a,c){var s=l(t[o],t,i);if("throw"!==s.type){var u=s.arg,h=u.value;return h&&"object"===typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,a,c)}),(function(t){r("throw",t,a,c)})):e.resolve(h).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,c)}))}c(s.arg)}var o;function i(t,n){function i(){return new e((function(e,o){r(t,n,e,o)}))}return o=o?o.then(i,i):i()}this._invoke=i}function O(t,e,r){var n=h;return function(o,i){if(n===d)throw new Error("Generator is already running");if(n===v){if("throw"===o)throw i;return P()}r.method=o,r.arg=i;while(1){var a=r.delegate;if(a){var c=j(a,r);if(c){if(c===p)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===h)throw n=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=d;var s=l(t,e,r);if("normal"===s.type){if(n=r.done?v:f,s.arg===p)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=v,r.method="throw",r.arg=s.arg)}}}function j(t,r){var n=t.iterator[r.method];if(n===e){if(r.delegate=null,"throw"===r.method){if(t.iterator["return"]&&(r.method="return",r.arg=e,j(t,r),"throw"===r.method))return p;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var o=l(n,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,p;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,p):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,p)}function E(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(E,this),this.reset(!0)}function S(t){if(t){var r=t[i];if(r)return r.call(t);if("function"===typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){while(++o=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),T(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;T(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:S(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),p}},t}(t.exports);try{regeneratorRuntime=n}catch(o){Function("r","regeneratorRuntime = r")(n)}},de9e:function(t,e,r){"use strict";var n=r("71b8"),o=r.n(n);o.a},e0c7:function(t,e,r){"use strict";var n=r("5530"),o=(r("0bc6"),r("7560")),i=r("58df");e["a"]=Object(i["a"])(o["a"]).extend({name:"v-subheader",props:{inset:Boolean},render:function(t){return t("div",{staticClass:"v-subheader",class:Object(n["a"])({"v-subheader--inset":this.inset},this.themeClasses),attrs:this.$attrs,on:this.$listeners},this.$slots.default)}})}}]); -//# sourceMappingURL=chunk-c9cd02f0.2c20a441.js.map \ No newline at end of file +//# sourceMappingURL=chunk-c9cd02f0.cd91040b.js.map \ No newline at end of file diff --git a/js/chunk-c9cd02f0.2c20a441.js.map b/js/chunk-c9cd02f0.cd91040b.js.map similarity index 99% rename from js/chunk-c9cd02f0.2c20a441.js.map rename to js/chunk-c9cd02f0.cd91040b.js.map index 4af00d2..c37d0a9 100644 --- a/js/chunk-c9cd02f0.2c20a441.js.map +++ b/js/chunk-c9cd02f0.cd91040b.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/views/ThirdPartyDecks.vue?1389","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?9452","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?4c17","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?de8e","webpack:///./src/views/ThirdPartyDecks.vue","webpack:///./src/views/ThirdPartyDecks.vue?0c64","webpack:///./src/views/ThirdPartyDecks.vue?369e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?5c2e","webpack:///../../../src/components/VSubheader/VSubheader.ts"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","render","_vm","_h","$createElement","_c","_self","staticClass","staticRenderFns","_v","attrs","on","$event","showHelpText","directives","name","rawName","expression","onChange","model","callback","$$v","deckModel","_l","deck","index","url","_s","type","stopPropagation","onDownload","thirdPartyList","currentURL","currentDeck","find","options","title","multipleMessages","author","desc","buttons","color","$eventHub","$emit","SHOW_CUSTOM_DIALOG","fetch","response","json","fileContent","ADD_DECKS_FROM_JSON","SNACKBAR_EVENT","component","VBtn","VIcon","VList","VListItem","VListItemContent","VListItemGroup","VListItemIcon","VListItemTitle","VSubheader","components","ThirdPartyDeckSelection","runtime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","AsyncIterator","PromiseImpl","invoke","record","result","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","toString","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","props","inset","Boolean","h","class","themeClasses","$listeners","$slots"],"mappings":"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","file":"js/chunk-c9cd02f0.2c20a441.js","sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"thirdpartydecks\"},[_c('ThirdPartyDeckSelection')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ThirdPartyDeckSelection\"},[_c('v-subheader',[_vm._v(\"Third Party Decks \"),_c('v-icon',{staticClass:\"mx-1\",attrs:{\"size\":\"1em\"},on:{\"click\":function($event){_vm.showHelpText = !_vm.showHelpText}}},[_vm._v(\"mdi-help-circle-outline\")])],1),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showHelpText),expression:\"showHelpText\"}],staticClass:\"description\"},[_vm._v(\" Easily import decks created by others. If you want to add your own deck to the selection, check out our \"),_c('a',{attrs:{\"href\":\"https://github.com/fancy-flashcard/ffc/\"}},[_vm._v(\"GitHub repository\")]),_vm._v(\"! Decks can be official \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\"mdi-flash-circle\")]),_vm._v(\", curated \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\"mdi-check-decagram\")]),_vm._v(\", sponsored \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\"mdi-cash-usd-outline\")]),_vm._v(\" or just plain old normal decks. \"),_c('br'),_vm._v(\" Click on a deck to see the details and add it by clicking on the download button. \")],1),_c('v-list',[_c('v-list-item-group',{on:{\"change\":_vm.onChange},model:{value:(_vm.deckModel),callback:function ($$v) {_vm.deckModel=$$v},expression:\"deckModel\"}},_vm._l((_vm.thirdPartyList),function(deck,index){return _c('v-list-item',{key:index,attrs:{\"value\":deck.url,\"id\":deck.url}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(deck.name)+\" \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\" \"+_vm._s(deck.type === 'sponsored' ? 'mdi-cash-usd-outline' : deck.type === 'curated' ? 'mdi-check-decagram' : deck.type === 'official' ? 'mdi-flash-circle' : null)+\" \")])],1)],1),_c('v-list-item-icon',[_c('v-btn',{attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDownload(deck.url)}}},[_c('v-icon',[_vm._v(\"mdi-download\")])],1)],1)],1)}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport thirdPartyList from \"../../../third-party-decks.json\";\n\nimport { Event, ThirdPartyDeck } from \"../../types\";\n\n@Component\nexport default class ThirdPartyDeckSelection extends Vue {\n thirdPartyList: ThirdPartyDeck[] = thirdPartyList;\n deckModel = null;\n showHelpText = false;\n\n onChange() {\n const currentURL = this.deckModel;\n const currentDeck = thirdPartyList.find(deck => deck.url === currentURL);\n\n const options = {\n title: currentDeck?.name,\n type: currentDeck?.type,\n multipleMessages: [\n {\n name: \"Author\",\n value: currentDeck?.author\n },\n {\n name: \"Description\",\n value: currentDeck?.desc\n },\n {\n name: \"Type\",\n value: currentDeck?.type\n }\n ],\n buttons: [\n {\n name: \"Close\",\n color: \"indigo\",\n callback: () => {\n this.deckModel = null;\n }\n }\n ]\n };\n\n this.$eventHub.$emit(Event.SHOW_CUSTOM_DIALOG, options);\n }\n\n async onDownload(url: string) {\n try {\n const response = await fetch(url);\n const fileContent = await response.json();\n this.$eventHub.$emit(Event.ADD_DECKS_FROM_JSON, fileContent, url);\n } catch (error) {\n this.$eventHub.$emit(\n Event.SNACKBAR_EVENT,\n \"An error occurred while loading the third party deck\"\n );\n }\n\n this.deckModel = null;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ThirdPartyDeckSelection.vue?vue&type=template&id=5a19b7f8&scoped=true&\"\nimport script from \"./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ThirdPartyDeckSelection.vue?vue&type=style&index=0&id=5a19b7f8&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 \"5a19b7f8\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemContent,VListItemGroup,VListItemIcon,VListItemTitle,VSubheader})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ThirdPartyDeckSelection from \"../components/thirdparty/ThirdPartyDeckSelection.vue\";\n\n@Component({\n components: {\n ThirdPartyDeckSelection\n }\n})\nexport default class ThirdPartyDecks extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ThirdPartyDecks.vue?vue&type=template&id=283759ed&scoped=true&\"\nimport script from \"./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"283759ed\",\n null\n \n)\n\nexport default component.exports","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\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!./ThirdPartyDeckSelection.vue?vue&type=style&index=0&id=5a19b7f8&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!./ThirdPartyDeckSelection.vue?vue&type=style&index=0&id=5a19b7f8&scoped=true&lang=css&\"","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/views/ThirdPartyDecks.vue?7e5a","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?e9da","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?4c17","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?de8e","webpack:///./src/views/ThirdPartyDecks.vue","webpack:///./src/views/ThirdPartyDecks.vue?0c64","webpack:///./src/views/ThirdPartyDecks.vue?369e","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./src/components/thirdparty/ThirdPartyDeckSelection.vue?5c2e","webpack:///../../../src/components/VSubheader/VSubheader.ts"],"names":["asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","this","args","arguments","apply","err","undefined","render","_vm","_h","$createElement","_c","_self","staticClass","staticRenderFns","_v","attrs","on","$event","showHelpText","directives","name","rawName","expression","onChange","model","callback","$$v","deckModel","_l","deck","index","url","_s","type","stopPropagation","onDownload","thirdPartyList","currentURL","currentDeck","find","options","title","multipleMessages","author","desc","buttons","color","$eventHub","$emit","SHOW_CUSTOM_DIALOG","fetch","response","json","fileContent","ADD_DECKS_FROM_JSON","SNACKBAR_EVENT","component","VBtn","VIcon","VList","VListItem","VListItemContent","VListItemGroup","VListItemIcon","VListItemTitle","VSubheader","components","ThirdPartyDeckSelection","runtime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","defineProperty","enumerable","configurable","writable","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","call","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","AsyncIterator","PromiseImpl","invoke","record","result","__await","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","toString","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","Function","props","inset","Boolean","h","class","themeClasses","$listeners","$slots"],"mappings":"uLAAA,SAASA,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQC,EAAKC,GACpE,IACE,IAAIC,EAAOP,EAAIK,GAAKC,GAChBE,EAAQD,EAAKC,MACjB,MAAOC,GAEP,YADAP,EAAOO,GAILF,EAAKG,KACPT,EAAQO,GAERG,QAAQV,QAAQO,GAAOI,KAAKT,EAAOC,GAIxB,SAASS,EAAkBC,GACxC,OAAO,WACL,IAAIC,EAAOC,KACPC,EAAOC,UACX,OAAO,IAAIP,SAAQ,SAAUV,EAASC,GACpC,IAAIF,EAAMc,EAAGK,MAAMJ,EAAME,GAEzB,SAASd,EAAMK,GACbT,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQI,GAGlE,SAASJ,EAAOgB,GACdrB,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASgB,GAGnEjB,OAAMkB,S,yTC/BZ,IAAIC,EAAS,WAAa,IAAIC,EAAIP,KAASQ,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,mBAAmB,CAACF,EAAG,4BAA4B,IACrKG,EAAkB,G,wECDlB,EAAS,WAAa,IAAIN,EAAIP,KAASQ,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,2BAA2B,CAACF,EAAG,cAAc,CAACH,EAAIO,GAAG,sBAAsBJ,EAAG,SAAS,CAACE,YAAY,OAAOG,MAAM,CAAC,KAAO,OAAOC,GAAG,CAAC,MAAQ,SAASC,GAAQV,EAAIW,cAAgBX,EAAIW,gBAAgB,CAACX,EAAIO,GAAG,8BAA8B,GAAGJ,EAAG,IAAI,CAACS,WAAW,CAAC,CAACC,KAAK,OAAOC,QAAQ,SAAS7B,MAAOe,EAAgB,aAAEe,WAAW,iBAAiBV,YAAY,eAAe,CAACL,EAAIO,GAAG,6GAA6GJ,EAAG,IAAI,CAACK,MAAM,CAAC,KAAO,4CAA4C,CAACR,EAAIO,GAAG,uBAAuBP,EAAIO,GAAG,4BAA4BJ,EAAG,SAAS,CAACK,MAAM,CAAC,KAAO,MAAM,MAAQ,WAAW,CAACR,EAAIO,GAAG,sBAAsBP,EAAIO,GAAG,cAAcJ,EAAG,SAAS,CAACK,MAAM,CAAC,KAAO,MAAM,MAAQ,WAAW,CAACR,EAAIO,GAAG,wBAAwBP,EAAIO,GAAG,gBAAgBJ,EAAG,SAAS,CAACK,MAAM,CAAC,KAAO,MAAM,MAAQ,WAAW,CAACR,EAAIO,GAAG,0BAA0BP,EAAIO,GAAG,qCAAqCJ,EAAG,MAAMH,EAAIO,GAAG,wFAAwF,GAAGJ,EAAG,SAAS,CAACA,EAAG,oBAAoB,CAACM,GAAG,CAAC,OAAST,EAAIgB,UAAUC,MAAM,CAAChC,MAAOe,EAAa,UAAEkB,SAAS,SAAUC,GAAMnB,EAAIoB,UAAUD,GAAKJ,WAAW,cAAcf,EAAIqB,GAAIrB,EAAkB,gBAAE,SAASsB,EAAKC,GAAO,OAAOpB,EAAG,cAAc,CAACrB,IAAIyC,EAAMf,MAAM,CAAC,MAAQc,EAAKE,IAAI,GAAKF,EAAKE,MAAM,CAACrB,EAAG,sBAAsB,CAACA,EAAG,oBAAoB,CAACH,EAAIO,GAAG,IAAIP,EAAIyB,GAAGH,EAAKT,MAAM,KAAKV,EAAG,SAAS,CAACK,MAAM,CAAC,KAAO,MAAM,MAAQ,WAAW,CAACR,EAAIO,GAAG,IAAIP,EAAIyB,GAAiB,cAAdH,EAAKI,KAAuB,uBAAuC,YAAdJ,EAAKI,KAAqB,qBAAqC,aAAdJ,EAAKI,KAAsB,mBAAqB,MAAM,QAAQ,IAAI,GAAGvB,EAAG,mBAAmB,CAACA,EAAG,QAAQ,CAACK,MAAM,CAAC,KAAO,GAAG,KAAO,IAAIC,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAOiB,kBAAyB3B,EAAI4B,WAAWN,EAAKE,QAAQ,CAACrB,EAAG,SAAS,CAACH,EAAIO,GAAG,mBAAmB,IAAI,IAAI,MAAK,IAAI,IAAI,IACp9D,EAAkB,G,0FCuDD,EAArB,yG,0BACE,EAAAsB,eAAmC,EACnC,EAAAT,UAAY,KACZ,EAAAT,cAAe,EAHjB,4DAKU,WACAmB,EAAarC,KAAK2B,UAClBW,EAAc,EAAeC,MAAK,SAAAV,GAAI,OAAIA,EAAKE,MAAQM,KAEvDG,EAAU,CACdC,MAAK,OAAEH,QAAF,IAAEA,OAAF,EAAEA,EAAalB,KACpBa,KAAI,OAAEK,QAAF,IAAEA,OAAF,EAAEA,EAAaL,KACnBS,iBAAkB,CAChB,CACEtB,KAAM,SACN5B,MAAK,OAAE8C,QAAF,IAAEA,OAAF,EAAEA,EAAaK,QAEtB,CACEvB,KAAM,cACN5B,MAAK,OAAE8C,QAAF,IAAEA,OAAF,EAAEA,EAAaM,MAEtB,CACExB,KAAM,OACN5B,MAAK,OAAE8C,QAAF,IAAEA,OAAF,EAAEA,EAAaL,OAGxBY,QAAS,CACP,CACEzB,KAAM,QACN0B,MAAO,SACPrB,SAAU,WACR,EAAKE,UAAY,SAMzB3B,KAAK+C,UAAUC,MAAM,OAAMC,mBAAoBT,KArCnD,4FAwCmBT,GAxCnB,kHA0C6BmB,MAAMnB,GA1CnC,cA0CYoB,EA1CZ,gBA2CgCA,EAASC,OA3CzC,OA2CYC,EA3CZ,OA4CMrD,KAAK+C,UAAUC,MAAM,OAAMM,oBAAqBD,EAAatB,GA5CnE,qDA8CM/B,KAAK+C,UAAUC,MACb,OAAMO,eACN,wDAhDR,QAoDIvD,KAAK2B,UAAY,KApDrB,yHAAqD,QAAhC,EAAuB,gBAD3C,QACoB,WCxD+Y,I,6ICQha6B,EAAY,eACd,EACA,EACA,GACA,EACA,KACA,WACA,MAIa,EAAAA,EAAiB,QAahC,IAAkBA,EAAW,CAACC,OAAA,KAAKC,QAAA,KAAMC,QAAA,KAAMC,YAAA,KAAUC,iBAAA,OAAiBC,iBAAA,KAAeC,gBAAA,KAAcC,eAAA,OAAeC,aAAA,OCftH,IAAqB,EAArB,qIAA6C,QAAxB,EAAe,gBALnC,eAAU,CACTC,WAAY,CACVC,wBAAA,MAGiB,WCjBqX,ICOtY,EAAY,eACd,EACA7D,EACAO,GACA,EACA,KACA,WACA,MAIa,e,gCCXf,IAAIuD,EAAW,SAAUC,GACvB,aAEA,IAEIhE,EAFAiE,EAAKC,OAAOC,UACZC,EAASH,EAAGI,eAEZC,EAA4B,oBAAXC,OAAwBA,OAAS,GAClDC,EAAiBF,EAAQG,UAAY,aACrCC,EAAsBJ,EAAQK,eAAiB,kBAC/CC,EAAoBN,EAAQO,aAAe,gBAE/C,SAASC,EAAOC,EAAK/F,EAAKG,GAOxB,OANA+E,OAAOc,eAAeD,EAAK/F,EAAK,CAC9BG,MAAOA,EACP8F,YAAY,EACZC,cAAc,EACdC,UAAU,IAELJ,EAAI/F,GAEb,IAEE8F,EAAO,GAAI,IACX,MAAO/E,GACP+E,EAAS,SAASC,EAAK/F,EAAKG,GAC1B,OAAO4F,EAAI/F,GAAOG,GAItB,SAASiG,EAAKC,EAASC,EAAS5F,EAAM6F,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQnB,qBAAqBsB,EAAYH,EAAUG,EAC/EC,EAAYxB,OAAOyB,OAAOH,EAAerB,WACzCyB,EAAU,IAAIC,EAAQN,GAAe,IAMzC,OAFAG,EAAUI,QAAUC,EAAiBV,EAAS3F,EAAMkG,GAE7CF,EAcT,SAASM,EAASvG,EAAIsF,EAAK9F,GACzB,IACE,MAAO,CAAE2C,KAAM,SAAU3C,IAAKQ,EAAGwG,KAAKlB,EAAK9F,IAC3C,MAAOc,GACP,MAAO,CAAE6B,KAAM,QAAS3C,IAAKc,IAhBjCiE,EAAQoB,KAAOA,EAoBf,IAAIc,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,GAMvB,SAASb,KACT,SAASc,KACT,SAASC,KAIT,IAAIC,EAAoB,GACxBA,EAAkBjC,GAAkB,WAClC,OAAO7E,MAGT,IAAI+G,EAAWxC,OAAOyC,eAClBC,EAA0BF,GAAYA,EAASA,EAASG,EAAO,MAC/DD,GACAA,IAA4B3C,GAC5BG,EAAO6B,KAAKW,EAAyBpC,KAGvCiC,EAAoBG,GAGtB,IAAIE,EAAKN,EAA2BrC,UAClCsB,EAAUtB,UAAYD,OAAOyB,OAAOc,GAWtC,SAASM,EAAsB5C,GAC7B,CAAC,OAAQ,QAAS,UAAU6C,SAAQ,SAASC,GAC3CnC,EAAOX,EAAW8C,GAAQ,SAAShI,GACjC,OAAOU,KAAKmG,QAAQmB,EAAQhI,SAkClC,SAASiI,EAAcxB,EAAWyB,GAChC,SAASC,EAAOH,EAAQhI,EAAKL,EAASC,GACpC,IAAIwI,EAASrB,EAASN,EAAUuB,GAASvB,EAAWzG,GACpD,GAAoB,UAAhBoI,EAAOzF,KAEJ,CACL,IAAI0F,EAASD,EAAOpI,IAChBE,EAAQmI,EAAOnI,MACnB,OAAIA,GACiB,kBAAVA,GACPiF,EAAO6B,KAAK9G,EAAO,WACdgI,EAAYvI,QAAQO,EAAMoI,SAAShI,MAAK,SAASJ,GACtDiI,EAAO,OAAQjI,EAAOP,EAASC,MAC9B,SAASkB,GACVqH,EAAO,QAASrH,EAAKnB,EAASC,MAI3BsI,EAAYvI,QAAQO,GAAOI,MAAK,SAASiI,GAI9CF,EAAOnI,MAAQqI,EACf5I,EAAQ0I,MACP,SAASlI,GAGV,OAAOgI,EAAO,QAAShI,EAAOR,EAASC,MAvBzCA,EAAOwI,EAAOpI,KA4BlB,IAAIwI,EAEJ,SAASC,EAAQT,EAAQhI,GACvB,SAAS0I,IACP,OAAO,IAAIR,GAAY,SAASvI,EAASC,GACvCuI,EAAOH,EAAQhI,EAAKL,EAASC,MAIjC,OAAO4I,EAaLA,EAAkBA,EAAgBlI,KAChCoI,EAGAA,GACEA,IAKRhI,KAAKmG,QAAU4B,EA2BjB,SAAS3B,EAAiBV,EAAS3F,EAAMkG,GACvC,IAAIgC,EAAQ1B,EAEZ,OAAO,SAAgBe,EAAQhI,GAC7B,GAAI2I,IAAUxB,EACZ,MAAM,IAAIyB,MAAM,gCAGlB,GAAID,IAAUvB,EAAmB,CAC/B,GAAe,UAAXY,EACF,MAAMhI,EAKR,OAAO6I,IAGTlC,EAAQqB,OAASA,EACjBrB,EAAQ3G,IAAMA,EAEd,MAAO,EAAM,CACX,IAAI8I,EAAWnC,EAAQmC,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUnC,GACnD,GAAIoC,EAAgB,CAClB,GAAIA,IAAmB1B,EAAkB,SACzC,OAAO0B,GAIX,GAAuB,SAAnBpC,EAAQqB,OAGVrB,EAAQsC,KAAOtC,EAAQuC,MAAQvC,EAAQ3G,SAElC,GAAuB,UAAnB2G,EAAQqB,OAAoB,CACrC,GAAIW,IAAU1B,EAEZ,MADA0B,EAAQvB,EACFT,EAAQ3G,IAGhB2G,EAAQwC,kBAAkBxC,EAAQ3G,SAEN,WAAnB2G,EAAQqB,QACjBrB,EAAQyC,OAAO,SAAUzC,EAAQ3G,KAGnC2I,EAAQxB,EAER,IAAIiB,EAASrB,EAASX,EAAS3F,EAAMkG,GACrC,GAAoB,WAAhByB,EAAOzF,KAAmB,CAO5B,GAJAgG,EAAQhC,EAAQvG,KACZgH,EACAF,EAEAkB,EAAOpI,MAAQqH,EACjB,SAGF,MAAO,CACLnH,MAAOkI,EAAOpI,IACdI,KAAMuG,EAAQvG,MAGS,UAAhBgI,EAAOzF,OAChBgG,EAAQvB,EAGRT,EAAQqB,OAAS,QACjBrB,EAAQ3G,IAAMoI,EAAOpI,OAU7B,SAASgJ,EAAoBF,EAAUnC,GACrC,IAAIqB,EAASc,EAAStD,SAASmB,EAAQqB,QACvC,GAAIA,IAAWjH,EAAW,CAKxB,GAFA4F,EAAQmC,SAAW,KAEI,UAAnBnC,EAAQqB,OAAoB,CAE9B,GAAIc,EAAStD,SAAS,YAGpBmB,EAAQqB,OAAS,SACjBrB,EAAQ3G,IAAMe,EACdiI,EAAoBF,EAAUnC,GAEP,UAAnBA,EAAQqB,QAGV,OAAOX,EAIXV,EAAQqB,OAAS,QACjBrB,EAAQ3G,IAAM,IAAIqJ,UAChB,kDAGJ,OAAOhC,EAGT,IAAIe,EAASrB,EAASiB,EAAQc,EAAStD,SAAUmB,EAAQ3G,KAEzD,GAAoB,UAAhBoI,EAAOzF,KAIT,OAHAgE,EAAQqB,OAAS,QACjBrB,EAAQ3G,IAAMoI,EAAOpI,IACrB2G,EAAQmC,SAAW,KACZzB,EAGT,IAAIpH,EAAOmI,EAAOpI,IAElB,OAAMC,EAOFA,EAAKG,MAGPuG,EAAQmC,EAASQ,YAAcrJ,EAAKC,MAGpCyG,EAAQ4C,KAAOT,EAASU,QAQD,WAAnB7C,EAAQqB,SACVrB,EAAQqB,OAAS,OACjBrB,EAAQ3G,IAAMe,GAUlB4F,EAAQmC,SAAW,KACZzB,GANEpH,GA3BP0G,EAAQqB,OAAS,QACjBrB,EAAQ3G,IAAM,IAAIqJ,UAAU,oCAC5B1C,EAAQmC,SAAW,KACZzB,GAoDX,SAASoC,EAAaC,GACpB,IAAIC,EAAQ,CAAEC,OAAQF,EAAK,IAEvB,KAAKA,IACPC,EAAME,SAAWH,EAAK,IAGpB,KAAKA,IACPC,EAAMG,WAAaJ,EAAK,GACxBC,EAAMI,SAAWL,EAAK,IAGxBhJ,KAAKsJ,WAAWC,KAAKN,GAGvB,SAASO,EAAcP,GACrB,IAAIvB,EAASuB,EAAMQ,YAAc,GACjC/B,EAAOzF,KAAO,gBACPyF,EAAOpI,IACd2J,EAAMQ,WAAa/B,EAGrB,SAASxB,EAAQN,GAIf5F,KAAKsJ,WAAa,CAAC,CAAEJ,OAAQ,SAC7BtD,EAAYyB,QAAQ0B,EAAc/I,MAClCA,KAAK0J,OAAM,GA8Bb,SAASxC,EAAOyC,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAAS9E,GAC9B,GAAI+E,EACF,OAAOA,EAAetD,KAAKqD,GAG7B,GAA6B,oBAAlBA,EAASd,KAClB,OAAOc,EAGT,IAAKE,MAAMF,EAASG,QAAS,CAC3B,IAAIC,GAAK,EAAGlB,EAAO,SAASA,IAC1B,QAASkB,EAAIJ,EAASG,OACpB,GAAIrF,EAAO6B,KAAKqD,EAAUI,GAGxB,OAFAlB,EAAKrJ,MAAQmK,EAASI,GACtBlB,EAAKnJ,MAAO,EACLmJ,EAOX,OAHAA,EAAKrJ,MAAQa,EACbwI,EAAKnJ,MAAO,EAELmJ,GAGT,OAAOA,EAAKA,KAAOA,GAKvB,MAAO,CAAEA,KAAMV,GAIjB,SAASA,IACP,MAAO,CAAE3I,MAAOa,EAAWX,MAAM,GA+MnC,OA5mBAkH,EAAkBpC,UAAY2C,EAAG6C,YAAcnD,EAC/CA,EAA2BmD,YAAcpD,EACzCA,EAAkBqD,YAAc9E,EAC9B0B,EACA5B,EACA,qBAaFZ,EAAQ6F,oBAAsB,SAASC,GACrC,IAAIC,EAAyB,oBAAXD,GAAyBA,EAAOH,YAClD,QAAOI,IACHA,IAASxD,GAG2B,uBAAnCwD,EAAKH,aAAeG,EAAKhJ,QAIhCiD,EAAQgG,KAAO,SAASF,GAQtB,OAPI5F,OAAO+F,eACT/F,OAAO+F,eAAeH,EAAQtD,IAE9BsD,EAAOI,UAAY1D,EACnB1B,EAAOgF,EAAQlF,EAAmB,sBAEpCkF,EAAO3F,UAAYD,OAAOyB,OAAOmB,GAC1BgD,GAOT9F,EAAQmG,MAAQ,SAASlL,GACvB,MAAO,CAAEsI,QAAStI,IAsEpB8H,EAAsBG,EAAc/C,WACpC+C,EAAc/C,UAAUO,GAAuB,WAC7C,OAAO/E,MAETqE,EAAQkD,cAAgBA,EAKxBlD,EAAQoG,MAAQ,SAAS/E,EAASC,EAAS5F,EAAM6F,EAAa4B,QACxC,IAAhBA,IAAwBA,EAAc7H,SAE1C,IAAI+K,EAAO,IAAInD,EACb9B,EAAKC,EAASC,EAAS5F,EAAM6F,GAC7B4B,GAGF,OAAOnD,EAAQ6F,oBAAoBvE,GAC/B+E,EACAA,EAAK7B,OAAOjJ,MAAK,SAAS+H,GACxB,OAAOA,EAAOjI,KAAOiI,EAAOnI,MAAQkL,EAAK7B,WAuKjDzB,EAAsBD,GAEtBhC,EAAOgC,EAAIlC,EAAmB,aAO9BkC,EAAGtC,GAAkB,WACnB,OAAO7E,MAGTmH,EAAGwD,SAAW,WACZ,MAAO,sBAkCTtG,EAAQuG,KAAO,SAASC,GACtB,IAAID,EAAO,GACX,IAAK,IAAIvL,KAAOwL,EACdD,EAAKrB,KAAKlK,GAMZ,OAJAuL,EAAKE,UAIE,SAASjC,IACd,MAAO+B,EAAKd,OAAQ,CAClB,IAAIzK,EAAMuL,EAAKG,MACf,GAAI1L,KAAOwL,EAGT,OAFAhC,EAAKrJ,MAAQH,EACbwJ,EAAKnJ,MAAO,EACLmJ,EAQX,OADAA,EAAKnJ,MAAO,EACLmJ,IAsCXxE,EAAQ6C,OAASA,EAMjBhB,EAAQ1B,UAAY,CAClBwF,YAAa9D,EAEbwD,MAAO,SAASsB,GAcd,GAbAhL,KAAKiL,KAAO,EACZjL,KAAK6I,KAAO,EAGZ7I,KAAKuI,KAAOvI,KAAKwI,MAAQnI,EACzBL,KAAKN,MAAO,EACZM,KAAKoI,SAAW,KAEhBpI,KAAKsH,OAAS,OACdtH,KAAKV,IAAMe,EAEXL,KAAKsJ,WAAWjC,QAAQmC,IAEnBwB,EACH,IAAK,IAAI5J,KAAQpB,KAEQ,MAAnBoB,EAAK8J,OAAO,IACZzG,EAAO6B,KAAKtG,KAAMoB,KACjByI,OAAOzI,EAAK+J,MAAM,MACrBnL,KAAKoB,GAAQf,IAMrB+K,KAAM,WACJpL,KAAKN,MAAO,EAEZ,IAAI2L,EAAYrL,KAAKsJ,WAAW,GAC5BgC,EAAaD,EAAU5B,WAC3B,GAAwB,UAApB6B,EAAWrJ,KACb,MAAMqJ,EAAWhM,IAGnB,OAAOU,KAAKuL,MAGd9C,kBAAmB,SAAS+C,GAC1B,GAAIxL,KAAKN,KACP,MAAM8L,EAGR,IAAIvF,EAAUjG,KACd,SAASyL,EAAOC,EAAKC,GAYnB,OAXAjE,EAAOzF,KAAO,QACdyF,EAAOpI,IAAMkM,EACbvF,EAAQ4C,KAAO6C,EAEXC,IAGF1F,EAAQqB,OAAS,OACjBrB,EAAQ3G,IAAMe,KAGNsL,EAGZ,IAAK,IAAI5B,EAAI/J,KAAKsJ,WAAWQ,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAId,EAAQjJ,KAAKsJ,WAAWS,GACxBrC,EAASuB,EAAMQ,WAEnB,GAAqB,SAAjBR,EAAMC,OAIR,OAAOuC,EAAO,OAGhB,GAAIxC,EAAMC,QAAUlJ,KAAKiL,KAAM,CAC7B,IAAIW,EAAWnH,EAAO6B,KAAK2C,EAAO,YAC9B4C,EAAapH,EAAO6B,KAAK2C,EAAO,cAEpC,GAAI2C,GAAYC,EAAY,CAC1B,GAAI7L,KAAKiL,KAAOhC,EAAME,SACpB,OAAOsC,EAAOxC,EAAME,UAAU,GACzB,GAAInJ,KAAKiL,KAAOhC,EAAMG,WAC3B,OAAOqC,EAAOxC,EAAMG,iBAGjB,GAAIwC,GACT,GAAI5L,KAAKiL,KAAOhC,EAAME,SACpB,OAAOsC,EAAOxC,EAAME,UAAU,OAG3B,KAAI0C,EAMT,MAAM,IAAI3D,MAAM,0CALhB,GAAIlI,KAAKiL,KAAOhC,EAAMG,WACpB,OAAOqC,EAAOxC,EAAMG,gBAU9BV,OAAQ,SAASzG,EAAM3C,GACrB,IAAK,IAAIyK,EAAI/J,KAAKsJ,WAAWQ,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAId,EAAQjJ,KAAKsJ,WAAWS,GAC5B,GAAId,EAAMC,QAAUlJ,KAAKiL,MACrBxG,EAAO6B,KAAK2C,EAAO,eACnBjJ,KAAKiL,KAAOhC,EAAMG,WAAY,CAChC,IAAI0C,EAAe7C,EACnB,OAIA6C,IACU,UAAT7J,GACS,aAATA,IACD6J,EAAa5C,QAAU5J,GACvBA,GAAOwM,EAAa1C,aAGtB0C,EAAe,MAGjB,IAAIpE,EAASoE,EAAeA,EAAarC,WAAa,GAItD,OAHA/B,EAAOzF,KAAOA,EACdyF,EAAOpI,IAAMA,EAETwM,GACF9L,KAAKsH,OAAS,OACdtH,KAAK6I,KAAOiD,EAAa1C,WAClBzC,GAGF3G,KAAK+L,SAASrE,IAGvBqE,SAAU,SAASrE,EAAQ2B,GACzB,GAAoB,UAAhB3B,EAAOzF,KACT,MAAMyF,EAAOpI,IAcf,MAXoB,UAAhBoI,EAAOzF,MACS,aAAhByF,EAAOzF,KACTjC,KAAK6I,KAAOnB,EAAOpI,IACM,WAAhBoI,EAAOzF,MAChBjC,KAAKuL,KAAOvL,KAAKV,IAAMoI,EAAOpI,IAC9BU,KAAKsH,OAAS,SACdtH,KAAK6I,KAAO,OACa,WAAhBnB,EAAOzF,MAAqBoH,IACrCrJ,KAAK6I,KAAOQ,GAGP1C,GAGTqF,OAAQ,SAAS5C,GACf,IAAK,IAAIW,EAAI/J,KAAKsJ,WAAWQ,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAId,EAAQjJ,KAAKsJ,WAAWS,GAC5B,GAAId,EAAMG,aAAeA,EAGvB,OAFApJ,KAAK+L,SAAS9C,EAAMQ,WAAYR,EAAMI,UACtCG,EAAcP,GACPtC,IAKb,MAAS,SAASuC,GAChB,IAAK,IAAIa,EAAI/J,KAAKsJ,WAAWQ,OAAS,EAAGC,GAAK,IAAKA,EAAG,CACpD,IAAId,EAAQjJ,KAAKsJ,WAAWS,GAC5B,GAAId,EAAMC,SAAWA,EAAQ,CAC3B,IAAIxB,EAASuB,EAAMQ,WACnB,GAAoB,UAAhB/B,EAAOzF,KAAkB,CAC3B,IAAIgK,EAASvE,EAAOpI,IACpBkK,EAAcP,GAEhB,OAAOgD,GAMX,MAAM,IAAI/D,MAAM,0BAGlBgE,cAAe,SAASvC,EAAUf,EAAYE,GAa5C,OAZA9I,KAAKoI,SAAW,CACdtD,SAAUoC,EAAOyC,GACjBf,WAAYA,EACZE,QAASA,GAGS,SAAhB9I,KAAKsH,SAGPtH,KAAKV,IAAMe,GAGNsG,IAQJtC,EA7sBK,CAotBiB8H,EAAO9H,SAGtC,IACE+H,mBAAqBhI,EACrB,MAAOiI,GAUPC,SAAS,IAAK,yBAAdA,CAAwClI,K,kCC1uB1C,yBAAwgB,EAAG,G,sFCU5f,sBACb,QADa,OAGN,CACPhD,KADO,cAGPmL,MAAO,CACLC,MAAOC,SAGTnM,OAPO,SAOD,GACJ,OAAOoM,EAAE,MAAO,CACd9L,YADc,cAEd+L,MAAO,gBACL,qBAAsB3M,KADjB,OAEFA,KAAK4M,cAEV7L,MAAOf,KANO,OAOdgB,GAAIhB,KAAK6M,YACR7M,KAAK8M,OARR","file":"js/chunk-c9cd02f0.cd91040b.js","sourcesContent":["function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"thirdpartydecks\"},[_c('ThirdPartyDeckSelection')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ThirdPartyDeckSelection\"},[_c('v-subheader',[_vm._v(\"Third Party Decks \"),_c('v-icon',{staticClass:\"mx-1\",attrs:{\"size\":\"1em\"},on:{\"click\":function($event){_vm.showHelpText = !_vm.showHelpText}}},[_vm._v(\"mdi-help-circle-outline\")])],1),_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showHelpText),expression:\"showHelpText\"}],staticClass:\"description\"},[_vm._v(\" Easily import decks created by others. If you want to add your own deck to the selection, check out our \"),_c('a',{attrs:{\"href\":\"https://github.com/fancy-flashcard/ffc/\"}},[_vm._v(\"GitHub repository\")]),_vm._v(\"! Decks can be official \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\"mdi-flash-circle\")]),_vm._v(\", curated \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\"mdi-check-decagram\")]),_vm._v(\", sponsored \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\"mdi-cash-usd-outline\")]),_vm._v(\" or just plain old normal decks. \"),_c('br'),_vm._v(\" Click on a deck to see the details and add it by clicking on the download button. \")],1),_c('v-list',[_c('v-list-item-group',{on:{\"change\":_vm.onChange},model:{value:(_vm.deckModel),callback:function ($$v) {_vm.deckModel=$$v},expression:\"deckModel\"}},_vm._l((_vm.thirdPartyList),function(deck,index){return _c('v-list-item',{key:index,attrs:{\"value\":deck.url,\"id\":deck.url}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(deck.name)+\" \"),_c('v-icon',{attrs:{\"size\":\"1em\",\"color\":\"indigo\"}},[_vm._v(\" \"+_vm._s(deck.type === 'sponsored' ? 'mdi-cash-usd-outline' : deck.type === 'curated' ? 'mdi-check-decagram' : deck.type === 'official' ? 'mdi-flash-circle' : null)+\" \")])],1)],1),_c('v-list-item-icon',[_c('v-btn',{attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDownload(deck.url)}}},[_c('v-icon',[_vm._v(\"mdi-download\")])],1)],1)],1)}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport thirdPartyList from \"../../../third-party-decks.json\";\n\nimport { Event, ThirdPartyDeck } from \"../../types\";\n\n@Component\nexport default class ThirdPartyDeckSelection extends Vue {\n thirdPartyList: ThirdPartyDeck[] = thirdPartyList;\n deckModel = null;\n showHelpText = false;\n\n onChange() {\n const currentURL = this.deckModel;\n const currentDeck = thirdPartyList.find(deck => deck.url === currentURL);\n\n const options = {\n title: currentDeck?.name,\n type: currentDeck?.type,\n multipleMessages: [\n {\n name: \"Author\",\n value: currentDeck?.author\n },\n {\n name: \"Description\",\n value: currentDeck?.desc\n },\n {\n name: \"Type\",\n value: currentDeck?.type\n }\n ],\n buttons: [\n {\n name: \"Close\",\n color: \"indigo\",\n callback: () => {\n this.deckModel = null;\n }\n }\n ]\n };\n\n this.$eventHub.$emit(Event.SHOW_CUSTOM_DIALOG, options);\n }\n\n async onDownload(url: string) {\n try {\n const response = await fetch(url);\n const fileContent = await response.json();\n this.$eventHub.$emit(Event.ADD_DECKS_FROM_JSON, fileContent, url);\n } catch (error) {\n this.$eventHub.$emit(\n Event.SNACKBAR_EVENT,\n \"An error occurred while loading the third party deck\"\n );\n }\n\n this.deckModel = null;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ThirdPartyDeckSelection.vue?vue&type=template&id=5a19b7f8&scoped=true&\"\nimport script from \"./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThirdPartyDeckSelection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ThirdPartyDeckSelection.vue?vue&type=style&index=0&id=5a19b7f8&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 \"5a19b7f8\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\ninstallComponents(component, {VBtn,VIcon,VList,VListItem,VListItemContent,VListItemGroup,VListItemIcon,VListItemTitle,VSubheader})\n","\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\n\nimport ThirdPartyDeckSelection from \"../components/thirdparty/ThirdPartyDeckSelection.vue\";\n\n@Component({\n components: {\n ThirdPartyDeckSelection\n }\n})\nexport default class ThirdPartyDecks extends Vue {}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ThirdPartyDecks.vue?vue&type=template&id=283759ed&scoped=true&\"\nimport script from \"./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"\nexport * from \"./ThirdPartyDecks.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"283759ed\",\n null\n \n)\n\nexport default component.exports","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\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!./ThirdPartyDeckSelection.vue?vue&type=style&index=0&id=5a19b7f8&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!./ThirdPartyDeckSelection.vue?vue&type=style&index=0&id=5a19b7f8&scoped=true&lang=css&\"","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n"],"sourceRoot":""} \ No newline at end of file diff --git a/precache-manifest.709634ccb22d5e6356fb89db747ab76d.js b/precache-manifest.d2e3d4f8d67bb0a48842b531d52e335e.js similarity index 57% rename from precache-manifest.709634ccb22d5e6356fb89db747ab76d.js rename to precache-manifest.d2e3d4f8d67bb0a48842b531d52e335e.js index ea5a2f0..2120c00 100644 --- a/precache-manifest.709634ccb22d5e6356fb89db747ab76d.js +++ b/precache-manifest.d2e3d4f8d67bb0a48842b531d52e335e.js @@ -1,30 +1,30 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ { - "revision": "8a591894c2b20cec3661", + "revision": "149db1f447f26f7ddc08", "url": "/ffc/css/app.949d2d43.css" }, { - "revision": "4a0ecbb1da9770a748e8", + "revision": "3444653deb08da03ceb4", "url": "/ffc/css/chunk-065f4018.2db77a3e.css" }, { - "revision": "81820706fc0448875eac", + "revision": "3d01a1f0577e80be5961", "url": "/ffc/css/chunk-2eadd278.67146ca8.css" }, { - "revision": "892f97b7950e52970ef1", + "revision": "0030c7708be74006e743", "url": "/ffc/css/chunk-6e220460.506e66e1.css" }, { - "revision": "d12756e92a32916e9d32", + "revision": "4aeb05811ac9c3340a9a", "url": "/ffc/css/chunk-75fc5bce.905fd344.css" }, { - "revision": "bae87bb59db2261b9369", + "revision": "199b937336de49e37ed7", "url": "/ffc/css/chunk-7724eb6e.854399cf.css" }, { - "revision": "533020925dc1a75c1020", + "revision": "a4ce7c2666c737bb5107", "url": "/ffc/css/chunk-c9cd02f0.966620a7.css" }, { @@ -40,36 +40,36 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/ffc/img/flash.3ee01593.svg" }, { - "revision": "d2fe8e3e6cbbec654043e85c0462a2d3", + "revision": "5acd29250e65223a91fe4f1235cd1774", "url": "/ffc/index.html" }, { - "revision": "8a591894c2b20cec3661", - "url": "/ffc/js/app.dd22d936.js" + "revision": "149db1f447f26f7ddc08", + "url": "/ffc/js/app.38aa3ed0.js" }, { - "revision": "4a0ecbb1da9770a748e8", - "url": "/ffc/js/chunk-065f4018.dae1c5d0.js" + "revision": "3444653deb08da03ceb4", + "url": "/ffc/js/chunk-065f4018.089c1ae0.js" }, { - "revision": "81820706fc0448875eac", - "url": "/ffc/js/chunk-2eadd278.72b7fa82.js" + "revision": "3d01a1f0577e80be5961", + "url": "/ffc/js/chunk-2eadd278.9c6c8c4b.js" }, { - "revision": "892f97b7950e52970ef1", - "url": "/ffc/js/chunk-6e220460.bc7e55ca.js" + "revision": "0030c7708be74006e743", + "url": "/ffc/js/chunk-6e220460.eea51f45.js" }, { - "revision": "d12756e92a32916e9d32", - "url": "/ffc/js/chunk-75fc5bce.b6ba9b47.js" + "revision": "4aeb05811ac9c3340a9a", + "url": "/ffc/js/chunk-75fc5bce.31fd23e9.js" }, { - "revision": "bae87bb59db2261b9369", - "url": "/ffc/js/chunk-7724eb6e.afb9ec16.js" + "revision": "199b937336de49e37ed7", + "url": "/ffc/js/chunk-7724eb6e.7b085d09.js" }, { - "revision": "533020925dc1a75c1020", - "url": "/ffc/js/chunk-c9cd02f0.2c20a441.js" + "revision": "a4ce7c2666c737bb5107", + "url": "/ffc/js/chunk-c9cd02f0.cd91040b.js" }, { "revision": "d7918134d3b80838e069", diff --git a/service-worker.js b/service-worker.js index 6382bf1..349f697 100644 --- a/service-worker.js +++ b/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/ffc/precache-manifest.709634ccb22d5e6356fb89db747ab76d.js" + "/ffc/precache-manifest.d2e3d4f8d67bb0a48842b531d52e335e.js" ); workbox.core.setCacheNameDetails({prefix: "ffc"});