Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

vue-router

Package Overview
Dependencies
Maintainers
1
Versions
185
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-router - npm Package Compare versions

Comparing version 0.7.11 to 0.7.12

4

dist/vue-router.min.js
/*!
* vue-router v0.7.11
* vue-router v0.7.12
* (c) 2016 Evan You
* Released under the MIT License.
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueRouter=e()}(this,function(){"use strict";function t(t,e,n){this.path=t,this.matcher=e,this.delegate=n}function e(t){this.routes={},this.children={},this.target=t}function n(e,r,i){return function(o,a){var s=e+o;return a?void a(n(s,r,i)):new t(e+o,r,i)}}function r(t,e,n){for(var r=0,i=0,o=t.length;o>i;i++)r+=t[i].path.length;e=e.substr(r);var a={path:e,handler:n};t.push(a)}function i(t,e,n,o){var a=e.routes;for(var s in a)if(a.hasOwnProperty(s)){var h=t.slice();r(h,s,a[s]),e.children[s]?i(h,e.children[s],n,o):n.call(o,h)}}function o(t,r){var o=new e;t(n("",o,this.delegate)),i([],o,function(t){r?r(this,t):this.add(t)},this)}function a(t){return"[object Array]"===Object.prototype.toString.call(t)}function s(t){this.string=t}function h(t){this.name=t}function c(t){this.name=t}function u(){}function l(t,e,n){"/"===t.charAt(0)&&(t=t.substr(1));var r=t.split("/"),i=[];n.val="";for(var o=0,a=r.length;a>o;o++){var l,p=r[o];(l=p.match(/^:([^\/]+)$/))?(i.push(new h(l[1])),e.push(l[1]),n.val+="3"):(l=p.match(/^\*([^\/]+)$/))?(i.push(new c(l[1])),n.val+="2",e.push(l[1])):""===p?(i.push(new u),n.val+="1"):(i.push(new s(p)),n.val+="4")}return n.val=+n.val,i}function p(t){this.charSpec=t,this.nextStates=[]}function f(t){return t.sort(function(t,e){return e.specificity.val-t.specificity.val})}function d(t,e){for(var n=[],r=0,i=t.length;i>r;r++){var o=t[r];n=n.concat(o.match(e))}return n}function v(t){this.queryParams=t||{}}function g(t,e,n){for(var r=t.handlers,i=t.regex,o=e.match(i),a=1,s=new v(n),h=0,c=r.length;c>h;h++){for(var u=r[h],l=u.names,p={},f=0,d=l.length;d>f;f++)p[l[f]]=o[a++];s.push({handler:u.handler,params:p,isDynamic:!!l.length})}return s}function y(t,e){return e.eachChar(function(e){t=t.put(e)}),t}function m(t){return t=t.replace(/\+/gm,"%20"),decodeURIComponent(t)}function _(t){window.console&&(console.warn("[vue-router] "+t),(!B.Vue||B.Vue.config.debug)&&console.warn(new Error("warning stack trace:").stack))}function w(t,e,n){var r=t.match(/(\?.*)$/);if(r&&(r=r[1],t=t.slice(0,-r.length)),"?"===e.charAt(0))return t+e;var i=t.split("/");n&&i[i.length-1]||i.pop();for(var o=e.replace(/^\//,"").split("/"),a=0;a<o.length;a++){var s=o[a];"."!==s&&(".."===s?i.pop():i.push(s))}return""!==i[0]&&i.unshift(""),i.join("/")}function b(t){return t&&"function"==typeof t.then}function C(t,e){var n=t&&(t.$options||t.options);return n&&n.route&&n.route[e]}function R(t,e){G?G.$options.components._=t.component:G={resolve:B.Vue.prototype._resolveComponent,$options:{components:{_:t.component}}},G.resolve("_",function(n){t.component=n,e(n)})}function k(t,e,n){return void 0===e&&(e={}),t=t.replace(/:([^\/]+)/g,function(n,r){var i=e[r];return i||_('param "'+r+'" not found when generating path for "'+t+'" with params '+JSON.stringify(e)),i||""}),n&&(t+=N(n)),t}function A(t,e,n){var r=t.childVM;if(!r||!e)return!1;if(t.Component!==e.component)return!1;var i=C(r,"canReuse");return"boolean"==typeof i?i:i?i.call(r,{to:n.to,from:n.from}):!0}function E(t,e,n){var r=t.childVM,i=C(r,"canDeactivate");i?e.callHook(i,r,n,{expectBoolean:!0}):n()}function $(t,e,n){R(t,function(t){if(!e.aborted){var r=C(t,"canActivate");r?e.callHook(r,null,n,{expectBoolean:!0}):n()}})}function x(t,e,n){var r=t.childVM,i=C(r,"deactivate");i?e.callHooks(i,r,n):n()}function V(t,e,n,r,i){var o=e.activateQueue[n];if(!o)return T(t),t._bound&&t.setComponent(null),void(r&&r());var a=t.Component=o.component,s=C(a,"activate"),h=C(a,"data"),c=C(a,"waitForData");t.depth=n,t.activated=!1;var u=void 0,l=!(!h||c);if(i=i&&t.childVM&&t.childVM.constructor===a)u=t.childVM,u.$loadingRouteData=l;else if(T(t),t.unbuild(!0),u=t.build({_meta:{$loadingRouteData:l},created:function(){this._routerView=t}}),t.keepAlive){u.$loadingRouteData=l;var p=u._keepAliveRouterView;p&&(t.childView=p,u._keepAliveRouterView=null)}var f=function(){u.$destroy()},d=function(){if(i)return void(r&&r());var n=e.router;n._rendered||n._transitionOnLoad?t.transition(u):(t.setCurrent?t.setCurrent(u):t.childVM=u,u.$before(t.anchor,null,!1)),r&&r()},v=function(){t.childView&&V(t.childView,e,n+1,null,i||t.keepAlive),d()},g=function(){t.activated=!0,h&&c?P(u,e,h,v,f):(h&&P(u,e,h),v())};s?e.callHooks(s,u,g,{cleanup:f,postActivate:!0}):g()}function S(t,e){var n=t.childVM,r=C(n,"data");r&&P(n,e,r)}function P(t,e,n,r,i){t.$loadingRouteData=!0,e.callHooks(n,t,function(){t.$loadingRouteData=!1,t.$emit("route-data-loaded",t),r&&r()},{cleanup:i,postActivate:!0,processData:function(e){var n=[];return O(e)&&Object.keys(e).forEach(function(r){var i=e[r];b(i)?n.push(i.then(function(e){t.$set(r,e)})):t.$set(r,i)}),n.length?n[0].constructor.all(n):void 0}})}function T(t){t.keepAlive&&t.childVM&&t.childView&&(t.childVM._keepAliveRouterView=t.childView),t.childView=null}function O(t){return"[object Object]"===Object.prototype.toString.call(t)}function H(t){return"[object Object]"===Object.prototype.toString.call(t)}function j(t){return t?Array.prototype.slice.call(t):[]}function q(t){var e=t.util,n=e.extend,r=e.isArray,i=e.defineReactive,o=t.prototype._init;t.prototype._init=function(t){t=t||{};var e=t._parent||t.parent||this,n=e.$router,r=e.$route;n&&(this.$router=n,n._children.push(this),this._defineMeta?this._defineMeta("$route",r):i(this,"$route",r)),o.call(this,t)};var a=t.prototype._destroy;t.prototype._destroy=function(){!this._isBeingDestroyed&&this.$router&&this.$router._children.$remove(this),a.apply(this,arguments)};var s=t.config.optionMergeStrategies,h=/^(data|activate|deactivate)$/;s&&(s.route=function(t,e){if(!e)return t;if(!t)return e;var i={};n(i,t);for(var o in e){var a=i[o],s=e[o];a&&h.test(o)?i[o]=(r(a)?a:[a]).concat(s):i[o]=s}return i})}function M(t){var e=t.util,n=t.directive("_component")||t.internalDirectives.component,r=e.extend({},n);e.extend(r,{_isRouterView:!0,bind:function(){var t=this.vm.$route;if(!t)return void _("<router-view> can only be used inside a router-enabled app.");this._isDynamicLiteral=!0,n.bind.call(this);for(var e=void 0,r=this.vm;r;){if(r._routerView){e=r._routerView;break}r=r.$parent}if(e)this.parentView=e,e.childView=this;else{var i=t.router;i._rootView=this}var o=t.router._currentTransition;if(!e&&o.done||e&&e.activated){var a=e?e.depth+1:0;V(this,o,a)}},unbind:function(){this.parentView&&(this.parentView.childView=null),n.unbind.call(this)}}),t.elementDirective("router-view",r)}function D(t){function e(t){return t.protocol===location.protocol&&t.hostname===location.hostname&&t.port===location.port}var n=t.util,r=n.bind,i=n.isObject,o=n.addClass,a=n.removeClass;t.directive("link-active",{priority:1001,bind:function(){this.el.__v_link_active=!0}}),t.directive("link",{priority:1e3,bind:function(){var t=this.vm;if(!t.$route)return void _("v-link can only be used inside a router-enabled app.");this.router=t.$route.router,this.unwatch=t.$watch("$route",r(this.onRouteUpdate,this)),this.activeEl=this.el;for(var e=this.el.parentNode;e;){if(e.__v_link_active){this.activeEl=e;break}e=e.parentNode}("A"!==this.el.tagName||"_blank"!==this.el.getAttribute("target"))&&(this.handler=r(this.onClick,this),this.el.addEventListener("click",this.handler))},update:function(t){this.target=t,i(t)&&(this.append=t.append,this.exact=t.exact,this.prevActiveClass=this.activeClass,this.activeClass=t.activeClass),this.onRouteUpdate(this.vm.$route)},onClick:function(t){if(!(t.metaKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||0!==t.button)){var n=this.target;if(n)t.preventDefault(),this.router.go(n);else{for(var r=t.target;"A"!==r.tagName&&r!==this.el;)r=r.parentNode;"A"===r.tagName&&e(r)&&(t.preventDefault(),this.router.go({path:r.pathname,replace:n&&n.replace,append:n&&n.append}))}}},onRouteUpdate:function(t){var e=this.router._stringifyPath(this.target);this.path!==e&&(this.path=e,this.updateActiveMatch(),this.updateHref()),this.updateClasses(t.path)},updateActiveMatch:function(){this.activeRE=this.path&&!this.exact?new RegExp("^"+this.path.replace(/\/$/,"").replace(rt,"").replace(nt,"\\$&")+"(\\/|$)"):null},updateHref:function(){if("A"===this.el.tagName){var t=this.path,e=this.router,n="/"===t.charAt(0),r=t&&("hash"===e.mode||n)?e.history.formatPath(t,this.append):t;r?this.el.href=r:this.el.removeAttribute("href")}},updateClasses:function(t){var e=this.activeEl,n=this.activeClass||this.router._linkActiveClass;this.prevActiveClass!==n&&a(e,this.prevActiveClass);var r=this.path.replace(rt,"");t=t.replace(rt,""),this.exact?r===t||"/"!==r.charAt(r.length-1)&&r===t.replace(et,"")?o(e,n):a(e,n):this.activeRE&&this.activeRE.test(t)?o(e,n):a(e,n)},unbind:function(){this.el.removeEventListener("click",this.handler),this.unwatch&&this.unwatch()}})}function z(t,e){var n=e.component;ot.util.isPlainObject(n)&&(n=e.component=ot.extend(n)),"function"!=typeof n&&(e.component=null,_('invalid component for route "'+t+'".'))}var Q={};Q.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.prototype={to:function(t,e){var n=this.delegate;if(n&&n.willAddRoute&&(t=n.willAddRoute(this.matcher.target,t)),this.matcher.add(this.path,t),e){if(0===e.length)throw new Error("You must have an argument in the function passed to `to`");this.matcher.addChild(this.path,t,e,this.delegate)}return this}},e.prototype={add:function(t,e){this.routes[t]=e},addChild:function(t,r,i,o){var a=new e(r);this.children[t]=a;var s=n(t,a,o);o&&o.contextEntered&&o.contextEntered(r,s),i(s)}};var F=["/",".","*","+","?","|","(",")","[","]","{","}","\\"],U=new RegExp("(\\"+F.join("|\\")+")","g");s.prototype={eachChar:function(t){for(var e,n=this.string,r=0,i=n.length;i>r;r++)e=n.charAt(r),t({validChars:e})},regex:function(){return this.string.replace(U,"\\$1")},generate:function(){return this.string}},h.prototype={eachChar:function(t){t({invalidChars:"/",repeat:!0})},regex:function(){return"([^/]+)"},generate:function(t){var e=t[this.name];return null==e?":"+this.name:e}},c.prototype={eachChar:function(t){t({invalidChars:"",repeat:!0})},regex:function(){return"(.+)"},generate:function(t){var e=t[this.name];return null==e?":"+this.name:e}},u.prototype={eachChar:function(){},regex:function(){return""},generate:function(){return""}},p.prototype={get:function(t){for(var e=this.nextStates,n=0,r=e.length;r>n;n++){var i=e[n],o=i.charSpec.validChars===t.validChars;if(o=o&&i.charSpec.invalidChars===t.invalidChars)return i}},put:function(t){var e;return(e=this.get(t))?e:(e=new p(t),this.nextStates.push(e),t.repeat&&e.nextStates.push(e),e)},match:function(t){for(var e,n,r,i=this.nextStates,o=[],a=0,s=i.length;s>a;a++)e=i[a],n=e.charSpec,"undefined"!=typeof(r=n.validChars)?-1!==r.indexOf(t)&&o.push(e):"undefined"!=typeof(r=n.invalidChars)&&-1===r.indexOf(t)&&o.push(e);return o}};var I=Object.create||function(t){function e(){}return e.prototype=t,new e};v.prototype=I({splice:Array.prototype.splice,slice:Array.prototype.slice,push:Array.prototype.push,length:0,queryParams:null});var L=function(){this.rootState=new p,this.names={}};L.prototype={add:function(t,e){for(var n,r=this.rootState,i="^",o={},a=[],s=[],h=!0,c=0,p=t.length;p>c;c++){var f=t[c],d=[],v=l(f.path,d,o);s=s.concat(v);for(var g=0,m=v.length;m>g;g++){var _=v[g];_ instanceof u||(h=!1,r=r.put({validChars:"/"}),i+="/",r=y(r,_),i+=_.regex())}var w={handler:f.handler,names:d};a.push(w)}h&&(r=r.put({validChars:"/"}),i+="/"),r.handlers=a,r.regex=new RegExp(i+"$"),r.specificity=o,(n=e&&e.as)&&(this.names[n]={segments:s,handlers:a})},handlersFor:function(t){var e=this.names[t],n=[];if(!e)throw new Error("There is no route named "+t);for(var r=0,i=e.handlers.length;i>r;r++)n.push(e.handlers[r]);return n},hasRoute:function(t){return!!this.names[t]},generate:function(t,e){var n=this.names[t],r="";if(!n)throw new Error("There is no route named "+t);for(var i=n.segments,o=0,a=i.length;a>o;o++){var s=i[o];s instanceof u||(r+="/",r+=s.generate(e))}return"/"!==r.charAt(0)&&(r="/"+r),e&&e.queryParams&&(r+=this.generateQueryString(e.queryParams)),r},generateQueryString:function(t){var e=[],n=[];for(var r in t)t.hasOwnProperty(r)&&n.push(r);n.sort();for(var i=0,o=n.length;o>i;i++){r=n[i];var s=t[r];if(null!=s){var h=encodeURIComponent(r);if(a(s))for(var c=0,u=s.length;u>c;c++){var l=r+"[]="+encodeURIComponent(s[c]);e.push(l)}else h+="="+encodeURIComponent(s),e.push(h)}}return 0===e.length?"":"?"+e.join("&")},parseQueryString:function(t){for(var e=t.split("&"),n={},r=0;r<e.length;r++){var i,o=e[r].split("="),a=m(o[0]),s=a.length,h=!1;1===o.length?i="true":(s>2&&"[]"===a.slice(s-2)&&(h=!0,a=a.slice(0,s-2),n[a]||(n[a]=[])),i=o[1]?m(o[1]):""),h?n[a].push(i):n[a]=i}return n},recognize:function(t){var e,n,r,i,o=[this.rootState],a={},s=!1;if(i=t.indexOf("?"),-1!==i){var h=t.substr(i+1,t.length);t=t.substr(0,i),a=this.parseQueryString(h)}for(t=decodeURI(t),"/"!==t.charAt(0)&&(t="/"+t),e=t.length,e>1&&"/"===t.charAt(e-1)&&(t=t.substr(0,e-1),s=!0),n=0,r=t.length;r>n&&(o=d(o,t.charAt(n)),o.length);n++);var c=[];for(n=0,r=o.length;r>n;n++)o[n].handlers&&c.push(o[n]);o=f(c);var u=c[0];return u&&u.handlers?(s&&"(.+)$"===u.regex.source.slice(-5)&&(t+="/"),g(u,t,a)):void 0}},L.prototype.map=o,L.VERSION="0.1.9";var N=L.prototype.generateQueryString,B={},G=void 0,K=/#.*$/,X=function(){function t(e){var n=e.root,r=e.onChange;Q.classCallCheck(this,t),n?("/"!==n.charAt(0)&&(n="/"+n),this.root=n.replace(/\/$/,""),this.rootRE=new RegExp("^\\"+this.root)):this.root=null,this.onChange=r;var i=document.querySelector("base");this.base=i&&i.getAttribute("href")}return t.prototype.start=function(){var t=this;this.listener=function(e){var n=decodeURI(location.pathname+location.search);t.root&&(n=n.replace(t.rootRE,"")),t.onChange(n,e&&e.state,location.hash)},window.addEventListener("popstate",this.listener),this.listener()},t.prototype.stop=function(){window.removeEventListener("popstate",this.listener)},t.prototype.go=function(t,e,n){var r=this.formatPath(t,n);e?history.replaceState({},"",r):(history.replaceState({pos:{x:window.pageXOffset,y:window.pageYOffset}},"",location.href),history.pushState({},"",r));var i=t.match(K),o=i&&i[0];t=r.replace(K,"").replace(this.rootRE,""),this.onChange(t,null,o)},t.prototype.formatPath=function(t,e){return"/"===t.charAt(0)?this.root?this.root+"/"+t.replace(/^\//,""):t:w(this.base||location.pathname,t,e)},t}(),Y=function(){function t(e){var n=e.hashbang,r=e.onChange;Q.classCallCheck(this,t),this.hashbang=n,this.onChange=r}return t.prototype.start=function(){var t=this;this.listener=function(){var e=location.hash,n=e.replace(/^#!?/,"");"/"!==n.charAt(0)&&(n="/"+n);var r=t.formatPath(n);if(r!==e)return void location.replace(r);var i=location.search&&e.indexOf("?")>-1?"&"+location.search.slice(1):location.search;t.onChange(decodeURI(e.replace(/^#!?/,"")+i))},window.addEventListener("hashchange",this.listener),this.listener()},t.prototype.stop=function(){window.removeEventListener("hashchange",this.listener)},t.prototype.go=function(t,e,n){t=this.formatPath(t,n),e?location.replace(t):location.hash=t},t.prototype.formatPath=function(t,e){var n="/"===t.charAt(0),r="#"+(this.hashbang?"!":"");return n?r+t:r+w(location.hash.replace(/^#!?/,""),t,e)},t}(),J=function(){function t(e){var n=e.onChange;Q.classCallCheck(this,t),this.onChange=n,this.currentPath="/"}return t.prototype.start=function(){this.onChange("/")},t.prototype.stop=function(){},t.prototype.go=function(t,e,n){t=this.currentPath=this.formatPath(t,n),this.onChange(t)},t.prototype.formatPath=function(t,e){return"/"===t.charAt(0)?t:w(this.currentPath,t,e)},t}(),W=function(){function t(e,n,r){Q.classCallCheck(this,t),this.router=e,this.to=n,this.from=r,this.next=null,this.aborted=!1,this.done=!1}return t.prototype.abort=function(){if(!this.aborted){this.aborted=!0;var t=!this.from.path&&"/"===this.to.path;t||this.router.replace(this.from.path||"/")}},t.prototype.redirect=function(t){this.aborted||(this.aborted=!0,"string"==typeof t?t=k(t,this.to.params,this.to.query):(t.params=t.params||this.to.params,t.query=t.query||this.to.query),this.router.replace(t))},t.prototype.start=function(t){for(var e=this,n=[],r=this.router._rootView;r;)n.unshift(r),r=r.childView;var i=n.slice().reverse(),o=this.activateQueue=j(this.to.matched).map(function(t){return t.handler}),a=void 0,s=void 0;for(a=0;a<i.length&&A(i[a],o[a],e);a++);a>0&&(s=i.slice(0,a),n=i.slice(a).reverse(),o=o.slice(a)),e.runQueue(n,E,function(){e.runQueue(o,$,function(){e.runQueue(n,x,function(){if(e.router._onTransitionValidated(e),s&&s.forEach(function(t){return S(t,e)}),n.length){var r=n[n.length-1],i=s?s.length:0;V(r,e,i,t)}else t()})})})},t.prototype.runQueue=function(t,e,n){function r(o){o>=t.length?n():e(t[o],i,function(){r(o+1)})}var i=this;r(0)},t.prototype.callHook=function(t,e,n){var r=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],i=r.expectBoolean,o=void 0===i?!1:i,a=r.postActivate,s=void 0===a?!1:a,h=r.processData,c=r.cleanup,u=this,l=!1,p=function(){c&&c(),u.abort()},f=function(t){if(s?v():p(),t&&!u.router._suppress)throw _("Uncaught error during transition: "),t instanceof Error?t:new Error(t)},d=function(t){try{f(t)}catch(e){setTimeout(function(){throw e},0)}},v=function(){return l?void _("transition.next() should be called only once."):(l=!0,u.aborted?void(c&&c()):void(n&&n()))},g=function(e){"boolean"==typeof e?e?v():p():b(e)?e.then(function(t){t?v():p()},d):t.length||v()},y=function(t){var e=void 0;try{e=h(t)}catch(n){return f(n)}b(e)?e.then(v,d):v()},m={to:u.to,from:u.from,abort:p,next:h?y:v,redirect:function(){u.redirect.apply(u,arguments)}},w=void 0;try{w=t.call(e,m)}catch(C){return f(C)}o?g(w):b(w)?h?w.then(y,d):w.then(v,d):h&&H(w)?y(w):t.length||v()},t.prototype.callHooks=function(t,e,n,r){var i=this;Array.isArray(t)?this.runQueue(t,function(t,n,o){i.aborted||i.callHook(t,e,o,r)},n):this.callHook(t,e,n,r)},t}(),Z=/^(component|subRoutes)$/,tt=function st(t,e){var n=this;Q.classCallCheck(this,st);var r=e._recognizer.recognize(t);r&&([].forEach.call(r,function(t){for(var e in t.handler)Z.test(e)||(n[e]=t.handler[e])}),this.query=r.queryParams,this.params=[].reduce.call(r,function(t,e){if(e.params)for(var n in e.params)t[n]=e.params[n];return t},{})),this.path=t,this.router=e,this.matched=r||e._notFoundHandler,Object.freeze(this)},et=/\/$/,nt=/[-.*+?^${}()|[\]\/\\]/g,rt=/\?.*$/,it={"abstract":J,hash:Y,html5:X},ot=void 0,at=function(){function t(){var e=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=n.hashbang,i=void 0===r?!0:r,o=n["abstract"],a=void 0===o?!1:o,s=n.history,h=void 0===s?!1:s,c=n.saveScrollPosition,u=void 0===c?!1:c,l=n.transitionOnLoad,p=void 0===l?!1:l,f=n.suppressTransitionError,d=void 0===f?!1:f,v=n.root,g=void 0===v?null:v,y=n.linkActiveClass,m=void 0===y?"v-link-active":y;if(Q.classCallCheck(this,t),!t.installed)throw new Error("Please install the Router with Vue.use() before creating an instance.");this.app=null,this._children=[],this._recognizer=new L,this._guardRecognizer=new L,this._started=!1,this._startCb=null,this._currentRoute={},this._currentTransition=null,this._previousTransition=null,this._notFoundHandler=null,this._notFoundRedirect=null,this._beforeEachHooks=[],this._afterEachHooks=[],this._rendered=!1,this._transitionOnLoad=p,this._root=g,this._abstract=a,this._hashbang=i;var _="undefined"!=typeof window&&window.history&&window.history.pushState;this._history=h&&_,this._historyFallback=h&&!_;var w=ot.util.inBrowser;this.mode=!w||this._abstract?"abstract":this._history?"html5":"hash";var b=it[this.mode];this.history=new b({root:g,hashbang:this._hashbang,onChange:function(t,n,r){e._match(t,n,r)}}),this._saveScrollPosition=u,this._linkActiveClass=m,this._suppress=d}return t.prototype.map=function(t){for(var e in t)this.on(e,t[e]);return this},t.prototype.on=function(t,e){return"*"===t?this._notFound(e):this._addRoute(t,e,[]),this},t.prototype.redirect=function(t){for(var e in t)this._addRedirect(e,t[e]);return this},t.prototype.alias=function(t){for(var e in t)this._addAlias(e,t[e]);return this},t.prototype.beforeEach=function(t){return this._beforeEachHooks.push(t),this},t.prototype.afterEach=function(t){return this._afterEachHooks.push(t),this},t.prototype.go=function(t){var e=!1,n=!1;ot.util.isObject(t)&&(e=t.replace,n=t.append),t=this._stringifyPath(t),t&&this.history.go(t,e,n)},t.prototype.replace=function(t){"string"==typeof t&&(t={path:t}),t.replace=!0,this.go(t)},t.prototype.start=function(t,e,n){if(this._started)return void _("already started.");if(this._started=!0,this._startCb=n,!this.app){if(!t||!e)throw new Error("Must start vue-router with a component and a root container.");if(t instanceof ot)throw new Error("Must start vue-router with a component, not a Vue instance.");this._appContainer=e;var r=this._appConstructor="function"==typeof t?t:ot.extend(t);r.options.name=r.options.name||"RouterApp"}if(this._historyFallback){var i=window.location,o=new X({root:this._root}),a=o.root?i.pathname.replace(o.rootRE,""):i.pathname;if(a&&"/"!==a)return void i.assign((o.root||"")+"/"+this.history.formatPath(a)+i.search)}this.history.start()},t.prototype.stop=function(){this.history.stop(),this._started=!1},t.prototype._addRoute=function(t,e,n){if(z(t,e),e.path=t,e.fullPath=(n.reduce(function(t,e){return t+e.path},"")+t).replace("//","/"),n.push({path:t,handler:e}),this._recognizer.add(n,{as:e.name}),e.subRoutes)for(var r in e.subRoutes)this._addRoute(r,e.subRoutes[r],n.slice())},t.prototype._notFound=function(t){z("*",t),this._notFoundHandler=[{handler:t}]},t.prototype._addRedirect=function(t,e){"*"===t?this._notFoundRedirect=e:this._addGuard(t,e,this.replace)},t.prototype._addAlias=function(t,e){this._addGuard(t,e,this._match)},t.prototype._addGuard=function(t,e,n){var r=this;this._guardRecognizer.add([{path:t,handler:function(t,i){var o=k(e,t.params,i);n.call(r,o)}}])},t.prototype._checkGuard=function(t){var e=this._guardRecognizer.recognize(t);return e?(e[0].handler(e[0],e.queryParams),!0):this._notFoundRedirect&&(e=this._recognizer.recognize(t),!e)?(this.replace(this._notFoundRedirect),!0):void 0},t.prototype._match=function(t,e,n){var r=this;if(!this._checkGuard(t)){var i=this._currentRoute,o=this._currentTransition;if(o){if(o.to.path===t)return;if(i.path===t)return o.aborted=!0,void(this._currentTransition=this._prevTransition);o.aborted=!0}var a=new tt(t,this),s=new W(this,a,i);this._prevTransition=o,this._currentTransition=s,this.app||!function(){var t=r;r.app=new r._appConstructor({el:r._appContainer,created:function(){this.$router=t},_meta:{$route:a}})}();var h=this._beforeEachHooks,c=function(){s.start(function(){r._postTransition(a,e,n)})};h.length?s.runQueue(h,function(t,e,n){s===r._currentTransition&&s.callHook(t,null,n,{expectBoolean:!0})},c):c(),!this._rendered&&this._startCb&&this._startCb.call(null),this._rendered=!0}},t.prototype._onTransitionValidated=function(t){var e=this._currentRoute=t.to;this.app.$route!==e&&(this.app.$route=e,this._children.forEach(function(t){t.$route=e})),this._afterEachHooks.length&&this._afterEachHooks.forEach(function(e){return e.call(null,{to:t.to,from:t.from})}),this._currentTransition.done=!0},t.prototype._postTransition=function(t,e,n){var r=e&&e.pos;r&&this._saveScrollPosition?ot.nextTick(function(){window.scrollTo(r.x,r.y)}):n&&ot.nextTick(function(){var t=document.getElementById(n.slice(1));t&&window.scrollTo(window.scrollX,t.offsetTop)})},t.prototype._stringifyPath=function(t){var e="";if(t&&"object"==typeof t){if(t.name){var n=ot.util.extend,r=this._currentTransition&&this._currentTransition.to.params,i=t.params||{},o=r?n(n({},r),i):i;t.query&&(o.queryParams=t.query),e=this._recognizer.generate(t.name,o)}else if(t.path&&(e=t.path,t.query)){var a=this._recognizer.generateQueryString(t.query);e+=e.indexOf("?")>-1?"&"+a.slice(1):a}}else e=t?t+"":"";return encodeURI(e)},t}();return at.installed=!1,at.install=function(t){return at.installed?void _("already installed."):(ot=t,q(ot),M(ot),D(ot),B.Vue=ot,void(at.installed=!0))},"undefined"!=typeof window&&window.Vue&&window.Vue.use(at),at});
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueRouter=e()}(this,function(){"use strict";function t(t,e,n){this.path=t,this.matcher=e,this.delegate=n}function e(t){this.routes={},this.children={},this.target=t}function n(e,r,i){return function(o,a){var s=e+o;return a?void a(n(s,r,i)):new t(e+o,r,i)}}function r(t,e,n){for(var r=0,i=0,o=t.length;o>i;i++)r+=t[i].path.length;e=e.substr(r);var a={path:e,handler:n};t.push(a)}function i(t,e,n,o){var a=e.routes;for(var s in a)if(a.hasOwnProperty(s)){var h=t.slice();r(h,s,a[s]),e.children[s]?i(h,e.children[s],n,o):n.call(o,h)}}function o(t,r){var o=new e;t(n("",o,this.delegate)),i([],o,function(t){r?r(this,t):this.add(t)},this)}function a(t){B||"undefined"==typeof console||console.error("[vue-router] "+t)}function s(t,e){try{return e?decodeURIComponent(t):decodeURI(t)}catch(n){a("malformed URI"+(e?" component: ":": ")+t)}}function h(t){return"[object Array]"===Object.prototype.toString.call(t)}function c(t){this.string=t}function u(t){this.name=t}function l(t){this.name=t}function p(){}function f(t,e,n){"/"===t.charAt(0)&&(t=t.substr(1));var r=t.split("/"),i=[];n.val="";for(var o=0,a=r.length;a>o;o++){var s,h=r[o];(s=h.match(/^:([^\/]+)$/))?(i.push(new u(s[1])),e.push(s[1]),n.val+="3"):(s=h.match(/^\*([^\/]+)$/))?(i.push(new l(s[1])),n.val+="2",e.push(s[1])):""===h?(i.push(new p),n.val+="1"):(i.push(new c(h)),n.val+="4")}return n.val=+n.val,i}function d(t){this.charSpec=t,this.nextStates=[]}function v(t){return t.sort(function(t,e){return e.specificity.val-t.specificity.val})}function g(t,e){for(var n=[],r=0,i=t.length;i>r;r++){var o=t[r];n=n.concat(o.match(e))}return n}function y(t){this.queryParams=t||{}}function m(t,e,n){for(var r=t.handlers,i=t.regex,o=e.match(i),a=1,s=new y(n),h=0,c=r.length;c>h;h++){for(var u=r[h],l=u.names,p={},f=0,d=l.length;d>f;f++)p[l[f]]=o[a++];s.push({handler:u.handler,params:p,isDynamic:!!l.length})}return s}function _(t,e){return e.eachChar(function(e){t=t.put(e)}),t}function w(t){return t=t.replace(/\+/gm,"%20"),s(t,!0)}function b(t){"undefined"!=typeof console&&console.error("[vue-router] "+t)}function C(t,e,n){var r=t.match(/(\?.*)$/);if(r&&(r=r[1],t=t.slice(0,-r.length)),"?"===e.charAt(0))return t+e;var i=t.split("/");n&&i[i.length-1]||i.pop();for(var o=e.replace(/^\//,"").split("/"),a=0;a<o.length;a++){var s=o[a];"."!==s&&(".."===s?i.pop():i.push(s))}return""!==i[0]&&i.unshift(""),i.join("/")}function R(t){return t&&"function"==typeof t.then}function A(t,e){var n=t&&(t.$options||t.options);return n&&n.route&&n.route[e]}function k(t,e){Y?Y.$options.components._=t.component:Y={resolve:X.Vue.prototype._resolveComponent,$options:{components:{_:t.component}}},Y.resolve("_",function(n){t.component=n,e(n)})}function $(t,e,n){return void 0===e&&(e={}),t=t.replace(/:([^\/]+)/g,function(n,r){var i=e[r];return i||b('param "'+r+'" not found when generating path for "'+t+'" with params '+JSON.stringify(e)),i||""}),n&&(t+=K(n)),t}function x(t,e,n){var r=t.childVM;if(!r||!e)return!1;if(t.Component!==e.component)return!1;var i=A(r,"canReuse");return"boolean"==typeof i?i:i?i.call(r,{to:n.to,from:n.from}):!0}function E(t,e,n){var r=t.childVM,i=A(r,"canDeactivate");i?e.callHook(i,r,n,{expectBoolean:!0}):n()}function V(t,e,n){k(t,function(t){if(!e.aborted){var r=A(t,"canActivate");r?e.callHook(r,null,n,{expectBoolean:!0}):n()}})}function S(t,e,n){var r=t.childVM,i=A(r,"deactivate");i?e.callHooks(i,r,n):n()}function P(t,e,n,r,i){var o=e.activateQueue[n];if(!o)return H(t),t._bound&&t.setComponent(null),void(r&&r());var a=t.Component=o.component,s=A(a,"activate"),h=A(a,"data"),c=A(a,"waitForData");t.depth=n,t.activated=!1;var u=void 0,l=!(!h||c);if(i=i&&t.childVM&&t.childVM.constructor===a)u=t.childVM,u.$loadingRouteData=l;else if(H(t),t.unbuild(!0),u=t.build({_meta:{$loadingRouteData:l},created:function(){this._routerView=t}}),t.keepAlive){u.$loadingRouteData=l;var p=u._keepAliveRouterView;p&&(t.childView=p,u._keepAliveRouterView=null)}var f=function(){u.$destroy()},d=function(){if(i)return void(r&&r());var n=e.router;n._rendered||n._transitionOnLoad?t.transition(u):(t.setCurrent?t.setCurrent(u):t.childVM=u,u.$before(t.anchor,null,!1)),r&&r()},v=function(){t.childView&&P(t.childView,e,n+1,null,i||t.keepAlive),d()},g=function(){t.activated=!0,h&&c?T(u,e,h,v,f):(h&&T(u,e,h),v())};s?e.callHooks(s,u,g,{cleanup:f,postActivate:!0}):g()}function O(t,e){var n=t.childVM,r=A(n,"data");r&&T(n,e,r)}function T(t,e,n,r,i){t.$loadingRouteData=!0,e.callHooks(n,t,function(){t.$loadingRouteData=!1,t.$emit("route-data-loaded",t),r&&r()},{cleanup:i,postActivate:!0,processData:function(e){var n=[];return j(e)&&Object.keys(e).forEach(function(r){var i=e[r];R(i)?n.push(i.then(function(e){t.$set(r,e)})):t.$set(r,i)}),n.length?n[0].constructor.all(n):void 0}})}function H(t){t.keepAlive&&t.childVM&&t.childView&&(t.childVM._keepAliveRouterView=t.childView),t.childView=null}function j(t){return"[object Object]"===Object.prototype.toString.call(t)}function M(t){return"[object Object]"===Object.prototype.toString.call(t)}function D(t){return t?Array.prototype.slice.call(t):[]}function q(t){var e=t.util,n=e.extend,r=e.isArray,i=e.defineReactive,o=t.prototype._init;t.prototype._init=function(t){t=t||{};var e=t._parent||t.parent||this,n=e.$router,r=e.$route;n&&(this.$router=n,n._children.push(this),this._defineMeta?this._defineMeta("$route",r):i(this,"$route",r)),o.call(this,t)};var a=t.prototype._destroy;t.prototype._destroy=function(){!this._isBeingDestroyed&&this.$router&&this.$router._children.$remove(this),a.apply(this,arguments)};var s=t.config.optionMergeStrategies,h=/^(data|activate|deactivate)$/;s&&(s.route=function(t,e){if(!e)return t;if(!t)return e;var i={};n(i,t);for(var o in e){var a=i[o],s=e[o];a&&h.test(o)?i[o]=(r(a)?a:[a]).concat(s):i[o]=s}return i})}function z(t){var e=t.util,n=t.directive("_component")||t.internalDirectives.component,r=e.extend({},n);e.extend(r,{_isRouterView:!0,bind:function(){var t=this.vm.$route;if(!t)return void b("<router-view> can only be used inside a router-enabled app.");this._isDynamicLiteral=!0,n.bind.call(this);for(var e=void 0,r=this.vm;r;){if(r._routerView){e=r._routerView;break}r=r.$parent}if(e)this.parentView=e,e.childView=this;else{var i=t.router;i._rootView=this}var o=t.router._currentTransition;if(!e&&o.done||e&&e.activated){var a=e?e.depth+1:0;P(this,o,a)}},unbind:function(){this.parentView&&(this.parentView.childView=null),n.unbind.call(this)}}),t.elementDirective("router-view",r)}function Q(t){function e(t){return t.protocol===location.protocol&&t.hostname===location.hostname&&t.port===location.port}function n(t,e,n){if(e=e.trim(),-1===e.indexOf(" "))return void n(t,e);for(var r=e.split(/\s+/),i=0,o=r.length;o>i;i++)n(t,r[i])}var r=t.util,i=r.bind,o=r.getAttr,a=r.isObject,s=r.addClass,h=r.removeClass,c=t.directive("on").priority,u="__vue-router-link-update__",l=0;t.directive("link-active",{priority:9999,bind:function(){for(var t=this,e=String(l++),n=this.el.querySelectorAll("[v-link]"),r=0,i=n.length;i>r;r++){var o=n[r],a=o.getAttribute(u),s=a?a+","+e:e;o.setAttribute(u,s)}this.vm.$on(u,this.cb=function(n,r){n.activeIds.indexOf(e)>-1&&n.updateClasses(r,t.el)})},unbind:function(){this.vm.$off(u,this.cb)}}),t.directive("link",{priority:c-2,bind:function(){var t=this.vm;if(!t.$route)return void b("v-link can only be used inside a router-enabled app.");this.router=t.$route.router,this.unwatch=t.$watch("$route",i(this.onRouteUpdate,this));var e=o(this.el,u);e&&(this.activeIds=e.split(",")),"A"===this.el.tagName&&"_blank"===this.el.getAttribute("target")||(this.handler=i(this.onClick,this),this.el.addEventListener("click",this.handler))},update:function(t){this.target=t,a(t)&&(this.append=t.append,this.exact=t.exact,this.prevActiveClass=this.activeClass,this.activeClass=t.activeClass),this.onRouteUpdate(this.vm.$route)},onClick:function(t){if(!(t.metaKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||0!==t.button)){var n=this.target;if(n)t.preventDefault(),this.router.go(n);else{for(var r=t.target;"A"!==r.tagName&&r!==this.el;)r=r.parentNode;if("A"===r.tagName&&e(r)){t.preventDefault();var i=r.pathname;this.router.history.root&&(i=i.replace(this.router.history.rootRE,"")),this.router.go({path:i,replace:n&&n.replace,append:n&&n.append})}}}},onRouteUpdate:function(t){var e=this.router.stringifyPath(this.target);this.path!==e&&(this.path=e,this.updateActiveMatch(),this.updateHref()),this.activeIds?this.vm.$emit(u,this,t.path):this.updateClasses(t.path,this.el)},updateActiveMatch:function(){this.activeRE=this.path&&!this.exact?new RegExp("^"+this.path.replace(/\/$/,"").replace(at,"").replace(ot,"\\$&")+"(\\/|$)"):null},updateHref:function(){if("A"===this.el.tagName){var t=this.path,e=this.router,n="/"===t.charAt(0),r=t&&("hash"===e.mode||n)?e.history.formatPath(t,this.append):t;r?this.el.href=r:this.el.removeAttribute("href")}},updateClasses:function(t,e){var r=this.activeClass||this.router._linkActiveClass;this.prevActiveClass&&this.prevActiveClass!==r&&n(e,this.prevActiveClass,h);var i=this.path.replace(at,"");t=t.replace(at,""),this.exact?i===t||"/"!==i.charAt(i.length-1)&&i===t.replace(it,"")?n(e,r,s):n(e,r,h):this.activeRE&&this.activeRE.test(t)?n(e,r,s):n(e,r,h)},unbind:function(){this.el.removeEventListener("click",this.handler),this.unwatch&&this.unwatch()}})}function F(t,e){var n=e.component;ht.util.isPlainObject(n)&&(n=e.component=ht.extend(n)),"function"!=typeof n&&(e.component=null,b('invalid component for route "'+t+'".'))}var I={};I.classCallCheck=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},t.prototype={to:function(t,e){var n=this.delegate;if(n&&n.willAddRoute&&(t=n.willAddRoute(this.matcher.target,t)),this.matcher.add(this.path,t),e){if(0===e.length)throw new Error("You must have an argument in the function passed to `to`");this.matcher.addChild(this.path,t,e,this.delegate)}return this}},e.prototype={add:function(t,e){this.routes[t]=e},addChild:function(t,r,i,o){var a=new e(r);this.children[t]=a;var s=n(t,a,o);o&&o.contextEntered&&o.contextEntered(r,s),i(s)}};var U=["/",".","*","+","?","|","(",")","[","]","{","}","\\"],L=new RegExp("(\\"+U.join("|\\")+")","g"),B=!1;c.prototype={eachChar:function(t){for(var e,n=this.string,r=0,i=n.length;i>r;r++)e=n.charAt(r),t({validChars:e})},regex:function(){return this.string.replace(L,"\\$1")},generate:function(){return this.string}},u.prototype={eachChar:function(t){t({invalidChars:"/",repeat:!0})},regex:function(){return"([^/]+)"},generate:function(t){var e=t[this.name];return null==e?":"+this.name:e}},l.prototype={eachChar:function(t){t({invalidChars:"",repeat:!0})},regex:function(){return"(.+)"},generate:function(t){var e=t[this.name];return null==e?":"+this.name:e}},p.prototype={eachChar:function(){},regex:function(){return""},generate:function(){return""}},d.prototype={get:function(t){for(var e=this.nextStates,n=0,r=e.length;r>n;n++){var i=e[n],o=i.charSpec.validChars===t.validChars;if(o=o&&i.charSpec.invalidChars===t.invalidChars)return i}},put:function(t){var e;return(e=this.get(t))?e:(e=new d(t),this.nextStates.push(e),t.repeat&&e.nextStates.push(e),e)},match:function(t){for(var e,n,r,i=this.nextStates,o=[],a=0,s=i.length;s>a;a++)e=i[a],n=e.charSpec,"undefined"!=typeof(r=n.validChars)?-1!==r.indexOf(t)&&o.push(e):"undefined"!=typeof(r=n.invalidChars)&&-1===r.indexOf(t)&&o.push(e);return o}};var N=Object.create||function(t){function e(){}return e.prototype=t,new e};y.prototype=N({splice:Array.prototype.splice,slice:Array.prototype.slice,push:Array.prototype.push,length:0,queryParams:null});var G=function(){this.rootState=new d,this.names={}};G.prototype={add:function(t,e){for(var n,r=this.rootState,i="^",o={},a=[],s=[],h=!0,c=0,u=t.length;u>c;c++){var l=t[c],d=[],v=f(l.path,d,o);s=s.concat(v);for(var g=0,y=v.length;y>g;g++){var m=v[g];m instanceof p||(h=!1,r=r.put({validChars:"/"}),i+="/",r=_(r,m),i+=m.regex())}var w={handler:l.handler,names:d};a.push(w)}h&&(r=r.put({validChars:"/"}),i+="/"),r.handlers=a,r.regex=new RegExp(i+"$"),r.specificity=o,(n=e&&e.as)&&(this.names[n]={segments:s,handlers:a})},handlersFor:function(t){var e=this.names[t],n=[];if(!e)throw new Error("There is no route named "+t);for(var r=0,i=e.handlers.length;i>r;r++)n.push(e.handlers[r]);return n},hasRoute:function(t){return!!this.names[t]},generate:function(t,e){var n=this.names[t],r="";if(!n)throw new Error("There is no route named "+t);for(var i=n.segments,o=0,a=i.length;a>o;o++){var s=i[o];s instanceof p||(r+="/",r+=s.generate(e))}return"/"!==r.charAt(0)&&(r="/"+r),e&&e.queryParams&&(r+=this.generateQueryString(e.queryParams)),r},generateQueryString:function(t){var e=[],n=[];for(var r in t)t.hasOwnProperty(r)&&n.push(r);n.sort();for(var i=0,o=n.length;o>i;i++){r=n[i];var a=t[r];if(null!=a){var s=encodeURIComponent(r);if(h(a))for(var c=0,u=a.length;u>c;c++){var l=r+"[]="+encodeURIComponent(a[c]);e.push(l)}else s+="="+encodeURIComponent(a),e.push(s)}}return 0===e.length?"":"?"+e.join("&")},parseQueryString:function(t){for(var e=t.split("&"),n={},r=0;r<e.length;r++){var i,o=e[r].split("="),a=w(o[0]),s=a.length,h=!1;1===o.length?i="true":(s>2&&"[]"===a.slice(s-2)&&(h=!0,a=a.slice(0,s-2),n[a]||(n[a]=[])),i=o[1]?w(o[1]):""),h?n[a].push(i):n[a]=i}return n},recognize:function(t,e){B=e;var n,r,i,o,a=[this.rootState],h={},c=!1;if(o=t.indexOf("?"),-1!==o){var u=t.substr(o+1,t.length);t=t.substr(0,o),u&&(h=this.parseQueryString(u))}if(t=s(t)){for("/"!==t.charAt(0)&&(t="/"+t),n=t.length,n>1&&"/"===t.charAt(n-1)&&(t=t.substr(0,n-1),c=!0),r=0,i=t.length;i>r&&(a=g(a,t.charAt(r)),a.length);r++);var l=[];for(r=0,i=a.length;i>r;r++)a[r].handlers&&l.push(a[r]);a=v(l);var p=l[0];return p&&p.handlers?(c&&"(.+)$"===p.regex.source.slice(-5)&&(t+="/"),m(p,t,h)):void 0}}},G.prototype.map=o;var K=G.prototype.generateQueryString,X={},Y=void 0,J=/#.*$/,W=function(){function t(e){var n=e.root,r=e.onChange;I.classCallCheck(this,t),n&&"/"!==n?("/"!==n.charAt(0)&&(n="/"+n),this.root=n.replace(/\/$/,""),this.rootRE=new RegExp("^\\"+this.root)):this.root=null,this.onChange=r;var i=document.querySelector("base");this.base=i&&i.getAttribute("href")}return t.prototype.start=function(){var t=this;this.listener=function(e){var n=location.pathname+location.search;t.root&&(n=n.replace(t.rootRE,"")),t.onChange(n,e&&e.state,location.hash)},window.addEventListener("popstate",this.listener),this.listener()},t.prototype.stop=function(){window.removeEventListener("popstate",this.listener)},t.prototype.go=function(t,e,n){var r=this.formatPath(t,n);e?history.replaceState({},"",r):(history.replaceState({pos:{x:window.pageXOffset,y:window.pageYOffset}},"",location.href),history.pushState({},"",r));var i=t.match(J),o=i&&i[0];t=r.replace(J,"").replace(this.rootRE,""),this.onChange(t,null,o)},t.prototype.formatPath=function(t,e){return"/"===t.charAt(0)?this.root?this.root+"/"+t.replace(/^\//,""):t:C(this.base||location.pathname,t,e)},t}(),Z=function(){function t(e){var n=e.hashbang,r=e.onChange;I.classCallCheck(this,t),this.hashbang=n,this.onChange=r}return t.prototype.start=function(){var t=this;this.listener=function(){var e=location.hash,n=e.replace(/^#!?/,"");"/"!==n.charAt(0)&&(n="/"+n);var r=t.formatPath(n);if(r!==e)return void location.replace(r);var i=location.search&&e.indexOf("?")>-1?"&"+location.search.slice(1):location.search;t.onChange(e.replace(/^#!?/,"")+i)},window.addEventListener("hashchange",this.listener),this.listener()},t.prototype.stop=function(){window.removeEventListener("hashchange",this.listener)},t.prototype.go=function(t,e,n){t=this.formatPath(t,n),e?location.replace(t):location.hash=t},t.prototype.formatPath=function(t,e){var n="/"===t.charAt(0),r="#"+(this.hashbang?"!":"");return n?r+t:r+C(location.hash.replace(/^#!?/,""),t,e)},t}(),tt=function(){function t(e){var n=e.onChange;I.classCallCheck(this,t),this.onChange=n,this.currentPath="/"}return t.prototype.start=function(){this.onChange("/")},t.prototype.stop=function(){},t.prototype.go=function(t,e,n){t=this.currentPath=this.formatPath(t,n),this.onChange(t)},t.prototype.formatPath=function(t,e){return"/"===t.charAt(0)?t:C(this.currentPath,t,e)},t}(),et=function(){function t(e,n,r){I.classCallCheck(this,t),this.router=e,this.to=n,this.from=r,this.next=null,this.aborted=!1,this.done=!1}return t.prototype.abort=function(){if(!this.aborted){this.aborted=!0;var t=!this.from.path&&"/"===this.to.path;t||this.router.replace(this.from.path||"/")}},t.prototype.redirect=function(t){this.aborted||(this.aborted=!0,"string"==typeof t?t=$(t,this.to.params,this.to.query):(t.params=t.params||this.to.params,t.query=t.query||this.to.query),this.router.replace(t))},t.prototype.start=function(t){for(var e=this,n=[],r=this.router._rootView;r;)n.unshift(r),r=r.childView;var i=n.slice().reverse(),o=this.activateQueue=D(this.to.matched).map(function(t){return t.handler}),a=void 0,s=void 0;for(a=0;a<i.length&&x(i[a],o[a],e);a++);a>0&&(s=i.slice(0,a),n=i.slice(a).reverse(),o=o.slice(a)),e.runQueue(n,E,function(){e.runQueue(o,V,function(){e.runQueue(n,S,function(){if(e.router._onTransitionValidated(e),s&&s.forEach(function(t){return O(t,e)}),n.length){var r=n[n.length-1],i=s?s.length:0;P(r,e,i,t)}else t()})})})},t.prototype.runQueue=function(t,e,n){function r(o){o>=t.length?n():e(t[o],i,function(){r(o+1)})}var i=this;r(0)},t.prototype.callHook=function(t,e,n){var r=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],i=r.expectBoolean,o=void 0===i?!1:i,a=r.postActivate,s=void 0===a?!1:a,h=r.processData,c=r.cleanup,u=this,l=!1,p=function(){c&&c(),u.abort()},f=function(t){if(s?v():p(),t&&!u.router._suppress)throw b("Uncaught error during transition: "),t instanceof Error?t:new Error(t)},d=function(t){try{f(t)}catch(e){setTimeout(function(){throw e},0)}},v=function(){return l?void b("transition.next() should be called only once."):(l=!0,u.aborted?void(c&&c()):void(n&&n()))},g=function(e){"boolean"==typeof e?e?v():p():R(e)?e.then(function(t){t?v():p()},d):t.length||v()},y=function(t){var e=void 0;try{e=h(t)}catch(n){return f(n)}R(e)?e.then(v,d):v()},m={to:u.to,from:u.from,abort:p,next:h?y:v,redirect:function(){u.redirect.apply(u,arguments)}},_=void 0;try{_=t.call(e,m)}catch(w){return f(w)}o?g(_):R(_)?h?_.then(y,d):_.then(v,d):h&&M(_)?y(_):t.length||v()},t.prototype.callHooks=function(t,e,n,r){var i=this;Array.isArray(t)?this.runQueue(t,function(t,n,o){i.aborted||i.callHook(t,e,o,r)},n):this.callHook(t,e,n,r)},t}(),nt=/^(component|subRoutes|fullPath)$/,rt=function ut(t,e){var n=this;I.classCallCheck(this,ut);var r=e._recognizer.recognize(t);r&&([].forEach.call(r,function(t){for(var e in t.handler)nt.test(e)||(n[e]=t.handler[e])}),this.query=r.queryParams,this.params=[].reduce.call(r,function(t,e){if(e.params)for(var n in e.params)t[n]=e.params[n];return t},{})),this.path=t,this.matched=r||e._notFoundHandler,Object.defineProperty(this,"router",{enumerable:!1,value:e}),Object.freeze(this)},it=/\/$/,ot=/[-.*+?^${}()|[\]\/\\]/g,at=/\?.*$/,st={"abstract":tt,hash:Z,html5:W},ht=void 0,ct=function(){function t(){var e=this,n=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],r=n.hashbang,i=void 0===r?!0:r,o=n["abstract"],a=void 0===o?!1:o,s=n.history,h=void 0===s?!1:s,c=n.saveScrollPosition,u=void 0===c?!1:c,l=n.transitionOnLoad,p=void 0===l?!1:l,f=n.suppressTransitionError,d=void 0===f?!1:f,v=n.root,g=void 0===v?null:v,y=n.linkActiveClass,m=void 0===y?"v-link-active":y;if(I.classCallCheck(this,t),!t.installed)throw new Error("Please install the Router with Vue.use() before creating an instance.");this.app=null,this._children=[],this._recognizer=new G,this._guardRecognizer=new G,this._started=!1,this._startCb=null,this._currentRoute={},this._currentTransition=null,this._previousTransition=null,this._notFoundHandler=null,this._notFoundRedirect=null,this._beforeEachHooks=[],this._afterEachHooks=[],this._rendered=!1,this._transitionOnLoad=p,this._root=g,this._abstract=a,this._hashbang=i;var _="undefined"!=typeof window&&window.history&&window.history.pushState;this._history=h&&_,this._historyFallback=h&&!_;var w=ht.util.inBrowser;this.mode=!w||this._abstract?"abstract":this._history?"html5":"hash";var b=st[this.mode];this.history=new b({root:g,hashbang:this._hashbang,onChange:function(t,n,r){e._match(t,n,r)}}),this._saveScrollPosition=u,this._linkActiveClass=m,this._suppress=d}return t.prototype.map=function(t){for(var e in t)this.on(e,t[e]);return this},t.prototype.on=function(t,e){return"*"===t?this._notFound(e):this._addRoute(t,e,[]),this},t.prototype.redirect=function(t){for(var e in t)this._addRedirect(e,t[e]);return this},t.prototype.alias=function(t){for(var e in t)this._addAlias(e,t[e]);return this},t.prototype.beforeEach=function(t){return this._beforeEachHooks.push(t),this},t.prototype.afterEach=function(t){return this._afterEachHooks.push(t),this},t.prototype.go=function(t){var e=!1,n=!1;ht.util.isObject(t)&&(e=t.replace,n=t.append),t=this.stringifyPath(t),t&&this.history.go(t,e,n)},t.prototype.replace=function(t){"string"==typeof t&&(t={path:t}),t.replace=!0,this.go(t)},t.prototype.start=function(t,e,n){if(this._started)return void b("already started.");if(this._started=!0,this._startCb=n,!this.app){if(!t||!e)throw new Error("Must start vue-router with a component and a root container.");if(t instanceof ht)throw new Error("Must start vue-router with a component, not a Vue instance.");this._appContainer=e;var r=this._appConstructor="function"==typeof t?t:ht.extend(t);r.options.name=r.options.name||"RouterApp"}if(this._historyFallback){var i=window.location,o=new W({root:this._root}),a=o.root?i.pathname.replace(o.rootRE,""):i.pathname;if(a&&"/"!==a)return void i.assign((o.root||"")+"/"+this.history.formatPath(a)+i.search)}this.history.start()},t.prototype.stop=function(){this.history.stop(),this._started=!1},t.prototype.stringifyPath=function(t){var e="";if(t&&"object"==typeof t){if(t.name){var n=ht.util.extend,r=this._currentTransition&&this._currentTransition.to.params,i=t.params||{},o=r?n(n({},r),i):i;e=encodeURI(this._recognizer.generate(t.name,o))}else t.path&&(e=encodeURI(t.path));if(t.query){var a=this._recognizer.generateQueryString(t.query);e+=e.indexOf("?")>-1?"&"+a.slice(1):a}}else e=encodeURI(t?t+"":"");return e},t.prototype._addRoute=function(t,e,n){if(F(t,e),e.path=t,e.fullPath=(n.reduce(function(t,e){return t+e.path},"")+t).replace("//","/"),n.push({path:t,handler:e}),this._recognizer.add(n,{as:e.name}),e.subRoutes)for(var r in e.subRoutes)this._addRoute(r,e.subRoutes[r],n.slice())},t.prototype._notFound=function(t){F("*",t),this._notFoundHandler=[{handler:t}]},t.prototype._addRedirect=function(t,e){"*"===t?this._notFoundRedirect=e:this._addGuard(t,e,this.replace)},t.prototype._addAlias=function(t,e){this._addGuard(t,e,this._match)},t.prototype._addGuard=function(t,e,n){var r=this;this._guardRecognizer.add([{path:t,handler:function(t,i){var o=$(e,t.params,i);n.call(r,o)}}])},t.prototype._checkGuard=function(t){var e=this._guardRecognizer.recognize(t,!0);return e?(e[0].handler(e[0],e.queryParams),!0):this._notFoundRedirect&&(e=this._recognizer.recognize(t),!e)?(this.replace(this._notFoundRedirect),!0):void 0},t.prototype._match=function(t,e,n){var r=this;if(!this._checkGuard(t)){var i=this._currentRoute,o=this._currentTransition;if(o){if(o.to.path===t)return;if(i.path===t)return o.aborted=!0,void(this._currentTransition=this._prevTransition);o.aborted=!0}var a=new rt(t,this),s=new et(this,a,i);this._prevTransition=o,this._currentTransition=s,this.app||!function(){var t=r;r.app=new r._appConstructor({el:r._appContainer,created:function(){this.$router=t},_meta:{$route:a}})}();var h=this._beforeEachHooks,c=function(){s.start(function(){r._postTransition(a,e,n)})};h.length?s.runQueue(h,function(t,e,n){s===r._currentTransition&&s.callHook(t,null,n,{expectBoolean:!0})},c):c(),!this._rendered&&this._startCb&&this._startCb.call(null),this._rendered=!0}},t.prototype._onTransitionValidated=function(t){var e=this._currentRoute=t.to;this.app.$route!==e&&(this.app.$route=e,this._children.forEach(function(t){t.$route=e})),this._afterEachHooks.length&&this._afterEachHooks.forEach(function(e){return e.call(null,{to:t.to,from:t.from})}),this._currentTransition.done=!0},t.prototype._postTransition=function(t,e,n){var r=e&&e.pos;r&&this._saveScrollPosition?ht.nextTick(function(){window.scrollTo(r.x,r.y)}):n&&ht.nextTick(function(){var t=document.getElementById(n.slice(1));t&&window.scrollTo(window.scrollX,t.offsetTop)})},t}();return ct.installed=!1,ct.install=function(t){return ct.installed?void b("already installed."):(ht=t,q(ht),z(ht),Q(ht),X.Vue=ht,void(ct.installed=!0))},"undefined"!=typeof window&&window.Vue&&window.Vue.use(ct),ct});
function Target(path, matcher, delegate) {
this.path = path;
this.matcher = matcher;
this.delegate = delegate;
this.path = path
this.matcher = matcher
this.delegate = delegate
}

@@ -9,22 +9,22 @@

to: function(target, callback) {
var delegate = this.delegate;
var delegate = this.delegate
if (delegate && delegate.willAddRoute) {
target = delegate.willAddRoute(this.matcher.target, target);
target = delegate.willAddRoute(this.matcher.target, target)
}
this.matcher.add(this.path, target);
this.matcher.add(this.path, target)
if (callback) {
if (callback.length === 0) { throw new Error("You must have an argument in the function passed to `to`"); }
this.matcher.addChild(this.path, target, callback, this.delegate);
if (callback.length === 0) { throw new Error("You must have an argument in the function passed to `to`") }
this.matcher.addChild(this.path, target, callback, this.delegate)
}
return this;
return this
}
};
}
function Matcher(target) {
this.routes = {};
this.children = {};
this.target = target;
this.routes = {}
this.children = {}
this.target = target
}

@@ -34,54 +34,54 @@

add: function(path, handler) {
this.routes[path] = handler;
this.routes[path] = handler
},
addChild: function(path, target, callback, delegate) {
var matcher = new Matcher(target);
this.children[path] = matcher;
var matcher = new Matcher(target)
this.children[path] = matcher
var match = generateMatch(path, matcher, delegate);
var match = generateMatch(path, matcher, delegate)
if (delegate && delegate.contextEntered) {
delegate.contextEntered(target, match);
delegate.contextEntered(target, match)
}
callback(match);
callback(match)
}
};
}
function generateMatch(startingPath, matcher, delegate) {
return function(path, nestedCallback) {
var fullPath = startingPath + path;
var fullPath = startingPath + path
if (nestedCallback) {
nestedCallback(generateMatch(fullPath, matcher, delegate));
nestedCallback(generateMatch(fullPath, matcher, delegate))
} else {
return new Target(startingPath + path, matcher, delegate);
return new Target(startingPath + path, matcher, delegate)
}
};
}
}
function addRoute(routeArray, path, handler) {
var len = 0;
var len = 0
for (var i=0, l=routeArray.length; i<l; i++) {
len += routeArray[i].path.length;
len += routeArray[i].path.length
}
path = path.substr(len);
var route = { path: path, handler: handler };
routeArray.push(route);
path = path.substr(len)
var route = { path: path, handler: handler }
routeArray.push(route)
}
function eachRoute(baseRoute, matcher, callback, binding) {
var routes = matcher.routes;
var routes = matcher.routes
for (var path in routes) {
if (routes.hasOwnProperty(path)) {
var routeArray = baseRoute.slice();
addRoute(routeArray, path, routes[path]);
var routeArray = baseRoute.slice()
addRoute(routeArray, path, routes[path])
if (matcher.children[path]) {
eachRoute(routeArray, matcher.children[path], callback, binding);
eachRoute(routeArray, matcher.children[path], callback, binding)
} else {
callback.call(binding, routeArray);
callback.call(binding, routeArray)
}

@@ -93,10 +93,10 @@ }

export default function(callback, addRouteCallback) {
var matcher = new Matcher();
var matcher = new Matcher()
callback(generateMatch("", matcher, this.delegate));
callback(generateMatch("", matcher, this.delegate))
eachRoute([], matcher, function(route) {
if (addRouteCallback) { addRouteCallback(this, route); }
else { this.add(route); }
}, this);
if (addRouteCallback) { addRouteCallback(this, route) }
else { this.add(route) }
}, this)
}

@@ -1,2 +0,2 @@

import map from './dsl';
import map from './dsl'

@@ -6,8 +6,25 @@ var specials = [

'(', ')', '[', ']', '{', '}', '\\'
];
]
var escapeRegex = new RegExp('(\\' + specials.join('|\\') + ')', 'g');
var escapeRegex = new RegExp('(\\' + specials.join('|\\') + ')', 'g')
var noWarning = false
function warn (msg) {
if (!noWarning && typeof console !== 'undefined') {
console.error('[vue-router] ' + msg)
}
}
function tryDecode (uri, asComponent) {
try {
return asComponent
? decodeURIComponent(uri)
: decodeURI(uri)
} catch (e) {
warn('malformed URI' + (asComponent ? ' component: ' : ': ') + uri)
}
}
function isArray(test) {
return Object.prototype.toString.call(test) === "[object Array]";
return Object.prototype.toString.call(test) === "[object Array]"
}

@@ -32,10 +49,10 @@

function StaticSegment(string) { this.string = string; }
function StaticSegment(string) { this.string = string }
StaticSegment.prototype = {
eachChar: function(callback) {
var string = this.string, ch;
var string = this.string, ch
for (var i=0, l=string.length; i<l; i++) {
ch = string.charAt(i);
callback({ validChars: ch });
ch = string.charAt(i)
callback({ validChars: ch })
}

@@ -45,41 +62,41 @@ },

regex: function() {
return this.string.replace(escapeRegex, '\\$1');
return this.string.replace(escapeRegex, '\\$1')
},
generate: function() {
return this.string;
return this.string
}
};
}
function DynamicSegment(name) { this.name = name; }
function DynamicSegment(name) { this.name = name }
DynamicSegment.prototype = {
eachChar: function(callback) {
callback({ invalidChars: "/", repeat: true });
callback({ invalidChars: "/", repeat: true })
},
regex: function() {
return "([^/]+)";
return "([^/]+)"
},
generate: function(params) {
var val = params[this.name];
return val == null ? ":" + this.name : val;
var val = params[this.name]
return val == null ? ":" + this.name : val
}
};
}
function StarSegment(name) { this.name = name; }
function StarSegment(name) { this.name = name }
StarSegment.prototype = {
eachChar: function(callback) {
callback({ invalidChars: "", repeat: true });
callback({ invalidChars: "", repeat: true })
},
regex: function() {
return "(.+)";
return "(.+)"
},
generate: function(params) {
var val = params[this.name];
return val == null ? ":" + this.name : val;
var val = params[this.name]
return val == null ? ":" + this.name : val
}
};
}

@@ -89,5 +106,5 @@ function EpsilonSegment() {}

eachChar: function() {},
regex: function() { return ""; },
generate: function() { return ""; }
};
regex: function() { return "" },
generate: function() { return "" }
}

@@ -97,5 +114,5 @@ function parse(route, names, specificity) {

// also normalize.
if (route.charAt(0) === "/") { route = route.substr(1); }
if (route.charAt(0) === "/") { route = route.substr(1) }
var segments = route.split("/"), results = [];
var segments = route.split("/"), results = []

@@ -121,27 +138,27 @@ // A routes has specificity determined by the order that its different segments

// we convert the string to a number.
specificity.val = '';
specificity.val = ''
for (var i=0, l=segments.length; i<l; i++) {
var segment = segments[i], match;
var segment = segments[i], match
if (match = segment.match(/^:([^\/]+)$/)) {
results.push(new DynamicSegment(match[1]));
names.push(match[1]);
specificity.val += '3';
results.push(new DynamicSegment(match[1]))
names.push(match[1])
specificity.val += '3'
} else if (match = segment.match(/^\*([^\/]+)$/)) {
results.push(new StarSegment(match[1]));
specificity.val += '2';
names.push(match[1]);
results.push(new StarSegment(match[1]))
specificity.val += '2'
names.push(match[1])
} else if(segment === "") {
results.push(new EpsilonSegment());
specificity.val += '1';
results.push(new EpsilonSegment())
specificity.val += '1'
} else {
results.push(new StaticSegment(segment));
specificity.val += '4';
results.push(new StaticSegment(segment))
specificity.val += '4'
}
}
specificity.val = +specificity.val;
specificity.val = +specificity.val
return results;
return results
}

@@ -167,4 +184,4 @@

function State(charSpec) {
this.charSpec = charSpec;
this.nextStates = [];
this.charSpec = charSpec
this.nextStates = []
}

@@ -174,11 +191,11 @@

get: function(charSpec) {
var nextStates = this.nextStates;
var nextStates = this.nextStates
for (var i=0, l=nextStates.length; i<l; i++) {
var child = nextStates[i];
var child = nextStates[i]
var isEqual = child.charSpec.validChars === charSpec.validChars;
isEqual = isEqual && child.charSpec.invalidChars === charSpec.invalidChars;
var isEqual = child.charSpec.validChars === charSpec.validChars
isEqual = isEqual && child.charSpec.invalidChars === charSpec.invalidChars
if (isEqual) { return child; }
if (isEqual) { return child }
}

@@ -188,13 +205,13 @@ },

put: function(charSpec) {
var state;
var state
// If the character specification already exists in a child of the current
// state, just return that state.
if (state = this.get(charSpec)) { return state; }
if (state = this.get(charSpec)) { return state }
// Make a new state for the character spec
state = new State(charSpec);
state = new State(charSpec)
// Insert the new state as a child of the current state
this.nextStates.push(state);
this.nextStates.push(state)

@@ -205,7 +222,7 @@ // If this character specification repeats, insert the new state as a child

if (charSpec.repeat) {
state.nextStates.push(state);
state.nextStates.push(state)
}
// Return the new state
return state;
return state
},

@@ -217,20 +234,20 @@

var nextStates = this.nextStates,
child, charSpec, chars;
child, charSpec, chars
// DEBUG " " + debugState(this)
var returned = [];
var returned = []
for (var i=0, l=nextStates.length; i<l; i++) {
child = nextStates[i];
child = nextStates[i]
charSpec = child.charSpec;
charSpec = child.charSpec
if (typeof (chars = charSpec.validChars) !== 'undefined') {
if (chars.indexOf(ch) !== -1) { returned.push(child); }
if (chars.indexOf(ch) !== -1) { returned.push(child) }
} else if (typeof (chars = charSpec.invalidChars) !== 'undefined') {
if (chars.indexOf(ch) === -1) { returned.push(child); }
if (chars.indexOf(ch) === -1) { returned.push(child) }
}
}
return returned;
return returned
}

@@ -253,3 +270,3 @@

END IF **/
};
}

@@ -272,16 +289,16 @@ /** IF DEBUG

return states.sort(function(a, b) {
return b.specificity.val - a.specificity.val;
});
return b.specificity.val - a.specificity.val
})
}
function recognizeChar(states, ch) {
var nextStates = [];
var nextStates = []
for (var i=0, l=states.length; i<l; i++) {
var state = states[i];
var state = states[i]
nextStates = nextStates.concat(state.match(ch));
nextStates = nextStates.concat(state.match(ch))
}
return nextStates;
return nextStates
}

@@ -291,8 +308,8 @@

function F() {}
F.prototype = proto;
return new F();
};
F.prototype = proto
return new F()
}
function RecognizeResults(queryParams) {
this.queryParams = queryParams || {};
this.queryParams = queryParams || {}
}

@@ -305,20 +322,20 @@ RecognizeResults.prototype = oCreate({

queryParams: null
});
})
function findHandler(state, path, queryParams) {
var handlers = state.handlers, regex = state.regex;
var captures = path.match(regex), currentCapture = 1;
var result = new RecognizeResults(queryParams);
var handlers = state.handlers, regex = state.regex
var captures = path.match(regex), currentCapture = 1
var result = new RecognizeResults(queryParams)
for (var i=0, l=handlers.length; i<l; i++) {
var handler = handlers[i], names = handler.names, params = {};
var handler = handlers[i], names = handler.names, params = {}
for (var j=0, m=names.length; j<m; j++) {
params[names[j]] = captures[currentCapture++];
params[names[j]] = captures[currentCapture++]
}
result.push({ handler: handler.handler, params: params, isDynamic: !!names.length });
result.push({ handler: handler.handler, params: params, isDynamic: !!names.length })
}
return result;
return result
}

@@ -328,8 +345,8 @@

segment.eachChar(function(ch) {
var state;
var state
currentState = currentState.put(ch);
});
currentState = currentState.put(ch)
})
return currentState;
return currentState
}

@@ -339,4 +356,4 @@

// http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1
part = part.replace(/\+/gm, '%20');
return decodeURIComponent(part);
part = part.replace(/\+/gm, '%20')
return tryDecode(part, true)
}

@@ -347,5 +364,5 @@

var RouteRecognizer = function() {
this.rootState = new State();
this.names = {};
};
this.rootState = new State()
this.names = {}
}

@@ -357,41 +374,41 @@

specificity = {},
handlers = [], allSegments = [], name;
handlers = [], allSegments = [], name
var isEmpty = true;
var isEmpty = true
for (var i=0, l=routes.length; i<l; i++) {
var route = routes[i], names = [];
var route = routes[i], names = []
var segments = parse(route.path, names, specificity);
var segments = parse(route.path, names, specificity)
allSegments = allSegments.concat(segments);
allSegments = allSegments.concat(segments)
for (var j=0, m=segments.length; j<m; j++) {
var segment = segments[j];
var segment = segments[j]
if (segment instanceof EpsilonSegment) { continue; }
if (segment instanceof EpsilonSegment) { continue }
isEmpty = false;
isEmpty = false
// Add a "/" for the new segment
currentState = currentState.put({ validChars: "/" });
regex += "/";
currentState = currentState.put({ validChars: "/" })
regex += "/"
// Add a representation of the segment to the NFA and regex
currentState = addSegment(currentState, segment);
regex += segment.regex();
currentState = addSegment(currentState, segment)
regex += segment.regex()
}
var handler = { handler: route.handler, names: names };
handlers.push(handler);
var handler = { handler: route.handler, names: names }
handlers.push(handler)
}
if (isEmpty) {
currentState = currentState.put({ validChars: "/" });
regex += "/";
currentState = currentState.put({ validChars: "/" })
regex += "/"
}
currentState.handlers = handlers;
currentState.regex = new RegExp(regex + "$");
currentState.specificity = specificity;
currentState.handlers = handlers
currentState.regex = new RegExp(regex + "$")
currentState.specificity = specificity

@@ -402,3 +419,3 @@ if (name = options && options.as) {

handlers: handlers
};
}
}

@@ -408,74 +425,74 @@ },

handlersFor: function(name) {
var route = this.names[name], result = [];
if (!route) { throw new Error("There is no route named " + name); }
var route = this.names[name], result = []
if (!route) { throw new Error("There is no route named " + name) }
for (var i=0, l=route.handlers.length; i<l; i++) {
result.push(route.handlers[i]);
result.push(route.handlers[i])
}
return result;
return result
},
hasRoute: function(name) {
return !!this.names[name];
return !!this.names[name]
},
generate: function(name, params) {
var route = this.names[name], output = "";
if (!route) { throw new Error("There is no route named " + name); }
var route = this.names[name], output = ""
if (!route) { throw new Error("There is no route named " + name) }
var segments = route.segments;
var segments = route.segments
for (var i=0, l=segments.length; i<l; i++) {
var segment = segments[i];
var segment = segments[i]
if (segment instanceof EpsilonSegment) { continue; }
if (segment instanceof EpsilonSegment) { continue }
output += "/";
output += segment.generate(params);
output += "/"
output += segment.generate(params)
}
if (output.charAt(0) !== '/') { output = '/' + output; }
if (output.charAt(0) !== '/') { output = '/' + output }
if (params && params.queryParams) {
output += this.generateQueryString(params.queryParams);
output += this.generateQueryString(params.queryParams)
}
return output;
return output
},
generateQueryString: function(params) {
var pairs = [];
var keys = [];
var pairs = []
var keys = []
for(var key in params) {
if (params.hasOwnProperty(key)) {
keys.push(key);
keys.push(key)
}
}
keys.sort();
keys.sort()
for (var i = 0, len = keys.length; i < len; i++) {
key = keys[i];
var value = params[key];
key = keys[i]
var value = params[key]
if (value == null) {
continue;
continue
}
var pair = encodeURIComponent(key);
var pair = encodeURIComponent(key)
if (isArray(value)) {
for (var j = 0, l = value.length; j < l; j++) {
var arrayPair = key + '[]' + '=' + encodeURIComponent(value[j]);
pairs.push(arrayPair);
var arrayPair = key + '[]' + '=' + encodeURIComponent(value[j])
pairs.push(arrayPair)
}
} else {
pair += "=" + encodeURIComponent(value);
pairs.push(pair);
pair += "=" + encodeURIComponent(value)
pairs.push(pair)
}
}
if (pairs.length === 0) { return ''; }
if (pairs.length === 0) { return '' }
return "?" + pairs.join("&");
return "?" + pairs.join("&")
},
parseQueryString: function(queryString) {
var pairs = queryString.split("&"), queryParams = {};
var pairs = queryString.split("&"), queryParams = {}
for(var i=0; i < pairs.length; i++) {

@@ -486,52 +503,56 @@ var pair = pairs[i].split('='),

isArray = false,
value;
value
if (pair.length === 1) {
value = 'true';
value = 'true'
} else {
//Handle arrays
if (keyLength > 2 && key.slice(keyLength -2) === '[]') {
isArray = true;
key = key.slice(0, keyLength - 2);
isArray = true
key = key.slice(0, keyLength - 2)
if(!queryParams[key]) {
queryParams[key] = [];
queryParams[key] = []
}
}
value = pair[1] ? decodeQueryParamPart(pair[1]) : '';
value = pair[1] ? decodeQueryParamPart(pair[1]) : ''
}
if (isArray) {
queryParams[key].push(value);
queryParams[key].push(value)
} else {
queryParams[key] = value;
queryParams[key] = value
}
}
return queryParams;
return queryParams
},
recognize: function(path) {
recognize: function(path, silent) {
noWarning = silent
var states = [ this.rootState ],
pathLen, i, l, queryStart, queryParams = {},
isSlashDropped = false;
isSlashDropped = false
queryStart = path.indexOf('?');
queryStart = path.indexOf('?')
if (queryStart !== -1) {
var queryString = path.substr(queryStart + 1, path.length);
path = path.substr(0, queryStart);
queryParams = this.parseQueryString(queryString);
var queryString = path.substr(queryStart + 1, path.length)
path = path.substr(0, queryStart)
if (queryString) {
queryParams = this.parseQueryString(queryString)
}
}
path = decodeURI(path);
path = tryDecode(path)
if (!path) return
// DEBUG GROUP path
if (path.charAt(0) !== "/") { path = "/" + path; }
if (path.charAt(0) !== "/") { path = "/" + path }
pathLen = path.length;
pathLen = path.length
if (pathLen > 1 && path.charAt(pathLen - 1) === "/") {
path = path.substr(0, pathLen - 1);
isSlashDropped = true;
path = path.substr(0, pathLen - 1)
isSlashDropped = true
}
for (i=0, l=path.length; i<l; i++) {
states = recognizeChar(states, path.charAt(i));
if (!states.length) { break; }
states = recognizeChar(states, path.charAt(i))
if (!states.length) { break }
}

@@ -541,10 +562,10 @@

var solutions = [];
var solutions = []
for (i=0, l=states.length; i<l; i++) {
if (states[i].handlers) { solutions.push(states[i]); }
if (states[i].handlers) { solutions.push(states[i]) }
}
states = sortSolutions(solutions);
states = sortSolutions(solutions)
var state = solutions[0];
var state = solutions[0]

@@ -555,13 +576,11 @@ if (state && state.handlers) {

if (isSlashDropped && state.regex.source.slice(-5) === "(.+)$") {
path = path + "/";
path = path + "/"
}
return findHandler(state, path, queryParams);
return findHandler(state, path, queryParams)
}
}
};
}
RouteRecognizer.prototype.map = map;
RouteRecognizer.prototype.map = map
RouteRecognizer.VERSION = '0.1.9';
export default RouteRecognizer;
export default RouteRecognizer
{
"name": "vue-router",
"version": "0.7.11",
"version": "0.7.12",
"description": "A router for Vue.js",

@@ -57,2 +57,3 @@ "main": "dist/vue-router.js",

"karma-phantomjs-launcher": "^0.2.1",
"karma-sourcemap-loader": "^0.3.7",
"karma-spec-reporter": "0.0.23",

@@ -59,0 +60,0 @@ "karma-webpack": "^1.7.0",

@@ -30,2 +30,4 @@ # vue-router [![Build Status](https://img.shields.io/circleci/project/vuejs/vue-router/master.svg)](https://circleci.com/gh/vuejs/vue-router) [![npm package](https://img.shields.io/npm/v/vue-router.svg)](https://www.npmjs.com/package/vue-router) [![bitHound Overall Score](https://www.bithound.io/github/vuejs/vue-router/badges/score.svg)](https://www.bithound.io/github/vuejs/vue-router) [![Issue Stats](http://issuestats.com/github/vuejs/vue-router/badge/issue?style=flat)](http://issuestats.com/github/vuejs/vue-router)

# serve example app at localhost:8080
npm run serve-example
# and unit tests at localhost:8081

@@ -32,0 +34,0 @@ npm run dev

@@ -12,2 +12,3 @@ import { warn } from '../util'

bind,
getAttr,
isObject,

@@ -18,6 +19,31 @@ addClass,

const onPriority = Vue.directive('on').priority
const LINK_UPDATE = '__vue-router-link-update__'
let activeId = 0
Vue.directive('link-active', {
priority: 1001,
priority: 9999,
bind () {
this.el.__v_link_active = true
const id = String(activeId++)
// collect v-links contained within this element.
// we need do this here before the parent-child relationship
// gets messed up by terminal directives (if, for, components)
const childLinks = this.el.querySelectorAll('[v-link]')
for (var i = 0, l = childLinks.length; i < l; i++) {
let link = childLinks[i]
let existingId = link.getAttribute(LINK_UPDATE)
let value = existingId ? (existingId + ',' + id) : id
// leave a mark on the link element which can be persisted
// through fragment clones.
link.setAttribute(LINK_UPDATE, value)
}
this.vm.$on(LINK_UPDATE, this.cb = (link, path) => {
if (link.activeIds.indexOf(id) > -1) {
link.updateClasses(path, this.el)
}
})
},
unbind () {
this.vm.$off(LINK_UPDATE, this.cb)
}

@@ -27,3 +53,3 @@ })

Vue.directive('link', {
priority: 1000,
priority: onPriority - 2,

@@ -40,11 +66,6 @@ bind () {

this.unwatch = vm.$watch('$route', bind(this.onRouteUpdate, this))
// check if active classes should be applied to a different element
this.activeEl = this.el
var parent = this.el.parentNode
while (parent) {
if (parent.__v_link_active) {
this.activeEl = parent
break
}
parent = parent.parentNode
// check v-link-active ids
const activeIds = getAttr(this.el, LINK_UPDATE)
if (activeIds) {
this.activeIds = activeIds.split(',')
}

@@ -98,4 +119,8 @@ // no need to handle click if link expects to be opened

e.preventDefault()
var path = el.pathname
if (this.router.history.root) {
path = path.replace(this.router.history.rootRE, '')
}
this.router.go({
path: el.pathname,
path: path,
replace: target && target.replace,

@@ -109,5 +134,5 @@ append: target && target.append

onRouteUpdate (route) {
// router._stringifyPath is dependent on current route
// router.stringifyPath is dependent on current route
// and needs to be called again whenver route changes.
var newPath = this.router._stringifyPath(this.target)
var newPath = this.router.stringifyPath(this.target)
if (this.path !== newPath) {

@@ -118,3 +143,7 @@ this.path = newPath

}
this.updateClasses(route.path)
if (this.activeIds) {
this.vm.$emit(LINK_UPDATE, this, route.path)
} else {
this.updateClasses(route.path, this.el)
}
},

@@ -153,8 +182,7 @@

updateClasses (path) {
const el = this.activeEl
updateClasses (path, el) {
const activeClass = this.activeClass || this.router._linkActiveClass
// clear old class
if (this.prevActiveClass !== activeClass) {
removeClass(el, this.prevActiveClass)
if (this.prevActiveClass && this.prevActiveClass !== activeClass) {
toggleClasses(el, this.prevActiveClass, removeClass)
}

@@ -171,11 +199,11 @@ // remove query string before matching

)) {
addClass(el, activeClass)
toggleClasses(el, activeClass, addClass)
} else {
removeClass(el, activeClass)
toggleClasses(el, activeClass, removeClass)
}
} else {
if (this.activeRE && this.activeRE.test(path)) {
addClass(el, activeClass)
toggleClasses(el, activeClass, addClass)
} else {
removeClass(el, activeClass)
toggleClasses(el, activeClass, removeClass)
}

@@ -196,2 +224,16 @@ }

}
// this function is copied from v-bind:class implementation until
// we properly expose it...
function toggleClasses (el, key, fn) {
key = key.trim()
if (key.indexOf(' ') === -1) {
fn(el, key)
return
}
var keys = key.split(/\s+/)
for (var i = 0, l = keys.length; i < l; i++) {
fn(el, keys[i])
}
}
}

@@ -30,3 +30,3 @@ import { resolvePath } from '../util'

: location.search
self.onChange(decodeURI(path.replace(/^#!?/, '') + query))
self.onChange(path.replace(/^#!?/, '') + query)
}

@@ -33,0 +33,0 @@ window.addEventListener('hashchange', this.listener)

@@ -7,3 +7,3 @@ import { resolvePath } from '../util'

constructor ({ root, onChange }) {
if (root) {
if (root && root !== '/') {
// make sure there's the starting slash

@@ -27,3 +27,3 @@ if (root.charAt(0) !== '/') {

this.listener = (e) => {
let url = decodeURI(location.pathname + location.search)
let url = location.pathname + location.search
if (this.root) {

@@ -30,0 +30,0 @@ url = url.replace(this.rootRE, '')

@@ -209,3 +209,3 @@ import RouteRecognizer from '../lib/route-recognizer'

}
path = this._stringifyPath(path)
path = this.stringifyPath(path)
if (path) {

@@ -299,2 +299,41 @@ this.history.go(path, replace, append)

/**
* Normalize named route object / string paths into
* a string.
*
* @param {Object|String|Number} path
* @return {String}
*/
stringifyPath (path) {
let generatedPath = ''
if (path && typeof path === 'object') {
if (path.name) {
const extend = Vue.util.extend
const currentParams =
this._currentTransition &&
this._currentTransition.to.params
const targetParams = path.params || {}
const params = currentParams
? extend(extend({}, currentParams), targetParams)
: targetParams
generatedPath = encodeURI(this._recognizer.generate(path.name, params))
} else if (path.path) {
generatedPath = encodeURI(path.path)
}
if (path.query) {
// note: the generated query string is pre-URL-encoded by the recognizer
const query = this._recognizer.generateQueryString(path.query)
if (generatedPath.indexOf('?') > -1) {
generatedPath += '&' + query.slice(1)
} else {
generatedPath += query
}
}
} else {
generatedPath = encodeURI(path ? path + '' : '')
}
return generatedPath
}
// Internal methods ======================================

@@ -407,3 +446,3 @@

_checkGuard (path) {
let matched = this._guardRecognizer.recognize(path)
let matched = this._guardRecognizer.recognize(path, true)
if (matched) {

@@ -564,43 +603,2 @@ matched[0].handler(matched[0], matched.queryParams)

}
/**
* Normalize named route object / string paths into
* a string.
*
* @param {Object|String|Number} path
* @return {String}
*/
_stringifyPath (path) {
let fullPath = ''
if (path && typeof path === 'object') {
if (path.name) {
const extend = Vue.util.extend
const currentParams =
this._currentTransition &&
this._currentTransition.to.params
const targetParams = path.params || {}
const params = currentParams
? extend(extend({}, currentParams), targetParams)
: targetParams
if (path.query) {
params.queryParams = path.query
}
fullPath = this._recognizer.generate(path.name, params)
} else if (path.path) {
fullPath = path.path
if (path.query) {
const query = this._recognizer.generateQueryString(path.query)
if (fullPath.indexOf('?') > -1) {
fullPath += '&' + query.slice(1)
} else {
fullPath += query
}
}
}
} else {
fullPath = path ? path + '' : ''
}
return encodeURI(fullPath)
}
}

@@ -607,0 +605,0 @@

@@ -1,2 +0,2 @@

const internalKeysRE = /^(component|subRoutes)$/
const internalKeysRE = /^(component|subRoutes|fullPath)$/

@@ -36,5 +36,9 @@ /**

this.path = path
this.router = router
// for internal use
this.matched = matched || router._notFoundHandler
// internal reference to router
Object.defineProperty(this, 'router', {
enumerable: false,
value: router
})
// Important: freeze self to prevent observation

@@ -41,0 +45,0 @@ Object.freeze(this)

@@ -16,7 +16,4 @@ import RouteRecognizer from '../lib/route-recognizer'

/* istanbul ignore next */
if (window.console) {
console.warn('[vue-router] ' + msg)
if (!exports.Vue || exports.Vue.config.debug) {
console.warn(new Error('warning stack trace:').stack)
}
if (typeof console !== 'undefined') {
console.error('[vue-router] ' + msg)
}

@@ -23,0 +20,0 @@ }

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc