UNPKG

sly-svelte-router

Version:

A spa router for svelte based on the History API

2 lines (1 loc) 8.78 kB
(function(c,h){typeof exports=="object"&&typeof module<"u"?h(exports,require("svelte")):typeof define=="function"&&define.amd?define(["exports","svelte"],h):(c=typeof globalThis<"u"?globalThis:c||self,h(c["sly-svelte-router"]={},c.Svelte))})(this,function(c,h){"use strict";var Pe=Object.defineProperty;var Ie=(c,h,_)=>h in c?Pe(c,h,{enumerable:!0,configurable:!0,writable:!0,value:_}):c[h]=_;var K=(c,h,_)=>Ie(c,typeof h!="symbol"?h+"":h,_);function _(){}function se(e,t){for(const n in t)e[n]=t[n];return e}function V(e){return e()}function z(){return Object.create(null)}function C(e){e.forEach(V)}function F(e){return typeof e=="function"}function le(e,t){return e!=e?t==t:e!==t||e&&typeof e=="object"||typeof e=="function"}function ce(e){return Object.keys(e).length===0}function ae(e,t,n,i){if(e){const r=G(e,t,n,i);return e[0](r)}}function G(e,t,n,i){return e[1]&&i?se(n.ctx.slice(),e[1](i(t))):n.ctx}function de(e,t,n,i){if(e[2]&&i){const r=e[2](i(n));if(t.dirty===void 0)return r;if(typeof r=="object"){const o=[],u=Math.max(t.dirty.length,r.length);for(let l=0;l<u;l+=1)o[l]=t.dirty[l]|r[l];return o}return t.dirty|r}return t.dirty}function he(e,t,n,i,r,o){if(r){const u=G(t,n,i,o);e.p(u,r)}}function _e(e){if(e.ctx.length>32){const t=[],n=e.ctx.length/32;for(let i=0;i<n;i++)t[i]=-1;return t}return-1}function ge(e,t){e.appendChild(t)}function j(e,t,n){e.insertBefore(t,n||null)}function b(e){e.parentNode&&e.parentNode.removeChild(e)}function H(e){return document.createTextNode(e)}function J(){return H(" ")}function P(){return H("")}function pe(e){return Array.from(e.childNodes)}function Q(e,t){return new e(t)}let I;function S(e){I=e}const $=[],W=[];let E=[];const X=[],me=Promise.resolve();let T=!1;function ye(){T||(T=!0,me.then(Y))}function x(e){E.push(e)}const M=new Set;let R=0;function Y(){if(R!==0)return;const e=I;do{try{for(;R<$.length;){const t=$[R];R++,S(t),we(t.$$)}}catch(t){throw $.length=0,R=0,t}for(S(null),$.length=0,R=0;W.length;)W.pop()();for(let t=0;t<E.length;t+=1){const n=E[t];M.has(n)||(M.add(n),n())}E.length=0}while($.length);for(;X.length;)X.pop()();T=!1,M.clear(),S(e)}function we(e){if(e.fragment!==null){e.update(),C(e.before_update);const t=e.dirty;e.dirty=[-1],e.fragment&&e.fragment.p(e.ctx,t),e.after_update.forEach(x)}}function ve(e){const t=[],n=[];E.forEach(i=>e.indexOf(i)===-1?t.push(i):n.push(i)),n.forEach(i=>i()),E=t}const N=new Set;let w;function B(){w={r:0,c:[],p:w}}function D(){w.r||C(w.c),w=w.p}function g(e,t){e&&e.i&&(N.delete(e),e.i(t))}function v(e,t,n,i){if(e&&e.o){if(N.has(e))return;N.add(e),w.c.push(()=>{N.delete(e),i&&(n&&e.d(1),i())}),e.o(t)}else i&&i()}function Z(e){e&&e.c()}function U(e,t,n){const{fragment:i,after_update:r}=e.$$;i&&i.m(t,n),x(()=>{const o=e.$$.on_mount.map(V).filter(F);e.$$.on_destroy?e.$$.on_destroy.push(...o):C(o),e.$$.on_mount=[]}),r.forEach(x)}function q(e,t){const n=e.$$;n.fragment!==null&&(ve(n.after_update),C(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function ke(e,t){e.$$.dirty[0]===-1&&($.push(e),ye(),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<<t%31}function be(e,t,n,i,r,o,u=null,l=[-1]){const f=I;S(e);const s=e.$$={fragment:null,ctx:[],props:o,update:_,not_equal:r,bound:z(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(t.context||(f?f.$$.context:[])),callbacks:z(),dirty:l,skip_bound:!1,root:t.target||f.$$.root};u&&u(s.root);let d=!1;if(s.ctx=n?n(e,t.props||{},(a,p,...k)=>{const y=k.length?k[0]:p;return s.ctx&&r(s.ctx[a],s.ctx[a]=y)&&(!s.skip_bound&&s.bound[a]&&s.bound[a](y),d&&ke(e,a)),p}):[],s.update(),d=!0,C(s.before_update),s.fragment=i?i(s.ctx):!1,t.target){if(t.hydrate){const a=pe(t.target);s.fragment&&s.fragment.l(a),a.forEach(b)}else s.fragment&&s.fragment.c();t.intro&&g(e.$$.fragment),U(e,t.target,t.anchor),Y()}S(f)}class $e{constructor(){K(this,"$$");K(this,"$$set")}$destroy(){q(this,1),this.$destroy=_}$on(t,n){if(!F(n))return _;const i=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return i.push(n),()=>{const r=i.indexOf(n);r!==-1&&i.splice(r,1)}}$set(t){this.$$set&&!ce(t)&&(this.$$.skip_bound=!0,this.$$set(t),this.$$.skip_bound=!1)}}const Ee="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Ee);function ee(e){return document.title=e[0].title,{c:_,m:_,d:_}}function te(e){let t,n,i,r,o=!e[0].disableSlot&&ne(e);var u=e[0].comp;function l(f,s){return{}}return u&&(n=Q(u,l())),{c(){o&&o.c(),t=J(),n&&Z(n.$$.fragment),i=P()},m(f,s){o&&o.m(f,s),j(f,t,s),n&&U(n,f,s),j(f,i,s),r=!0},p(f,s){if(f[0].disableSlot?o&&(B(),v(o,1,1,()=>{o=null}),D()):o?(o.p(f,s),s&1&&g(o,1)):(o=ne(f),o.c(),g(o,1),o.m(t.parentNode,t)),s&1&&u!==(u=f[0].comp)){if(n){B();const d=n;v(d.$$.fragment,1,0,()=>{q(d,1)}),D()}u?(n=Q(u,l()),Z(n.$$.fragment),g(n.$$.fragment,1),U(n,i.parentNode,i)):n=null}},i(f){r||(g(o),n&&g(n.$$.fragment,f),r=!0)},o(f){v(o),n&&v(n.$$.fragment,f),r=!1},d(f){f&&(b(t),b(i)),o&&o.d(f),n&&q(n,f)}}}function ne(e){let t;const n=e[4].default,i=ae(n,e,e[3],null);return{c(){i&&i.c()},m(r,o){i&&i.m(r,o),t=!0},p(r,o){i&&i.p&&(!t||o&8)&&he(i,n,r,r[3],t?de(n,r[3],o,null):_e(r[3]),null)},i(r){t||(g(i,r),t=!0)},o(r){v(i,r),t=!1},d(r){i&&i.d(r)}}}function Re(e){let t,n,i,r,o=e[0]&&ee(e),u=e[0]&&te(e);return{c(){o&&o.c(),t=P(),n=J(),u&&u.c(),i=P()},m(l,f){o&&o.m(document.head,null),ge(document.head,t),j(l,n,f),u&&u.m(l,f),j(l,i,f),r=!0},p(l,[f]){l[0]?o||(o=ee(l),o.c(),o.m(t.parentNode,t)):o&&(o.d(1),o=null),l[0]?u?(u.p(l,f),f&1&&g(u,1)):(u=te(l),u.c(),g(u,1),u.m(i.parentNode,i)):u&&(B(),v(u,1,1,()=>{u=null}),D())},i(l){r||(g(u),r=!0)},o(l){v(u),r=!1},d(l){l&&(b(n),b(i)),o&&o.d(l),b(t),u&&u.d(l)}}}function Ce(e,t,n){let{$$slots:i={},$$scope:r}=t,{routes:o}=t,{restrictions:u}=t;function l(s){n(0,f=s)}let f=fe({routes:o,restrictions:u,onRouteChanged:l,rewriteInvalid:!0});return e.$$set=s=>{"routes"in s&&n(1,o=s.routes),"restrictions"in s&&n(2,u=s.restrictions),"$$scope"in s&&n(3,r=s.$$scope)},[f,o,u,r,i]}class Se extends $e{constructor(t){super(),be(this,t,Ce,Re,le,{routes:1,restrictions:2})}}let m,L;c.currRoute=void 0;function O(e,t){let n=m[Object.keys(m).find(i=>i===e)||Object.keys(m)[0]];return n.data=t,n}function ie(e,t){let n=null,i=null,r=!1;for(let o of Object.keys(m))if(n=m[o],n&&e===n.path){i=o;break}return(!i||!n)&&(i=Object.keys(m)[0],n=m[i],r=!0),n.data=t,{route:n,key:i,invalid:r}}function oe(e,t){function n(i){i.preventDefault(),i.stopPropagation(),window.dispatchEvent(new CustomEvent("routing-url-changed",{detail:{url:e.href,data:t}}))}return e.addEventListener("click",n),{destroy(){e.removeEventListener("click",n)}}}function je(e,t){function n(i){if(i.preventDefault(),i.stopPropagation(),!t)throw new Error("No route info given");typeof t=="string"?window.dispatchEvent(new CustomEvent("routing-changed",{detail:{key:t,changeState:"push"}})):window.dispatchEvent(new CustomEvent("routing-changed",{detail:{...t,changeState:"push"}}))}return e.addEventListener("click",n),{destroy(){e.removeEventListener("click",n)}}}function Ne(e,t){A(typeof e=="string"?{key:e}:e,t===void 0?"push":t)}function Le(){window.history.forward(),A({key:window.history.state})}function Oe(){window.history.back(),A({key:window.history.state})}function A(e,t){window.dispatchEvent(new CustomEvent("routing-changed",{detail:{changeState:t,...e}}))}function re(e){var t;if(console.log("Checking restrictions for "+e.title),!L)return!1;for(let n of Object.keys(L))if((t=e.restrictions)!=null&&t.includes(n)){const i=L[n](e);if(i)return i}return!1}function ue(e,t){const n=re(t);return n?{route:O(n,t.data),key:n}:{key:e,route:t}}function fe(e){function t({detail:{key:d,data:a,changeState:p}}){r(d,O(d,a),p)}function n({detail:{url:d,data:a,changeState:p}}){const k=ie(d,a);r(k.key,k.route,p)}function i({state:{key:d,data:a}}){r(d,O(d,a))}function r(d,a,p){const{key:k,route:y}=ue(d,a);e.onRouteChanged(y),c.currRoute=y,p&&window.history[`${p}State`]({key:k,data:y.data},y.title,y.path)}window.addEventListener("routing-changed",t),window.addEventListener("routing-url-changed",n),window.addEventListener("popstate",i),h.onDestroy(()=>{window.removeEventListener("routing-changed",t),window.removeEventListener("routing-url-changed",n),window.removeEventListener("popstate",i)}),m=e.routes,L=e.restrictions;const o=ie(window.location.pathname);let u={...ue(o.key,o.route),invalid:o.invalid,prev:o.key};e.onInvalidRoute&&o.invalid&&(u={...u,key:e.onInvalidRoute,route:O(e.onInvalidRoute),prev:o.key});const{key:l,route:f,prev:s}=u;return window.history.replaceState({key:l,data:f.data,prev:s},f.title,f.path),f}c.Router=Se,c.createRouter=fe,c.default=oe,c.goNext=Le,c.goPrev=Oe,c.goTo=Ne,c.isRouteRestricted=re,c.link=oe,c.route=je,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});