├── static ├── images │ ├── gta5.jpg │ ├── mafia.jpg │ ├── assassin.jpg │ ├── dragon-0.jpg │ ├── dragon-6.jpg │ ├── uncharted4.jpg │ ├── watch-dogs.jpg │ ├── watch-dogs2.jpg │ ├── dragon-kiwami.jpg │ ├── sleeping-dogs.jpg │ ├── metal-gear-solid.jpg │ └── uncharted-collection.jpg ├── css │ ├── main.css │ └── bootstrap.min.css └── js │ ├── gamesDB.js │ └── vue.min.js ├── .gitignore ├── .editorconfig ├── p8-component-communication ├── index.html └── main.js ├── p2-2-way-data-binding └── index.html ├── p1-hello-hacker-cafe └── index.html ├── p7-component ├── pageNav.html ├── main.js ├── index.html └── pageNav.js ├── p4-v-bind └── index.html ├── p3-directives └── index.html ├── p5-list-and-event-listener └── index.html └── p6-computed-properties └── index.html /static/images/gta5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/gta5.jpg -------------------------------------------------------------------------------- /static/images/mafia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/mafia.jpg -------------------------------------------------------------------------------- /static/images/assassin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/assassin.jpg -------------------------------------------------------------------------------- /static/images/dragon-0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/dragon-0.jpg -------------------------------------------------------------------------------- /static/images/dragon-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/dragon-6.jpg -------------------------------------------------------------------------------- /static/images/uncharted4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/uncharted4.jpg -------------------------------------------------------------------------------- /static/images/watch-dogs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/watch-dogs.jpg -------------------------------------------------------------------------------- /static/images/watch-dogs2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/watch-dogs2.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | index-*.html 2 | main-*.js 3 | pageNav-video.html 4 | pageNav-video.js 5 | post.md 6 | post_*.md 7 | img/ 8 | -------------------------------------------------------------------------------- /static/images/dragon-kiwami.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/dragon-kiwami.jpg -------------------------------------------------------------------------------- /static/images/sleeping-dogs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/sleeping-dogs.jpg -------------------------------------------------------------------------------- /static/images/metal-gear-solid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/metal-gear-solid.jpg -------------------------------------------------------------------------------- /static/images/uncharted-collection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/levblanc/vue-2-basics/HEAD/static/images/uncharted-collection.jpg -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 4 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /p8-component-communication/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
14 |

组件通信

15 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /p8-component-communication/main.js: -------------------------------------------------------------------------------- 1 | var bus = new Vue() 2 | 3 | Vue.component('toggle-btn', { 4 | template: '\ 5 | \ 8 | ', 9 | methods: { 10 | emmitToggle: function() { 11 | this.$emit('toggle-box') 12 | console.log('toggle-btn clicked!') 13 | // bus.$emit('toggle-box') 14 | } 15 | } 16 | }) 17 | 18 | Vue.component('listener', { 19 | template: '
sibling component
', 20 | mounted: function () { 21 | bus.$on('toggle-box', function () { 22 | alert('已经接收到toggle-box信号!') 23 | }) 24 | } 25 | }) 26 | 27 | var app = new Vue({ 28 | el: '#app', 29 | data: { 30 | showBox: true 31 | }, 32 | methods: { 33 | toggleBox: function() { 34 | this.showBox = !this.showBox 35 | } 36 | } 37 | }) 38 | -------------------------------------------------------------------------------- /p2-2-way-data-binding/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
14 | 15 | 16 |
{{ info }}
17 |
18 | 19 | 20 | 21 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /static/css/main.css: -------------------------------------------------------------------------------- 1 | /* 这里只是为了方便而把所有demo的css写到同一个css文件中 */ 2 | /* 实际工作中请一定避免这样的做法 */ 3 | body { 4 | margin: 20px; 5 | } 6 | 7 | /* p2 2 way data binding */ 8 | .text-input { 9 | margin-bottom: 20px; 10 | } 11 | 12 | /* p6 computed properties */ 13 | .myCash { 14 | color: orange; 15 | } 16 | 17 | .gameItem { 18 | padding: 15px; 19 | border-top: 1px solid #eee; 20 | border-left: 1px solid #eee; 21 | border-right: 1px solid #eee; 22 | overflow: hidden; 23 | } 24 | 25 | .gameItem:nth-child(2) { 26 | border-top-left-radius: 5px; 27 | border-top-right-radius: 5px; 28 | } 29 | 30 | .gameItem:last-child { 31 | border-bottom: 1px solid #eee; 32 | border-bottom-left-radius: 5px; 33 | border-bottom-right-radius: 5px; 34 | } 35 | 36 | .gameItem img { 37 | width: 150px; 38 | height: 150px; 39 | margin-right: 30px; 40 | float: left; 41 | } 42 | 43 | .gameItem .gameInfo { 44 | float: left; 45 | } 46 | 47 | .gameItem .gameInfo .price { 48 | font-size: 18px; 49 | font-weight: bold; 50 | } 51 | 52 | /* p8 component communication */ 53 | .boxWrapper { 54 | padding: 20px; 55 | border: 1px solid #ddd; 56 | margin-bottom: 10px; 57 | } 58 | -------------------------------------------------------------------------------- /p1-hello-hacker-cafe/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 大家的VueJS 2.0 9 | 10 | 11 | 12 | 13 |
14 | 15 |

{{ info }}

16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /p7-component/pageNav.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
14 | 26 | 27 | 28 | 29 |

这里是商品详情

30 |
31 | 32 |

这里是商家信息

33 |
34 |
35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /p4-v-bind/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /p3-directives/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
14 |

15 | 16 | 17 | 26 | 27 | 28 | 29 | 31 |
32 | 33 | 34 | 35 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /p7-component/main.js: -------------------------------------------------------------------------------- 1 | // Step 1 2 | Vue.component('one', { 3 | template: '
  • 这是一个item
  • ' 4 | }) 5 | 6 | // Step 2 7 | Vue.component('two', { 8 | template: '
  • {{ listItem.name }}
  • ', 9 | data: function () { 10 | return { 11 | listItem: window.games[0] 12 | } 13 | } 14 | }) 15 | 16 | // Step 3 17 | Vue.component('three', { 18 | template: '
  • ' 19 | }) 20 | 21 | // Step 4 22 | Vue.component('four', { 23 | template: '
  • 默认内容
  • ' 24 | }) 25 | 26 | // Step 5 27 | Vue.component('five', { 28 | template: '
    \ 29 |
    \ 30 | \ 31 |
    \ 32 |
    \ 33 | \ 34 |
    \ 35 |
    ' 36 | }) 37 | 38 | // Step 6 39 | Vue.component('six', { 40 | props: ['userName'], 41 | template: '
  • {{ userName }}
  • ', 42 | // template: '
  • {{ uppercaseName }}
  • ', 43 | computed: { 44 | uppercaseName: function() { 45 | return this.userName.trim().toUpperCase() 46 | } 47 | } 48 | }) 49 | 50 | // Step 7 51 | Vue.component('game-list', { 52 | template: '', 55 | data: function () { 56 | return { 57 | games: window.games 58 | } 59 | } 60 | }) 61 | 62 | var app = new Vue({ 63 | el: '#app', 64 | data: { 65 | inputMsg: '' 66 | } 67 | }) 68 | -------------------------------------------------------------------------------- /p7-component/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
    14 |

    最简单的组件

    15 | 16 | 17 | 19 | 20 | 24 | 25 | 28 | 29 | 40 | 41 | 43 | 44 |

    v-bind绑定自定义属性

    45 | 46 |
    47 | 48 | 49 | 51 |
    52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /p7-component/pageNav.js: -------------------------------------------------------------------------------- 1 | Vue.component('page', { 2 | template: '\ 3 |
    \ 4 | \ 5 |
    \ 6 | ', 7 | props: { 8 | name: { required: true }, 9 | link: { required: true }, 10 | active: { default: false } 11 | }, 12 | data: function () { 13 | return { 14 | selected: false 15 | } 16 | }, 17 | computed: { 18 | hashLink: function () { 19 | return '#' + this.link 20 | } 21 | }, 22 | mounted: function () { 23 | this.selected = this.active 24 | } 25 | }) 26 | 27 | Vue.component('page-nav', { 28 | template: '\ 29 |
    \ 30 |
    \ 31 | \ 36 | {{ page.name }}\ 37 | \ 38 |
    \ 39 |
    \ 40 | \ 41 |
    \ 42 |
    \ 43 | ', 44 | data: function () { 45 | return { 46 | pages : [], 47 | // btnStyles: { 48 | // 'btn-default': !page.selected, 49 | // 'btn-info': page.selected 50 | // } 51 | } 52 | }, 53 | methods: { 54 | selectNav: function (page) { 55 | this.pages.forEach(function (item, index) { 56 | item.selected = (item.name === page.name) 57 | }) 58 | } 59 | }, 60 | created: function () { 61 | // console.log(this.$children) 62 | this.pages = this.$children 63 | } 64 | }) 65 | 66 | var app = new Vue({ 67 | el: '#app' 68 | }) 69 | -------------------------------------------------------------------------------- /p5-list-and-event-listener/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
    14 | 23 | 24 | 25 | 34 |
    35 | 36 | 37 | 38 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /static/js/gamesDB.js: -------------------------------------------------------------------------------- 1 | // 这里只是为了方便才直接把变量挂在window下, 实际工作中请一定避免这样的做法 2 | var games = [ 3 | { 4 | "id" : 0, 5 | "name" : "神秘海域123", 6 | "img" : "../static/images/uncharted-collection.jpg", 7 | "price" : 160.80, 8 | "purchased": false 9 | }, 10 | { 11 | "id" : 1, 12 | "name" : "神秘海域4", 13 | "img" : "../static/images/uncharted4.jpg", 14 | "price" : 318.40, 15 | "purchased": false 16 | }, 17 | { 18 | "id" : 2, 19 | "name" : "合金装备 幻痛", 20 | "img" : "../static/images/metal-gear-solid.jpg", 21 | "price" : 179.00, 22 | "purchased": false 23 | }, 24 | { 25 | "id" : 3, 26 | "name" : "刺客信条 枭雄", 27 | "img" : "../static/images/assassin.jpg", 28 | "price" : 118.80, 29 | "purchased": false 30 | }, 31 | { 32 | "id" : 4, 33 | "name" : "如龙 零", 34 | "img" : "../static/images/dragon-0.jpg", 35 | "price" : 377.00, 36 | "purchased": false 37 | }, 38 | { 39 | "id" : 5, 40 | "name" : "如龙 极", 41 | "img" : "../static/images/dragon-kiwami.jpg", 42 | "price" : 340.20, 43 | "purchased": false 44 | }, 45 | { 46 | "id" : 6, 47 | "name" : "如龙 6", 48 | "img" : "../static/images/dragon-6.jpg", 49 | "price" : 468.00, 50 | "purchased": false 51 | }, 52 | { 53 | "id" : 7, 54 | "name" : "GTA5", 55 | "img" : "../static/images/gta5.jpg", 56 | "price" : 234.00, 57 | "purchased": false 58 | }, 59 | { 60 | "id" : 8, 61 | "name" : "看门狗", 62 | "img" : "../static/images/watch-dogs.jpg", 63 | "price" : 69.30, 64 | "purchased": false 65 | }, 66 | { 67 | "id" : 9, 68 | "name" : "看门狗2", 69 | "img" : "../static/images/watch-dogs2.jpg", 70 | "price" : 420.00, 71 | "purchased": false 72 | }, 73 | { 74 | "id" : 10, 75 | "name" : "四海兄弟 III", 76 | "img" : "../static/images/mafia.jpg", 77 | "price" : 327.60, 78 | "purchased": false 79 | }, 80 | { 81 | "id" : 11, 82 | "name" : "热血无赖", 83 | "img" : "../static/images/sleeping-dogs.jpg", 84 | "price" : 198, 85 | "purchased": false 86 | } 87 | ] 88 | -------------------------------------------------------------------------------- /p6-computed-properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 大家的VueJS 2.0 10 | 11 | 12 | 13 |
    14 |
    15 |

    {{ testObj.key }}

    16 |

    {{ testFunc() }}

    17 |

    data.myCash: {{ showCash() }}

    18 | 21 |
    22 |

    愿望清单:

    23 |
    24 | 25 |
    26 |

    {{ item.name }}

    27 |

    HK$ {{ item.price.toFixed(2) }}

    28 | 29 | 30 |
    31 |
    32 |
    33 |
    34 |

    已入游戏:

    35 |
    36 | 37 |
    38 |

    {{ item.name }}

    39 |
    40 |
    41 |
    42 |
    43 |
    44 | 45 | 46 | 47 | 48 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /static/js/vue.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Vue.js v2.1.3 3 | * (c) 2014-2016 Evan You 4 | * Released under the MIT License. 5 | */ 6 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Vue=t()}(this,function(){"use strict";function e(e){return null==e?"":"object"==typeof e?JSON.stringify(e,null,2):String(e)}function t(e){var t=parseFloat(e,10);return t||0===t?t:e}function n(e,t){for(var n=Object.create(null),r=e.split(","),i=0;i-1)return e.splice(n,1)}}function i(e,t){return Ur.call(e,t)}function o(e){return"string"==typeof e||"number"==typeof e}function a(e){var t=Object.create(null);return function(n){var r=t[n];return r||(t[n]=e(n))}}function s(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function c(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function l(e,t){for(var n in t)e[n]=t[n];return e}function u(e){return null!==e&&"object"==typeof e}function f(e){return qr.call(e)===Wr}function d(e){for(var t={},n=0;n=0&&wi[n].id>e.id;)n--;wi.splice(Math.max(n,Ai)+1,0,e)}else wi.push(e);Ci||(Ci=!0,si(H))}}function z(e){Ti.clear(),J(e,Ti)}function J(e,t){var n,r,i=Array.isArray(e);if((i||u(e))&&Object.isExtensible(e)){if(e.__ob__){var o=e.__ob__.dep.id;if(t.has(o))return;t.add(o)}if(i)for(n=e.length;n--;)J(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)J(e[r[n]],t)}}function K(e){e._watchers=[],q(e),Y(e),W(e),Z(e),Q(e)}function q(e){var t=e.$options.props;if(t){var n=e.$options.propsData||{},r=e.$options._propKeys=Object.keys(t),i=!e.$parent;gi.shouldConvert=i;for(var o=function(i){var o=r[i];A(e,o,R(o,t,n,e))},a=0;a1?c(n):n;for(var r=c(arguments,1),i=0,o=n.length;i-1:e.test(t)}function Ve(e){var t={};t.get=function(){return li},Object.defineProperty(e,"config",t),e.util=$i,e.set=O,e.delete=S,e.nextTick=si,e.options=Object.create(null),li._assetTypes.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,l(e.options.components,Fi),Ie(e),Fe(e),Be(e),Ue(e)}function ze(e){for(var t=e.data,n=e,r=e;r.child;)r=r.child._vnode,r.data&&(t=Je(r.data,t));for(;n=n.parent;)n.data&&(t=Je(t,n.data));return Ke(t)}function Je(e,t){return{staticClass:qe(e.staticClass,t.staticClass),class:e.class?[e.class,t.class]:t.class}}function Ke(e){var t=e.class,n=e.staticClass;return n||t?qe(n,We(t)):""}function qe(e,t){return e?t?e+" "+t:e:t||""}function We(e){var t="";if(!e)return t;if("string"==typeof e)return e;if(Array.isArray(e)){for(var n,r=0,i=e.length;r-1?no[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:no[e]=/HTMLUnknownElement/.test(t.toString())}function Ye(e){if("string"==typeof e){if(e=document.querySelector(e),!e)return document.createElement("div")}return e}function Qe(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&"multiple"in t.data.attrs&&n.setAttribute("multiple","multiple"),n)}function Xe(e,t){return document.createElementNS(Wi[e],t)}function et(e){return document.createTextNode(e)}function tt(e){return document.createComment(e)}function nt(e,t,n){e.insertBefore(t,n)}function rt(e,t){e.removeChild(t)}function it(e,t){e.appendChild(t)}function ot(e){return e.parentNode}function at(e){return e.nextSibling}function st(e){return e.tagName}function ct(e,t){e.textContent=t}function lt(e){return e.childNodes}function ut(e,t,n){e.setAttribute(t,n)}function ft(e,t){var n=e.data.ref;if(n){var i=e.context,o=e.child||e.elm,a=i.$refs;t?Array.isArray(a[n])?r(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(o)<0?a[n].push(o):a[n]=[o]:a[n]=o}}function dt(e){return null==e}function pt(e){return null!=e}function vt(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&!e.data==!t.data}function ht(e,t,n){var r,i,o={};for(r=t;r<=n;++r)i=e[r].key,pt(i)&&(o[i]=r);return o}function mt(e){function t(e){return new Ei(x.tagName(e).toLowerCase(),{},[],void 0,e)}function n(e,t){function n(){0===--n.listeners&&r(e)}return n.listeners=t,n}function r(e){var t=x.parentNode(e);t&&x.removeChild(t,e)}function i(e,t,n){var r,i=e.data;if(e.isRootInsert=!n,pt(i)&&(pt(r=i.hook)&&pt(r=r.init)&&r(e),pt(r=e.child)))return l(e,t),e.elm;var o=e.children,s=e.tag;return pt(s)?(e.elm=e.ns?x.createElementNS(e.ns,s):x.createElement(s,e),u(e),a(e,o,t),pt(i)&&c(e,t)):e.isComment?e.elm=x.createComment(e.text):e.elm=x.createTextNode(e.text),e.elm}function a(e,t,n){if(Array.isArray(t))for(var r=0;rv?(l=dt(n[y+1])?null:n[y+1].elm,f(e,l,n,d,y,r)):d>y&&p(e,t,u,v)}function m(e,t,n,r){if(e!==t){if(t.isStatic&&e.isStatic&&t.key===e.key&&(t.isCloned||t.isOnce))return t.elm=e.elm,void(t.child=e.child);var i,o=t.data,a=pt(o);a&&pt(i=o.hook)&&pt(i=i.prepatch)&&i(e,t);var c=t.elm=e.elm,l=e.children,u=t.children;if(a&&s(t)){for(i=0;i<$.update.length;++i)$.update[i](e,t);pt(i=o.hook)&&pt(i=i.update)&&i(e,t)}dt(t.text)?pt(l)&&pt(u)?l!==u&&h(c,l,u,n,r):pt(u)?(pt(e.text)&&x.setTextContent(c,""),f(c,null,u,0,u.length-1,n)):pt(l)?p(c,l,0,l.length-1):pt(e.text)&&x.setTextContent(c,""):e.text!==t.text&&x.setTextContent(c,t.text),a&&pt(i=o.hook)&&pt(i=i.postpatch)&&i(e,t)}}function g(e,t,n){if(n&&e.parent)e.parent.data.pendingInsert=t;else for(var r=0;r-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+e.getAttribute("class")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function Et(e,t){if(t&&t.trim())if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t);else{for(var n=" "+e.getAttribute("class")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");e.setAttribute("class",n.trim())}}function Nt(e){So(function(){So(e)})}function Lt(e,t){(e._transitionClasses||(e._transitionClasses=[])).push(t),jt(e,t)}function Dt(e,t){e._transitionClasses&&r(e._transitionClasses,t),Et(e,t)}function Mt(e,t,n){var r=Pt(e,t),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===wo?ko:Oo,c=0,l=function(){e.removeEventListener(s,u),n()},u=function(t){t.target===e&&++c>=a&&l()};setTimeout(function(){c0&&(n=wo,u=a,f=o.length):t===xo?l>0&&(n=xo,u=l,f=c.length):(u=Math.max(a,l),n=u>0?a>l?wo:xo:null,f=n?n===wo?o.length:c.length:0);var d=n===wo&&To.test(r[Co+"Property"]);return{type:n,timeout:u,propCount:f,hasTransform:d}}function Rt(e,t){for(;e.length1,S=t._enterCb=Ht(function(){A&&Dt(t,$),S.cancelled?(A&&Dt(t,b),k&&k(t)):C&&C(t),t._enterCb=null});e.data.show||ie(e.data.hook||(e.data.hook={}),"insert",function(){var n=t.parentNode,r=n&&n._pending&&n._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),x&&x(t,S)},"transition-insert"),w&&w(t),A&&(Lt(t,b),Lt(t,$),Nt(function(){Dt(t,b),S.cancelled||O||Mt(t,i,S)})),e.data.show&&x&&x(t,S),A||O||S()}}}function Bt(e,t){function n(){m.cancelled||(e.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[e.key]=e),l&&l(r),v&&(Lt(r,s),Lt(r,c),Nt(function(){Dt(r,s),m.cancelled||h||Mt(r,a,m)})),u&&u(r,m),v||h||m())}var r=e.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var i=Ut(e.data.transition);if(!i)return t();if(!r._leaveCb&&1===r.nodeType){var o=i.css,a=i.type,s=i.leaveClass,c=i.leaveActiveClass,l=i.beforeLeave,u=i.leave,f=i.afterLeave,d=i.leaveCancelled,p=i.delayLeave,v=o!==!1&&!ti,h=u&&(u._length||u.length)>1,m=r._leaveCb=Ht(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[e.key]=null),v&&Dt(r,c),m.cancelled?(v&&Dt(r,s),d&&d(r)):(t(),f&&f(r)),r._leaveCb=null});p?p(n):n()}}function Ut(e){if(e){if("object"==typeof e){var t={};return e.css!==!1&&l(t,jo(e.name||"v")), 7 | l(t,e),t}return"string"==typeof e?jo(e):void 0}}function Ht(e){var t=!1;return function(){t||(t=!0,e())}}function Vt(e,t,n){var r=t.value,i=e.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=e.options.length;s-1,a.selected!==o&&(a.selected=o);else if(h(Jt(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));i||(e.selectedIndex=-1)}}function zt(e,t){for(var n=0,r=t.length;n',n.innerHTML.indexOf(t)>0}function on(e){return Vo=Vo||document.createElement("div"),Vo.innerHTML=e,Vo.textContent}function an(e,t){return t&&(e=e.replace(Da,"\n")),e.replace(Na,"<").replace(La,">").replace(Ma,"&").replace(Pa,'"')}function sn(e,t){function n(t){f+=t,e=e.substring(t)}function r(){var t=e.match(Yo);if(t){var r={tagName:t[1],attrs:[],start:f};n(t[0].length);for(var i,o;!(i=e.match(Qo))&&(o=e.match(Wo));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=f,r}}function i(e){var n=e.tagName,r=e.unarySlash;l&&("p"===s&&Qi(n)&&o("",s),Yi(n)&&s===n&&o("",n));for(var i=u(n)||"html"===n&&"head"===s||!!r,a=e.attrs.length,f=new Array(a),d=0;d=0&&c[o].tag.toLowerCase()!==a;o--);}else o=0;if(o>=0){for(var l=c.length-1;l>=o;l--)t.end&&t.end(c[l].tag,r,i);c.length=o,s=o&&c[o-1].tag}else"br"===n.toLowerCase()?t.start&&t.start(n,[],!0,r,i):"p"===n.toLowerCase()&&(t.start&&t.start(n,[],!1,r,i),t.end&&t.end(n,r,i))}for(var a,s,c=[],l=t.expectHTML,u=t.isUnaryTag||Zr,f=0;e;){if(a=e,s&&ja(s,t.sfc,c)){var d=s.toLowerCase(),p=Ea[d]||(Ea[d]=new RegExp("([\\s\\S]*?)(]*>)","i")),v=0,h=e.replace(p,function(e,n,r){return v=r.length,"script"!==d&&"style"!==d&&"noscript"!==d&&(n=n.replace(//g,"$1").replace(//g,"$1")),t.chars&&t.chars(n),""});f+=e.length-h.length,e=h,o("",d,f-v,f)}else{var m=e.indexOf("<");if(0===m){if(ta.test(e)){var g=e.indexOf("-->");if(g>=0){n(g+3);continue}}if(na.test(e)){var y=e.indexOf("]>");if(y>=0){n(y+2);continue}}var _=e.match(ea);if(_){n(_[0].length);continue}var b=e.match(Xo);if(b){var $=f;n(b[0].length),o(b[0],b[1],$,f);continue}var w=r();if(w){i(w);continue}}var x=void 0,C=void 0,k=void 0;if(m>0){for(C=e.slice(m);!(Xo.test(C)||Yo.test(C)||ta.test(C)||na.test(C)||(k=C.indexOf("<",1),k<0));)m+=k,C=e.slice(m);x=e.substring(0,m),n(m)}m<0&&(x=e,e=""),t.chars&&x&&t.chars(x)}if(e===a&&t.chars){t.chars(e);break}}o()}function cn(e){function t(){(a||(a=[])).push(e.slice(v,i).trim()),v=i+1}var n,r,i,o,a,s=!1,c=!1,l=!1,u=!1,f=0,d=0,p=0,v=0;for(i=0;ia&&o.push(JSON.stringify(e.slice(a,i)));var s=cn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a=ia}function wn(e){return 34===e||39===e}function xn(e){var t=1;for(ca=sa;!$n();)if(e=bn(),wn(e))Cn(e);else if(91===e&&t++,93===e&&t--,0===t){la=sa;break}}function Cn(e){for(var t=e;!$n()&&(e=bn(),e!==t););}function kn(e,t){ua=t.warn||fn,fa=t.getTagNamespace||Zr,da=t.mustUseProp||Zr,pa=t.isPreTag||Zr,va=dn(t.modules,"preTransformNode"),ha=dn(t.modules,"transformNode"),ma=dn(t.modules,"postTransformNode"),ga=t.delimiters;var n,r,i=[],o=t.preserveWhitespace!==!1,a=!1,s=!1;return sn(e,{expectHTML:t.expectHTML,isUnaryTag:t.isUnaryTag,shouldDecodeNewlines:t.shouldDecodeNewlines,start:function(e,o,c){function l(e){}var u=r&&r.ns||fa(e);ei&&"svg"===u&&(o=Vn(o));var f={type:1,tag:e,attrsList:o,attrsMap:Bn(o),parent:r,children:[]};u&&(f.ns=u),Hn(f)&&!oi()&&(f.forbidden=!0);for(var d=0;d-1:_q("+t+","+o+")"),mn(e,"change","var $$a="+t+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$c){$$i<0&&("+t+"=$$a.concat($$v))}else{$$i>-1&&("+t+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+t+"=$$c}",null,!0)}function Sr(e,t,n){var r=n&&n.number,i=gn(e,"value")||"null";i=r?"_n("+i+")":i,pn(e,"checked","_q("+t+","+i+")"),mn(e,"change",Er(t,i),null,!0)}function Tr(e,t,n){var r=e.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=o||ei&&"range"===r?"change":"input",l=!o&&"range"!==r,u="input"===e.tag||"textarea"===e.tag,f=u?"$event.target.value"+(s?".trim()":""):s?"(typeof $event === 'string' ? $event.trim() : $event)":"$event";f=a||"number"===r?"_n("+f+")":f;var d=Er(t,f);u&&l&&(d="if($event.target.composing)return;"+d),pn(e,"value",u?"_s("+t+")":"("+t+")"),mn(e,c,d,null,!0)}function jr(e,t,n){var r=n&&n.number,i='Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(r?"_n(val)":"val")+"})"+(null==e.attrsMap.multiple?"[0]":""),o=Er(t,i);mn(e,"change",o,null,!0)}function Er(e,t){var n=_n(e);return null===n.idx?e+"="+t:"var $$exp = "+n.exp+", $$idx = "+n.idx+";if (!Array.isArray($$exp)){"+e+"="+t+"}else{$$exp.splice($$idx, 1, "+t+")}"}function Nr(e,t){t.value&&pn(e,"textContent","_s("+t.value+")")}function Lr(e,t){t.value&&pn(e,"innerHTML","_s("+t.value+")")}function Dr(e,t){return t=t?l(l({},ls),t):ls,$r(e,t)}function Mr(e,t,n){var r=(t&&t.warn||ui,t&&t.delimiters?String(t.delimiters)+e:e);if(cs[r])return cs[r];var i={},o=Dr(e,t);i.render=Pr(o.render);var a=o.staticRenderFns.length;i.staticRenderFns=new Array(a);for(var s=0;s0,ni=Xr&&Xr.indexOf("edge/")>0,ri=Xr&&Xr.indexOf("android")>0,ii=Xr&&/iphone|ipad|ipod|ios/.test(Xr),oi=function(){return void 0===Ir&&(Ir=!Qr&&"undefined"!=typeof global&&"server"===global.process.env.VUE_ENV),Ir},ai=Qr&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,si=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t=0,r=n?/;(?![^(]*\))/g:";",i=n?/:(.+)/:":";return e.split(r).forEach(function(e){if(e){var n=e.split(i);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}),mo=/^--/,go=function(e,t,n){mo.test(t)?e.style.setProperty(t,n):e.style[_o(t)]=n},yo=["Webkit","Moz","ms"],_o=a(function(e){if(Bi=Bi||document.createElement("div"),e=Vr(e),"filter"!==e&&e in Bi.style)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n\/=]+)/,Ko=/(?:=)/,qo=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],Wo=new RegExp("^\\s*"+Jo.source+"(?:\\s*("+Ko.source+")\\s*(?:"+qo.join("|")+"))?"),Zo="[a-zA-Z_][\\w\\-\\.]*",Go="((?:"+Zo+"\\:)?"+Zo+")",Yo=new RegExp("^<"+Go),Qo=/^\s*(\/?)>/,Xo=new RegExp("^<\\/"+Go+"[^>]*>"),ea=/^]+>/i,ta=/^