├── 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: '\
53 | {{ game.name }}\
54 |
',
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 |
\
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 |
15 | - {{ item }}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
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]*?)("+d+"[^>]*>)","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+">",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=/^