@typed/navigation 0.3.4 → 0.3.6
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 +41 -28
- 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 +41 -28
- 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 +6 -6
- 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 +49 -29
- 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<Storage | Location, NavigationError
|
|
26
|
-
export declare const makeReplace: (model: Model, notify: Notify, notifyEnd: NotifyEnd, save: Save<Storage>, base: string) => (url: string, options?: NavigateOptions, skipHistory?: boolean) => Effect.Effect<Storage |
|
|
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<Storage |
|
|
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<Storage | Location, 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<Storage | Location, 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<Storage | Location, 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,51 +59,43 @@ 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
|
-
const pushState = history.pushState
|
|
46
|
-
const replaceState = history.replaceState
|
|
47
|
-
const go = history.go
|
|
48
|
-
const back = history.back
|
|
49
|
-
const forward = history.forward
|
|
50
|
-
history.pushState = function (state,
|
|
51
|
-
|
|
52
|
-
if (url && this !== constant_js_1.ServiceId)
|
|
65
|
+
const pushState = history.pushState;
|
|
66
|
+
const replaceState = history.replaceState;
|
|
67
|
+
const go = history.go;
|
|
68
|
+
const back = history.back;
|
|
69
|
+
const forward = history.forward;
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0DAA2C;AAC3C,wDAAyC;AACzC,4DAA6C;AAE7C,oCAAoC;AACpC,8CAA+B;AAgClB,QAAA,YAAY,GAIrB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,aAAO,CAAC,CAAA;IAEjC,MAAM,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;IAEhG,8DAA8D;IAC9D,MAAM,KAAK,GAAY;QACrB,IAAI,MAAM;YACR,OAAO,OAAO,CAAC,MAAM,CAAA;QACvB,CAAC;QACD,IAAI,iBAAiB;YACnB,OAAO,OAAO,CAAC,iBAAiB,CAAA;QAClC,CAAC;QACD,IAAI,iBAAiB,CAAC,KAAK;YACzB,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAA;QACnC,CAAC;QACD,IAAI,KAAK;YACP,OAAO,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACtC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;KACjD,CAAA;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,EAAuB,CAAA;IAC3D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,KAAmB,EAAE,EAAE,CAC7D,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CACtF,CAAA;IAED,oCAAoC;IACpC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAEzD,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAA;AAC/B,CAAC,CAAC,CAAA;AAEF,SAAS,aAAa,CAAC,OAAgB,EAAE,SAAwC;IAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACnC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;IACzC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAE/B,OAAO,CAAC,SAAS,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE,GAAG;QACzC,IAAI,GAAG;YAAE,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACvE,CAAC,CAAA;IAED,OAAO,CAAC,YAAY,GAAG,UAAU,KAAK,EAAE,CAAC,EAAE,GAAG;QAC5C,IAAI,GAAG;YAAE,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC1E,CAAC,CAAA;IAED,OAAO,CAAC,EAAE,GAAG,UAAU,KAAK;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAM;QAElB,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,OAAO,CAAC,IAAI,GAAG;QACb,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7B,CAAC,CAAA;IAED,OAAO,CAAC,OAAO,GAAG;QAChB,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;IAEhG,qDAAqD;IACrD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;QACtC,GAAG;YACD,MAAM,KAAK,GAAG,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;YAEjD,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAA;YAEzD,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAC,CAAA;IAEF,kCAAkC;IAClC,OAAO,GAAG,EAAE;QACV,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;QAC7B,OAAO,CAAC,YAAY,GAAG,YAAY,CAAA;QACnC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAA;QACf,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QACnB,OAAO,CAAC,OAAO,GAAG,OAAO,CAAA;QAEzB,IAAI,eAAe,EAAE;YACnB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,CAAA;SACzD;IACH,CAAC,CAAA;AACH,CAAC;AAED,SAAgB,cAAc,CAC5B,KAAmB,EACnB,MAAiB;IAMjB,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB,KAAK,WAAW;gBACd,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;YACvE,KAAK,cAAc;gBACjB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;YAC1E,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YACpC,KAAK,SAAS;gBACZ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;YACvC,KAAK,IAAI;gBACP,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAA;SAChD;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAtBD,wCAsBC"}
|
|
@@ -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
|