-
Notifications
You must be signed in to change notification settings - Fork 0
/
pipeline-routing.min.js
1 lines (1 loc) · 4.41 KB
/
pipeline-routing.min.js
1
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.pipelineRouting=e():t.pipelineRouting=e()}(this,function(){return function(t){function e(a){if(n[a])return n[a].exports;var r=n[a]={exports:{},id:a,loaded:!1};return t[a].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){var a=n(1);t.exports={name:"pipeline-router",factories:{router:a},startHook:function(t){t.router.start()}}},function(t,e,n){var a=n(2);t.exports=function(t){return function(e){t.router=new a;var n=(null!=e.routes?e.routes:{},e.routes),r="location",i={actions:{navigate:function(t,e){this.update({page:t,params:e})}}},o="navigate",u=function(t){this.require(null!=t,'You must pass a "page" argument to "navigate"')},s="router",l={stores:{location:function(){var e=this.stores.location.get(),n=t.router.makeRouteIntoPath(e.page,e.params),a=window.location.pathname;t.router.areEquivalentPaths(a,n)||window.history.pushState({},e.page,n)}}},h={action:!0,store:!0,adapter:!0};null!=e.defaults&&(null!=e.defaults.action&&(e.defaults.action!==!1?(null!=e.defaults.action.name&&(o=e.defaults.action.name),null!=e.defaults.action.validator&&(u=e.defaults.action.validator)):h.action=!1),null!=e.defaults.store&&(e.defaults.store!==!1?(null!=e.defaults.store.name&&(r=e.defaults.store.name),null!=e.defaults.store.actions&&(i.actions=e.defaults.store.actions)):h.store=!1),null!=e.defaults.adapter&&(e.defaults.adapter!==!1?(null!=e.defaults.adapter.name&&(s=e.defaults.adapter.name),null!=e.defaults.adapter.actions&&(l.actions=e.defaults.adapter.actions)):h.adapter=!1)),h.action&&t.create.action(o,u),h.store&&t.create.store(r,i),h.adapter&&t.create.adapter(s,l);var f=function(n){"function"!=typeof n&&(n.handler=null!=e.defaults&&"function"==typeof e.defaults.handler?e.defaults.handler:t.actions.navigate),void 0!=n.children&&n.children.forEach(f)};f(n),new t.router.Route(n)}}},function(t){function e(){"use strict";this._routes={};var t=this,e=function(t){return t.length>1&&"/"===t[t.length-1]?t.slice(0,t.length-1):t},n=function(t){var e,n=t.split("/"),a={};for(e=0;e<n.length;e++){var r=n[e];":"===r[0]&&(a[r.slice(1,r.length)]=e)}return a};this.Route=function u(e,a){if(null==e.path)if(null!=e.name&&null!=a)this.path=e.name,this.name=e.name;else{if(null!=a)throw new Error("non-root routes must be given a name and/or a path");this.path="/",this.name=null!=e.name?e.name:"root"}else null!=e.path&&null==e.name?(this.path=e.path,this.name="/"===e.path?"root":e.path):null!=e.path&&null!=e.name&&(this.path=e.path,this.name=e.name);this.dynamic=null!=e.dynamic?e.dynamic:-1!==this.path.indexOf(":"),this.pattern=e.dynamic===!0?null!=e.pattern?e.pattern:/[a-zA-Z0-9\+\(\)\-\_]+/:null!=e.pattern?e.pattern:new RegExp(this.path);var r="/"===this.path||null==a;if(r)this.fullPath="/";else{var i="/"===a?"":"/";this.fullPath=a+i+this.path}this.handler=e.handler,this.children=[];var o=this;Array.isArray(e.children)&&e.children.forEach(function(t){o.children.push(new u(t,o.fullPath))}),this.params=n(this.fullPath),this.makePath=function(t){var e=this.fullPath.split("/");for(var n in this.params)e[this.params[n]]=t[n];return e.join("/")},t._routes[this.fullPath]=this};var a=function(t,e,n){var r=[];return e.pattern.test(t[0])&&r.push({route:e,depth:n}),e.children.forEach(function(e){if(e.pattern.test(t.slice(1,t.length))){var i=a(t.slice(1,t.length),e,n+1);i.forEach(function(t){r.push(t)})}}),r};this.findRouteByPath=function(t){var e;"/"!==t?(e=t.split("/"),e[0]="/"):e=[t];var n=a(e,this._routes["/"],0),r=n[0];return n.forEach(function(t){t.depth>r.depth&&(r=t)}),r.route};var r=function(t,e){if(t.name===e)return t;var n;for(n=0;n<t.children.length;n++){var a=r(t.children[n],e);if(null!=a)return a}return!1};this.findRouteByName=function(t){return r(this._routes["/"],t)},this.hitRoute=function(t){var e=this.findRouteByPath(t),n=t.split("/"),a={};for(var r in e.params)a[r]=n[e.params[r]];e.handler.call(null,e.name,a,t)},this.makeRouteIntoPath=function(t,e){var n=this.findRouteByName(t),a=n!==!1?n:this._routes["/"];return a.makePath(e)},this.areEquivalentPaths=function(t,n){return e(t)===e(n)};var i=function(){t.hitRoute(window.location.pathname)},o=function(){t.hitRoute(window.location.pathname)};this.start=function(){window.addEventListener("popstate",i),window.addEventListener("load",o),this.hitRoute(window.location.pathname)}}t.exports=e}])});