UNPKG

ceri-dev-server

Version:

a small development server for building ceri components

82 lines (76 loc) 2.24 kB
(function() { var container, startupRouter; require("es6-promise/auto"); container = document.getElementById("container"); startupRouter = function() { var clearSlashes, current, defaultRoute, getFragment, listen, nav, route, routename, routes, val, view, views; clearSlashes = function(path) { return path.toString().replace(/\/$/, '').replace(/^\//, ''); }; getFragment = function() { var match; match = window.location.href.match(/#(.*)$/); if (match) { return match[1]; } else { return defaultRoute; } }; current = ''; listen = function() { var frag; frag = getFragment(); if (current !== frag) { current = frag; route(); return document.title = current + " - ceri-dev-server"; } }; setInterval(listen, 50); routes = {}; view = null; views = {}; getRoutes(); if (Object.keys(routes).length === 1) { defaultRoute = Object.keys(routes)[0]; } else { defaultRoute = "/"; } route = function() { var name; if (routes[current] == null) { current = defaultRoute; window.location.href = window.location.href.replace(/#(.*)$/, '') + '#' + defaultRoute; } if (view != null) { container.removeChild(view); } if (views[current] != null) { view = views[current]; } else { view = routes[current]; name = "ce" + (current.replace('/', '-').replace(/([^-])([A-Z])/g, '$1-$2').toLowerCase()); window.customElements.define(name, view); view = document.createElement(name); views[current] = view; } return container.appendChild(view); }; nav = document.createElement("ul"); for (routename in routes) { val = routes[routename]; nav.innerHTML += "<li><a href='#" + routename + "'>" + routename + "</a></li>"; } views["/"] = nav; routes["/"] = true; return listen(); }; if (window.customElements == null) { require.ensure([], (function(require) { require("document-register-element"); return startupRouter(); }), "cePoly"); } else { startupRouter(); } }).call(this);