├── .babelrc ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── LICENSE ├── README.md ├── demo ├── index.html ├── main.js ├── manifest.js ├── preview.gif ├── src │ ├── App.js │ ├── App.vue │ ├── BobRossLipsum.vue │ ├── HorizontalScrollbar.vue │ ├── VerticalAndHorizontalScrollbar.vue │ ├── VerticalScrollbar.vue │ ├── index.html │ └── main.js └── vendor.js ├── dist ├── vue-scrolly.esm.js ├── vue-scrolly.js └── vue-scrolly.min.js ├── index.html ├── package.json ├── rollup.config.dev.js ├── rollup.config.esm.js ├── rollup.config.prod.js ├── src ├── Scrolly.js ├── Scrolly.vue ├── ScrollyBar.vue ├── ScrollyViewport.vue ├── helpers.js └── index.js ├── webpack.mix.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "env", 4 | "react", 5 | "stage-0" 6 | ], 7 | "plugins": [ 8 | "transform-class-properties", 9 | "transform-decorators", 10 | "transform-react-constant-elements", 11 | "transform-react-inline-elements" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | webpack.mix.js 2 | node_modules/**/*.* 3 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | es6: true, 5 | }, 6 | parser: 'babel-eslint', 7 | parserOptions: { 8 | ecmaVersion: 6, 9 | ecmaFeatures: { 10 | experimentalObjectRestSpread: true, 11 | }, 12 | sourceType: 'module', 13 | }, 14 | plugins: ['prettier'], 15 | rules: { 16 | 'prettier/prettier': [ 17 | 'error', 18 | { 19 | singleQuote: true, 20 | trailingComma: 'es5', 21 | bracketSpacing: true, 22 | tabWidth: 2, 23 | }, 24 | ], 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log 4 | yarn-debug.log 5 | yarn-error.log 6 | *.sublime-project 7 | *.sublime-workspace 8 | dist/manifest.js 9 | dist/vendor.js 10 | hot 11 | mix-manifest.json -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | For vue-scrolly component 4 | 5 | Copyright (c) 2017 Yan Sern. 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | --- 26 | 27 | BSD License 28 | 29 | For FixedDataTable software 30 | 31 | Copyright (c) 2015, Facebook, Inc. All rights reserved. 32 | 33 | Redistribution and use in source and binary forms, with or without modification, 34 | are permitted provided that the following conditions are met: 35 | 36 | * Redistributions of source code must retain the above copyright notice, this 37 | list of conditions and the following disclaimer. 38 | 39 | * Redistributions in binary form must reproduce the above copyright notice, 40 | this list of conditions and the following disclaimer in the documentation 41 | and/or other materials provided with the distribution. 42 | 43 | * Neither the name Facebook nor the names of its contributors may be used to 44 | endorse or promote products derived from this software without specific 45 | prior written permission. 46 | 47 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 48 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 49 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 50 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 51 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 52 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 53 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 54 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 55 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 56 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 57 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-scrolly ![npm tag](https://img.shields.io/npm/v/vue-scrolly.svg) 2 | > Overlay scrollbar for [Vue.js](http://vuejs.org). 3 | 4 |

5 | 6 |
7 | Check out the live demo. 8 |

9 | 10 | ## Features 11 | * Supports vertical & horizontal scrollbars. 12 | * Easy scrollbar configration - everything using CSS! 13 | * Uses MutationObserver to update scrollbar size & position. 14 | * Supports min-height (default 20% of viewport) to ensure scrollbar remains draggable on very long content. 15 | * When user has scrolled to the beginning or the end of content, Scrolly seamlessly activates scrolling of parent body by detecting if user scrolled with greater scroll inertia. 16 | 17 | ## Installation 18 | ```bash 19 | $ npm install vue-scrolly 20 | ``` 21 | 22 | ## Using vue-scrolly 23 | 24 | First, import `vue-scrolly` into your Vue component. 25 | ```js 26 | import { Scrolly, ScrollyViewport, ScrollyBar } from 'vue-scrolly'; 27 | 28 | export default { 29 | // ... 30 | components: { 31 | Scrolly, 32 | ScrollyViewport, 33 | ScrollyBar 34 | } 35 | } 36 | ``` 37 | 38 | Then, construct your div block with overlay scrollbar using scrolly component. 39 | ```html 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | ``` 48 | 49 | ## Customizing overlay scrollbar 50 | You can customize the appearance of the overlay scrollbar using CSS overrides. 51 | 52 | This simple example below creates custom blue overlay scrollbar: 53 | ```css 54 | .scrolly.foo .scrolly-bar:before { 55 | background: blue; 56 | } 57 | ``` 58 | 59 | For complete reference, you can look at [vue-scrolly's default CSS stylesheet](https://github.com/yansern/vue-scrolly/blob/master/src/Scrolly.vue) from the main Scrolly.vue component file. 60 | 61 | 62 | ## Options 63 | 64 | **Scrolly** 65 | 66 | | Property | Description | Type | Default | 67 | | ----------------- | ---------------- | :--------: | :----------: | 68 | | parentScroll | Scroll parent when user has completed scrolling to the beginning or the end of the viewport. | Boolean | true | 69 | | passiveScroll | When true, mousewheel event is attached as a non-blocking passive listener for improved scrolling performance. Disabling parentScroll will not be possible. See: [https://www.chromestatus.com/feature/5745543795965952](https://www.chromestatus.com/feature/5745543795965952)| Boolean | false | 70 | 71 | 72 | **ScrollyBar** 73 | 74 | | Property | Description | Type | Default | 75 | | ----------------- | ---------------- | :--------: | :----------: | 76 | | axis | Displays horizontal or vertical scrollbar. |String [x, y] | y | 77 | 78 | 79 | ## Events 80 | 81 | | Event | Description | Parameters | 82 | | ----- | ----------- | :---------: | 83 | | scrollchange | Triggers when user scrolls the viewport | scrollLayout: object | 84 | 85 | 86 | ## License 87 | **[vue-scrolly](https://github.com/yansern/vue-scrolly)** by [Yan Sern](https://twitter.com/yansernio) licensed under the [MIT+BSD](LICENSE). This project also uses [normalizeWheel](https://www.npmjs.com/package/normalize-wheel) packaged by [basilfx](https://www.npmjs.com/~basilfx) which contains codes extracted from BSD-licensed [Fixed Data Table](https://github.com/facebook/fixed-data-table) project by Facebook. 88 | 89 | > PS: I would love to know if you're using vue-scrolly. Tweet to me at [@yansernio](https://twitter.com/yansernio). 90 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue-scrolly - Overlay scrollbar for Vue.js. 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 |
14 |
15 |

vue-scrolly demo

16 |

Overlay scrollbar for Vue.js.

17 | View GitHub page » 18 |
19 |
20 |
21 | 22 |
23 | 24 |
25 |
26 |
27 | 28 |
29 | 30 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /demo/manifest.js: -------------------------------------------------------------------------------- 1 | !function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t=window.webpackJsonpMultipane;window.webpackJsonpMultipane=function(r,i,u){for(var a,c,f,l=0,p=[];l 2 |
3 |
4 |
5 |
6 |
7 |

Vertical Scrollbar

8 |
9 |
10 | View code » 11 |
12 |
13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 |

Horizontal Scrollbar

21 |
22 |
23 | View code » 24 |
25 |
26 | 27 |
28 |
29 |
30 |
31 |
32 |
33 |

Vertical & Horizontal Scrollbar

34 |
35 |
36 | View code » 37 |
38 |
39 | 40 |
41 |
42 |
43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /demo/src/BobRossLipsum.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /demo/src/HorizontalScrollbar.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 65 | 66 | 81 | -------------------------------------------------------------------------------- /demo/src/VerticalAndHorizontalScrollbar.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 66 | 67 | 82 | -------------------------------------------------------------------------------- /demo/src/VerticalScrollbar.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 51 | 52 | 67 | -------------------------------------------------------------------------------- /demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue-scrolly - Overlay scrollbar for Vue.js. 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 |
14 |
15 |

vue-scrolly demo

16 |

Overlay scrollbar for Vue.js.

17 | View GitHub page » 18 |
19 |
20 |
21 | 22 |
23 | 24 |
25 |
26 |
27 | 28 |
29 | 30 | 35 | 36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /demo/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | // Globals 5 | window.Vue = Vue; 6 | 7 | new Vue({ 8 | el: '#app', 9 | render: h => h(App), 10 | }); 11 | -------------------------------------------------------------------------------- /demo/vendor.js: -------------------------------------------------------------------------------- 1 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Multipane",[],e):"object"==typeof exports?exports.Multipane=e():t.Multipane=e()}(this,function(){return webpackJsonpMultipane([2],{14:function(t,e,n){"use strict";(function(e){function n(t){return void 0===t||null===t}function r(t){return void 0!==t&&null!==t}function i(t){return!0===t}function o(t){return!1===t}function a(t){return"string"==typeof t||"number"==typeof t||"boolean"==typeof t}function s(t){return null!==t&&"object"==typeof t}function c(t){return"[object Object]"===Hi.call(t)}function u(t){return"[object RegExp]"===Hi.call(t)}function l(t){var e=parseFloat(t);return e>=0&&Math.floor(e)===e&&isFinite(t)}function f(t){return null==t?"":"object"==typeof t?JSON.stringify(t,null,2):String(t)}function p(t){var e=parseFloat(t);return isNaN(e)?t:e}function d(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i-1)return t.splice(n,1)}}function h(t,e){return Vi.call(t,e)}function m(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}function y(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function g(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function _(t,e){for(var n in e)t[n]=e[n];return t}function b(t){for(var e={},n=0;nzo&&Ro[n].id>t.id;)n--;Ro.splice(n+1,0,t)}else Ro.push(t);Uo||(Uo=!0,wo(Et))}}function Dt(t){qo.clear(),Pt(t,qo)}function Pt(t,e){var n,r,i=Array.isArray(t);if((i||s(t))&&Object.isExtensible(t)){if(t.__ob__){var o=t.__ob__.dep.id;if(e.has(o))return;e.add(o)}if(i)for(n=t.length;n--;)Pt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)Pt(t[r[n]],e)}}function Ft(t,e,n){Wo.get=function(){return this[e][n]},Wo.set=function(t){this[e][n]=t},Object.defineProperty(t,n,Wo)}function Rt(t){t._watchers=[];var e=t.$options;e.props&&Ht(t,e.props),e.methods&&Jt(t,e.methods),e.data?Bt(t):M(t._data={},!0),e.computed&&Vt(t,e.computed),e.watch&&e.watch!==vo&&qt(t,e.watch)}function Ht(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[],o=!t.$parent;So.shouldConvert=o;for(var a in e)!function(o){i.push(o);var a=W(o,e,n,t);I(r,o,a),o in t||Ft(t,"_props",o)}(a);So.shouldConvert=!0}function Bt(t){var e=t.$options.data;e=t._data="function"==typeof e?Ut(e,t):e||{},c(e)||(e={});for(var n=Object.keys(e),r=t.$options.props,i=(t.$options.methods,n.length);i--;){var o=n[i];r&&h(r,o)||A(o)||Ft(t,"_data",o)}M(e,!0)}function Ut(t,e){try{return t.call(e)}catch(t){return T(t,e,"data()"),{}}}function Vt(t,e){var n=t._computedWatchers=Object.create(null),r=_o();for(var i in e){var o=e[i],a="function"==typeof o?o:o.get;r||(n[i]=new Jo(t,a||$,$,Go)),i in t||zt(t,i,o)}}function zt(t,e,n){var r=!_o();"function"==typeof n?(Wo.get=r?Kt(e):n,Wo.set=$):(Wo.get=n.get?r&&!1!==n.cache?Kt(e):n.get:$,Wo.set=n.set?n.set:$),Object.defineProperty(t,e,Wo)}function Kt(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),xo.target&&e.depend(),e.value}}function Jt(t,e){t.$options.props;for(var n in e)t[n]=null==e[n]?$:y(e[n],t)}function qt(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i=0||n.indexOf(t[i])<0)&&r.push(t[i]);return r}return t}function Ce(t){this._init(t)}function xe(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=g(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}function Ae(t){t.mixin=function(t){return this.options=J(this.options,t),this}}function ke(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name,a=function(t){this._init(t)};return a.prototype=Object.create(n.prototype),a.prototype.constructor=a,a.cid=e++,a.options=J(n.options,t),a.super=n,a.options.props&&Oe(a),a.options.computed&&Te(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,Qi.forEach(function(t){a[t]=n[t]}),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=_({},a.options),i[r]=a,a}}function Oe(t){var e=t.options.props;for(var n in e)Ft(t.prototype,"_props",n)}function Te(t){var e=t.options.computed;for(var n in e)zt(t.prototype,n,e[n])}function Se(t){Qi.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&c(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}function je(t){return t&&(t.Ctor.options.name||t.tag)}function Ee(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!u(t)&&t.test(e)}function Le(t,e,n){for(var r in t){var i=t[r];if(i){var o=je(i.componentOptions);o&&!n(o)&&(i!==e&&Ne(i),t[r]=null)}}}function Ne(t){t&&t.componentInstance.$destroy()}function Me(t){for(var e=t.data,n=t,i=t;r(i.componentInstance);)i=i.componentInstance._vnode,i.data&&(e=Ie(i.data,e));for(;r(n=n.parent);)n.data&&(e=Ie(e,n.data));return De(e.staticClass,e.class)}function Ie(t,e){return{staticClass:Pe(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function De(t,e){return r(t)||r(e)?Pe(t,Fe(e)):""}function Pe(t,e){return t?e?t+" "+e:t:e||""}function Fe(t){return Array.isArray(t)?Re(t):s(t)?He(t):"string"==typeof t?t:""}function Re(t){for(var e,n="",i=0,o=t.length;i-1?Oa[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Oa[t]=/HTMLUnknownElement/.test(e.toString())}function Ve(t){if("string"==typeof t){var e=document.querySelector(t);return e||document.createElement("div")}return t}function ze(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n)}function Ke(t,e){return document.createElementNS(wa[t],e)}function Je(t){return document.createTextNode(t)}function qe(t){return document.createComment(t)}function We(t,e,n){t.insertBefore(e,n)}function Ge(t,e){t.removeChild(e)}function Ze(t,e){t.appendChild(e)}function Ye(t){return t.parentNode}function Qe(t){return t.nextSibling}function Xe(t){return t.tagName}function tn(t,e){t.textContent=e}function en(t,e,n){t.setAttribute(e,n)}function nn(t,e){var n=t.data.ref;if(n){var r=t.context,i=t.componentInstance||t.elm,o=r.$refs;e?Array.isArray(o[n])?v(o[n],i):o[n]===i&&(o[n]=void 0):t.data.refInFor?Array.isArray(o[n])?o[n].indexOf(i)<0&&o[n].push(i):o[n]=[i]:o[n]=i}}function rn(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&r(t.data)===r(e.data)&&on(t,e)||i(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&n(e.asyncFactory.error))}function on(t,e){if("input"!==t.tag)return!0;var n,i=r(n=t.data)&&r(n=n.attrs)&&n.type,o=r(n=e.data)&&r(n=n.attrs)&&n.type;return i===o||Ta(i)&&Ta(o)}function an(t,e,n){var i,o,a={};for(i=e;i<=n;++i)o=t[i].key,r(o)&&(a[o]=i);return a}function sn(t,e){(t.data.directives||e.data.directives)&&cn(t,e)}function cn(t,e){var n,r,i,o=t===Ea,a=e===Ea,s=un(t.data.directives,t.context),c=un(e.data.directives,e.context),u=[],l=[];for(n in c)r=s[n],i=c[n],r?(i.oldValue=r.value,fn(i,"update",e,t),i.def&&i.def.componentUpdated&&l.push(i)):(fn(i,"bind",e,t),i.def&&i.def.inserted&&u.push(i));if(u.length){var f=function(){for(var n=0;n=0&&" "===(m=t.charAt(h));h--);m&&Fa.test(m)||(l=!0)}}else void 0===o?(v=i+1,o=t.slice(0,i).trim()):e();if(void 0===o?o=t.slice(0,i).trim():0!==v&&e(),a)for(i=0;i=ia}function jn(t){return 34===t||39===t}function En(t){var e=1;for(ca=sa;!Sn();)if(t=Tn(),jn(t))Ln(t);else if(91===t&&e++,93===t&&e--,0===e){ua=sa;break}}function Ln(t){for(var e=t;!Sn()&&(t=Tn())!==e;);}function Nn(t,e,n){la=n;var r=e.value,i=e.modifiers,o=t.tag,a=t.attrsMap.type;if(t.component)return An(t,r,i),!1;if("select"===o)Dn(t,r,i);else if("input"===o&&"checkbox"===a)Mn(t,r,i);else if("input"===o&&"radio"===a)In(t,r,i);else if("input"===o||"textarea"===o)Pn(t,r,i);else if(!to.isReservedTag(o))return An(t,r,i),!1;return!0}function Mn(t,e,n){var r=n&&n.number,i=Cn(t,"value")||"null",o=Cn(t,"true-value")||"true",a=Cn(t,"false-value")||"false";_n(t,"checked","Array.isArray("+e+")?_i("+e+","+i+")>-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),wn(t,Ha,"var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+e+"=$$a.concat([$$v]))}else{$$i>-1&&("+e+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{"+kn(e,"$$c")+"}",null,!0)}function In(t,e,n){var r=n&&n.number,i=Cn(t,"value")||"null";i=r?"_n("+i+")":i,_n(t,"checked","_q("+e+","+i+")"),wn(t,Ha,kn(e,i),null,!0)}function Dn(t,e,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")+"})",o="var $$selectedVal = "+i+";";o=o+" "+kn(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),wn(t,"change",o,null,!0)}function Pn(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Ra:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=kn(e,l);c&&(f="if($event.target.composing)return;"+f),_n(t,"value","("+e+")"),wn(t,u,f,null,!0),(s||a)&&wn(t,"blur","$forceUpdate()")}function Fn(t){var e;r(t[Ra])&&(e=so?"change":"input",t[e]=[].concat(t[Ra],t[e]||[]),delete t[Ra]),r(t[Ha])&&(e=po?"click":"change",t[e]=[].concat(t[Ha],t[e]||[]),delete t[Ha])}function Rn(t,e,n,r,i){if(n){var o=e,a=fa;e=function(n){null!==(1===arguments.length?o(n):o.apply(null,arguments))&&Hn(t,e,r,a)}}fa.addEventListener(t,e,ho?{capture:r,passive:i}:r)}function Hn(t,e,n,r){(r||fa).removeEventListener(t,e,n)}function Bn(t,e){if(!n(t.data.on)||!n(e.data.on)){var r=e.data.on||{},i=t.data.on||{};fa=e.elm,Fn(r),rt(r,i,Rn,Hn,e.context)}}function Un(t,e){if(!n(t.data.domProps)||!n(e.data.domProps)){var i,o,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};r(c.__ob__)&&(c=e.data.domProps=_({},c));for(i in s)n(c[i])&&(a[i]="");for(i in c)if(o=c[i],"textContent"!==i&&"innerHTML"!==i||(e.children&&(e.children.length=0),o!==s[i]))if("value"===i){a._value=o;var u=n(o)?"":String(o);Vn(a,e,u)&&(a.value=u)}else a[i]=o}}function Vn(t,e,n){return!t.composing&&("option"===e.tag||zn(t,n)||Kn(t,n))}function zn(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}function Kn(t,e){var n=t.value,i=t._vModifiers;return r(i)&&i.number?p(n)!==p(e):r(i)&&i.trim?n.trim()!==e.trim():n!==e}function Jn(t){var e=qn(t.style);return t.staticStyle?_(t.staticStyle,e):e}function qn(t){return Array.isArray(t)?b(t):"string"==typeof t?Va(t):t}function Wn(t,e){var n,r={};if(e)for(var i=t;i.componentInstance;)i=i.componentInstance._vnode,i.data&&(n=Jn(i.data))&&_(r,n);(n=Jn(t.data))&&_(r,n);for(var o=t;o=o.parent;)o.data&&(n=Jn(o.data))&&_(r,n);return r}function Gn(t,e){var i=e.data,o=t.data;if(!(n(i.staticStyle)&&n(i.style)&&n(o.staticStyle)&&n(o.style))){var a,s,c=e.elm,u=o.staticStyle,l=o.normalizedStyle||o.style||{},f=u||l,p=qn(e.data.style)||{};e.data.normalizedStyle=r(p.__ob__)?_({},p):p;var d=Wn(e,!0);for(s in f)n(d[s])&&Ja(c,s,"");for(s in d)(a=d[s])!==f[s]&&Ja(c,s,null==a?"":a)}}function Zn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Yn(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");n=n.trim(),n?t.setAttribute("class",n):t.removeAttribute("class")}}function Qn(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&_(e,Za(t.name||"v")),_(e,t),e}return"string"==typeof t?Za(t):void 0}}function Xn(t){is(function(){is(t)})}function tr(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),Zn(t,e))}function er(t,e){t._transitionClasses&&v(t._transitionClasses,e),Yn(t,e)}function nr(t,e,n){var r=rr(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===Qa?es:rs,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=Qa,l=a,f=o.length):e===Xa?u>0&&(n=Xa,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?Qa:Xa:null,f=n?n===Qa?o.length:c.length:0),{type:n,timeout:l,propCount:f,hasTransform:n===Qa&&os.test(r[ts+"Property"])}}function ir(t,e){for(;t.length1}function lr(t,e){!0!==e.data.show&&ar(e)}function fr(t,e,n){pr(t,e,n),(so||uo)&&setTimeout(function(){pr(t,e,n)},0)}function pr(t,e,n){var r=e.value,i=t.multiple;if(!i||Array.isArray(r)){for(var o,a,s=0,c=t.options.length;s-1,a.selected!==o&&(a.selected=o);else if(w(vr(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function dr(t,e){return e.every(function(e){return!w(e,t)})}function vr(t){return"_value"in t?t._value:t.value}function hr(t){t.target.composing=!0}function mr(t){t.target.composing&&(t.target.composing=!1,yr(t.target,"input"))}function yr(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function gr(t){return!t.componentInstance||t.data&&t.data.transition?t:gr(t.componentInstance._vnode)}function _r(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?_r(ht(e.children)):t}function br(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[Ki(o)]=i[o];return e}function $r(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}function wr(t){for(;t=t.parent;)if(t.data.transition)return!0}function Cr(t,e){return e.key===t.key&&e.tag===t.tag}function xr(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function Ar(t){t.data.newPos=t.elm.getBoundingClientRect()}function kr(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}function Or(t,e){var n=e?ws(e):bs;if(n.test(t)){for(var r,i,o=[],a=n.lastIndex=0;r=n.exec(t);){i=r.index,i>a&&o.push(JSON.stringify(t.slice(a,i)));var s=hn(r[1].trim());o.push("_s("+s+")"),a=i+r[0].length}return a=0&&a[i].lowerCasedTag!==s;i--);else i=0;if(i>=0){for(var c=a.length-1;c>=i;c--)e.end&&e.end(a[c].tag,n,r);a.length=i,o=i&&a[i-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,r):"p"===s&&(e.start&&e.start(t,[],!1,n,r),e.end&&e.end(t,n,r))}for(var i,o,a=[],s=e.expectHTML,c=e.isUnaryTag||Gi,u=e.canBeLeftOpenTag||Gi,l=0;t;){if(i=t,o&&Qs(o)){var f=0,p=o.toLowerCase(),d=Xs[p]||(Xs[p]=new RegExp("([\\s\\S]*?)(]*>)","i")),v=t.replace(d,function(t,n,r){return f=r.length,Qs(p)||"noscript"===p||(n=n.replace(//g,"$1").replace(//g,"$1")),ic(p,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""});l+=t.length-v.length,t=v,r(p,l-f,l)}else{var h=t.indexOf("<");if(0===h){if(Rs.test(t)){var m=t.indexOf("--\x3e");if(m>=0){e.shouldKeepComment&&e.comment(t.substring(4,m)),n(m+3);continue}}if(Hs.test(t)){var y=t.indexOf("]>");if(y>=0){n(y+2);continue}}var g=t.match(Fs);if(g){n(g[0].length);continue}var _=t.match(Ps);if(_){var b=l;n(_[0].length),r(_[1],b,l);continue}var $=function(){var e=t.match(Is);if(e){var r={tagName:e[1],attrs:[],start:l};n(e[0].length);for(var i,o;!(i=t.match(Ds))&&(o=t.match(Ls));)n(o[0].length),r.attrs.push(o);if(i)return r.unarySlash=i[1],n(i[0].length),r.end=l,r}}();if($){!function(t){var n=t.tagName,i=t.unarySlash;s&&("p"===o&&Ss(n)&&r(o),u(n)&&o===n&&r(n));for(var l=c(n)||!!i,f=t.attrs.length,p=new Array(f),d=0;d=0){for(C=t.slice(h);!(Ps.test(C)||Is.test(C)||Rs.test(C)||Hs.test(C)||(x=C.indexOf("<",1))<0);)h+=x,C=t.slice(h);w=t.substring(0,h),n(h)}h<0&&(w=t,t=""),e.chars&&w&&e.chars(w)}if(t===i){e.chars&&e.chars(t);break}}r()}function Dr(t,e){function n(t){t.pre&&(s=!1),qs(t.tag)&&(c=!1)}Us=e.warn||yn,qs=e.isPreTag||Gi,Ws=e.mustUseProp||Gi,Gs=e.getTagNamespace||Gi,zs=gn(e.modules,"transformNode"),Ks=gn(e.modules,"preTransformNode"),Js=gn(e.modules,"postTransformNode"),Vs=e.delimiters;var r,i,o=[],a=!1!==e.preserveWhitespace,s=!1,c=!1;return Ir(t,{warn:Us,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldKeepComment:e.comments,start:function(t,a,u){var l=i&&i.ns||Gs(t);so&&"svg"===l&&(a=ei(a));var f={type:1,tag:t,attrsList:a,attrsMap:Qr(a),parent:i,children:[]};l&&(f.ns=l),ti(f)&&!_o()&&(f.forbidden=!0);for(var p=0;p0,uo=ao&&ao.indexOf("edge/")>0,lo=ao&&ao.indexOf("android")>0,fo=ao&&/iphone|ipad|ipod|ios/.test(ao),po=ao&&/chrome\/\d+/.test(ao)&&!uo,vo={}.watch,ho=!1;if(oo)try{var mo={};Object.defineProperty(mo,"passive",{get:function(){ho=!0}}),window.addEventListener("test-passive",null,mo)}catch(t){}var yo,go,_o=function(){return void 0===yo&&(yo=!oo&&void 0!==e&&"server"===e.process.env.VUE_ENV),yo},bo=oo&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,$o="undefined"!=typeof Symbol&&S(Symbol)&&"undefined"!=typeof Reflect&&S(Reflect.ownKeys),wo=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e1?g(n):n;for(var r=g(arguments,1),i=0,o=n.length;i1&&(e[n[0].trim()]=n[1].trim())}}),e}),za=/^--/,Ka=/\s*!important$/,Ja=function(t,e,n){if(za.test(e))t.style.setProperty(e,n);else if(Ka.test(n))t.style.setProperty(e,n.replace(Ka,""),"important");else{var r=Wa(e);if(Array.isArray(n))for(var i=0,o=n.length;iv?(f=n(i[y+1])?null:i[y+1].elm,g(t,f,i,d,y,o)):d>y&&b(t,e,p,v)}function C(t,e,n,i){for(var o=n;o',n.innerHTML.indexOf(e)>0}("\n"," "),bs=/\{\{((?:.|\n)+?)\}\}/g,$s=/[-.*+?^${}()|[\]\/\\]/g,ws=m(function(t){var e=t[0].replace($s,"\\$&"),n=t[1].replace($s,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")}),Cs={staticKeys:["staticClass"],transformNode:Tr,genData:Sr},xs={staticKeys:["staticStyle"],transformNode:jr,genData:Er},As=[Cs,xs],ks={model:Nn,text:Lr,html:Nr},Os=d("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),Ts=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),Ss=d("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),js={expectHTML:!0,modules:As,directives:ks,isPreTag:Aa,isUnaryTag:Os,mustUseProp:ha,canBeLeftOpenTag:Ts,isReservedTag:ka,getTagNamespace:Be,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}(As)},Es={decode:function(t){return gs=gs||document.createElement("div"),gs.innerHTML=t,gs.textContent}},Ls=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Ns="[a-zA-Z_][\\w\\-\\.]*",Ms="((?:"+Ns+"\\:)?"+Ns+")",Is=new RegExp("^<"+Ms),Ds=/^\s*(\/?)>/,Ps=new RegExp("^<\\/"+Ms+"[^>]*>"),Fs=/^]+>/i,Rs=/^