@typed/navigation 0.3.5 → 0.4.0
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/DOM.d.ts.map +1 -1
- package/dist/DOM.js +11 -13
- package/dist/DOM.js.map +1 -1
- package/dist/cjs/DOM.d.ts.map +1 -1
- package/dist/cjs/DOM.js +10 -12
- package/dist/cjs/DOM.js.map +1 -1
- package/dist/cjs/dom-intent.d.ts +8 -9
- package/dist/cjs/dom-intent.d.ts.map +1 -1
- package/dist/cjs/dom-intent.js +17 -18
- package/dist/cjs/dom-intent.js.map +1 -1
- package/dist/cjs/history.d.ts +1 -1
- package/dist/cjs/history.d.ts.map +1 -1
- package/dist/cjs/history.js +36 -23
- package/dist/cjs/history.js.map +1 -1
- package/dist/cjs/memory-intent.d.ts +6 -7
- package/dist/cjs/memory-intent.d.ts.map +1 -1
- package/dist/cjs/memory-intent.js +8 -1
- package/dist/cjs/memory-intent.js.map +1 -1
- package/dist/cjs/shared-intent.d.ts +2 -3
- package/dist/cjs/shared-intent.d.ts.map +1 -1
- package/dist/cjs/shared-intent.js.map +1 -1
- package/dist/cjs/storage.js +1 -1
- package/dist/cjs/storage.js.map +1 -1
- package/dist/dom-intent.d.ts +8 -9
- package/dist/dom-intent.d.ts.map +1 -1
- package/dist/dom-intent.js +18 -19
- package/dist/dom-intent.js.map +1 -1
- package/dist/history.d.ts +1 -1
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +36 -23
- package/dist/history.js.map +1 -1
- package/dist/memory-intent.d.ts +6 -7
- package/dist/memory-intent.d.ts.map +1 -1
- package/dist/memory-intent.js +8 -1
- package/dist/memory-intent.js.map +1 -1
- package/dist/shared-intent.d.ts +2 -3
- package/dist/shared-intent.d.ts.map +1 -1
- package/dist/shared-intent.js.map +1 -1
- package/dist/storage.js +1 -1
- package/dist/storage.js.map +1 -1
- package/dist/tsconfig.cjs.build.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/project.json +3 -0
- package/src/DOM.test.ts +1 -4
- package/src/DOM.ts +18 -21
- package/src/dom-intent.ts +29 -37
- package/src/history.ts +43 -23
- package/src/memory-intent.ts +9 -6
- package/src/shared-intent.ts +2 -5
- package/src/storage.ts +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/src/constant.ts +0 -5
- /package/{vite.config.js → vite.config.mjs} +0 -0
package/dist/DOM.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../src/DOM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG5F,OAAO,EAAe,cAAc,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../src/DOM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG5F,OAAO,EAAe,cAAc,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;AAM1F,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjF,MAAM,WAAW,oBAAoB;IAGnC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAA;IAIpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,GAAG,aACL,oBAAoB,KAC5B,WAAW,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAuHnD,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,UAQ/C;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,GAAG,UAEtF"}
|
package/dist/DOM.js
CHANGED
|
@@ -2,7 +2,7 @@ import { pipe } from '@effect/data/Function';
|
|
|
2
2
|
import * as Option from '@effect/data/Option';
|
|
3
3
|
import * as Effect from '@effect/io/Effect';
|
|
4
4
|
import * as Context from '@typed/context';
|
|
5
|
-
import {
|
|
5
|
+
import { addWindowListener, Document } from '@typed/dom';
|
|
6
6
|
import * as Fx from '@typed/fx';
|
|
7
7
|
import { Navigation } from './Navigation.js';
|
|
8
8
|
import { makeIntent } from './dom-intent.js';
|
|
@@ -13,14 +13,15 @@ export const dom = (options = {}) => {
|
|
|
13
13
|
return Navigation.layerScoped(Effect.gen(function* ($) {
|
|
14
14
|
// Get resources
|
|
15
15
|
const context = yield* $(Effect.context());
|
|
16
|
-
const history = Context.get(context, History);
|
|
17
16
|
const document = Context.get(context, Document);
|
|
18
17
|
const base = document.querySelector('base');
|
|
19
18
|
const baseHref = base ? getBasePathFromHref(base.href) : '/';
|
|
19
|
+
// Patch History API to enable sending events
|
|
20
|
+
const [history, historyEvents] = yield* $(patchHistory);
|
|
20
21
|
// Create model and intent
|
|
21
22
|
const [initialEntries, initialIndex] = yield* $(getInitialValues(baseHref, options));
|
|
22
23
|
const model = yield* $(makeModel(initialEntries, initialIndex));
|
|
23
|
-
const intent = makeIntent(model, baseHref, options);
|
|
24
|
+
const intent = makeIntent(model, baseHref, history, options);
|
|
24
25
|
// Used to ensure ordering of navigation events
|
|
25
26
|
const lock = Effect.unsafeMakeSemaphore(1).withPermits(1);
|
|
26
27
|
const handleNavigationError = (depth) => (error) => Effect.provideContext(Effect.gen(function* ($) {
|
|
@@ -53,24 +54,21 @@ export const dom = (options = {}) => {
|
|
|
53
54
|
onNavigationEnd: (handler, options) => Effect.asUnit(intent.onNavigationEnd(handler, options)),
|
|
54
55
|
reload: provideLocked(catchNavigationError(intent.reload)),
|
|
55
56
|
};
|
|
56
|
-
// Patch History API to enable sending events
|
|
57
|
-
const historyEvents = yield* $(patchHistory);
|
|
58
57
|
// Listen to various events and update our model
|
|
59
58
|
yield* $(Fx.mergeAll(
|
|
60
59
|
// Listen to history events and keep track of entries
|
|
61
|
-
pipe(historyEvents, Fx.
|
|
60
|
+
pipe(historyEvents, Fx.mapEffect((event) => lock(onHistoryEvent(event, intent)))),
|
|
62
61
|
// Listen to hash changes and push them to the history
|
|
63
|
-
pipe(addWindowListener('hashchange', { capture: true }), Fx.
|
|
62
|
+
pipe(addWindowListener('hashchange', { capture: true }), Fx.mapEffect((ev) => lock(intent.push(ev.newURL, { state: history.state }, true)))),
|
|
64
63
|
// Listen to popstate events and go to the correct entry
|
|
65
|
-
pipe(addWindowListener('popstate'), Fx.
|
|
64
|
+
pipe(addWindowListener('popstate'), Fx.mapEffect(Effect.unifiedFn((ev) => {
|
|
66
65
|
// TODO: Should we throw some kind of error here?
|
|
67
66
|
// This should never happen if you are solely using the Navigation Service
|
|
68
|
-
if (!ev.state || !ev.state.
|
|
69
|
-
return
|
|
67
|
+
if (!ev.state || !ev.state.key) {
|
|
68
|
+
return lock(intent.push(location.href, { state: history.state }, true));
|
|
70
69
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}), Fx.compact, Fx.flattenEffect)), Fx.drain, Effect.forkScoped);
|
|
70
|
+
return lock(intent.goTo(ev.state.key));
|
|
71
|
+
})))), Fx.drain, Effect.forkScoped);
|
|
74
72
|
return navigation;
|
|
75
73
|
}));
|
|
76
74
|
};
|
package/dist/DOM.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DOM.js","sourceRoot":"","sources":["../src/DOM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAE7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"DOM.js","sourceRoot":"","sources":["../src/DOM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAE7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAsC,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC5F,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAE/B,OAAO,EAA+B,UAAU,EAAmB,MAAM,iBAAiB,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAc/C,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,UAAgC,EAAE,EACkB,EAAE;IACtD,OAAO,UAAU,CAAC,WAAW,CAC3B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,gBAAgB;QAChB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAsB,CAAC,CAAA;QAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QAE5D,6CAA6C;QAC7C,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;QAEvD,0BAA0B;QAC1B,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;QAEpF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAA;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAE5D,+CAA+C;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;QAEzD,MAAM,qBAAqB,GACzB,CAAC,KAAa,EAAE,EAAE,CAClB,CACE,KAAqD,EACX,EAAE,CAC5C,MAAM,CAAC,cAAc,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,IAAI,EAAE,EAAE;gBACf,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAA;aACF;YAED,QAAQ,KAAK,CAAC,IAAI,EAAE;gBAClB,KAAK,wBAAwB,CAAC;gBAC9B,KAAK,kBAAkB;oBACrB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;gBACzC,KAAK,oBAAoB;oBACvB,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,MAAM,CAAC,QAAQ,CACb,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EACjC,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC,CACjC,CACF,CAAA;aACJ;QACH,CAAC,CAAC,EACF,OAAO,CACR,CAAA;QAEL,MAAM,oBAAoB,GAAG,CAC3B,MAA2E,EAC3E,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAA;QAEtD,2DAA2D;QAC3D,MAAM,aAAa,GAAG,CAAO,MAA+C,EAAE,EAAE,CAC9E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;QAE9C,0BAA0B;QAC1B,MAAM,UAAU,GAAe;YAC7B,IAAI,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACnE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CACV,IAAI,CACF,CAAC,EACD,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAClF,aAAa,CACd;YACH,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,aAAa,CAAC;YAC1E,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACjC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC;YAClF,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,EAAE,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3D,CAAA;QAED,gDAAgD;QAChD,KAAK,CAAC,CAAC,CAAC,CACN,EAAE,CAAC,QAAQ;QACT,qDAAqD;QACrD,IAAI,CACF,aAAa,EACb,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAC7D;QACD,sDAAsD;QACtD,IAAI,CACF,iBAAiB,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAClD,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CACnF;QACD,wDAAwD;QACxD,IAAI,CACF,iBAAiB,CAAC,UAAU,CAAC,EAC7B,EAAE,CAAC,SAAS,CACV,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE;YACtB,iDAAiD;YACjD,0EAA0E;YAC1E,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;aACxE;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QACxC,CAAC,CAAC,CACH,CACF,CACF,EACD,EAAE,CAAC,KAAK,EACR,MAAM,CAAC,UAAU,CAClB,CAAA;QAED,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CACH,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;QAEzB,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAA;KACvC;IAAC,MAAM;QACN,OAAO,IAAI,CAAA;KACZ;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAA4C;IACrF,OAAO,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAA;AAC5D,CAAC"}
|
package/dist/cjs/DOM.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG5F,OAAO,EAAe,cAAc,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"DOM.d.ts","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAqB,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG5F,OAAO,EAAe,cAAc,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;AAM1F,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjF,MAAM,WAAW,oBAAoB;IAGnC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAA;IAIpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,eAAO,MAAM,GAAG,aACL,oBAAoB,KAC5B,WAAW,CAAC,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAuHnD,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,UAQ/C;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,GAAG,UAEtF"}
|
package/dist/cjs/DOM.js
CHANGED
|
@@ -39,14 +39,15 @@ const dom = (options = {}) => {
|
|
|
39
39
|
return Navigation_js_1.Navigation.layerScoped(Effect.gen(function* ($) {
|
|
40
40
|
// Get resources
|
|
41
41
|
const context = yield* $(Effect.context());
|
|
42
|
-
const history = Context.get(context, dom_1.History);
|
|
43
42
|
const document = Context.get(context, dom_1.Document);
|
|
44
43
|
const base = document.querySelector('base');
|
|
45
44
|
const baseHref = base ? getBasePathFromHref(base.href) : '/';
|
|
45
|
+
// Patch History API to enable sending events
|
|
46
|
+
const [history, historyEvents] = yield* $(history_js_1.patchHistory);
|
|
46
47
|
// Create model and intent
|
|
47
48
|
const [initialEntries, initialIndex] = yield* $((0, storage_js_1.getInitialValues)(baseHref, options));
|
|
48
49
|
const model = yield* $((0, model_js_1.makeModel)(initialEntries, initialIndex));
|
|
49
|
-
const intent = (0, dom_intent_js_1.makeIntent)(model, baseHref, options);
|
|
50
|
+
const intent = (0, dom_intent_js_1.makeIntent)(model, baseHref, history, options);
|
|
50
51
|
// Used to ensure ordering of navigation events
|
|
51
52
|
const lock = Effect.unsafeMakeSemaphore(1).withPermits(1);
|
|
52
53
|
const handleNavigationError = (depth) => (error) => Effect.provideContext(Effect.gen(function* ($) {
|
|
@@ -79,24 +80,21 @@ const dom = (options = {}) => {
|
|
|
79
80
|
onNavigationEnd: (handler, options) => Effect.asUnit(intent.onNavigationEnd(handler, options)),
|
|
80
81
|
reload: provideLocked(catchNavigationError(intent.reload)),
|
|
81
82
|
};
|
|
82
|
-
// Patch History API to enable sending events
|
|
83
|
-
const historyEvents = yield* $(history_js_1.patchHistory);
|
|
84
83
|
// Listen to various events and update our model
|
|
85
84
|
yield* $(Fx.mergeAll(
|
|
86
85
|
// Listen to history events and keep track of entries
|
|
87
|
-
(0, Function_1.pipe)(historyEvents, Fx.
|
|
86
|
+
(0, Function_1.pipe)(historyEvents, Fx.mapEffect((event) => lock((0, history_js_1.onHistoryEvent)(event, intent)))),
|
|
88
87
|
// Listen to hash changes and push them to the history
|
|
89
|
-
(0, Function_1.pipe)((0, dom_1.addWindowListener)('hashchange', { capture: true }), Fx.
|
|
88
|
+
(0, Function_1.pipe)((0, dom_1.addWindowListener)('hashchange', { capture: true }), Fx.mapEffect((ev) => lock(intent.push(ev.newURL, { state: history.state }, true)))),
|
|
90
89
|
// Listen to popstate events and go to the correct entry
|
|
91
|
-
(0, Function_1.pipe)((0, dom_1.addWindowListener)('popstate'), Fx.
|
|
90
|
+
(0, Function_1.pipe)((0, dom_1.addWindowListener)('popstate'), Fx.mapEffect(Effect.unifiedFn((ev) => {
|
|
92
91
|
// TODO: Should we throw some kind of error here?
|
|
93
92
|
// This should never happen if you are solely using the Navigation Service
|
|
94
|
-
if (!ev.state || !ev.state.
|
|
95
|
-
return
|
|
93
|
+
if (!ev.state || !ev.state.key) {
|
|
94
|
+
return lock(intent.push(location.href, { state: history.state }, true));
|
|
96
95
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}), Fx.compact, Fx.flattenEffect)), Fx.drain, Effect.forkScoped);
|
|
96
|
+
return lock(intent.goTo(ev.state.key));
|
|
97
|
+
})))), Fx.drain, Effect.forkScoped);
|
|
100
98
|
return navigation;
|
|
101
99
|
}));
|
|
102
100
|
};
|
package/dist/cjs/DOM.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DOM.js","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4C;AAC5C,4DAA6C;AAE7C,0DAA2C;AAE3C,wDAAyC;AACzC,oCAA4F;AAC5F,8CAA+B;AAE/B,mDAA0F;AAC1F,mDAA4C;AAC5C,6CAA2D;
|
|
1
|
+
{"version":3,"file":"DOM.js","sourceRoot":"","sources":["../../src/DOM.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/dom-intent.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Option } from '@effect/data/Option';
|
|
2
|
-
import * as Cause from '@effect/io/Cause';
|
|
3
2
|
import * as Effect from '@effect/io/Effect';
|
|
4
|
-
import {
|
|
3
|
+
import { Location } from '@typed/dom';
|
|
5
4
|
import type { DomNavigationOptions } from './DOM.js';
|
|
6
5
|
import { Destination, NavigateOptions, NavigationError, NavigationEvent } from './Navigation.js';
|
|
7
6
|
import { Model } from './model.js';
|
|
@@ -14,16 +13,16 @@ export type DomIntent = {
|
|
|
14
13
|
readonly navigate: (url: string, options?: NavigateOptions) => ReturnType<ReturnType<typeof makePush | typeof makeReplace>>;
|
|
15
14
|
readonly notify: Notify;
|
|
16
15
|
readonly go: ReturnType<typeof makeGo>;
|
|
17
|
-
readonly goTo: (key: string) => Effect.Effect<Storage | History,
|
|
16
|
+
readonly goTo: (key: string) => Effect.Effect<Storage | History, NavigationError, Option<Destination>>;
|
|
18
17
|
readonly reload: ReturnType<typeof makeReload>;
|
|
19
18
|
readonly onNavigation: ReturnType<typeof makeOnNavigation>;
|
|
20
19
|
readonly onNavigationEnd: ReturnType<typeof makeOnNavigationEnd>;
|
|
21
20
|
};
|
|
22
|
-
export declare const makeIntent: (model: Model, base: string, options: DomNavigationOptions) => DomIntent;
|
|
21
|
+
export declare const makeIntent: (model: Model, base: string, history: History, options: DomNavigationOptions) => DomIntent;
|
|
23
22
|
export type Intent = ReturnType<typeof makeIntent>;
|
|
24
|
-
export declare const makeSave: (model: Model) => (event: NavigationEvent) => Effect.Effect<Storage,
|
|
25
|
-
export declare const makeReload: (model: Model, notify: Notify, save: Save<Storage>) => Effect.Effect<
|
|
26
|
-
export declare const makeReplace: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage>, base: string) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<
|
|
27
|
-
export declare const makePush: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage>, base: string, maxEntries: number) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<
|
|
28
|
-
export declare const makeGo: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage
|
|
23
|
+
export declare const makeSave: (model: Model) => (event: NavigationEvent) => Effect.Effect<Storage, never, void>;
|
|
24
|
+
export declare const makeReload: (model: Model, notify: Notify, save: Save<Storage>) => Effect.Effect<Location | Storage, NavigationError, Destination>;
|
|
25
|
+
export declare const makeReplace: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage>, history: History, base: string) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<Location | Storage, NavigationError, Destination>;
|
|
26
|
+
export declare const makePush: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage>, base: string, history: History, maxEntries: number) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<Location | Storage, NavigationError, Destination>;
|
|
27
|
+
export declare const makeGo: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage>, history: History) => (delta: number, skipHistory?: boolean) => Effect.Effect<Storage, NavigationError, Destination>;
|
|
29
28
|
//# sourceMappingURL=dom-intent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-intent.d.ts","sourceRoot":"","sources":["../../src/dom-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"dom-intent.d.ts","sourceRoot":"","sources":["../../src/dom-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EACL,MAAM,EACN,SAAS,EACT,IAAI,EAIJ,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAO3B,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,UAAU,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAA;IAE9E,QAAQ,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,UAAU,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAA;IAEjF,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IAEhD,QAAQ,CAAC,QAAQ,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,KACtB,UAAU,CAAC,UAAU,CAAC,OAAO,QAAQ,GAAG,OAAO,WAAW,CAAC,CAAC,CAAA;IAEjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAA;IAEtC,QAAQ,CAAC,IAAI,EAAE,CACb,GAAG,EAAE,MAAM,KACR,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE3E,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IAE9C,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;IAE1D,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;CACjE,CAAA;AAED,eAAO,MAAM,UAAU,UACd,KAAK,QACN,MAAM,WACH,OAAO,WACP,oBAAoB,KAC5B,SAuBF,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,QAAQ,UACX,KAAK,aACL,eAAe,KAAG,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAgBxD,CAAA;AAEN,eAAO,MAAM,UAAU,UAAW,KAAK,UAAU,MAAM,QAAQ,KAAK,OAAO,CAAC,oEAexE,CAAA;AAEJ,eAAO,MAAM,WAAW,UAEb,KAAK,UACJ,MAAM,aACH,SAAS,QACd,KAAK,OAAO,CAAC,WACV,OAAO,QACV,MAAM,WAER,MAAM,YAAW,eAAe,2FAmClC,CAAA;AAEN,eAAO,MAAM,QAAQ,UAEV,KAAK,UACJ,MAAM,aACH,SAAS,QACd,KAAK,OAAO,CAAC,QACb,MAAM,WACH,OAAO,cACJ,MAAM,WAEd,MAAM,YAAW,eAAe,2FA+ClC,CAAA;AAEN,eAAO,MAAM,MAAM,UACT,KAAK,UAAU,MAAM,aAAa,SAAS,QAAQ,KAAK,OAAO,CAAC,WAAW,OAAO,aAClF,MAAM,gFAiCV,CAAA"}
|
package/dist/cjs/dom-intent.js
CHANGED
|
@@ -27,21 +27,19 @@ exports.makeGo = exports.makePush = exports.makeReplace = exports.makeReload = e
|
|
|
27
27
|
const Effect = __importStar(require("@effect/io/Effect"));
|
|
28
28
|
const dom_1 = require("@typed/dom");
|
|
29
29
|
const Navigation_js_1 = require("./Navigation.js");
|
|
30
|
-
const constant_js_1 = require("./constant.js");
|
|
31
|
-
const json_js_1 = require("./json.js");
|
|
32
30
|
const shared_intent_js_1 = require("./shared-intent.js");
|
|
33
31
|
const storage_js_1 = require("./storage.js");
|
|
34
32
|
const util_js_1 = require("./util.js");
|
|
35
33
|
// Roughly the number of History entries in a browser anyways
|
|
36
34
|
const DEFAULT_MAX_ENTRIES = 50;
|
|
37
|
-
const makeIntent = (model, base, options) => {
|
|
35
|
+
const makeIntent = (model, base, history, options) => {
|
|
38
36
|
const maxEntries = Math.abs(options.maxEntries ?? DEFAULT_MAX_ENTRIES);
|
|
39
37
|
const notify = (0, shared_intent_js_1.makeNotify)(model);
|
|
40
38
|
const notifyEnd = (0, shared_intent_js_1.makeNotifyEnd)(model);
|
|
41
39
|
const save = (0, exports.makeSave)(model);
|
|
42
|
-
const go = (0, exports.makeGo)(model, notify, notifyEnd, save);
|
|
43
|
-
const replace = (0, exports.makeReplace)(model, notify, notifyEnd, save, base);
|
|
44
|
-
const push = (0, exports.makePush)(model, notify, notifyEnd, save, base, maxEntries);
|
|
40
|
+
const go = (0, exports.makeGo)(model, notify, notifyEnd, save, history);
|
|
41
|
+
const replace = (0, exports.makeReplace)(model, notify, notifyEnd, save, history, base);
|
|
42
|
+
const push = (0, exports.makePush)(model, notify, notifyEnd, save, base, history, maxEntries);
|
|
45
43
|
return {
|
|
46
44
|
back: (skipHistory) => go(-1, skipHistory),
|
|
47
45
|
forward: (skipHistory) => go(1, skipHistory),
|
|
@@ -82,7 +80,7 @@ const makeReload = (model, notify, save) => Effect.gen(function* ($) {
|
|
|
82
80
|
return event.destination;
|
|
83
81
|
});
|
|
84
82
|
exports.makeReload = makeReload;
|
|
85
|
-
const makeReplace = (model, notify, notifyEnd, save, base) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
|
|
83
|
+
const makeReplace = (model, notify, notifyEnd, save, history, base) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
|
|
86
84
|
const location = yield* $(dom_1.Location);
|
|
87
85
|
const entry = yield* $(model.currentEntry.get);
|
|
88
86
|
const destination = {
|
|
@@ -97,8 +95,7 @@ const makeReplace = (model, notify, notifyEnd, save, base) => (url, options = {}
|
|
|
97
95
|
};
|
|
98
96
|
yield* $(notify(event));
|
|
99
97
|
if (!skipHistory) {
|
|
100
|
-
|
|
101
|
-
history.replaceState.call(constant_js_1.ServiceId, { state: options.state, event: (0, json_js_1.encodeEvent)(event) }, '', url);
|
|
98
|
+
history.replaceState({ key: destination.key, state: options.state }, '', url);
|
|
102
99
|
}
|
|
103
100
|
const currentIndex = yield* $(model.index);
|
|
104
101
|
yield* $(model.events.update((entries) => {
|
|
@@ -111,12 +108,16 @@ const makeReplace = (model, notify, notifyEnd, save, base) => (url, options = {}
|
|
|
111
108
|
return destination;
|
|
112
109
|
});
|
|
113
110
|
exports.makeReplace = makeReplace;
|
|
114
|
-
const makePush = (model, notify, notifyEnd, save, base, maxEntries) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
|
|
111
|
+
const makePush = (model, notify, notifyEnd, save, base, history, maxEntries) => (url, options = {}, skipHistory = false) => Effect.gen(function* ($) {
|
|
115
112
|
const location = yield* $(dom_1.Location);
|
|
116
113
|
const entry = yield* $(model.currentEntry.get);
|
|
114
|
+
const destinationUrl = (0, util_js_1.getUrl)(url, base, location.origin);
|
|
115
|
+
if (entry.url.href === destinationUrl.href) {
|
|
116
|
+
return entry;
|
|
117
|
+
}
|
|
117
118
|
const destination = {
|
|
118
119
|
key: yield* $(util_js_1.createKey),
|
|
119
|
-
url:
|
|
120
|
+
url: destinationUrl,
|
|
120
121
|
state: options.state,
|
|
121
122
|
};
|
|
122
123
|
const event = {
|
|
@@ -127,8 +128,7 @@ const makePush = (model, notify, notifyEnd, save, base, maxEntries) => (url, opt
|
|
|
127
128
|
// Notify event handlers
|
|
128
129
|
yield* $(notify(event));
|
|
129
130
|
if (!skipHistory) {
|
|
130
|
-
|
|
131
|
-
history.pushState.call(constant_js_1.ServiceId, { state: options.state, event: (0, json_js_1.encodeEvent)(event) }, '', url);
|
|
131
|
+
history.pushState({ key: destination.key, state: options.state }, '', url);
|
|
132
132
|
}
|
|
133
133
|
const currentIndex = yield* $(model.index);
|
|
134
134
|
// Remove all entries after the current index
|
|
@@ -139,13 +139,13 @@ const makePush = (model, notify, notifyEnd, save, base, maxEntries) => (url, opt
|
|
|
139
139
|
return updated.slice(-maxEntries);
|
|
140
140
|
}));
|
|
141
141
|
// Update the index to the new destination
|
|
142
|
-
yield* $(model.index.update((i) => i + 1));
|
|
142
|
+
yield* $(model.index.update((i) => Math.min(i + 1, maxEntries)));
|
|
143
143
|
yield* $(save(event));
|
|
144
144
|
yield* $(notifyEnd(event));
|
|
145
145
|
return destination;
|
|
146
146
|
});
|
|
147
147
|
exports.makePush = makePush;
|
|
148
|
-
const makeGo = (model, notify, notifyEnd, save) => (delta, skipHistory = false) => Effect.gen(function* ($) {
|
|
148
|
+
const makeGo = (model, notify, notifyEnd, save, history) => (delta, skipHistory = false) => Effect.gen(function* ($) {
|
|
149
149
|
const currentEntries = yield* $(model.events);
|
|
150
150
|
const totalEntries = currentEntries.length;
|
|
151
151
|
const currentIndex = yield* $(model.index);
|
|
@@ -154,15 +154,14 @@ const makeGo = (model, notify, notifyEnd, save) => (delta, skipHistory = false)
|
|
|
154
154
|
return currentEntries[currentIndex].destination;
|
|
155
155
|
const nextIndex = delta > 0
|
|
156
156
|
? Math.min(currentIndex + delta, totalEntries - 1)
|
|
157
|
-
: Math.max(currentIndex + delta, 0);
|
|
157
|
+
: Math.min(Math.max(currentIndex + delta, 0));
|
|
158
158
|
const nextEntry = currentEntries[nextIndex];
|
|
159
159
|
yield* $(notify({
|
|
160
160
|
...nextEntry,
|
|
161
161
|
navigationType: nextIndex > currentIndex ? Navigation_js_1.NavigationType.Forward : Navigation_js_1.NavigationType.Back,
|
|
162
162
|
}));
|
|
163
163
|
if (!skipHistory) {
|
|
164
|
-
|
|
165
|
-
history.go.call(constant_js_1.ServiceId, delta);
|
|
164
|
+
history.go(delta);
|
|
166
165
|
}
|
|
167
166
|
yield* $(model.index.set(nextIndex));
|
|
168
167
|
yield* $(save(nextEntry));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-intent.js","sourceRoot":"","sources":["../../src/dom-intent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"dom-intent.js","sourceRoot":"","sources":["../../src/dom-intent.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/history.d.ts
CHANGED
|
@@ -26,6 +26,6 @@ export interface BackEvent {
|
|
|
26
26
|
export interface ForwardEvent {
|
|
27
27
|
readonly _tag: 'Forward';
|
|
28
28
|
}
|
|
29
|
-
export declare const patchHistory: Effect.Effect<History | Scope.Scope, never, Fx.Subject<never, HistoryEvent
|
|
29
|
+
export declare const patchHistory: Effect.Effect<History | Scope.Scope, never, readonly [History, Fx.Subject<never, HistoryEvent>]>;
|
|
30
30
|
export declare function onHistoryEvent(event: HistoryEvent, intent: DomIntent): Effect.Effect<History | Location | Storage, Cause.NoSuchElementException | NavigationError, Destination>;
|
|
31
31
|
//# sourceMappingURL=history.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAG3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,WAAW,CAAA;AAE/B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,CAAA;AAElG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CACzB;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CACtC,OAAO,GAAG,KAAK,CAAC,KAAK,EACrB,KAAK,EACL,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAuCnD,CAAA;AA0DF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,SAAS,GAChB,MAAM,CAAC,MAAM,CACd,OAAO,GAAG,QAAQ,GAAG,OAAO,EAC5B,KAAK,CAAC,sBAAsB,GAAG,eAAe,EAC9C,WAAW,CACZ,CAeA"}
|
package/dist/cjs/history.js
CHANGED
|
@@ -29,9 +29,29 @@ const Fiber = __importStar(require("@effect/io/Fiber"));
|
|
|
29
29
|
const Runtime = __importStar(require("@effect/io/Runtime"));
|
|
30
30
|
const dom_1 = require("@typed/dom");
|
|
31
31
|
const Fx = __importStar(require("@typed/fx"));
|
|
32
|
-
const constant_js_1 = require("./constant.js");
|
|
33
32
|
exports.patchHistory = Effect.gen(function* ($) {
|
|
34
33
|
const history = yield* $(dom_1.History);
|
|
34
|
+
const stateDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(history), 'state');
|
|
35
|
+
// Create a clone that always operates on the original history
|
|
36
|
+
const clone = {
|
|
37
|
+
get length() {
|
|
38
|
+
return history.length;
|
|
39
|
+
},
|
|
40
|
+
get scrollRestoration() {
|
|
41
|
+
return history.scrollRestoration;
|
|
42
|
+
},
|
|
43
|
+
set scrollRestoration(value) {
|
|
44
|
+
history.scrollRestoration = value;
|
|
45
|
+
},
|
|
46
|
+
get state() {
|
|
47
|
+
return stateDescriptor?.get?.call(history);
|
|
48
|
+
},
|
|
49
|
+
back: history.back.bind(history),
|
|
50
|
+
forward: history.forward.bind(history),
|
|
51
|
+
go: history.go.bind(history),
|
|
52
|
+
pushState: history.pushState.bind(history),
|
|
53
|
+
replaceState: history.replaceState.bind(history),
|
|
54
|
+
};
|
|
35
55
|
const scope = yield* $(Effect.scope);
|
|
36
56
|
const historyEvents = Fx.makeSubject();
|
|
37
57
|
const runtime = yield* $(Effect.runtime());
|
|
@@ -39,7 +59,7 @@ exports.patchHistory = Effect.gen(function* ($) {
|
|
|
39
59
|
const cleanup = patchHistory_(history, (event) => runFork(Effect.flatMap(Effect.forkIn(historyEvents.event(event), scope), Fiber.join)));
|
|
40
60
|
// unpatch history upon finalization
|
|
41
61
|
yield* $(Effect.addFinalizer(() => Effect.sync(cleanup)));
|
|
42
|
-
return historyEvents;
|
|
62
|
+
return [clone, historyEvents];
|
|
43
63
|
});
|
|
44
64
|
function patchHistory_(history, sendEvent) {
|
|
45
65
|
const pushState = history.pushState;
|
|
@@ -47,43 +67,35 @@ function patchHistory_(history, sendEvent) {
|
|
|
47
67
|
const go = history.go;
|
|
48
68
|
const back = history.back;
|
|
49
69
|
const forward = history.forward;
|
|
50
|
-
history.pushState = function (state,
|
|
51
|
-
|
|
52
|
-
if (url && this !== constant_js_1.ServiceId)
|
|
70
|
+
history.pushState = function (state, _, url) {
|
|
71
|
+
if (url)
|
|
53
72
|
sendEvent({ _tag: 'PushState', state, url: url.toString() });
|
|
54
73
|
};
|
|
55
|
-
history.replaceState = function (state,
|
|
56
|
-
|
|
57
|
-
if (url && this !== constant_js_1.ServiceId)
|
|
74
|
+
history.replaceState = function (state, _, url) {
|
|
75
|
+
if (url)
|
|
58
76
|
sendEvent({ _tag: 'ReplaceState', state, url: url.toString() });
|
|
59
77
|
};
|
|
60
78
|
history.go = function (delta) {
|
|
61
79
|
if (!delta)
|
|
62
80
|
return;
|
|
63
|
-
|
|
64
|
-
if (this !== constant_js_1.ServiceId)
|
|
65
|
-
sendEvent({ _tag: 'Go', delta });
|
|
81
|
+
sendEvent({ _tag: 'Go', delta });
|
|
66
82
|
};
|
|
67
83
|
history.back = function () {
|
|
68
|
-
|
|
69
|
-
if (this !== constant_js_1.ServiceId)
|
|
70
|
-
sendEvent({ _tag: 'Back' });
|
|
84
|
+
sendEvent({ _tag: 'Back' });
|
|
71
85
|
};
|
|
72
86
|
history.forward = function () {
|
|
73
|
-
|
|
74
|
-
if (this !== constant_js_1.ServiceId)
|
|
75
|
-
sendEvent({ _tag: 'Forward' });
|
|
87
|
+
sendEvent({ _tag: 'Forward' });
|
|
76
88
|
};
|
|
77
89
|
const stateDescriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(history), 'state');
|
|
90
|
+
// Override state to always return the original state
|
|
78
91
|
Object.defineProperty(history, 'state', {
|
|
79
|
-
...stateDescriptor,
|
|
80
92
|
get() {
|
|
81
|
-
|
|
93
|
+
const state = stateDescriptor?.get?.call(history);
|
|
94
|
+
if (state && state.key && state.state)
|
|
95
|
+
return state.state;
|
|
96
|
+
return state;
|
|
82
97
|
},
|
|
83
98
|
});
|
|
84
|
-
Object.defineProperty(history, 'originalState', {
|
|
85
|
-
...stateDescriptor,
|
|
86
|
-
});
|
|
87
99
|
// Reset history to original state
|
|
88
100
|
return () => {
|
|
89
101
|
history.pushState = pushState;
|
|
@@ -91,8 +103,9 @@ function patchHistory_(history, sendEvent) {
|
|
|
91
103
|
history.go = go;
|
|
92
104
|
history.back = back;
|
|
93
105
|
history.forward = forward;
|
|
94
|
-
if (stateDescriptor)
|
|
106
|
+
if (stateDescriptor) {
|
|
95
107
|
Object.defineProperty(history, 'state', stateDescriptor);
|
|
108
|
+
}
|
|
96
109
|
};
|
|
97
110
|
}
|
|
98
111
|
function onHistoryEvent(event, intent) {
|
package/dist/cjs/history.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0DAA2C;AAC3C,wDAAyC;AACzC,4DAA6C;AAE7C,oCAAoC;AACpC,8CAA+B;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Option } from '@effect/data/Option';
|
|
2
|
-
import * as Cause from '@effect/io/Cause';
|
|
3
2
|
import * as Effect from '@effect/io/Effect';
|
|
4
3
|
import type { MemoryNavigationOptions } from './Memory.js';
|
|
5
4
|
import { Destination, NavigateOptions, NavigationError, NavigationEvent } from './Navigation.js';
|
|
@@ -13,16 +12,16 @@ export type MemoryIntent = {
|
|
|
13
12
|
readonly navigate: (url: string, options?: NavigateOptions) => ReturnType<ReturnType<typeof makePush | typeof makeReplace>>;
|
|
14
13
|
readonly notify: Notify;
|
|
15
14
|
readonly go: ReturnType<typeof makeGo>;
|
|
16
|
-
readonly goTo: (key: string) => Effect.Effect<never,
|
|
15
|
+
readonly goTo: (key: string) => Effect.Effect<never, NavigationError, Option<Destination>>;
|
|
17
16
|
readonly reload: ReturnType<typeof makeReload>;
|
|
18
17
|
readonly onNavigation: ReturnType<typeof makeOnNavigation>;
|
|
19
18
|
readonly onNavigationEnd: ReturnType<typeof makeOnNavigationEnd>;
|
|
20
19
|
};
|
|
21
20
|
export declare function makeIntent(model: Model, options: MemoryNavigationOptions): MemoryIntent;
|
|
22
21
|
export type Intent = ReturnType<typeof makeIntent>;
|
|
23
|
-
export declare const makeSave: (model: Model) => (event: NavigationEvent) => Effect.Effect<never,
|
|
24
|
-
export declare const makeReload: (model: Model, notify: Notify, save: Save<never>) => Effect.Effect<never, NavigationError
|
|
25
|
-
export declare const makeReplace: (model: Model, notify: Notify, save: Save<never>, base: string, origin: string) => (url: string, options?: NavigateOptions) => Effect.Effect<never, NavigationError
|
|
26
|
-
export declare const makePush: (model: Model, notify: Notify, save: Save<never>, base: string, origin: string, maxEntries: number) => (url: string, options?: NavigateOptions) => Effect.Effect<never, NavigationError
|
|
27
|
-
export declare const makeGo: (model: Model, notify: Notify, save: Save<never>) => (delta: number) => Effect.Effect<never, NavigationError
|
|
22
|
+
export declare const makeSave: (model: Model) => (event: NavigationEvent) => Effect.Effect<never, never, void>;
|
|
23
|
+
export declare const makeReload: (model: Model, notify: Notify, save: Save<never>) => Effect.Effect<never, NavigationError, Destination>;
|
|
24
|
+
export declare const makeReplace: (model: Model, notify: Notify, save: Save<never>, base: string, origin: string) => (url: string, options?: NavigateOptions) => Effect.Effect<never, NavigationError, Destination>;
|
|
25
|
+
export declare const makePush: (model: Model, notify: Notify, save: Save<never>, base: string, origin: string, maxEntries: number) => (url: string, options?: NavigateOptions) => Effect.Effect<never, NavigationError, Destination>;
|
|
26
|
+
export declare const makeGo: (model: Model, notify: Notify, save: Save<never>) => (delta: number) => Effect.Effect<never, NavigationError, Destination>;
|
|
28
27
|
//# sourceMappingURL=memory-intent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-intent.d.ts","sourceRoot":"","sources":["../../src/memory-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"memory-intent.d.ts","sourceRoot":"","sources":["../../src/memory-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,eAAe,EAEhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EACL,MAAM,EACN,IAAI,EAGJ,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAM3B,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAA;IAEpD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC,CAAA;IAEvD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAA;IAE1C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAA;IAEhD,QAAQ,CAAC,QAAQ,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,KACtB,UAAU,CAAC,UAAU,CAAC,OAAO,QAAQ,GAAG,OAAO,WAAW,CAAC,CAAC,CAAA;IAEjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAA;IAEtC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;IAE1F,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;IAE9C,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAA;IAE1D,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAA;CACjE,CAAA;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,uBAAuB,GAAG,YAAY,CAwBvF;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;AAElD,eAAO,MAAM,QAAQ,EAAE,CACrB,KAAK,EAAE,KAAK,KACT,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAc3D,CAAA;AAEN,eAAO,MAAM,UAAU,UAAW,KAAK,UAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,uDAWtE,CAAA;AAEJ,eAAO,MAAM,WAAW,UACd,KAAK,UAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,QAAQ,MAAM,UAAU,MAAM,WACxE,MAAM,YAAW,eAAe,uDA6BlC,CAAA;AAEN,eAAO,MAAM,QAAQ,UAEV,KAAK,UACJ,MAAM,QACR,KAAK,KAAK,CAAC,QACX,MAAM,UACJ,MAAM,cACF,MAAM,WAEd,MAAM,YAAW,eAAe,uDAmClC,CAAA;AAEN,eAAO,MAAM,MAAM,UAAW,KAAK,UAAU,MAAM,QAAQ,KAAK,KAAK,CAAC,aAAa,MAAM,uDA2BrF,CAAA"}
|
|
@@ -139,11 +139,18 @@ const makeGo = (model, notify, save) => (delta) => Effect.gen(function* ($) {
|
|
|
139
139
|
const nextEntry = currentEntries[nextIndex];
|
|
140
140
|
yield* $(notify({
|
|
141
141
|
...nextEntry,
|
|
142
|
-
navigationType:
|
|
142
|
+
navigationType: getNavigationType(currentIndex, nextIndex),
|
|
143
143
|
}));
|
|
144
144
|
yield* $(model.index.set(nextIndex));
|
|
145
145
|
yield* $(save(nextEntry));
|
|
146
146
|
return nextEntry.destination;
|
|
147
147
|
});
|
|
148
148
|
exports.makeGo = makeGo;
|
|
149
|
+
function getNavigationType(currentIndex, nextIndex) {
|
|
150
|
+
if (nextIndex > currentIndex)
|
|
151
|
+
return Navigation_js_1.NavigationType.Forward;
|
|
152
|
+
if (nextIndex < currentIndex)
|
|
153
|
+
return Navigation_js_1.NavigationType.Back;
|
|
154
|
+
return Navigation_js_1.NavigationType.Reload;
|
|
155
|
+
}
|
|
149
156
|
//# sourceMappingURL=memory-intent.js.map
|