UNPKG

vanilla-ui-router

Version:
2 lines (1 loc) 2.25 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(e.vanillaUIRouter=e.vanillaUIRouter||{})}(this,function(e){"use strict";var t=function(e){return isNaN(e)?"true"===e||"false"===e?JSON.parse(e):e:parseInt(e,10)},n=function(e,n){var r=n.split("/");return e.split("/").map(function(e,t){if(-1===e.indexOf(":",0))return null;var n={};return n[e.substr(1,e.length-1)]=r[t],n}).filter(function(e){return null!==e}).reduce(function(e,n){return Object.keys(n).forEach(function(r){e[r]=t(n[r])}),e},{})},r=function(e,t){var n=e.split("/"),r=n[0];return t.filter(function(e){var t=e.split("/"),o=0===t.map(function(e,t){return-1!==e.indexOf(":",0)||e===n[t]}).reduce(function(e,t){return!1===t&&++e,e},0);return-1!==e.indexOf(r,0)&&o&&n.length===t.length})[0]},o=window.XMLHttpRequest,i=function(e,t){var n=new o;n.onreadystatechange=function(){4===n.readyState&&t(n.responseText)},n.open("GET",e),n.send()},a=function(e,t,n){if(e&&(e.templateString&&(t.innerHTML=e.templateString,n()),e.templateUrl&&i(e.templateUrl,function(e){t.innerHTML=e,n()}),e.templateId)){var r=document.getElementById(e.templateId);t.innerHTML=r.text,n()}};e.createRouter=function(e){var t={},o=e.cloneNode(!0),i=null,u=function(e){window.location.hash=e},f=function(e){t["*"]=e},d=function(){if(e.parentElement){var t=o.cloneNode(!0);e.parentElement.insertBefore(t,e),void 0===e.remove?e.removeNode(!0):e.remove(),e=t}},l=function(){i&&void 0!==i.dispose&&i.dispose(e)},c=function(){var o=location.hash.slice(1),u=r(o,Object.keys(t)),f={};u&&(f=n(u,o));var c=Object.keys(t).indexOf(u)>-1?t[u]:t["*"];if(c)if(l(),i=c,d(),"function"==typeof c)c(e,f,c.data);else{if(!c.templateString&&!c.templateId&&!c.templateUrl)throw Error("No template configured for route "+o);a(c,e,function(){"function"==typeof c.routeHandler&&c.routeHandler(e,f,c.data)})}};return window&&(window.removeEventListener("hashchange",c),window.addEventListener("hashchange",c),window.removeEventListener("load",c),window.addEventListener("load",c)),{addRoute:function e(n,r,o){return t[n]=r,t[n].data=o,{addRoute:e,otherwise:f,navigateTo:u}},otherwise:f,navigateTo:u}},Object.defineProperty(e,"__esModule",{value:!0})});