From dd5a044629ccf168c07908ab4d2d94d96ab66a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kol=C3=A1rik?= Date: Thu, 25 Jun 2015 11:25:42 +0200 Subject: [PATCH] v0.3.0 --- README.md | 2 -- package.json | 2 +- ractive-route.js | 13 +++++++++++-- ractive-route.min.js | 4 ++-- ractive-route.min.map | 2 +- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index b9e5cb6..7c86825 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,6 @@ There are three ways to get ractive-route: ractive-route will always expose itself as `Ractive.Router`. Additionally, you can load it using AMD or CommonJS module loader. -Version 0.2.x requires Ractive v0.6.x or v0.7.x. - ## API ### new Router(options) diff --git a/package.json b/package.json index 71ba5fc..da6b671 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ractive-route", - "version": "0.2.0", + "version": "0.3.0", "description": "Routing library for Ractive.js", "homepage": "https://github.com/MartinKolarik/ractive-route/", "github": "https://github.com/MartinKolarik/ractive-route/", diff --git a/ractive-route.js b/ractive-route.js index 516134d..239f926 100644 --- a/ractive-route.js +++ b/ractive-route.js @@ -1,5 +1,5 @@ /*! - * ractive-route 0.2.0 + * ractive-route 0.3.0 * https://github.com/MartinKolarik/ractive-route/ * * Copyright (c) 2014 Martin Kolárik @@ -218,6 +218,7 @@ * @public */ function Router(options) { + this.globals = options.globals || []; this.basePath = options.basePath || ''; this.el = options.el; this.data = options.data || function () { return {}; }; @@ -448,7 +449,15 @@ var href = el.getAttribute('href') || el.getAttribute('data-href'); if (href && !el.classList.contains('router-ignore') && pattern.test(href)) { - _this.dispatch(href); + var options = { state: {} }; + + if (_this.route && _this.route.view) { + _this.globals.forEach(function (global) { + options.state[global] = _this.route.view.get(global); + }); + } + + _this.dispatch(href, options); e.preventDefault(); } diff --git a/ractive-route.min.js b/ractive-route.min.js index 3a0392f..71cc05e 100644 --- a/ractive-route.min.js +++ b/ractive-route.min.js @@ -1,5 +1,5 @@ /*! - * ractive-route 0.2.0 + * ractive-route 0.3.0 * https://github.com/MartinKolarik/ractive-route/ * * Copyright (c) 2014 Martin Kolárik @@ -9,5 +9,5 @@ * Licensed under the MIT license * http://www.opensource.org/licenses/MIT */ -!function(a){"undefined"!=typeof module&&module.exports?module.exports=a(require("ractive")):"function"==typeof define&&define.amd?define(["ractive"],a):a(window.Ractive)}(function(a){function b(a,b,e,g){this.pattern=a,this.map=c(a),this.regExp=d(a),this.strictRegExp=f(a),this.isComponent=!!b.extend,this.Handler=b,this.observe=i({qs:[],hash:[],state:[]},e),this.allObserved=this.observe.qs.concat(this.observe.hash,this.observe.state),this.router=g||{},this.view=null}function c(a){return(a.match(/\/:\w+/g)||[]).map(function(a){return a.substr(2)})}function d(a){return new RegExp(e(a).replace(/^\^(\\\/)?/,"^\\/?").replace(/(\\\/)?\$$/,"\\/?$"),"i")}function e(a){return("^"+a+"$").replace(/\/:\w+(\([^)]+\))?/g,"(?:/([^/]+)$1)").replace(/\(\?:\/\(\[\^\/]\+\)\(/,"(?:/(").replace(/\//g,"\\/")}function f(a){return new RegExp(e(a))}function g(a){this.basePath=a.basePath||"",this.el=a.el,this.data=a.data||function(){return{}},this.history=a.history||history,this.strictMode=!!a.strictMode,this.linksWatcher=null,this.stateWatcher=null,this.route=null,this.routes=[],this.uri={}}function h(a,b,c){return a.path!==b.path||a.qs!==b.qs||decodeURIComponent(a.hash)!==decodeURIComponent(b.hash)&&(!c||c.observe.hash.length)}function i(a){for(var b=1,c=arguments.length;c>b;b++)for(var d in arguments[b])arguments[b].hasOwnProperty(d)&&void 0!==arguments[b][d]&&(a[d]=arguments[b][d]);return a}function j(a){return r(a,function(a){return!k(a)})}function k(a){return a&&"object"==typeof a?!Object.keys(a).length:!a}function l(){return Array.prototype.slice.call(arguments).join("/").replace(/\/+/g,"/")}function m(a,b){for(;a&&a.nodeName.toLowerCase()!==b;)a=a.parentNode;return a&&a.nodeName.toLowerCase()===b?a:null}function n(a,b){try{var c=j(JSON.parse(decodeURIComponent(a.substr(2))));return b?r(c,b):c}catch(d){return{}}}function o(a){try{return JSON.parse(a)}catch(b){return a||""}}function p(a){var b=a.match(/^(?:([\w+.-]+):\/\/([^/]+))?([^?#]*)?(\?[^#]*)?(#.*)?/);return{protocol:b[1]||"",host:b[2]||"",path:b[3]||"",qs:b[4]||"",hash:b[5]||""}}function q(a,b){var c=a.indexOf("?"),d={};if(-1!==c)for(var e=a.substr(c+1).split("&"),f=[],g=0,h=e.length;h>g;g++)f=e[g].split("="),k(f[1])||k(o(f[1]))||(d[decodeURIComponent(f[0])]=o(decodeURIComponent(f[1])));return b?r(d,b):d}function r(a,b){var c={};if("function"==typeof b)for(var d in a)a.hasOwnProperty(d)&&b(a[d],d)&&(c[d]=a[d]);else for(var e=0,f=b.length;f>e;e++)c[b[e]]=a[b[e]];return c}function s(a){var b=document.getElementById(a);b?window.scrollBy(0,b.getBoundingClientRect().top):window.scrollTo(0,0)}function t(a){return a&&"object"==typeof a?JSON.stringify(a):a}function u(a){return a=j(a),k(a)?"":"#!"+encodeURIComponent(t(a))}function v(a){var b="";for(var c in a)a.hasOwnProperty(c)&&!k(a[c])&&(b+="&"+encodeURIComponent(c)+"="+encodeURIComponent(t(a[c])));return b?"?"+b.substr(1):""}return b.prototype.destroy=function(){return this.view&&(this.view.teardown(),this.view=null),this},b.prototype.getState=function(){for(var a={},b=0,c=this.allObserved.length;c>b;b++)a[this.allObserved[b]]=this.view.get(this.allObserved[b]);return{qs:r(a,this.observe.qs),hash:r(a,this.observe.hash),state:r(a,this.observe.state)}},b.prototype.init=function(a,b){var c=this;return i(b,this.parsePath(a.path),q(a.qs,this.observe.qs),n(a.hash,this.observe.hash)),this.isComponent?(this.view=new this.Handler({el:this.router.el,data:b}),this.allObserved.length&&this.view.observe(this.allObserved.join(" "),function(){c.updating||c.router.update()},{init:!1}),this.view.set("__ready",!0)):this.Handler({el:this.router.el,data:b,uri:this.router.uri}),this},b.prototype.match=function(a,b){return b?this.strictRegExp.test(a):this.regExp.test(a)},b.prototype.parsePath=function(a){for(var b=a.match(this.regExp),c={},d=0,e=this.map.length;e>d;d++)k(b[d+1])||(c[this.map[d]]=o(b[d+1]));return c},g.prototype.addRoute=function(a,c,d){return this.routes.push(new b(a,c,d,this)),this},g.prototype.buildHash=function(a){var b=this.route.getState().hash;return k(b)&&a?a:u(b)},g.prototype.buildQS=function(a){return v(i.apply(null,[{}].concat(a,this.route.getState().qs)))},g.prototype.dispatch=function(a,b){b=b||{};var c=p(a),d=this.match(c.path),e=this.uri;if(!d)return this.redirect(a);if(b.reload||h(this.uri,c,d)){var f="function"==typeof this.data?this.data():this.data,g=i(f,b.state,b.hash,b.qs);this.route&&this.route.destroy(),this.uri=c,this.route=d.init(c,g)}return s(c.hash.substr(1)),this.update(!e.path||e.path!==c.path,!b.noHistory,c)},g.prototype.getUri=function(){return location.pathname.substr(this.basePath.length)+location.search+location.hash},g.prototype.init=function(a){return this.dispatch(this.getUri(),i({noHistory:!0},a))},g.prototype.match=function(a){for(var b=-1;this.routes[++b];)if(this.routes[b].match(a))return this.routes[b];return null},g.prototype.redirect=function(a){return location.pathname=l(this.basePath,a),this},g.prototype.unwatchLinks=function(){return this.linksWatcher&&(document.body.removeEventListener("click",this.linksWatcher),this.linksWatcher=null),this},g.prototype.unwatchState=function(){return this.stateWatcher&&(window.removeEventListener("popstate",this.stateWatcher),this.stateWatcher=null),this},g.prototype.update=function(a,b,c){if(!this.route)return this;c=c||{qs:"",hash:""};var d=l(this.basePath,this.uri.path),e=this.buildQS([q(c.qs)].concat(a?[]:[q(location.search)])),f=this.buildHash(c.hash),g=d+e+f,h=location.pathname+location.search+location.hash,i=this.route.getState().state;return this.uri.qs=e,this.uri.hash=f,b===!0?this.history.pushState(i,null,g):b===!1?this.history.replaceState(i,null,g):g!==h&&this.history.pushState(i,null,g),this},g.prototype.watchLinks=function(a){a=a||new RegExp("^((https?:)?\\/\\/"+location.hostname.replace(/\./g,"\\.")+".*|((?!\\/\\/)[^:]+))$");var b=this;return document.body.addEventListener("click",this.unwatchLinks().linksWatcher=function(c){var d=m(c.target,"a");if(d){var e=d.getAttribute("href")||d.getAttribute("data-href");e&&!d.classList.contains("router-ignore")&&a.test(e)&&(b.dispatch(e),c.preventDefault())}}),this},g.prototype.watchState=function(){var a=this;return window.addEventListener("popstate",this.unwatchState().stateWatcher=function(b){b.state&&a.init({state:b.state})}),this},g.Route=b,a.Router=g}); +!function(a){"undefined"!=typeof module&&module.exports?module.exports=a(require("ractive")):"function"==typeof define&&define.amd?define(["ractive"],a):a(window.Ractive)}(function(a){function b(a,b,e,g){this.pattern=a,this.map=c(a),this.regExp=d(a),this.strictRegExp=f(a),this.isComponent=!!b.extend,this.Handler=b,this.observe=i({qs:[],hash:[],state:[]},e),this.allObserved=this.observe.qs.concat(this.observe.hash,this.observe.state),this.router=g||{},this.view=null}function c(a){return(a.match(/\/:\w+/g)||[]).map(function(a){return a.substr(2)})}function d(a){return new RegExp(e(a).replace(/^\^(\\\/)?/,"^\\/?").replace(/(\\\/)?\$$/,"\\/?$"),"i")}function e(a){return("^"+a+"$").replace(/\/:\w+(\([^)]+\))?/g,"(?:/([^/]+)$1)").replace(/\(\?:\/\(\[\^\/]\+\)\(/,"(?:/(").replace(/\//g,"\\/")}function f(a){return new RegExp(e(a))}function g(a){this.globals=a.globals||[],this.basePath=a.basePath||"",this.el=a.el,this.data=a.data||function(){return{}},this.history=a.history||history,this.strictMode=!!a.strictMode,this.linksWatcher=null,this.stateWatcher=null,this.route=null,this.routes=[],this.uri={}}function h(a,b,c){return a.path!==b.path||a.qs!==b.qs||decodeURIComponent(a.hash)!==decodeURIComponent(b.hash)&&(!c||c.observe.hash.length)}function i(a,b){for(var c=1,d=arguments.length;d>c;c++)for(var e in arguments[c])arguments[c].hasOwnProperty(e)&&void 0!==arguments[c][e]&&(a[e]=arguments[c][e]);return a}function j(a){return r(a,function(a){return!k(a)})}function k(a){return a&&"object"==typeof a?!Object.keys(a).length:!a}function l(a){return Array.prototype.slice.call(arguments).join("/").replace(/\/+/g,"/")}function m(a,b){for(;a&&a.nodeName.toLowerCase()!==b;)a=a.parentNode;return a&&a.nodeName.toLowerCase()===b?a:null}function n(a,b){try{var c=j(JSON.parse(decodeURIComponent(a.substr(2))));return b?r(c,b):c}catch(d){return{}}}function o(a){try{return JSON.parse(a)}catch(b){return a||""}}function p(a){var b=a.match(/^(?:([\w+.-]+):\/\/([^/]+))?([^?#]*)?(\?[^#]*)?(#.*)?/);return{protocol:b[1]||"",host:b[2]||"",path:b[3]||"",qs:b[4]||"",hash:b[5]||""}}function q(a,b){var c=a.indexOf("?"),d={};if(-1!==c)for(var e=a.substr(c+1).split("&"),f=[],g=0,h=e.length;h>g;g++)f=e[g].split("="),k(f[1])||k(o(f[1]))||(d[decodeURIComponent(f[0])]=o(decodeURIComponent(f[1])));return b?r(d,b):d}function r(a,b){var c={};if("function"==typeof b)for(var d in a)a.hasOwnProperty(d)&&b(a[d],d)&&(c[d]=a[d]);else for(var e=0,f=b.length;f>e;e++)c[b[e]]=a[b[e]];return c}function s(a){var b=document.getElementById(a);b?window.scrollBy(0,b.getBoundingClientRect().top):window.scrollTo(0,0)}function t(a){return a&&"object"==typeof a?JSON.stringify(a):a}function u(a){return a=j(a),k(a)?"":"#!"+encodeURIComponent(t(a))}function v(a){var b="";for(var c in a)a.hasOwnProperty(c)&&!k(a[c])&&(b+="&"+encodeURIComponent(c)+"="+encodeURIComponent(t(a[c])));return b?"?"+b.substr(1):""}return b.prototype.destroy=function(){return this.view&&(this.view.teardown(),this.view=null),this},b.prototype.getState=function(){for(var a={},b=0,c=this.allObserved.length;c>b;b++)a[this.allObserved[b]]=this.view.get(this.allObserved[b]);return{qs:r(a,this.observe.qs),hash:r(a,this.observe.hash),state:r(a,this.observe.state)}},b.prototype.init=function(a,b){var c=this;return i(b,this.parsePath(a.path),q(a.qs,this.observe.qs),n(a.hash,this.observe.hash)),this.isComponent?(this.view=new this.Handler({el:this.router.el,data:b}),this.allObserved.length&&this.view.observe(this.allObserved.join(" "),function(){c.updating||c.router.update()},{init:!1}),this.view.set("__ready",!0)):this.Handler({el:this.router.el,data:b,uri:this.router.uri}),this},b.prototype.match=function(a,b){return b?this.strictRegExp.test(a):this.regExp.test(a)},b.prototype.parsePath=function(a){for(var b=a.match(this.regExp),c={},d=0,e=this.map.length;e>d;d++)k(b[d+1])||(c[this.map[d]]=o(b[d+1]));return c},g.prototype.addRoute=function(a,c,d){return this.routes.push(new b(a,c,d,this)),this},g.prototype.buildHash=function(a){var b=this.route.getState().hash;return k(b)&&a?a:u(b)},g.prototype.buildQS=function(a){return v(i.apply(null,[{}].concat(a,this.route.getState().qs)))},g.prototype.dispatch=function(a,b){b=b||{};var c=p(a),d=this.match(c.path),e=this.uri;if(!d)return this.redirect(a);if(b.reload||h(this.uri,c,d)){var f="function"==typeof this.data?this.data():this.data,g=i(f,b.state,b.hash,b.qs);this.route&&this.route.destroy(),this.uri=c,this.route=d.init(c,g)}return s(c.hash.substr(1)),this.update(!e.path||e.path!==c.path,!b.noHistory,c)},g.prototype.getUri=function(){return location.pathname.substr(this.basePath.length)+location.search+location.hash},g.prototype.init=function(a){return this.dispatch(this.getUri(),i({noHistory:!0},a))},g.prototype.match=function(a){for(var b=-1;this.routes[++b];)if(this.routes[b].match(a))return this.routes[b];return null},g.prototype.redirect=function(a){return location.pathname=l(this.basePath,a),this},g.prototype.unwatchLinks=function(){return this.linksWatcher&&(document.body.removeEventListener("click",this.linksWatcher),this.linksWatcher=null),this},g.prototype.unwatchState=function(){return this.stateWatcher&&(window.removeEventListener("popstate",this.stateWatcher),this.stateWatcher=null),this},g.prototype.update=function(a,b,c){if(!this.route)return this;c=c||{qs:"",hash:""};var d=l(this.basePath,this.uri.path),e=this.buildQS([q(c.qs)].concat(a?[]:[q(location.search)])),f=this.buildHash(c.hash),g=d+e+f,h=location.pathname+location.search+location.hash,i=this.route.getState().state;return this.uri.qs=e,this.uri.hash=f,b===!0?this.history.pushState(i,null,g):b===!1?this.history.replaceState(i,null,g):g!==h&&this.history.pushState(i,null,g),this},g.prototype.watchLinks=function(a){a=a||new RegExp("^((https?:)?\\/\\/"+location.hostname.replace(/\./g,"\\.")+".*|((?!\\/\\/)[^:]+))$");var b=this;return document.body.addEventListener("click",this.unwatchLinks().linksWatcher=function(c){var d=m(c.target,"a");if(d){var e=d.getAttribute("href")||d.getAttribute("data-href");if(e&&!d.classList.contains("router-ignore")&&a.test(e)){var f={state:{}};b.route&&b.route.view&&b.globals.forEach(function(a){f.state[a]=b.route.view.get(a)}),b.dispatch(e,f),c.preventDefault()}}}),this},g.prototype.watchState=function(){var a=this;return window.addEventListener("popstate",this.unwatchState().stateWatcher=function(b){b.state&&a.init({state:b.state})}),this},g.Route=b,a.Router=g}); //# sourceMappingURL=ractive-route.min.map \ No newline at end of file diff --git a/ractive-route.min.map b/ractive-route.min.map index 3d80044..058357d 100644 --- a/ractive-route.min.map +++ b/ractive-route.min.map @@ -1 +1 @@ -{"version":3,"file":"ractive-route.min.js","sources":["ractive-route.js"],"names":["factory","module","exports","require","define","amd","window","Ractive","Route","pattern","Handler","observe","router","this","map","parsePattern","regExp","patternToRegExp","strictRegExp","patternToStrictRegExp","isComponent","extend","assign","qs","hash","state","allObserved","concat","view","match","name","substr","RegExp","patternToRegExpString","replace","Router","options","basePath","el","data","history","strictMode","linksWatcher","stateWatcher","route","routes","uri","shouldDispatch","oldUri","newUri","path","decodeURIComponent","length","object","i","c","arguments","x","hasOwnProperty","undefined","compact","collection","pick","value","isEmpty","Object","keys","joinPaths","Array","prototype","slice","call","join","parents","nodeName","toLowerCase","parentNode","parseHash","parsed","JSON","parse","e","parseJSON","string","parseUri","parts","protocol","host","parseQS","index","indexOf","pairs","split","pair","scrollTo","id","document","getElementById","scrollBy","getBoundingClientRect","top","stringify","stringifyHash","encodeURIComponent","stringifyQS","destroy","teardown","getState","get","init","_this","parsePath","updating","update","set","request","strict","test","addRoute","push","buildHash","mixIn","buildQS","apply","dispatch","redirect","reload","defaults","noHistory","getUri","location","pathname","search","unwatchLinks","body","removeEventListener","unwatchState","pathChange","pushState","replaceState","watchLinks","hostname","addEventListener","target","href","getAttribute","classList","contains","preventDefault","watchState"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ractive-route.min.js","sources":["ractive-route.js"],"names":["factory","module","exports","require","define","amd","window","Ractive","Route","pattern","Handler","observe","router","this","map","parsePattern","regExp","patternToRegExp","strictRegExp","patternToStrictRegExp","isComponent","extend","assign","qs","hash","state","allObserved","concat","view","match","name","substr","RegExp","patternToRegExpString","replace","Router","options","globals","basePath","el","data","history","strictMode","linksWatcher","stateWatcher","route","routes","uri","shouldDispatch","oldUri","newUri","path","decodeURIComponent","length","object","source","i","c","arguments","x","hasOwnProperty","undefined","compact","collection","pick","value","isEmpty","Object","keys","joinPaths","parts","Array","prototype","slice","call","join","parents","nodeName","toLowerCase","parentNode","parseHash","parsed","JSON","parse","e","parseJSON","string","parseUri","protocol","host","parseQS","index","indexOf","pairs","split","pair","scrollTo","id","document","getElementById","scrollBy","getBoundingClientRect","top","stringify","stringifyHash","encodeURIComponent","stringifyQS","destroy","teardown","getState","get","init","_this","parsePath","updating","update","set","request","strict","test","addRoute","push","buildHash","mixIn","buildQS","apply","dispatch","redirect","reload","defaults","noHistory","getUri","location","pathname","search","unwatchLinks","body","removeEventListener","unwatchState","pathChange","pushState","replaceState","watchLinks","hostname","addEventListener","target","href","getAttribute","classList","contains","forEach","global","preventDefault","watchState"],"mappings":"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"} \ No newline at end of file