aberdeen 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/route.js +15 -5
- package/dist/route.js.map +1 -1
- package/dist-min/route.js +1 -1
- package/dist-min/route.js.map +1 -1
- package/package.json +1 -1
- package/src/route.ts +15 -5
package/dist/route.js
CHANGED
|
@@ -45,15 +45,24 @@ window.addEventListener("popstate", handleLocationUpdate);
|
|
|
45
45
|
// We want to to this immediately, so that user-code running immediately after a user-code
|
|
46
46
|
// initiated `set` will see the canonical form (instead of doing a rerender shortly after,
|
|
47
47
|
// or crashing due to non-canonical data).
|
|
48
|
-
|
|
49
|
-
let path =
|
|
48
|
+
function updatePath() {
|
|
49
|
+
let path = route.get('path');
|
|
50
|
+
if (path == null && route.peek('p')) {
|
|
51
|
+
return updateP();
|
|
52
|
+
}
|
|
53
|
+
path = '' + path;
|
|
50
54
|
if (!path.startsWith('/'))
|
|
51
55
|
path = '/' + path;
|
|
52
56
|
route.set('path', path);
|
|
53
57
|
route.set('p', path.slice(1).split('/'));
|
|
54
|
-
}
|
|
55
|
-
immediateObserve(
|
|
58
|
+
}
|
|
59
|
+
immediateObserve(updatePath);
|
|
60
|
+
function updateP() {
|
|
56
61
|
const p = route.get('p');
|
|
62
|
+
console.log('imm p', p);
|
|
63
|
+
if (p == null && route.peek('path')) {
|
|
64
|
+
return updatePath();
|
|
65
|
+
}
|
|
57
66
|
if (!(p instanceof Array)) {
|
|
58
67
|
console.error(`aberdeen route: 'p' must be a non-empty array, not ${JSON.stringify(p)}`);
|
|
59
68
|
route.set('p', ['']); // This will cause a recursive call this observer.
|
|
@@ -64,7 +73,8 @@ immediateObserve(() => {
|
|
|
64
73
|
else {
|
|
65
74
|
route.set('path', '/' + p.join('/'));
|
|
66
75
|
}
|
|
67
|
-
}
|
|
76
|
+
}
|
|
77
|
+
immediateObserve(updateP);
|
|
68
78
|
immediateObserve(() => {
|
|
69
79
|
if (route.getType('search') !== 'object')
|
|
70
80
|
route.set('search', {});
|
package/dist/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAC,MAAM,UAAU,CAAA;AAEzE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;AAEhC,kGAAkG;AAClG,oFAAoF;AACpF,IAAI,KAAK,GAAwC,EAAE,CAAA;AAEnD,iGAAiG;AACjG,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;AAE5C,6FAA6F;AAC7F,gFAAgF;AAChF,IAAI,gBAAqB,CAAA;AAEzB,2FAA2F;AAC3F,SAAS,oBAAoB,CAAC,KAAqB;IAClD,MAAM,MAAM,GAAO,EAAE,CAAA;IACrB,KAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QACvD,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;KACb;IACD,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACnD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC,CAAA;IACrE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAC,CAAC,CAAC,GAAG,EAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAC,CAAA;IAC3F,KAAK,CAAC,GAAG,CAAC;QACT,IAAI,EAAE,QAAQ,CAAC,QAAQ;QACvB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACxC,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,gBAAgB;KACvB,CAAC,CAAA;AACH,CAAC;AACD,oBAAoB,EAAE,CAAA;AACtB,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;AAE1D,yFAAyF;AACzF,0FAA0F;AAC1F,0FAA0F;AAC1F,0CAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
|
package/dist-min/route.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Store as t,observe as e,immediateObserve as o,inhibitEffects as r}from"aberdeen";export const route=new t;let a=[];const s=history.length;let
|
|
1
|
+
import{Store as t,observe as e,immediateObserve as o,inhibitEffects as r}from"aberdeen";export const route=new t;let a=[];const s=history.length;let u;function n(t){const e={};for(let[t,o]of new URLSearchParams(location.search))e[t]=o;u=t&&t.state||{},a.length=Math.max(1,history.length-s+1),a[a.length-1]={url:location.pathname+location.search,state:u},route.set({path:location.pathname,p:location.pathname.slice(1).split("/"),search:e,hash:location.hash,state:u})}function c(){let t=route.get("path");if(null==t&&route.peek("p"))return h();t=""+t,t.startsWith("/")||(t="/"+t),route.set("path",t),route.set("p",t.slice(1).split("/"))}function h(){const t=route.get("p");if(console.log("imm p",t),null==t&&route.peek("path"))return c();t instanceof Array?0==t.length?route.set("p",[""]):route.set("path","/"+t.join("/")):(console.error(`aberdeen route: 'p' must be a non-empty array, not ${JSON.stringify(t)}`),route.set("p",[""]))}n(),window.addEventListener("popstate",n),o(c),o(h),o((()=>{"object"!==route.getType("search")&&route.set("search",{})})),o((()=>{"object"!==route.getType("state")&&route.set("state",{})})),o((()=>{let t=""+(route.get("hash")||"");t&&!t.startsWith("#")&&(t="#"+t),route.set("hash",t)})),e((()=>{const t=route.get("mode");t&&r((()=>route.delete("mode")));const e=route.get("state"),o=route.get("path"),s=new URLSearchParams(route.get("search")).toString(),n=(s?o+"?"+s:o)+route.get("hash");if("back"===t){let t=0;for(;a.length>1;){const o=a[a.length-1];if(o.url===n&&JSON.stringify(Object.keys(e||{}))===JSON.stringify(Object.keys(o.state||{})))break;t--,a.pop()}t&&history.go(t),setTimeout((()=>history.replaceState(e,"",n)),0),a[a.length-1]={url:n,state:e}}else"push"!==t&&(t||location.pathname===o&&JSON.stringify(Object.keys(e||{}))===JSON.stringify(Object.keys(u||{})))?(history.replaceState(e,"",n),a[a.length-1]={url:n,state:e}):(history.pushState(e,"",n),a.push({url:n,state:e}));u=e}));
|
|
2
2
|
//# sourceMappingURL=route.js.map
|
package/dist-min/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Store","observe","immediateObserve","inhibitEffects","route","stack","initialHistoryLength","history","length","prevHistoryState","handleLocationUpdate","event","search","k","v","URLSearchParams","location","state","Math","max","url","pathname","set","path","p","slice","split","hash","
|
|
1
|
+
{"version":3,"names":["Store","observe","immediateObserve","inhibitEffects","route","stack","initialHistoryLength","history","length","prevHistoryState","handleLocationUpdate","event","search","k","v","URLSearchParams","location","state","Math","max","url","pathname","set","path","p","slice","split","hash","updatePath","get","peek","updateP","startsWith","console","log","Array","join","error","JSON","stringify","window","addEventListener","getType","mode","delete","toString","goDelta","item","Object","keys","pop","go","setTimeout","replaceState","pushState","push"],"sources":["../src/route.ts"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aberdeen",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "A TypeScript/JavaScript library for quickly building performant declarative user interfaces without the use of a virtual DOM nor any transpilation.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist-min/aberdeen.js",
|
package/src/route.ts
CHANGED
|
@@ -51,15 +51,24 @@ window.addEventListener("popstate", handleLocationUpdate);
|
|
|
51
51
|
// We want to to this immediately, so that user-code running immediately after a user-code
|
|
52
52
|
// initiated `set` will see the canonical form (instead of doing a rerender shortly after,
|
|
53
53
|
// or crashing due to non-canonical data).
|
|
54
|
-
|
|
55
|
-
let path =
|
|
54
|
+
function updatePath(): void {
|
|
55
|
+
let path = route.get('path')
|
|
56
|
+
if (path == null && route.peek('p')) {
|
|
57
|
+
return updateP();
|
|
58
|
+
}
|
|
59
|
+
path = ''+path
|
|
56
60
|
if (!path.startsWith('/')) path = '/'+path
|
|
57
61
|
route.set('path', path)
|
|
58
62
|
route.set('p', path.slice(1).split('/'))
|
|
59
|
-
}
|
|
63
|
+
}
|
|
64
|
+
immediateObserve(updatePath)
|
|
60
65
|
|
|
61
|
-
|
|
66
|
+
function updateP(): void {
|
|
62
67
|
const p = route.get('p')
|
|
68
|
+
console.log('imm p', p)
|
|
69
|
+
if (p == null && route.peek('path')) {
|
|
70
|
+
return updatePath()
|
|
71
|
+
}
|
|
63
72
|
if (!(p instanceof Array)) {
|
|
64
73
|
console.error(`aberdeen route: 'p' must be a non-empty array, not ${JSON.stringify(p)}`)
|
|
65
74
|
route.set('p', ['']) // This will cause a recursive call this observer.
|
|
@@ -68,7 +77,8 @@ immediateObserve(() => {
|
|
|
68
77
|
} else {
|
|
69
78
|
route.set('path', '/' + p.join('/'))
|
|
70
79
|
}
|
|
71
|
-
}
|
|
80
|
+
}
|
|
81
|
+
immediateObserve(updateP)
|
|
72
82
|
|
|
73
83
|
immediateObserve(() => {
|
|
74
84
|
if (route.getType('search') !== 'object') route.set('search', {})
|