vue-router
Advanced tools
Comparing version 0.7.1 to 0.7.2
/*! | ||
* vue-router v0.7.1 | ||
* vue-router v0.7.2 | ||
* (c) 2015 Evan You | ||
* Released under the MIT License. | ||
*/ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueRouter=e():t.VueRouter=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t,e){var n=e.component;P.util.isPlainObject(n)&&(n=e.component=P.extend(n)),"function"!=typeof n&&(e.component=null,a.warn('invalid component for route "'+t+'".'))}var o=n(1)["default"],i=n(2)["default"];e.__esModule=!0;var a=n(3),s=i(a),u=n(7),c=i(u),h=n(4),l=i(h),f=n(8),p=i(f),d=n(18),v=i(d),g=n(25),m=i(g),y=n(26),_=i(y),w=n(27),b=i(w),x=n(28),C=i(x),R=n(29),$=i(R),E={"abstract":b["default"],hash:C["default"],html5:$["default"]},P=void 0,A=function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=e.hashbang,r=void 0===n?!0:n,i=e["abstract"],a=void 0===i?!1:i,s=e.history,u=void 0===s?!1:s,c=e.saveScrollPosition,h=void 0===c?!1:c,f=e.transitionOnLoad,p=void 0===f?!1:f,d=e.suppressTransitionError,v=void 0===d?!1:d,g=e.root,m=void 0===g?null:g,y=e.linkActiveClass,_=void 0===y?"v-link-active":y;if(o(this,t),!t.installed)throw new Error("Please install the Router with Vue.use() before creating an instance.");this.app=null,this._views=[],this._children=[],this._recognizer=new l["default"],this._guardRecognizer=new l["default"],this._started=!1,this._startCb=null,this._currentRoute={},this._currentTransition=null,this._previousTransition=null,this._notFoundHandler=null,this._beforeEachHooks=[],this._afterEachHooks=[],this._hasPushState="undefined"!=typeof window&&window.history&&window.history.pushState,this._rendered=!1,this._transitionOnLoad=p,this._abstract=a,this._hashbang=r,this._history=this._hasPushState&&u,this._saveScrollPosition=h,this._linkActiveClass=_,this._suppress=v;var w=P.util.inBrowser;this.mode=!w||this._abstract?"abstract":this._history?"html5":"hash";var b=E[this.mode],x=this;this.history=new b({root:m,hashbang:this._hashbang,onChange:function(t,e,n){x._match(t,e,n)}})}return t.prototype.map=function(t){for(var e in t)this.on(e,t[e])},t.prototype.on=function(t,e){"*"===t?this._notFound(e):this._addRoute(t,e,[])},t.prototype.redirect=function(t){for(var e in t)this._addRedirect(e,t[e])},t.prototype.alias=function(t){for(var e in t)this._addAlias(e,t[e])},t.prototype.beforeEach=function(t){this._beforeEachHooks.push(t)},t.prototype.afterEach=function(t){this._afterEachHooks.push(t)},t.prototype.go=function(t){var e=!1,n=!1;P.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){this.go({path:t,replace:!0})},t.prototype.start=function(t,e,n){if(this._started)return void a.warn("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.");this._appContainer=e,this._appConstructor="function"==typeof t?t:P.extend(t)}this.history.start()},t.prototype.stop=function(){this.history.stop(),this._started=!1},t.prototype._addRoute=function(t,e,n){if(r(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 o in e.subRoutes)this._addRoute(o,e.subRoutes[o],n.slice())},t.prototype._notFound=function(t){r("*",t),this._notFoundHandler=[{handler:t}]},t.prototype._addRedirect=function(t,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,o){var i=a.mapParams(e,t.params,o);n.call(r,i)}}])},t.prototype._checkGuard=function(t){var e=this._guardRecognizer.recognize(t);return e?(e[0].handler(e[0],e.queryParams),!0):void 0},t.prototype._match=function(t,e,n){var r=this;if(!this._checkGuard(t)){var o=this._currentRoute,i=this._currentTransition;if(!i||t!==o.path){var a=new p["default"](t,this),s=new v["default"](this,a,o);this._prevTransition=i,this._currentTransition=s,this.app||(this.app=new this._appConstructor({el:this._appContainer,_meta:{$route:a}}));var u=this._beforeEachHooks,c=function(){s.start(function(){r._postTransition(a,e,n)})};u.length?s.runQueue(u,function(t,e,n){s===r._currentTransition&&s.callHook(t,null,n,!0)},c):c(),!this._rendered&&this._startCb&&this._startCb.call(null),this._rendered=!0}}},t.prototype._onTransitionValidated=function(t){var e=this._prevTransition;e&&(e.aborted=!0);var n=this._currentRoute=t.to;this.app.$route!==n&&(this.app.$route=n,this._children.forEach(function(t){t.$route=n})),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?P.nextTick(function(){window.scrollTo(r.x,r.y)}):n&&P.nextTick(function(){var t=document.getElementById(n.slice(1));t&&window.scrollTo(window.scrollX,t.offsetTop)})},t.prototype._stringifyPath=function(t){if(t&&"object"==typeof t){if(t.name){var e=t.params||{};return t.query&&(e.queryParams=t.query),this._recognizer.generate(t.name,e)}return t.path?t.path:""}return t?t+"":""},t}();A.installed=!1,A.install=function(t){if(A.installed)return void a.warn("already installed.");P=t,c["default"](P),m["default"](P),_["default"](P),s["default"].Vue=P;var e=P.config.optionMergeStrategies;e&&(e.route=e.methods),A.installed=!0},"undefined"!=typeof window&&window.Vue&&window.Vue.use(A),e["default"]=A,t.exports=e["default"]},function(t,e){"use strict";e["default"]=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.__esModule=!0},function(t,e){"use strict";e["default"]=function(t){return t&&t.__esModule?t:{"default":t}},e.__esModule=!0},function(t,e,n){"use strict";function r(t){window.console&&(console.warn("[vue-router] "+t),(!p.Vue||p.Vue.config.debug)&&console.warn(new Error("warning stack trace:").stack))}function o(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 o=t.split("/");n&&o[o.length-1]||o.pop();for(var i=e.replace(/^\//,"").split("/"),a=0;a<i.length;a++){var s=i[a];"."!==s&&(".."===s?o.pop():o.push(s))}return""!==o[0]&&o.unshift(""),o.join("/")}function i(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 s(t,e){d?d.$options.components._=t.component:d={resolve:p.Vue.prototype._resolveComponent,$options:{components:{_:t.component}}},d.resolve("_",function(n){t.component=n,e(n)})}function u(t,e,n){return void 0===e&&(e={}),t=t.replace(/:([^\/]+)/g,function(n,o){var i=e[o];return i||r('param "'+o+'" not found when generating path for "'+t+'" with params '+JSON.stringify(e)),i||""}),n&&(t+=f(n)),t}var c=n(2)["default"];e.__esModule=!0,e.warn=r,e.resolvePath=o,e.isPromise=i,e.getRouteConfig=a,e.resolveAsyncComponent=s,e.mapParams=u;var h=n(4),l=c(h),f=l["default"].prototype.generateQueryString,p={};e["default"]=p;var d=void 0},function(t,e,n){var r;(function(t){(function(){"use strict";function o(t,e,n){this.path=t,this.matcher=e,this.delegate=n}function i(t){this.routes={},this.children={},this.target=t}function a(t,e,n){return function(r,i){var s=t+r;return i?void i(a(s,e,n)):new o(t+r,e,n)}}function s(t,e,n){for(var r=0,o=0,i=t.length;i>o;o++)r+=t[o].path.length;e=e.substr(r);var a={path:e,handler:n};t.push(a)}function u(t,e,n,r){var o=e.routes;for(var i in o)if(o.hasOwnProperty(i)){var a=t.slice();s(a,i,o[i]),e.children[i]?u(a,e.children[i],n,r):n.call(r,a)}}function c(t){return"[object Array]"===Object.prototype.toString.call(t)}function h(t){this.string=t}function l(t){this.name=t}function f(t){this.name=t}function p(){}function d(t,e,n){"/"===t.charAt(0)&&(t=t.substr(1));var r=t.split("/"),o=[];n.val="";for(var i=0,a=r.length;a>i;i++){var s,u=r[i];(s=u.match(/^:([^\/]+)$/))?(o.push(new l(s[1])),e.push(s[1]),n.val+="3"):(s=u.match(/^\*([^\/]+)$/))?(o.push(new f(s[1])),n.val+="2",e.push(s[1])):""===u?(o.push(new p),n.val+="1"):(o.push(new h(u)),n.val+="4")}return n.val=+n.val,o}function v(t){this.charSpec=t,this.nextStates=[]}function g(t){return t.sort(function(t,e){return e.specificity.val-t.specificity.val})}function m(t,e){for(var n=[],r=0,o=t.length;o>r;r++){var i=t[r];n=n.concat(i.match(e))}return n}function y(t){this.queryParams=t||{}}function _(t,e,n){for(var r=t.handlers,o=t.regex,i=e.match(o),a=1,s=new y(n),u=0,c=r.length;c>u;u++){for(var h=r[u],l=h.names,f={},p=0,d=l.length;d>p;p++)f[l[p]]=i[a++];s.push({handler:h.handler,params:f,isDynamic:!!l.length})}return s}function w(t,e){return e.eachChar(function(e){t=t.put(e)}),t}function b(t){return t=t.replace(/\+/gm,"%20"),decodeURIComponent(t)}o.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}},i.prototype={add:function(t,e){this.routes[t]=e},addChild:function(t,e,n,r){var o=new i(e);this.children[t]=o;var s=a(t,o,r);r&&r.contextEntered&&r.contextEntered(e,s),n(s)}};var x=function(t,e){var n=new i;t(a("",n,this.delegate)),u([],n,function(t){e?e(this,t):this.add(t)},this)},C=["/",".","*","+","?","|","(",")","[","]","{","}","\\"],R=new RegExp("(\\"+C.join("|\\")+")","g");h.prototype={eachChar:function(t){for(var e,n=this.string,r=0,o=n.length;o>r;r++)e=n.charAt(r),t({validChars:e})},regex:function(){return this.string.replace(R,"\\$1")},generate:function(){return this.string}},l.prototype={eachChar:function(t){t({invalidChars:"/",repeat:!0})},regex:function(){return"([^/]+)"},generate:function(t){return t[this.name]}},f.prototype={eachChar:function(t){t({invalidChars:"",repeat:!0})},regex:function(){return"(.+)"},generate:function(t){return t[this.name]}},p.prototype={eachChar:function(){},regex:function(){return""},generate:function(){return""}},v.prototype={get:function(t){for(var e=this.nextStates,n=0,r=e.length;r>n;n++){var o=e[n],i=o.charSpec.validChars===t.validChars;if(i=i&&o.charSpec.invalidChars===t.invalidChars)return o}},put:function(t){var e;return(e=this.get(t))?e:(e=new v(t),this.nextStates.push(e),t.repeat&&e.nextStates.push(e),e)},match:function(t){for(var e,n,r,o=this.nextStates,i=[],a=0,s=o.length;s>a;a++)e=o[a],n=e.charSpec,"undefined"!=typeof(r=n.validChars)?-1!==r.indexOf(t)&&i.push(e):"undefined"!=typeof(r=n.invalidChars)&&-1===r.indexOf(t)&&i.push(e);return i}};var $=Object.create||function(t){function e(){}return e.prototype=t,new e};y.prototype=$({splice:Array.prototype.splice,slice:Array.prototype.slice,push:Array.prototype.push,length:0,queryParams:null});var E=function(){this.rootState=new v,this.names={}};E.prototype={add:function(t,e){for(var n,r=this.rootState,o="^",i={},a=[],s=[],u=!0,c=0,h=t.length;h>c;c++){var l=t[c],f=[],v=d(l.path,f,i);s=s.concat(v);for(var g=0,m=v.length;m>g;g++){var y=v[g];y instanceof p||(u=!1,r=r.put({validChars:"/"}),o+="/",r=w(r,y),o+=y.regex())}var _={handler:l.handler,names:f};a.push(_)}u&&(r=r.put({validChars:"/"}),o+="/"),r.handlers=a,r.regex=new RegExp(o+"$"),r.specificity=i,(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,o=e.handlers.length;o>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 o=n.segments,i=0,a=o.length;a>i;i++){var s=o[i];s instanceof p||(r+="/",r+=s.generate(e))}return"/"!==r.charAt(0)&&(r="/"+r),e&&e.queryParams&&(r+=this.generateQueryString(e.queryParams,n.handlers)),r},generateQueryString:function(t,e){var n=[],r=[];for(var o in t)t.hasOwnProperty(o)&&r.push(o);r.sort();for(var i=0,a=r.length;a>i;i++){o=r[i];var s=t[o];if(null!=s){var u=encodeURIComponent(o);if(c(s))for(var h=0,l=s.length;l>h;h++){var f=o+"[]="+encodeURIComponent(s[h]);n.push(f)}else u+="="+encodeURIComponent(s),n.push(u)}}return 0===n.length?"":"?"+n.join("&")},parseQueryString:function(t){for(var e=t.split("&"),n={},r=0;r<e.length;r++){var o,i=e[r].split("="),a=b(i[0]),s=a.length,u=!1;1===i.length?o="true":(s>2&&"[]"===a.slice(s-2)&&(u=!0,a=a.slice(0,s-2),n[a]||(n[a]=[])),o=i[1]?b(i[1]):""),u?n[a].push(o):n[a]=o}return n},recognize:function(t){var e,n,r,o,i=[this.rootState],a={},s=!1;if(o=t.indexOf("?"),-1!==o){var u=t.substr(o+1,t.length);t=t.substr(0,o),a=this.parseQueryString(u)}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&&(i=m(i,t.charAt(n)),i.length);n++);var c=[];for(n=0,r=i.length;r>n;n++)i[n].handlers&&c.push(i[n]);i=g(c);var h=c[0];return h&&h.handlers?(s&&"(.+)$"===h.regex.source.slice(-5)&&(t+="/"),_(h,t,a)):void 0}},E.prototype.map=x,E.VERSION="0.1.9";var P=E;n(6).amd?(r=function(){return P}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))):"undefined"!=typeof t&&t.exports?t.exports=P:"undefined"!=typeof this&&(this.RouteRecognizer=P)}).call(this)}).call(e,n(5)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){"use strict";e.__esModule=!0,e["default"]=function(t){var e=t.util,n={init:function(){var t=this.$root.$route;t&&(t.router._children.push(this),this.$route||e.defineReactive(this,"$route",t))},beforeDestroy:function(){var t=this.$root.$route;t&&t.router._children.$remove(this)}};t.config.optionMergeStrategies&&t.config.optionMergeStrategies.init||!function(){delete n.init;var r=t.prototype._init;t.prototype._init=function(t){var n=t._parent||t.parent||this,o=n.$route;o&&(o.router._children.push(this),this.$route||(this._defineMeta?this._defineMeta("$route",o):e.defineReactive(this,"$route",o))),r.call(this,t)}}(),t.mixin?t.mixin(n):t.options=e.mergeOptions(t.options,n)},t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"],o=n(9)["default"];e.__esModule=!0;var i=/^(component|subRoutes)$/,a=function s(t,e){var n=this;r(this,s);var a=e._recognizer.recognize(t);a&&([].forEach.call(a,function(t){for(var e in t.handler)i.test(e)||(n[e]=t.handler[e])}),this.query=a.queryParams,this.params=[].reduce.call(a,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=a||e._notFoundHandler,o(this)};e["default"]=a,t.exports=e["default"]},function(t,e,n){t.exports={"default":n(10),__esModule:!0}},function(t,e,n){n(11),t.exports=n(16).Object.freeze},function(t,e,n){var r=n(12);n(13)("freeze",function(t){return function(e){return t&&r(e)?t(e):e}})},function(t,e){t.exports=function(t){return null!==t&&("object"==typeof t||"function"==typeof t)}},function(t,e,n){t.exports=function(t,e){var r=n(14),o=(n(16).Object||{})[t]||Object[t],i={};i[t]=e(o),r(r.S+r.F*n(17)(function(){o(1)}),"Object",i)}},function(t,e,n){var r=n(15),o=n(16),i="prototype",a=function(t,e){return function(){return t.apply(e,arguments)}},s=function(t,e,n){var u,c,h,l,f=t&s.G,p=t&s.P,d=f?r:t&s.S?r[e]:(r[e]||{})[i],v=f?o:o[e]||(o[e]={});f&&(n=e);for(u in n)c=!(t&s.F)&&d&&u in d,c&&u in v||(h=c?d[u]:n[u],f&&"function"!=typeof d[u]?l=n[u]:t&s.B&&c?l=a(h,r):t&s.W&&d[u]==h?!function(t){l=function(e){return this instanceof t?new t(e):t(e)},l[i]=t[i]}(h):l=p&&"function"==typeof h?a(Function.call,h):h,v[u]=l,p&&((v[i]||(v[i]={}))[u]=h))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},function(t,e){var n="undefined",r=t.exports=typeof window!=n&&window.Math==Math?window:typeof self!=n&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e){var n=t.exports={};"number"==typeof __e&&(__e=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},function(t,e,n){"use strict";function r(t){return"[object Object]"===Object.prototype.toString.call(t)}var o=n(1)["default"];e.__esModule=!0;var i=n(3),a=n(19),s=function(){function t(e,n,r){o(this,t),this.router=e,this.to=n,this.from=r,this.next=null,this.aborted=!1,this.done=!1,this.deactivateQueue=e._views;var i=n.matched?Array.prototype.slice.call(n.matched):[];this.activateQueue=i.map(function(t){return t.handler})}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=i.mapParams(t,this.to.params,this.to.query):(t.params=this.to.params,t.query=this.to.query),this.router.replace(t))},t.prototype.start=function(t){var e=this,n=this.deactivateQueue,r=this.activateQueue,o=n.slice().reverse(),i=void 0,s=void 0;for(s=0;s<o.length&&a.canReuse(o[s],r[s],e);s++);s>0&&(i=o.slice(0,s),n=o.slice(s).reverse(),r=r.slice(s)),e.runQueue(n,a.canDeactivate,function(){e.runQueue(r,a.canActivate,function(){e.runQueue(n,a.deactivate,function(){if(e.router._onTransitionValidated(e),i&&i.forEach(function(t){a.reuse(t,e)}),n.length){var r=n[n.length-1],o=i?i.length:0;a.activate(r,e,o,t)}else t()})})})},t.prototype.runQueue=function(t,e,n){function r(i){i>=t.length?n():e(t[i],o,function(){r(i+1)})}var o=this;r(0)},t.prototype.callHook=function(t,e,n){var o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],a=o.expectBoolean,s=void 0===a?!1:a,u=o.expectData,c=void 0===u?!1:u,h=o.cleanup,l=this,f=!1,p=function(t){h&&h(),l.abort(t)},d=function(t){if(h?v():p(),t&&!l.router._suppress)throw i.warn("Uncaught error during transition: "),t instanceof Error?t:new Error(t)},v=function(t){return f?void i.warn("transition.next() should be called only once."):(f=!0,void(n&&!l.aborted&&n(t,d)))},g={to:l.to,from:l.from,abort:p,next:v,redirect:function(){l.redirect.apply(l,arguments)}},m=void 0;try{m=t.call(e,g)}catch(y){return d(y)}var _=i.isPromise(m);s?"boolean"==typeof m?m?v():p():_&&m.then(function(t){t?v():p()},d):_?m.then(v,d):c&&r(m)&&v(m)},t}();e["default"]=s,t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e,n){var r=t.childVM;if(!r||!e)return!1;if(t.Component!==e.component)return!1;var o=l.getRouteConfig(r,"canReuse");return"boolean"==typeof o?o:o?o.call(r,{to:n.to,from:n.from}):!0}function o(t,e,n){var r=t.childVM,o=l.getRouteConfig(r,"canDeactivate");o?e.callHook(o,r,n,{expectBoolean:!0}):n()}function i(t,e,n){l.resolveAsyncComponent(t,function(t){if(!e.aborted){var r=l.getRouteConfig(t,"canActivate");r?e.callHook(r,null,n,{expectBoolean:!0}):n()}})}function a(t,e,n){var r=t.childVM,o=l.getRouteConfig(r,"deactivate");o?e.callHook(o,r,n):n()}function s(t,e,n,r){var o=e.activateQueue[n];if(!o)return t._bound&&t.setComponent(null),void(r&&r());var i=t.Component=o.component,a=l.getRouteConfig(i,"activate"),u=l.getRouteConfig(i,"data"),h=l.getRouteConfig(i,"waitForData");t.depth=n,t.activated=!1,t.unbuild(!0);var f=t.build({_meta:{$loadingRouteData:!(!u||h)}}),p=function(){f.$destroy()},d=function(){var n=e.router;n._rendered||n._transitionOnLoad?t.transition(f):(t.setCurrent?t.setCurrent(f):t.childVM=f,f.$before(t.anchor,null,!1)),r&&r()},v=function(){t.activated=!0,t.childView&&s(t.childView,e,n+1),u&&h?c(f,e,u,d,p):(u&&c(f,e,u),d())};a?e.callHook(a,f,v,{cleanup:p}):v()}function u(t,e){var n=t.childVM,r=l.getRouteConfig(n,"data");r&&c(n,e,r)}function c(t,e,n,r,o){t.$loadingRouteData=!0,e.callHook(n,t,function(e,n){var o=[];h(e).forEach(function(n){var r=e[n];l.isPromise(r)?o.push(r.then(function(e){t.$set(n,e)})):t.$set(n,r)}),o.length?o[0].constructor.all(o).then(function(e){t.$loadingRouteData=!1},n):t.$loadingRouteData=!1,r&&r(e)},{cleanup:o,expectData:!0})}var h=n(20)["default"];e.__esModule=!0,e.canReuse=r,e.canDeactivate=o,e.canActivate=i,e.deactivate=a,e.activate=s,e.reuse=u;var l=n(3)},function(t,e,n){t.exports={"default":n(21),__esModule:!0}},function(t,e,n){n(22),t.exports=n(16).Object.keys},function(t,e,n){var r=n(23);n(13)("keys",function(t){return function(e){return t(r(e))}})},function(t,e,n){var r=n(24);t.exports=function(t){return Object(r(t))}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(3),o=n(19);e["default"]=function(t){var e=t.util,n=t.directive("_component")||t.internalDirectives.component,i=e.extend({},n);e.extend(i,{_isRouterView:!0,bind:function(){var t=this.vm.$route;if(!t)return void r.warn("<router-view> can only be used inside a router-enabled app.");this._isDynamicLiteral=!0,n.bind.call(this),this.keepAlive&&(this.keepAlive=!1,r.warn("<router-view> does not support keep-alive."));var e=this.router=t.router;e._views.unshift(this);var i=e._views[1];i&&(i.childView=this);var a=t.router._currentTransition;if(!i&&a.done||i&&i.activated){var s=i?i.depth+1:0;o.activate(this,a,s)}},unbind:function(){this.router._views.$remove(this),n.unbind.call(this)}}),t.elementDirective("router-view",i)},t.exports=e["default"]},function(t,e,n){"use strict";e.__esModule=!0;var r=n(3),o=/[-.*+?^${}()|[\]\/\\]/g;e["default"]=function(t){function e(t){return t.protocol===location.protocol&&t.hostname===location.hostname&&t.port===location.port}var n=t.util;t.directive("link",{bind:function(){var t=this,o=this.vm;if(!o.$route)return void r.warn("v-link can only be used inside a router-enabled app.");var i=o.$route.router;this.handler=function(n){if(!(n.metaKey||n.ctrlKey||n.shiftKey||n.defaultPrevented||0!==n.button)){var r=t.target;if("A"===t.el.tagName||n.target===t.el)n.preventDefault(),null!=r&&i.go(r);else{for(var o=n.target;o&&"A"!==o.tagName&&o!==t.el;)o=o.parentNode;if(!o||"A"!==o.tagName||!o.href)return;e(o)&&(n.preventDefault(),i.go({path:o.pathname,replace:r&&r.replace,append:r&&r.append}))}}},this.el.addEventListener("click",this.handler),this.unwatch=o.$watch("$route.path",n.bind(this.updateClasses,this))},update:function(t){var e=this.vm.$route.router,r=void 0;this.target=t,n.isObject(t)&&(r=t.append,this.exact=t.exact,this.prevActiveClass=this.activeClass,this.activeClass=t.activeClass),t=this.path=e._stringifyPath(t),this.activeRE=t&&!this.exact?new RegExp("^"+t.replace(/\/$/,"").replace(o,"\\$&")+"(\\/|$)"):null,this.updateClasses(this.vm.$route.path);var i="/"===t.charAt(0),a=t&&("hash"===e.mode||i)?e.history.formatPath(t,r):t;"A"===this.el.tagName&&(a?this.el.href=a:this.el.removeAttribute("href"))},updateClasses:function(t){var e=this.el,r=this.path,o=this.vm.$route.router,i=this.activeClass||o._linkActiveClass;this.prevActiveClass!==i&&n.removeClass(e,this.prevActiveClass),this.exact?t===r?n.addClass(e,i):n.removeClass(e,i):this.activeRE&&this.activeRE.test(t)?n.addClass(e,i):n.removeClass(e,i)},unbind:function(){this.el.removeEventListener("click",this.handler),this.unwatch&&this.unwatch()}})},t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"];e.__esModule=!0;var o=n(3),i=function(){function t(e){var n=e.onChange;r(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:o.resolvePath(this.currentPath,t,e)},t}();e["default"]=i,t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"];e.__esModule=!0;var o=n(3),i=function(){function t(e){var n=e.hashbang,o=e.onChange;r(this,t),this.hashbang=n,this.onChange=o}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 o=decodeURI(e.replace(/^#!?/,"")+location.search);t.onChange(o)},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+o.resolvePath(location.hash.replace(/^#!?/,""),t,e)},t}();e["default"]=i,t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"];e.__esModule=!0;var o=n(3),i=/#.*$/,a=function(){function t(e){var n=e.root,o=e.onChange;r(this,t),n?("/"!==n.charAt(0)&&(n="/"+n),this.root=n.replace(/\/$/,""),this.rootRE=new RegExp("^\\"+this.root)):this.root=null,this.onChange=o;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}},""),history.pushState({},"",r));var o=t.match(i),a=o&&o[0];t=r.replace(i,"").replace(this.rootRE,""),this.onChange(t,null,a)},t.prototype.formatPath=function(t,e){return"/"===t.charAt(0)?this.root?this.root+"/"+t.replace(/^\//,""):t:o.resolvePath(this.base||location.pathname,t,e)},t}();e["default"]=a,t.exports=e["default"]}])}); | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.VueRouter=e():t.VueRouter=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){"use strict";function r(t,e){var n=e.component;P.util.isPlainObject(n)&&(n=e.component=P.extend(n)),"function"!=typeof n&&(e.component=null,a.warn('invalid component for route "'+t+'".'))}var o=n(1)["default"],i=n(2)["default"];e.__esModule=!0;var a=n(3),s=i(a),u=n(7),c=i(u),h=n(4),l=i(h),f=n(8),p=i(f),d=n(18),v=i(d),g=n(25),m=i(g),y=n(26),_=i(y),w=n(27),b=i(w),x=n(28),C=i(x),R=n(29),$=i(R),E={"abstract":b["default"],hash:C["default"],html5:$["default"]},P=void 0,A=function(){function t(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=e.hashbang,r=void 0===n?!0:n,i=e["abstract"],a=void 0===i?!1:i,s=e.history,u=void 0===s?!1:s,c=e.saveScrollPosition,h=void 0===c?!1:c,f=e.transitionOnLoad,p=void 0===f?!1:f,d=e.suppressTransitionError,v=void 0===d?!1:d,g=e.root,m=void 0===g?null:g,y=e.linkActiveClass,_=void 0===y?"v-link-active":y;if(o(this,t),!t.installed)throw new Error("Please install the Router with Vue.use() before creating an instance.");this.app=null,this._views=[],this._children=[],this._recognizer=new l["default"],this._guardRecognizer=new l["default"],this._started=!1,this._startCb=null,this._currentRoute={},this._currentTransition=null,this._previousTransition=null,this._notFoundHandler=null,this._beforeEachHooks=[],this._afterEachHooks=[],this._hasPushState="undefined"!=typeof window&&window.history&&window.history.pushState,this._rendered=!1,this._transitionOnLoad=p,this._abstract=a,this._hashbang=r,this._history=this._hasPushState&&u,this._saveScrollPosition=h,this._linkActiveClass=_,this._suppress=v;var w=P.util.inBrowser;this.mode=!w||this._abstract?"abstract":this._history?"html5":"hash";var b=E[this.mode],x=this;this.history=new b({root:m,hashbang:this._hashbang,onChange:function(t,e,n){x._match(t,e,n)}})}return t.prototype.map=function(t){for(var e in t)this.on(e,t[e])},t.prototype.on=function(t,e){"*"===t?this._notFound(e):this._addRoute(t,e,[])},t.prototype.redirect=function(t){for(var e in t)this._addRedirect(e,t[e])},t.prototype.alias=function(t){for(var e in t)this._addAlias(e,t[e])},t.prototype.beforeEach=function(t){this._beforeEachHooks.push(t)},t.prototype.afterEach=function(t){this._afterEachHooks.push(t)},t.prototype.go=function(t){var e=!1,n=!1;P.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){this.go({path:t,replace:!0})},t.prototype.start=function(t,e,n){if(this._started)return void a.warn("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.");this._appContainer=e,this._appConstructor="function"==typeof t?t:P.extend(t)}this.history.start()},t.prototype.stop=function(){this.history.stop(),this._started=!1},t.prototype._addRoute=function(t,e,n){if(r(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 o in e.subRoutes)this._addRoute(o,e.subRoutes[o],n.slice())},t.prototype._notFound=function(t){r("*",t),this._notFoundHandler=[{handler:t}]},t.prototype._addRedirect=function(t,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,o){var i=a.mapParams(e,t.params,o);n.call(r,i)}}])},t.prototype._checkGuard=function(t){var e=this._guardRecognizer.recognize(t);return e?(e[0].handler(e[0],e.queryParams),!0):void 0},t.prototype._match=function(t,e,n){var r=this;if(!this._checkGuard(t)){var o=this._currentRoute,i=this._currentTransition;if(!i||t!==o.path){var a=new p["default"](t,this),s=new v["default"](this,a,o);this._prevTransition=i,this._currentTransition=s,this.app||(this.app=new this._appConstructor({el:this._appContainer,_meta:{$route:a}}));var u=this._beforeEachHooks,c=function(){s.start(function(){r._postTransition(a,e,n)})};u.length?s.runQueue(u,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._prevTransition;e&&(e.aborted=!0);var n=this._currentRoute=t.to;this.app.$route!==n&&(this.app.$route=n,this._children.forEach(function(t){t.$route=n})),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?P.nextTick(function(){window.scrollTo(r.x,r.y)}):n&&P.nextTick(function(){var t=document.getElementById(n.slice(1));t&&window.scrollTo(window.scrollX,t.offsetTop)})},t.prototype._stringifyPath=function(t){if(t&&"object"==typeof t){if(t.name){var e=t.params||{};return t.query&&(e.queryParams=t.query),this._recognizer.generate(t.name,e)}return t.path?t.path:""}return t?t+"":""},t}();A.installed=!1,A.install=function(t){if(A.installed)return void a.warn("already installed.");P=t,c["default"](P),m["default"](P),_["default"](P),s["default"].Vue=P;var e=P.config.optionMergeStrategies;e&&(e.route=e.methods),A.installed=!0},"undefined"!=typeof window&&window.Vue&&window.Vue.use(A),e["default"]=A,t.exports=e["default"]},function(t,e){"use strict";e["default"]=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e.__esModule=!0},function(t,e){"use strict";e["default"]=function(t){return t&&t.__esModule?t:{"default":t}},e.__esModule=!0},function(t,e,n){"use strict";function r(t){window.console&&(console.warn("[vue-router] "+t),(!p.Vue||p.Vue.config.debug)&&console.warn(new Error("warning stack trace:").stack))}function o(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 o=t.split("/");n&&o[o.length-1]||o.pop();for(var i=e.replace(/^\//,"").split("/"),a=0;a<i.length;a++){var s=i[a];"."!==s&&(".."===s?o.pop():o.push(s))}return""!==o[0]&&o.unshift(""),o.join("/")}function i(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 s(t,e){d?d.$options.components._=t.component:d={resolve:p.Vue.prototype._resolveComponent,$options:{components:{_:t.component}}},d.resolve("_",function(n){t.component=n,e(n)})}function u(t,e,n){return void 0===e&&(e={}),t=t.replace(/:([^\/]+)/g,function(n,o){var i=e[o];return i||r('param "'+o+'" not found when generating path for "'+t+'" with params '+JSON.stringify(e)),i||""}),n&&(t+=f(n)),t}var c=n(2)["default"];e.__esModule=!0,e.warn=r,e.resolvePath=o,e.isPromise=i,e.getRouteConfig=a,e.resolveAsyncComponent=s,e.mapParams=u;var h=n(4),l=c(h),f=l["default"].prototype.generateQueryString,p={};e["default"]=p;var d=void 0},function(t,e,n){var r;(function(t){(function(){"use strict";function o(t,e,n){this.path=t,this.matcher=e,this.delegate=n}function i(t){this.routes={},this.children={},this.target=t}function a(t,e,n){return function(r,i){var s=t+r;return i?void i(a(s,e,n)):new o(t+r,e,n)}}function s(t,e,n){for(var r=0,o=0,i=t.length;i>o;o++)r+=t[o].path.length;e=e.substr(r);var a={path:e,handler:n};t.push(a)}function u(t,e,n,r){var o=e.routes;for(var i in o)if(o.hasOwnProperty(i)){var a=t.slice();s(a,i,o[i]),e.children[i]?u(a,e.children[i],n,r):n.call(r,a)}}function c(t){return"[object Array]"===Object.prototype.toString.call(t)}function h(t){this.string=t}function l(t){this.name=t}function f(t){this.name=t}function p(){}function d(t,e,n){"/"===t.charAt(0)&&(t=t.substr(1));var r=t.split("/"),o=[];n.val="";for(var i=0,a=r.length;a>i;i++){var s,u=r[i];(s=u.match(/^:([^\/]+)$/))?(o.push(new l(s[1])),e.push(s[1]),n.val+="3"):(s=u.match(/^\*([^\/]+)$/))?(o.push(new f(s[1])),n.val+="2",e.push(s[1])):""===u?(o.push(new p),n.val+="1"):(o.push(new h(u)),n.val+="4")}return n.val=+n.val,o}function v(t){this.charSpec=t,this.nextStates=[]}function g(t){return t.sort(function(t,e){return e.specificity.val-t.specificity.val})}function m(t,e){for(var n=[],r=0,o=t.length;o>r;r++){var i=t[r];n=n.concat(i.match(e))}return n}function y(t){this.queryParams=t||{}}function _(t,e,n){for(var r=t.handlers,o=t.regex,i=e.match(o),a=1,s=new y(n),u=0,c=r.length;c>u;u++){for(var h=r[u],l=h.names,f={},p=0,d=l.length;d>p;p++)f[l[p]]=i[a++];s.push({handler:h.handler,params:f,isDynamic:!!l.length})}return s}function w(t,e){return e.eachChar(function(e){t=t.put(e)}),t}function b(t){return t=t.replace(/\+/gm,"%20"),decodeURIComponent(t)}o.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}},i.prototype={add:function(t,e){this.routes[t]=e},addChild:function(t,e,n,r){var o=new i(e);this.children[t]=o;var s=a(t,o,r);r&&r.contextEntered&&r.contextEntered(e,s),n(s)}};var x=function(t,e){var n=new i;t(a("",n,this.delegate)),u([],n,function(t){e?e(this,t):this.add(t)},this)},C=["/",".","*","+","?","|","(",")","[","]","{","}","\\"],R=new RegExp("(\\"+C.join("|\\")+")","g");h.prototype={eachChar:function(t){for(var e,n=this.string,r=0,o=n.length;o>r;r++)e=n.charAt(r),t({validChars:e})},regex:function(){return this.string.replace(R,"\\$1")},generate:function(){return this.string}},l.prototype={eachChar:function(t){t({invalidChars:"/",repeat:!0})},regex:function(){return"([^/]+)"},generate:function(t){return t[this.name]}},f.prototype={eachChar:function(t){t({invalidChars:"",repeat:!0})},regex:function(){return"(.+)"},generate:function(t){return t[this.name]}},p.prototype={eachChar:function(){},regex:function(){return""},generate:function(){return""}},v.prototype={get:function(t){for(var e=this.nextStates,n=0,r=e.length;r>n;n++){var o=e[n],i=o.charSpec.validChars===t.validChars;if(i=i&&o.charSpec.invalidChars===t.invalidChars)return o}},put:function(t){var e;return(e=this.get(t))?e:(e=new v(t),this.nextStates.push(e),t.repeat&&e.nextStates.push(e),e)},match:function(t){for(var e,n,r,o=this.nextStates,i=[],a=0,s=o.length;s>a;a++)e=o[a],n=e.charSpec,"undefined"!=typeof(r=n.validChars)?-1!==r.indexOf(t)&&i.push(e):"undefined"!=typeof(r=n.invalidChars)&&-1===r.indexOf(t)&&i.push(e);return i}};var $=Object.create||function(t){function e(){}return e.prototype=t,new e};y.prototype=$({splice:Array.prototype.splice,slice:Array.prototype.slice,push:Array.prototype.push,length:0,queryParams:null});var E=function(){this.rootState=new v,this.names={}};E.prototype={add:function(t,e){for(var n,r=this.rootState,o="^",i={},a=[],s=[],u=!0,c=0,h=t.length;h>c;c++){var l=t[c],f=[],v=d(l.path,f,i);s=s.concat(v);for(var g=0,m=v.length;m>g;g++){var y=v[g];y instanceof p||(u=!1,r=r.put({validChars:"/"}),o+="/",r=w(r,y),o+=y.regex())}var _={handler:l.handler,names:f};a.push(_)}u&&(r=r.put({validChars:"/"}),o+="/"),r.handlers=a,r.regex=new RegExp(o+"$"),r.specificity=i,(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,o=e.handlers.length;o>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 o=n.segments,i=0,a=o.length;a>i;i++){var s=o[i];s instanceof p||(r+="/",r+=s.generate(e))}return"/"!==r.charAt(0)&&(r="/"+r),e&&e.queryParams&&(r+=this.generateQueryString(e.queryParams,n.handlers)),r},generateQueryString:function(t,e){var n=[],r=[];for(var o in t)t.hasOwnProperty(o)&&r.push(o);r.sort();for(var i=0,a=r.length;a>i;i++){o=r[i];var s=t[o];if(null!=s){var u=encodeURIComponent(o);if(c(s))for(var h=0,l=s.length;l>h;h++){var f=o+"[]="+encodeURIComponent(s[h]);n.push(f)}else u+="="+encodeURIComponent(s),n.push(u)}}return 0===n.length?"":"?"+n.join("&")},parseQueryString:function(t){for(var e=t.split("&"),n={},r=0;r<e.length;r++){var o,i=e[r].split("="),a=b(i[0]),s=a.length,u=!1;1===i.length?o="true":(s>2&&"[]"===a.slice(s-2)&&(u=!0,a=a.slice(0,s-2),n[a]||(n[a]=[])),o=i[1]?b(i[1]):""),u?n[a].push(o):n[a]=o}return n},recognize:function(t){var e,n,r,o,i=[this.rootState],a={},s=!1;if(o=t.indexOf("?"),-1!==o){var u=t.substr(o+1,t.length);t=t.substr(0,o),a=this.parseQueryString(u)}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&&(i=m(i,t.charAt(n)),i.length);n++);var c=[];for(n=0,r=i.length;r>n;n++)i[n].handlers&&c.push(i[n]);i=g(c);var h=c[0];return h&&h.handlers?(s&&"(.+)$"===h.regex.source.slice(-5)&&(t+="/"),_(h,t,a)):void 0}},E.prototype.map=x,E.VERSION="0.1.9";var P=E;n(6).amd?(r=function(){return P}.call(e,n,e,t),!(void 0!==r&&(t.exports=r))):"undefined"!=typeof t&&t.exports?t.exports=P:"undefined"!=typeof this&&(this.RouteRecognizer=P)}).call(this)}).call(e,n(5)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}},function(t,e){t.exports=function(){throw new Error("define cannot be used indirect")}},function(t,e){"use strict";e.__esModule=!0,e["default"]=function(t){var e=t.util,n=t.prototype._init;t.prototype._init=function(t){var r=t._parent||t.parent||this,o=r.$route;o&&(o.router._children.push(this),this.$route||(this._defineMeta?this._defineMeta("$route",o):e.defineReactive(this,"$route",o))),n.call(this,t)};var r=t.prototype._destroy;t.prototype._destroy=function(){if(!this._isBeingDestroyed){var t=this.$root.$route;t&&t.router._children.$remove(this),r.apply(this,arguments)}}},t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"],o=n(9)["default"];e.__esModule=!0;var i=/^(component|subRoutes)$/,a=function s(t,e){var n=this;r(this,s);var a=e._recognizer.recognize(t);a&&([].forEach.call(a,function(t){for(var e in t.handler)i.test(e)||(n[e]=t.handler[e])}),this.query=a.queryParams,this.params=[].reduce.call(a,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=a||e._notFoundHandler,o(this)};e["default"]=a,t.exports=e["default"]},function(t,e,n){t.exports={"default":n(10),__esModule:!0}},function(t,e,n){n(11),t.exports=n(16).Object.freeze},function(t,e,n){var r=n(12);n(13)("freeze",function(t){return function(e){return t&&r(e)?t(e):e}})},function(t,e){t.exports=function(t){return null!==t&&("object"==typeof t||"function"==typeof t)}},function(t,e,n){t.exports=function(t,e){var r=n(14),o=(n(16).Object||{})[t]||Object[t],i={};i[t]=e(o),r(r.S+r.F*n(17)(function(){o(1)}),"Object",i)}},function(t,e,n){var r=n(15),o=n(16),i="prototype",a=function(t,e){return function(){return t.apply(e,arguments)}},s=function(t,e,n){var u,c,h,l,f=t&s.G,p=t&s.P,d=f?r:t&s.S?r[e]:(r[e]||{})[i],v=f?o:o[e]||(o[e]={});f&&(n=e);for(u in n)c=!(t&s.F)&&d&&u in d,c&&u in v||(h=c?d[u]:n[u],f&&"function"!=typeof d[u]?l=n[u]:t&s.B&&c?l=a(h,r):t&s.W&&d[u]==h?!function(t){l=function(e){return this instanceof t?new t(e):t(e)},l[i]=t[i]}(h):l=p&&"function"==typeof h?a(Function.call,h):h,v[u]=l,p&&((v[i]||(v[i]={}))[u]=h))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,t.exports=s},function(t,e){var n="undefined",r=t.exports=typeof window!=n&&window.Math==Math?window:typeof self!=n&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e){var n=t.exports={};"number"==typeof __e&&(__e=n)},function(t,e){t.exports=function(t){try{return!!t()}catch(e){return!0}}},function(t,e,n){"use strict";function r(t){return"[object Object]"===Object.prototype.toString.call(t)}var o=n(1)["default"];e.__esModule=!0;var i=n(3),a=n(19),s=function(){function t(e,n,r){o(this,t),this.router=e,this.to=n,this.from=r,this.next=null,this.aborted=!1,this.done=!1,this.deactivateQueue=e._views;var i=n.matched?Array.prototype.slice.call(n.matched):[];this.activateQueue=i.map(function(t){return t.handler})}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=i.mapParams(t,this.to.params,this.to.query):(t.params=this.to.params,t.query=this.to.query),this.router.replace(t))},t.prototype.start=function(t){var e=this,n=this.deactivateQueue,r=this.activateQueue,o=n.slice().reverse(),i=void 0,s=void 0;for(s=0;s<o.length&&a.canReuse(o[s],r[s],e);s++);s>0&&(i=o.slice(0,s),n=o.slice(s).reverse(),r=r.slice(s)),e.runQueue(n,a.canDeactivate,function(){e.runQueue(r,a.canActivate,function(){e.runQueue(n,a.deactivate,function(){if(e.router._onTransitionValidated(e),i&&i.forEach(function(t){a.reuse(t,e)}),n.length){var r=n[n.length-1],o=i?i.length:0;a.activate(r,e,o,t)}else t()})})})},t.prototype.runQueue=function(t,e,n){function r(i){i>=t.length?n():e(t[i],o,function(){r(i+1)})}var o=this;r(0)},t.prototype.callHook=function(t,e,n){var o=arguments.length<=3||void 0===arguments[3]?{}:arguments[3],a=o.expectBoolean,s=void 0===a?!1:a,u=o.expectData,c=void 0===u?!1:u,h=o.cleanup,l=this,f=!1,p=function(t){h&&h(),l.abort(t)},d=function(t){if(h?v():p(),t&&!l.router._suppress)throw i.warn("Uncaught error during transition: "),t instanceof Error?t:new Error(t)},v=function(t){return f?void i.warn("transition.next() should be called only once."):(f=!0,void(n&&!l.aborted&&n(t,d)))},g={to:l.to,from:l.from,abort:p,next:v,redirect:function(){l.redirect.apply(l,arguments)}},m=void 0;try{m=t.call(e,g)}catch(y){return d(y)}var _=i.isPromise(m);s?"boolean"==typeof m?m?v():p():_?m.then(function(t){t?v():p()},d):t.length||v(m):_?m.then(v,d):(c&&r(m)||!t.length)&&v(m)},t}();e["default"]=s,t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e,n){var r=t.childVM;if(!r||!e)return!1;if(t.Component!==e.component)return!1;var o=l.getRouteConfig(r,"canReuse");return"boolean"==typeof o?o:o?o.call(r,{to:n.to,from:n.from}):!0}function o(t,e,n){var r=t.childVM,o=l.getRouteConfig(r,"canDeactivate");o?e.callHook(o,r,n,{expectBoolean:!0}):n()}function i(t,e,n){l.resolveAsyncComponent(t,function(t){if(!e.aborted){var r=l.getRouteConfig(t,"canActivate");r?e.callHook(r,null,n,{expectBoolean:!0}):n()}})}function a(t,e,n){var r=t.childVM,o=l.getRouteConfig(r,"deactivate");o?e.callHook(o,r,n):n()}function s(t,e,n,r,o){var i=e.activateQueue[n];if(!i)return t._bound&&t.setComponent(null),void(r&&r());var a=t.Component=i.component,u=l.getRouteConfig(a,"activate"),h=l.getRouteConfig(a,"data"),f=l.getRouteConfig(a,"waitForData");t.depth=n,t.activated=!1;var p=void 0,d=!(!h||f);if(o=o&&t.childVM&&t.childVM.constructor===a)p=t.childVM,p.$loadingRouteData=d;else{if(t.unbuild(!0),t.keepAlive){var v=e.router._views,g=v.indexOf(t);g>0&&(e.router._views=v.slice(g),t.childVM&&(t.childVM._routerViews=v.slice(0,g)))}if(p=t.build({_meta:{$loadingRouteData:d}}),t.keepAlive){p.$loadingRouteData=d;var m=p._routerViews;m&&(e.router._views=m.concat(e.router._views),t.childView=m[m.length-1],p._routerViews=null)}}var y=function(){p.$destroy()},_=function(){if(o)return void(r&&r());var n=e.router;n._rendered||n._transitionOnLoad?t.transition(p):(t.setCurrent?t.setCurrent(p):t.childVM=p,p.$before(t.anchor,null,!1)),r&&r()},w=function(){t.activated=!0,t.childView&&s(t.childView,e,n+1,null,o||t.keepAlive),h&&f?c(p,e,h,_,y):(h&&c(p,e,h),_())};u?e.callHook(u,p,w,{cleanup:y}):w()}function u(t,e){var n=t.childVM,r=l.getRouteConfig(n,"data");r&&c(n,e,r)}function c(t,e,n,r,o){t.$loadingRouteData=!0,e.callHook(n,t,function(e,n){var o=[];"[object Object]"===Object.prototype.toString.call(e)&&h(e).forEach(function(n){var r=e[n];l.isPromise(r)?o.push(r.then(function(e){t.$set(n,e)})):t.$set(n,r)}),o.length?o[0].constructor.all(o).then(function(e){t.$loadingRouteData=!1,r&&r()},n):(t.$loadingRouteData=!1,r&&r())},{cleanup:o,expectData:!0})}var h=n(20)["default"];e.__esModule=!0,e.canReuse=r,e.canDeactivate=o,e.canActivate=i,e.deactivate=a,e.activate=s,e.reuse=u;var l=n(3)},function(t,e,n){t.exports={"default":n(21),__esModule:!0}},function(t,e,n){n(22),t.exports=n(16).Object.keys},function(t,e,n){var r=n(23);n(13)("keys",function(t){return function(e){return t(r(e))}})},function(t,e,n){var r=n(24);t.exports=function(t){return Object(r(t))}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){"use strict";e.__esModule=!0;var r=n(3),o=n(19);e["default"]=function(t){var e=t.util,n=t.directive("_component")||t.internalDirectives.component,i=e.extend({},n);e.extend(i,{_isRouterView:!0,bind:function(){var t=this.vm.$route;if(!t)return void r.warn("<router-view> can only be used inside a router-enabled app.");this._isDynamicLiteral=!0,n.bind.call(this);var e=this.router=t.router;e._views.unshift(this);var i=e._views[1];i&&(i.childView=this);var a=t.router._currentTransition;if(!i&&a.done||i&&i.activated){var s=i?i.depth+1:0;o.activate(this,a,s)}},unbind:function(){this.router._views.$remove(this),n.unbind.call(this)}}),t.elementDirective("router-view",i)},t.exports=e["default"]},function(t,e,n){"use strict";e.__esModule=!0;var r=n(3),o=/\/$/,i=/[-.*+?^${}()|[\]\/\\]/g;e["default"]=function(t){function e(t){return t.protocol===location.protocol&&t.hostname===location.hostname&&t.port===location.port}var n=t.util;t.directive("link",{bind:function(){var t=this,o=this.vm;if(!o.$route)return void r.warn("v-link can only be used inside a router-enabled app.");var i=o.$route.router;this.handler=function(n){if(!(n.metaKey||n.ctrlKey||n.shiftKey||n.defaultPrevented||0!==n.button)){var r=t.target;if("A"===t.el.tagName||n.target===t.el)n.preventDefault(),null!=r&&i.go(r);else{for(var o=n.target;o&&"A"!==o.tagName&&o!==t.el;)o=o.parentNode;if(!o||"A"!==o.tagName||!o.href)return;e(o)&&(n.preventDefault(),i.go({path:o.pathname,replace:r&&r.replace,append:r&&r.append}))}}},this.el.addEventListener("click",this.handler),this.unwatch=o.$watch("$route.path",n.bind(this.updateClasses,this))},update:function(t){var e=this.vm.$route.router,r=void 0;this.target=t,n.isObject(t)&&(r=t.append,this.exact=t.exact,this.prevActiveClass=this.activeClass,this.activeClass=t.activeClass),t=this.path=e._stringifyPath(t),this.activeRE=t&&!this.exact?new RegExp("^"+t.replace(/\/$/,"").replace(i,"\\$&")+"(\\/|$)"):null,this.updateClasses(this.vm.$route.path);var o="/"===t.charAt(0),a=t&&("hash"===e.mode||o)?e.history.formatPath(t,r):t;"A"===this.el.tagName&&(a?this.el.href=a:this.el.removeAttribute("href"))},updateClasses:function(t){var e=this.el,r=this.path,i=this.vm.$route.router,a=this.activeClass||i._linkActiveClass;this.prevActiveClass!==a&&n.removeClass(e,this.prevActiveClass),this.exact?r===t||"/"!==r.charAt(r.length-1)&&r===t.replace(o,"")?n.addClass(e,a):n.removeClass(e,a):this.activeRE&&this.activeRE.test(t)?n.addClass(e,a):n.removeClass(e,a)},unbind:function(){this.el.removeEventListener("click",this.handler),this.unwatch&&this.unwatch()}})},t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"];e.__esModule=!0;var o=n(3),i=function(){function t(e){var n=e.onChange;r(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:o.resolvePath(this.currentPath,t,e)},t}();e["default"]=i,t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"];e.__esModule=!0;var o=n(3),i=function(){function t(e){var n=e.hashbang,o=e.onChange;r(this,t),this.hashbang=n,this.onChange=o}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 o=decodeURI(e.replace(/^#!?/,"")+location.search);t.onChange(o)},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+o.resolvePath(location.hash.replace(/^#!?/,""),t,e)},t}();e["default"]=i,t.exports=e["default"]},function(t,e,n){"use strict";var r=n(1)["default"];e.__esModule=!0;var o=n(3),i=/#.*$/,a=function(){function t(e){var n=e.root,o=e.onChange;r(this,t),n?("/"!==n.charAt(0)&&(n="/"+n),this.root=n.replace(/\/$/,""),this.rootRE=new RegExp("^\\"+this.root)):this.root=null,this.onChange=o;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}},""),history.pushState({},"",r));var o=t.match(i),a=o&&o[0];t=r.replace(i,"").replace(this.rootRE,""),this.onChange(t,null,a)},t.prototype.formatPath=function(t,e){return"/"===t.charAt(0)?this.root?this.root+"/"+t.replace(/^\//,""):t:o.resolvePath(this.base||location.pathname,t,e)},t}();e["default"]=a,t.exports=e["default"]}])}); |
@@ -7,2 +7,3 @@ 'use strict'; | ||
var trailingSlashRE = /\/$/; | ||
var regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g; | ||
@@ -102,3 +103,5 @@ | ||
if (this.exact) { | ||
if (path === dest) { | ||
if (dest === path || | ||
// also allow additional trailing slash | ||
dest.charAt(dest.length - 1) !== '/' && dest === path.replace(trailingSlashRE, '')) { | ||
_.addClass(el, activeClass); | ||
@@ -105,0 +108,0 @@ } else { |
@@ -38,9 +38,2 @@ 'use strict'; | ||
// does not support keep-alive. | ||
/* istanbul ignore if */ | ||
if (this.keepAlive) { | ||
this.keepAlive = false; | ||
_util.warn('<router-view> does not support keep-alive.'); | ||
} | ||
// all we need to do here is registering this view | ||
@@ -47,0 +40,0 @@ // in the router. actual component switching will be |
@@ -13,5 +13,5 @@ 'use strict'; | ||
var _mixin = require('./mixin'); | ||
var _override = require('./override'); | ||
var _mixin2 = _interopRequireDefault(_mixin); | ||
var _override2 = _interopRequireDefault(_override); | ||
@@ -460,3 +460,5 @@ var _routeRecognizer = require('route-recognizer'); | ||
if (transition === _this2._currentTransition) { | ||
transition.callHook(hook, null, next, true); | ||
transition.callHook(hook, null, next, { | ||
expectBoolean: true | ||
}); | ||
} | ||
@@ -599,3 +601,3 @@ }, startTransition); | ||
Vue = externalVue; | ||
_mixin2['default'](Vue); | ||
_override2['default'](Vue); | ||
_directivesView2['default'](Vue); | ||
@@ -602,0 +604,0 @@ _directivesLink2['default'](Vue); |
@@ -1,22 +0,41 @@ | ||
"use strict"; | ||
'use strict'; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.__esModule = true; | ||
exports["default"] = function (Vue) { | ||
Vue.mixin({ | ||
created: function created() { | ||
if (this.$route) { | ||
this.$route.router._children.push(this); | ||
exports['default'] = function (Vue) { | ||
var _ = Vue.util; | ||
var init = Vue.prototype._init; | ||
Vue.prototype._init = function (options) { | ||
var root = options._parent || options.parent || this; | ||
var route = root.$route; | ||
if (route) { | ||
route.router._children.push(this); | ||
if (!this.$route) { | ||
/* istanbul ignore if */ | ||
if (this._defineMeta) { | ||
// 0.12 | ||
this._defineMeta('$route', route); | ||
} else { | ||
// 1.0 | ||
_.defineReactive(this, '$route', route); | ||
} | ||
} | ||
}, | ||
beforeDestroy: function beforeDestroy() { | ||
if (this.$route) { | ||
this.$route.router._children.$remove(this); | ||
} | ||
init.call(this, options); | ||
}; | ||
var destroy = Vue.prototype._destroy; | ||
Vue.prototype._destroy = function () { | ||
if (!this._isBeingDestroyed) { | ||
var route = this.$root.$route; | ||
if (route) { | ||
route.router._children.$remove(this); | ||
} | ||
destroy.apply(this, arguments); | ||
} | ||
}); | ||
}; | ||
}; | ||
module.exports = exports["default"]; | ||
module.exports = exports['default']; |
@@ -113,3 +113,3 @@ 'use strict'; | ||
function activate(view, transition, depth, cb) { | ||
function activate(view, transition, depth, cb, reuse) { | ||
var handler = transition.activateQueue[depth]; | ||
@@ -133,14 +133,58 @@ if (!handler) { | ||
// unbuild current component. this step also destroys | ||
// and removes all nested child views. | ||
view.unbuild(true); | ||
// build the new component. this will also create the | ||
// direct child view of the current one. it will register | ||
// itself as view.childView. | ||
var component = view.build({ | ||
_meta: { | ||
$loadingRouteData: !!(dataHook && !waitForData) | ||
var component = undefined; | ||
var loading = !!(dataHook && !waitForData); | ||
// "reuse" is a flag passed down when the parent view is | ||
// either reused via keep-alive or as a child of a kept-alive view. | ||
// of course we can only reuse if the current kept-alive instance | ||
// is of the correct type. | ||
reuse = reuse && view.childVM && view.childVM.constructor === Component; | ||
if (reuse) { | ||
// just reuse | ||
component = view.childVM; | ||
component.$loadingRouteData = loading; | ||
} else { | ||
// unbuild current component. this step also destroys | ||
// and removes all nested child views. | ||
view.unbuild(true); | ||
// handle keep-alive. | ||
// if the view has keep-alive, the child vm is not actually | ||
// destroyed - its nested views will still be in router's | ||
// view list. We need to removed these child views and | ||
// cache them on the child vm. | ||
if (view.keepAlive) { | ||
var views = transition.router._views; | ||
var i = views.indexOf(view); | ||
if (i > 0) { | ||
transition.router._views = views.slice(i); | ||
if (view.childVM) { | ||
view.childVM._routerViews = views.slice(0, i); | ||
} | ||
} | ||
} | ||
}); | ||
// build the new component. this will also create the | ||
// direct child view of the current one. it will register | ||
// itself as view.childView. | ||
component = view.build({ | ||
_meta: { | ||
$loadingRouteData: loading | ||
} | ||
}); | ||
// handle keep-alive. | ||
// when a kept-alive child vm is restored, we need to | ||
// add its cached child views into the router's view list, | ||
// and also properly update current view's child view. | ||
if (view.keepAlive) { | ||
component.$loadingRouteData = loading; | ||
var cachedViews = component._routerViews; | ||
if (cachedViews) { | ||
transition.router._views = cachedViews.concat(transition.router._views); | ||
view.childView = cachedViews[cachedViews.length - 1]; | ||
component._routerViews = null; | ||
} | ||
} | ||
} | ||
// cleanup the component in case the transition is aborted | ||
@@ -154,2 +198,6 @@ // before the component is ever inserted. | ||
var insert = function insert() { | ||
if (reuse) { | ||
cb && cb(); | ||
return; | ||
} | ||
var router = transition.router; | ||
@@ -160,2 +208,3 @@ if (router._rendered || router._transitionOnLoad) { | ||
// no transition on first render, manual transition | ||
/* istanbul ignore if */ | ||
if (view.setCurrent) { | ||
@@ -178,3 +227,3 @@ // 0.12 compat | ||
if (view.childView) { | ||
activate(view.childView, transition, depth + 1); | ||
activate(view.childView, transition, depth + 1, null, reuse || view.keepAlive); | ||
} | ||
@@ -231,20 +280,23 @@ if (dataHook && waitForData) { | ||
var promises = []; | ||
_Object$keys(data).forEach(function (key) { | ||
var val = data[key]; | ||
if (_util.isPromise(val)) { | ||
promises.push(val.then(function (resolvedVal) { | ||
component.$set(key, resolvedVal); | ||
})); | ||
} else { | ||
component.$set(key, val); | ||
} | ||
}); | ||
if (Object.prototype.toString.call(data) === '[object Object]') { | ||
_Object$keys(data).forEach(function (key) { | ||
var val = data[key]; | ||
if (_util.isPromise(val)) { | ||
promises.push(val.then(function (resolvedVal) { | ||
component.$set(key, resolvedVal); | ||
})); | ||
} else { | ||
component.$set(key, val); | ||
} | ||
}); | ||
} | ||
if (!promises.length) { | ||
component.$loadingRouteData = false; | ||
cb && cb(); | ||
} else { | ||
promises[0].constructor.all(promises).then(function (_) { | ||
component.$loadingRouteData = false; | ||
cb && cb(); | ||
}, onError); | ||
} | ||
cb && cb(data); | ||
}, { | ||
@@ -251,0 +303,0 @@ cleanup: cleanup, |
@@ -190,2 +190,5 @@ 'use strict'; | ||
* | ||
* If the user neither expects an argument nor returns a | ||
* promise, the hook is assumed to be synchronous. | ||
* | ||
* @param {Function} hook | ||
@@ -273,6 +276,8 @@ * @param {*} [context] | ||
}, onError); | ||
} else if (!hook.length) { | ||
next(res); | ||
} | ||
} else if (resIsPromise) { | ||
res.then(next, onError); | ||
} else if (expectData && isPlainOjbect(res)) { | ||
} else if (expectData && isPlainOjbect(res) || !hook.length) { | ||
next(res); | ||
@@ -279,0 +284,0 @@ } |
{ | ||
"name": "vue-router", | ||
"version": "0.7.1", | ||
"version": "0.7.2", | ||
"description": "A router for Vue.js", | ||
@@ -10,3 +10,3 @@ "main": "lib/index.js", | ||
"unit": "./node_modules/karma/bin/karma start build/karma.config.js", | ||
"build": "babel ./src --loose --optional runtime --out-dir lib && webpack --config build/webpack.build.dev.config.js && webpack --config build/webpack.build.min.config.js", | ||
"build": "babel ./src --loose all --optional runtime --out-dir lib && webpack --config build/webpack.build.dev.config.js && webpack --config build/webpack.build.min.config.js", | ||
"serve": "webpack-dev-server --hot --config example/advanced/webpack.config.js --content-base example/advanced --history-api-fallback --host 0.0.0.0", | ||
@@ -58,3 +58,3 @@ "serve-test": "webpack-dev-server --quiet --config test/unit/webpack.config.js --content-base test/unit --history-api-fallback --host 0.0.0.0 --port 8081", | ||
"style-loader": "^0.12.3", | ||
"vue": "yyx990803/vue#1.0.0-beta", | ||
"vue": "yyx990803/vue#dev", | ||
"vue-loader": "^3.0.3", | ||
@@ -61,0 +61,0 @@ "webpack": "^1.11.0", |
import { warn } from '../util' | ||
const trailingSlashRE = /\/$/ | ||
const regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g | ||
@@ -103,3 +104,10 @@ | ||
if (this.exact) { | ||
if (path === dest) { | ||
if ( | ||
dest === path || | ||
( | ||
// also allow additional trailing slash | ||
dest.charAt(dest.length - 1) !== '/' && | ||
dest === path.replace(trailingSlashRE, '') | ||
) | ||
) { | ||
_.addClass(el, activeClass) | ||
@@ -106,0 +114,0 @@ } else { |
@@ -36,9 +36,2 @@ import { warn } from '../util' | ||
// does not support keep-alive. | ||
/* istanbul ignore if */ | ||
if (this.keepAlive) { | ||
this.keepAlive = false | ||
warn('<router-view> does not support keep-alive.') | ||
} | ||
// all we need to do here is registering this view | ||
@@ -45,0 +38,0 @@ // in the router. actual component switching will be |
import util, { warn, mapParams } from './util' | ||
import initMixin from './mixin' | ||
import applyOverride from './override' | ||
import Recognizer from 'route-recognizer' | ||
@@ -422,3 +422,5 @@ import Route from './route' | ||
if (transition === this._currentTransition) { | ||
transition.callHook(hook, null, next, true) | ||
transition.callHook(hook, null, next, { | ||
expectBoolean: true | ||
}) | ||
} | ||
@@ -567,3 +569,3 @@ }, startTransition) | ||
Vue = externalVue | ||
initMixin(Vue) | ||
applyOverride(Vue) | ||
View(Vue) | ||
@@ -570,0 +572,0 @@ Link(Vue) |
@@ -104,3 +104,3 @@ import { getRouteConfig, resolveAsyncComponent, isPromise } from './util' | ||
export function activate (view, transition, depth, cb) { | ||
export function activate (view, transition, depth, cb, reuse) { | ||
let handler = transition.activateQueue[depth] | ||
@@ -124,14 +124,58 @@ if (!handler) { | ||
// unbuild current component. this step also destroys | ||
// and removes all nested child views. | ||
view.unbuild(true) | ||
// build the new component. this will also create the | ||
// direct child view of the current one. it will register | ||
// itself as view.childView. | ||
let component = view.build({ | ||
_meta: { | ||
$loadingRouteData: !!(dataHook && !waitForData) | ||
let component | ||
let loading = !!(dataHook && !waitForData) | ||
// "reuse" is a flag passed down when the parent view is | ||
// either reused via keep-alive or as a child of a kept-alive view. | ||
// of course we can only reuse if the current kept-alive instance | ||
// is of the correct type. | ||
reuse = reuse && view.childVM && view.childVM.constructor === Component | ||
if (reuse) { | ||
// just reuse | ||
component = view.childVM | ||
component.$loadingRouteData = loading | ||
} else { | ||
// unbuild current component. this step also destroys | ||
// and removes all nested child views. | ||
view.unbuild(true) | ||
// handle keep-alive. | ||
// if the view has keep-alive, the child vm is not actually | ||
// destroyed - its nested views will still be in router's | ||
// view list. We need to removed these child views and | ||
// cache them on the child vm. | ||
if (view.keepAlive) { | ||
let views = transition.router._views | ||
let i = views.indexOf(view) | ||
if (i > 0) { | ||
transition.router._views = views.slice(i) | ||
if (view.childVM) { | ||
view.childVM._routerViews = views.slice(0, i) | ||
} | ||
} | ||
} | ||
}) | ||
// build the new component. this will also create the | ||
// direct child view of the current one. it will register | ||
// itself as view.childView. | ||
component = view.build({ | ||
_meta: { | ||
$loadingRouteData: loading | ||
} | ||
}) | ||
// handle keep-alive. | ||
// when a kept-alive child vm is restored, we need to | ||
// add its cached child views into the router's view list, | ||
// and also properly update current view's child view. | ||
if (view.keepAlive) { | ||
component.$loadingRouteData = loading | ||
let cachedViews = component._routerViews | ||
if (cachedViews) { | ||
transition.router._views = cachedViews.concat(transition.router._views) | ||
view.childView = cachedViews[cachedViews.length - 1] | ||
component._routerViews = null | ||
} | ||
} | ||
} | ||
// cleanup the component in case the transition is aborted | ||
@@ -145,2 +189,6 @@ // before the component is ever inserted. | ||
let insert = () => { | ||
if (reuse) { | ||
cb && cb() | ||
return | ||
} | ||
let router = transition.router | ||
@@ -151,2 +199,3 @@ if (router._rendered || router._transitionOnLoad) { | ||
// no transition on first render, manual transition | ||
/* istanbul ignore if */ | ||
if (view.setCurrent) { | ||
@@ -169,3 +218,3 @@ // 0.12 compat | ||
if (view.childView) { | ||
activate(view.childView, transition, depth + 1) | ||
activate(view.childView, transition, depth + 1, null, reuse || view.keepAlive) | ||
} | ||
@@ -222,20 +271,23 @@ if (dataHook && waitForData) { | ||
let promises = [] | ||
Object.keys(data).forEach(key => { | ||
let val = data[key] | ||
if (isPromise(val)) { | ||
promises.push(val.then(resolvedVal => { | ||
component.$set(key, resolvedVal) | ||
})) | ||
} else { | ||
component.$set(key, val) | ||
} | ||
}) | ||
if (Object.prototype.toString.call(data) === '[object Object]') { | ||
Object.keys(data).forEach(key => { | ||
let val = data[key] | ||
if (isPromise(val)) { | ||
promises.push(val.then(resolvedVal => { | ||
component.$set(key, resolvedVal) | ||
})) | ||
} else { | ||
component.$set(key, val) | ||
} | ||
}) | ||
} | ||
if (!promises.length) { | ||
component.$loadingRouteData = false | ||
cb && cb() | ||
} else { | ||
promises[0].constructor.all(promises).then(_ => { | ||
component.$loadingRouteData = false | ||
cb && cb() | ||
}, onError) | ||
} | ||
cb && cb(data) | ||
}, { | ||
@@ -242,0 +294,0 @@ cleanup: cleanup, |
@@ -187,2 +187,5 @@ import { warn, mapParams, isPromise } from './util' | ||
* | ||
* If the user neither expects an argument nor returns a | ||
* promise, the hook is assumed to be synchronous. | ||
* | ||
* @param {Function} hook | ||
@@ -267,6 +270,8 @@ * @param {*} [context] | ||
}, onError) | ||
} else if (!hook.length) { | ||
next(res) | ||
} | ||
} else if (resIsPromise) { | ||
res.then(next, onError) | ||
} else if (expectData && isPlainOjbect(res)) { | ||
} else if ((expectData && isPlainOjbect(res)) || !hook.length) { | ||
next(res) | ||
@@ -273,0 +278,0 @@ } |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
334546
6072