@equinor/fusion-framework-module-navigation 7.0.3 → 7.0.5
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/CHANGELOG.md +24 -0
- package/dist/esm/NavigateEvent.js +24 -0
- package/dist/esm/NavigateEvent.js.map +1 -0
- package/dist/esm/NavigatedEvent.js +20 -0
- package/dist/esm/NavigatedEvent.js.map +1 -0
- package/dist/esm/NavigationConfigurator.js +13 -1
- package/dist/esm/NavigationConfigurator.js.map +1 -1
- package/dist/esm/NavigationProvider.js +15 -3
- package/dist/esm/NavigationProvider.js.map +1 -1
- package/dist/esm/enable-navigation.js +1 -0
- package/dist/esm/enable-navigation.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/BaseHistory.js +9 -0
- package/dist/esm/lib/BaseHistory.js.map +1 -1
- package/dist/esm/lib/BrowserHistory.js +1 -0
- package/dist/esm/lib/BrowserHistory.js.map +1 -1
- package/dist/esm/lib/BrowserHistoryHashStack.js +1 -0
- package/dist/esm/lib/BrowserHistoryHashStack.js.map +1 -1
- package/dist/esm/lib/BrowserHistoryStack.js +15 -0
- package/dist/esm/lib/BrowserHistoryStack.js.map +1 -1
- package/dist/esm/lib/MemoryHistory.js +4 -1
- package/dist/esm/lib/MemoryHistory.js.map +1 -1
- package/dist/esm/lib/{MemoryStack.js → MemoryHistoryStack.js} +12 -1
- package/dist/esm/lib/MemoryHistoryStack.js.map +1 -0
- package/dist/esm/lib/ProxyHistory.js +1 -0
- package/dist/esm/lib/ProxyHistory.js.map +1 -1
- package/dist/esm/lib/create-history.js +1 -0
- package/dist/esm/lib/create-history.js.map +1 -1
- package/dist/esm/lib/index.js +1 -1
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/state/{history.actions.js → actions.js} +1 -1
- package/dist/esm/lib/state/actions.js.map +1 -0
- package/dist/esm/lib/state/check-blockers.js +36 -0
- package/dist/esm/lib/state/check-blockers.js.map +1 -0
- package/dist/esm/lib/state/create-flow.js +27 -0
- package/dist/esm/lib/state/create-flow.js.map +1 -0
- package/dist/esm/lib/state/{history.reducer.js → create-history-reducer.js} +5 -2
- package/dist/esm/lib/state/create-history-reducer.js.map +1 -0
- package/dist/esm/lib/state/create-store.js +26 -0
- package/dist/esm/lib/state/create-store.js.map +1 -0
- package/dist/esm/lib/state/flow-creators.js +7 -0
- package/dist/esm/lib/state/flow-creators.js.map +1 -0
- package/dist/esm/lib/state/go.js +12 -0
- package/dist/esm/lib/state/go.js.map +1 -0
- package/dist/esm/lib/state/history.state.js +1 -39
- package/dist/esm/lib/state/history.state.js.map +1 -1
- package/dist/esm/lib/state/index.js +3 -3
- package/dist/esm/lib/state/index.js.map +1 -1
- package/dist/esm/lib/state/navigate.js +43 -0
- package/dist/esm/lib/state/navigate.js.map +1 -0
- package/dist/esm/lib/state/pop.js +14 -0
- package/dist/esm/lib/state/pop.js.map +1 -0
- package/dist/esm/lib/state/validate-current-location.js +26 -0
- package/dist/esm/lib/state/validate-current-location.js.map +1 -0
- package/dist/esm/lib/utils/index.js +2 -2
- package/dist/esm/lib/utils/index.js.map +1 -1
- package/dist/esm/lib/utils/resolve-browser-location.js +1 -52
- package/dist/esm/lib/utils/resolve-browser-location.js.map +1 -1
- package/dist/esm/lib/utils/resolve-hash-location.js +20 -0
- package/dist/esm/lib/utils/resolve-hash-location.js.map +1 -0
- package/dist/esm/lib/utils/resolve-window-location.js +18 -0
- package/dist/esm/lib/utils/resolve-window-location.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/NavigateEvent.d.ts +36 -0
- package/dist/types/NavigatedEvent.d.ts +28 -0
- package/dist/types/NavigationConfigurator.d.ts +3 -0
- package/dist/types/NavigationProvider.d.ts +3 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/lib/BaseHistory.d.ts +8 -0
- package/dist/types/lib/BrowserHistoryHashStack.d.ts +1 -0
- package/dist/types/lib/BrowserHistoryStack.d.ts +14 -0
- package/dist/types/lib/MemoryHistory.d.ts +3 -0
- package/dist/types/lib/{MemoryStack.d.ts → MemoryHistoryStack.d.ts} +6 -0
- package/dist/types/lib/ProxyHistory.d.ts +1 -1
- package/dist/types/lib/index.d.ts +1 -1
- package/dist/types/lib/state/check-blockers.d.ts +3 -0
- package/dist/types/lib/state/create-flow.d.ts +10 -0
- package/dist/types/lib/state/{history.reducer.d.ts → create-history-reducer.d.ts} +32 -32
- package/dist/types/lib/state/create-store.d.ts +17 -0
- package/dist/types/lib/state/flow-creators.d.ts +7 -0
- package/dist/types/lib/state/go.d.ts +3 -0
- package/dist/types/lib/state/history.state.d.ts +2 -23
- package/dist/types/lib/state/index.d.ts +4 -3
- package/dist/types/lib/state/navigate.d.ts +9 -0
- package/dist/types/lib/state/pop.d.ts +3 -0
- package/dist/types/lib/state/validate-current-location.d.ts +3 -0
- package/dist/types/lib/types.d.ts +1 -1
- package/dist/types/lib/utils/index.d.ts +2 -2
- package/dist/types/lib/utils/resolve-browser-location.d.ts +1 -42
- package/dist/types/lib/utils/resolve-hash-location.d.ts +10 -0
- package/dist/types/lib/utils/resolve-window-location.d.ts +10 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +8 -8
- package/src/NavigateEvent.ts +47 -0
- package/src/NavigatedEvent.ts +35 -0
- package/src/NavigationConfigurator.ts +13 -3
- package/src/NavigationProvider.interface.ts +1 -1
- package/src/NavigationProvider.ts +15 -3
- package/src/__tests__/NavigationProvider.test.ts +11 -0
- package/src/enable-navigation.ts +1 -0
- package/src/index.ts +2 -6
- package/src/lib/BaseHistory.ts +9 -0
- package/src/lib/BrowserHistory.ts +1 -0
- package/src/lib/BrowserHistoryHashStack.ts +1 -0
- package/src/lib/BrowserHistoryStack.ts +15 -0
- package/src/lib/MemoryHistory.ts +4 -1
- package/src/lib/{MemoryStack.ts → MemoryHistoryStack.ts} +11 -0
- package/src/lib/ProxyHistory.ts +2 -1
- package/src/lib/create-history.ts +1 -0
- package/src/lib/index.ts +1 -1
- package/src/lib/state/check-blockers.ts +52 -0
- package/src/lib/state/create-flow.ts +36 -0
- package/src/lib/state/{history.reducer.ts → create-history-reducer.ts} +4 -1
- package/src/lib/state/create-store.ts +39 -0
- package/src/lib/state/flow-creators.ts +7 -0
- package/src/lib/state/go.ts +20 -0
- package/src/lib/state/history.state.ts +2 -56
- package/src/lib/state/index.ts +4 -3
- package/src/lib/state/navigate.ts +58 -0
- package/src/lib/state/pop.ts +24 -0
- package/src/lib/state/validate-current-location.ts +33 -0
- package/src/lib/types.ts +1 -1
- package/src/lib/utils/index.ts +2 -2
- package/src/lib/utils/resolve-browser-location.ts +1 -60
- package/src/lib/utils/resolve-hash-location.ts +26 -0
- package/src/lib/utils/resolve-window-location.ts +24 -0
- package/src/version.ts +1 -1
- package/dist/esm/events.js +0 -40
- package/dist/esm/events.js.map +0 -1
- package/dist/esm/lib/MemoryStack.js.map +0 -1
- package/dist/esm/lib/state/history.actions.js.map +0 -1
- package/dist/esm/lib/state/history.flows.js +0 -207
- package/dist/esm/lib/state/history.flows.js.map +0 -1
- package/dist/esm/lib/state/history.reducer.js.map +0 -1
- package/dist/types/events.d.ts +0 -65
- package/dist/types/lib/state/history.flows.d.ts +0 -97
- package/src/events.ts +0 -82
- package/src/lib/state/history.flows.ts +0 -274
- /package/dist/types/lib/state/{history.actions.d.ts → actions.d.ts} +0 -0
- /package/src/lib/state/{history.actions.ts → actions.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-history.js","sourceRoot":"","sources":["../../../src/lib/create-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAA8B,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAQpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,GAAG,IAAmC,EACP,EAAE;IACjC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,GAAI,IAA+B,CAE3D,CAAC;QACJ,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"create-history.js","sourceRoot":"","sources":["../../../src/lib/create-history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAA8B,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAQpE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,GAAG,IAAmC,EACP,EAAE;IACjC,sEAAsE;IACtE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,CAAC,GAAI,IAA+B,CAE3D,CAAC;QACJ,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAyC,CAAC;YAChE,OAAO,IAAI,cAAc,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAEnE,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAyC,CAAC;YAChE,OAAO,IAAI,cAAc,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAEvE,CAAC;QACJ,CAAC;QACD,SAAS,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
|
package/dist/esm/lib/index.js
CHANGED
|
@@ -15,5 +15,5 @@ export { ProxyHistory } from './ProxyHistory';
|
|
|
15
15
|
// History stacks
|
|
16
16
|
export { BrowserHistoryStack } from './BrowserHistoryStack';
|
|
17
17
|
export { BrowserHistoryHashStack as HashHistoryStack } from './BrowserHistoryHashStack';
|
|
18
|
-
export { MemoryHistoryStack } from './
|
|
18
|
+
export { MemoryHistoryStack } from './MemoryHistoryStack';
|
|
19
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,iBAAiB;AACjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,IAAI,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../src/lib/state/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAErF,OAAO,EAAE,EAAE,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAGxC;;GAEG;AACH,MAAM,cAAc,GAAG,iBAAiB,CACtC,qBAAqB,EACrB,CAAC,EAAM,EAAE,OAAwB,EAAE,EAAE,CAAC,CAAC;IACrC,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE;IACxB,IAAI,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;CAC5B,CAAC,EACF,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,EAAE,MAAM,EAAE;CACpB,CAAC,EACF,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,EAAE,KAAK,EAAE;CACnB,CAAC,CACH,CAAC;AAEF,MAAM,mBAAmB,GAAG,YAAY,CAAC,4BAA4B,EAAE,CAAC,MAAe,EAAE,EAAE,CAAC,CAAC;IAC3F,OAAO,EAAE,EAAE,MAAM,EAAE;CACpB,CAAC,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,aAAa,GAAG,iBAAiB,CACrC,eAAe,EACf,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;IAClB,OAAO,EAAE,EAAE,KAAK,EAAE;CACnB,CAAC,EACF,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,EAAE,MAAM,EAAE;CACpB,CAAC,EACF,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,EAAE,KAAK,EAAE;CACnB,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,iBAAiB,CACtC,gBAAgB,EAChB,CAAC,MAAyB,EAAE,EAAE,CAAC,CAAC;IAC9B,OAAO,EAAE,EAAE,MAAM,EAAE;CACpB,CAAC,EACF,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,EAAE,MAAM,EAAE;CACpB,CAAC,EACF,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,EAAE,KAAK,EAAE;CACnB,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,iBAAiB,CAC9C,iCAAiC,EACjC,GAAG,EAAE,CAAC,CAAC;IACL,OAAO,EAAE,EAAE;CACZ,CAAC,EACF,CAAC,MAAwB,EAAE,EAAE,CAAC,CAAC;IAC7B,OAAO,EAAE,EAAE,MAAM,EAAE;CACpB,CAAC,EACF,CAAC,KAAY,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,EAAE,KAAK,EAAE;CACnB,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAG,YAAY,CAAC,uBAAuB,EAAE,CAAC,OAA0B,EAAE,EAAE,CAAC,CAAC;IAC9F,OAAO,EAAE,EAAE,OAAO,EAAE;CACrB,CAAC,CAAC,CAAC;AAEJ;;GAEG;AACH,MAAM,mBAAmB,GAAG,YAAY,CACtC,0BAA0B,EAC1B,CAAC,OAA0B,EAAE,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE,EAAE,OAAO,EAAE;CACrB,CAAC,CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,QAAQ,EAAE,cAAc;IACxB,aAAa,EAAE,mBAAmB;IAClC,EAAE,EAAE,aAAa;IACjB,GAAG,EAAE,cAAc;IACnB,gBAAgB,EAAE,sBAAsB;IACxC,UAAU,EAAE,gBAAgB;IAC5B,aAAa,EAAE,mBAAmB;CACnC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Observable, of } from 'rxjs';
|
|
2
|
+
import { concatMap, map, withLatestFrom } from 'rxjs/operators';
|
|
3
|
+
import { actions } from './actions';
|
|
4
|
+
import { filterAction } from '@equinor/fusion-observable/operators';
|
|
5
|
+
import { Action } from '../types';
|
|
6
|
+
/** Flow creator that gates navigation actions through registered blockers. */
|
|
7
|
+
export const checkBlockers = (stack) => (action$, state$) =>
|
|
8
|
+
// Normalize each navigation-related action into a common shape before gating on blockers.
|
|
9
|
+
action$.pipe(filterAction(actions.navigate.type, actions.pop.type, actions.go.type, actions.validateLocation.type), map((action) => {
|
|
10
|
+
// Only `navigate` carries a replace flag; the rest are treated as POP transitions.
|
|
11
|
+
switch (action.type) {
|
|
12
|
+
case actions.navigate.type:
|
|
13
|
+
return { replace: action.payload.options.replace, action };
|
|
14
|
+
case actions.go.type:
|
|
15
|
+
case actions.pop.type:
|
|
16
|
+
case actions.validateLocation.type:
|
|
17
|
+
return { type: 'POP', action };
|
|
18
|
+
}
|
|
19
|
+
}), withLatestFrom(state$), concatMap(([{ action, replace }, state]) => {
|
|
20
|
+
// Allow actions through immediately when no blocker can veto the transition.
|
|
21
|
+
if (!state.blockers.length) {
|
|
22
|
+
return of(action);
|
|
23
|
+
}
|
|
24
|
+
return new Observable((subscriber) => {
|
|
25
|
+
const location = stack.current;
|
|
26
|
+
// Invoke all blockers and complete once every asynchronous decision settles.
|
|
27
|
+
const blockers = state.blockers.map((blocker) => Promise.resolve(blocker({
|
|
28
|
+
delta: 0,
|
|
29
|
+
action: replace ? Action.Replace : Action.Push,
|
|
30
|
+
location,
|
|
31
|
+
retry: () => subscriber.next(action),
|
|
32
|
+
})));
|
|
33
|
+
Promise.allSettled(blockers).then(() => subscriber.complete());
|
|
34
|
+
});
|
|
35
|
+
}));
|
|
36
|
+
//# sourceMappingURL=check-blockers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-blockers.js","sourceRoot":"","sources":["../../../../src/lib/state/check-blockers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAyC,MAAM,UAAU,CAAC;AAEzE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,OAA4B,EAAE,MAAiC,EAAE,EAAE;AAC3F,0FAA0F;AAC1F,OAAO,CAAC,IAAI,CACV,YAAY,CACV,OAAO,CAAC,QAAQ,CAAC,IAAI,EACrB,OAAO,CAAC,GAAG,CAAC,IAAI,EAChB,OAAO,CAAC,EAAE,CAAC,IAAI,EACf,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAC9B,EACD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;IACb,mFAAmF;IACnF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,QAAQ,CAAC,IAAI;YACxB,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7D,KAAK,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;QACrB,KAAK,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,KAAK,OAAO,CAAC,gBAAgB,CAAC,IAAI;YAChC,OAAO,EAAE,IAAI,EAAE,KAAe,EAAE,MAAM,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC,CAAC,EACF,cAAc,CAAC,MAAM,CAAC,EACtB,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;IACzC,6EAA6E;IAC7E,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,UAAU,CAAU,CAAC,UAAU,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC;QAC/B,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC9C,OAAO,CAAC,OAAO,CACb,OAAO,CAAC;YACN,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;YAC9C,QAAQ;YACR,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;SACrC,CAAC,CACH,CACF,CAAC;QACF,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { merge } from 'rxjs';
|
|
2
|
+
import { checkBlockers } from './check-blockers';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a combined history flow from multiple flow creators.
|
|
5
|
+
* @param flowCreators - Flow creators to combine.
|
|
6
|
+
* @param options - Optional blocker configuration.
|
|
7
|
+
* @returns A combined history flow creator.
|
|
8
|
+
*/
|
|
9
|
+
export const createFlow = (flowCreators, options) => {
|
|
10
|
+
return (stack) => {
|
|
11
|
+
const preProcessActions = options?.skipBlockCheck
|
|
12
|
+
? (action$) => action$
|
|
13
|
+
: checkBlockers(stack);
|
|
14
|
+
const flows = (action$, state$) => {
|
|
15
|
+
// Initialize each creator against the same stack before merging their action streams.
|
|
16
|
+
const initializedFlows = flowCreators
|
|
17
|
+
.map((initializer) => initializer(stack))
|
|
18
|
+
.map((flow) => flow(action$, state$));
|
|
19
|
+
return merge(...initializedFlows);
|
|
20
|
+
};
|
|
21
|
+
return (action$, state$) => {
|
|
22
|
+
// Gate actions before dispatching them to the parallel history flows.
|
|
23
|
+
return preProcessActions(action$, state$).pipe((source$) => flows(source$, state$));
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=create-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-flow.js","sourceRoot":"","sources":["../../../../src/lib/state/create-flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,MAAM,MAAM,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,YAAkC,EAClC,OAAsC,EAClB,EAAE;IACtB,OAAO,CAAC,KAAmB,EAAe,EAAE;QAC1C,MAAM,iBAAiB,GAAG,OAAO,EAAE,cAAc;YAC/C,CAAC,CAAC,CAAC,OAA4B,EAAE,EAAE,CAAC,OAAO;YAC3C,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,KAAK,GAAgB,CACzB,OAA4B,EAC5B,MAAiC,EACjC,EAAE;YACF,sFAAsF;YACtF,MAAM,gBAAgB,GAAG,YAAY;iBAClC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACpC,CAAC,CAAC;QACF,OAAO,CAAC,OAA4B,EAAE,MAAiC,EAAE,EAAE;YACzE,sEAAsE;YACtE,OAAO,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { createReducer } from '@equinor/fusion-observable';
|
|
2
|
-
import { actions } from './
|
|
2
|
+
import { actions } from './actions';
|
|
3
3
|
import { isSuccessAction } from '@equinor/fusion-observable/actions';
|
|
4
4
|
/**
|
|
5
5
|
* Finds the index of the current location in the history array.
|
|
6
6
|
* Used to determine where to insert/replace entries for REPLACE actions.
|
|
7
7
|
*/
|
|
8
8
|
const findIndex = (state) => {
|
|
9
|
+
// Locate the current entry by key rather than reference, since updates are cloned.
|
|
9
10
|
return state.history.findIndex((update) => update.location.key === state.current.location.key);
|
|
10
11
|
};
|
|
11
12
|
/**
|
|
@@ -38,6 +39,7 @@ export const createHistoryReducer = (initial, options) => {
|
|
|
38
39
|
// and removes any forward history when not at the end
|
|
39
40
|
if (update.action === 'REPLACE') {
|
|
40
41
|
const currentIndex = findIndex(state);
|
|
42
|
+
// Only trim when the current entry is actually present in history.
|
|
41
43
|
if (currentIndex !== -1) {
|
|
42
44
|
// Remove all entries from current position onwards
|
|
43
45
|
state.history.splice(currentIndex, state.history.length - currentIndex);
|
|
@@ -53,6 +55,7 @@ export const createHistoryReducer = (initial, options) => {
|
|
|
53
55
|
// Limit history size to prevent unbounded growth
|
|
54
56
|
// This matcher always runs (returns true) to check history length after every action
|
|
55
57
|
builder.addMatcher(() => true, (state) => {
|
|
58
|
+
// Trim only once history has actually grown past the configured cap.
|
|
56
59
|
if (state.history.length > maxHistory) {
|
|
57
60
|
// Keep only the most recent entries, removing oldest ones
|
|
58
61
|
state.history = state.history.slice(-maxHistory);
|
|
@@ -60,4 +63,4 @@ export const createHistoryReducer = (initial, options) => {
|
|
|
60
63
|
});
|
|
61
64
|
});
|
|
62
65
|
};
|
|
63
|
-
//# sourceMappingURL=history
|
|
66
|
+
//# sourceMappingURL=create-history-reducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-history-reducer.js","sourceRoot":"","sources":["../../../../src/lib/state/create-history-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE;;;GAGG;AACH,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;IACzC,mFAAmF;IACnF,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,OAAiD,EACjD,OAAiC,EACjC,EAAE;IACF,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC;IAE9C,MAAM,YAAY,GAChB,OAAO,YAAY,QAAQ;QACzB,CAAC,CAAC,OAAO,EAAE;QACX,CAAC,CAAE;YACC,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,QAAQ,EAAE,EAAE;SACY,CAAC;IAEjC,OAAO,aAAa,CAAyB,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE;QACrE,0DAA0D;QAC1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;YAClC,gFAAgF;YAChF,sEAAsE;YACtE,sDAAsD;YACtD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtC,mEAAmE;gBACnE,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;oBACxB,mDAAmD;oBACnD,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,+EAA+E;QAC/E,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;YAClC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,iDAAiD;QACjD,qFAAqF;QACrF,OAAO,CAAC,UAAU,CAChB,GAAG,EAAE,CAAC,IAAI,EACV,CAAC,KAAK,EAAE,EAAE;YACR,qEAAqE;YACrE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBACtC,0DAA0D;gBAC1D,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createState } from '@equinor/fusion-observable';
|
|
2
|
+
import { actions } from './actions';
|
|
3
|
+
import { flowCreators } from './flow-creators';
|
|
4
|
+
import { createFlow } from './create-flow';
|
|
5
|
+
/**
|
|
6
|
+
* Creates a history store with the specified stack and reducer.
|
|
7
|
+
* @param stack - The history stack implementation.
|
|
8
|
+
* @param reducer - The reducer that handles state transitions.
|
|
9
|
+
* @param options - Optional flow configuration.
|
|
10
|
+
* @returns A fully-initialized history state with flows attached.
|
|
11
|
+
*/
|
|
12
|
+
export const createStore = (stack, reducer, options) => {
|
|
13
|
+
// Attach the stack onto the created state so flows can reach it without prop-drilling.
|
|
14
|
+
const state = Object.assign(createState(actions, reducer), { stack });
|
|
15
|
+
const flows = new Set(options?.flows ?? [flowCreators.navigate, flowCreators.go, flowCreators.pop]);
|
|
16
|
+
// Validation is opt-in since it re-checks the current location on every relevant action.
|
|
17
|
+
if (options?.validateCurrentLocation) {
|
|
18
|
+
flows.add(flowCreators.validateCurrentLocation);
|
|
19
|
+
}
|
|
20
|
+
const flow = createFlow([...flows], {
|
|
21
|
+
skipBlockCheck: options?.skipBlockCheck,
|
|
22
|
+
});
|
|
23
|
+
state.subject.addFlow(flow(stack));
|
|
24
|
+
return state;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=create-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-store.js","sourceRoot":"","sources":["../../../../src/lib/state/create-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgC,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAK3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAmB,EACnB,OAAwD,EACxD,OAIC,EACa,EAAE;IAChB,uFAAuF;IACvF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAiB,CAAC;IACtF,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,OAAO,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,GAAG,CAAC,CAC7E,CAAC;IACF,yFAAyF;IACzF,IAAI,OAAO,EAAE,uBAAuB,EAAE,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE;QAClC,cAAc,EAAE,OAAO,EAAE,cAAc;KACxC,CAAC,CAAC;IACH,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { go } from './go';
|
|
2
|
+
import { navigate } from './navigate';
|
|
3
|
+
import { pop } from './pop';
|
|
4
|
+
import { validateCurrentLocation } from './validate-current-location';
|
|
5
|
+
/** Collection of flow creators for history state management. */
|
|
6
|
+
export const flowCreators = { navigate, go, pop, validateCurrentLocation };
|
|
7
|
+
//# sourceMappingURL=flow-creators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-creators.js","sourceRoot":"","sources":["../../../../src/lib/state/flow-creators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { map, withLatestFrom } from 'rxjs/operators';
|
|
2
|
+
import { actions } from './actions';
|
|
3
|
+
import { filterAction } from '@equinor/fusion-observable/operators';
|
|
4
|
+
import { Action } from '../types';
|
|
5
|
+
/** Flow creator for handling go back and forward actions. */
|
|
6
|
+
export const go = (stack) => (action$, state$) =>
|
|
7
|
+
// Move the stack by the requested delta and emit the resulting location.
|
|
8
|
+
action$.pipe(filterAction(actions.go.type), withLatestFrom(state$), map(([action, state]) => {
|
|
9
|
+
stack.go(action.payload.delta, state);
|
|
10
|
+
return actions.go.success({ delta: 0, action: Action.Pop, location: stack.current });
|
|
11
|
+
}));
|
|
12
|
+
//# sourceMappingURL=go.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../src/lib/state/go.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,EAAE,GACb,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAA4B,EAAE,MAAiC,EAAE,EAAE;AAC7E,yEAAyE;AACzE,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAC7B,cAAc,CAAC,MAAM,CAAC,EACtB,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;IACtB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACvF,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -1,43 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { actions } from './history.actions';
|
|
3
|
-
import { flowCreators, createFlow } from './history.flows';
|
|
1
|
+
export {};
|
|
4
2
|
/**
|
|
5
3
|
* Default flows for history state management.
|
|
6
4
|
*/
|
|
7
|
-
export const defaultFlows = [flowCreators.navigate, flowCreators.go, flowCreators.pop];
|
|
8
|
-
/**
|
|
9
|
-
* Creates a history store with the specified stack and reducer.
|
|
10
|
-
*
|
|
11
|
-
* Combines the reactive state container with a {@link HistoryStack} and wires
|
|
12
|
-
* up navigation flows for action processing.
|
|
13
|
-
*
|
|
14
|
-
* @param stack - The history stack implementation (browser, hash, or memory)
|
|
15
|
-
* @param reducer - The reducer that handles state transitions
|
|
16
|
-
* @param options - Optional configuration options
|
|
17
|
-
* @param options.flows - Custom flow creators (defaults to {@link defaultFlows})
|
|
18
|
-
* @param options.skipBlockCheck - Skip blocker checking in flows
|
|
19
|
-
* @param options.validateCurrentLocation - Add location validation flow
|
|
20
|
-
* @returns A fully-initialized {@link HistoryState} with flows attached
|
|
21
|
-
*/
|
|
22
|
-
export const createStore = (stack, reducer, options) => {
|
|
23
|
-
// Create base state with actions and reducer, then add stack property
|
|
24
|
-
// The stack is stored alongside the flow state for use in flows
|
|
25
|
-
const state = Object.assign(createState(actions, reducer), { stack });
|
|
26
|
-
// Build set of flows to use (default flows or custom flows)
|
|
27
|
-
// Use Set to ensure no duplicates if validateCurrentLocation is added
|
|
28
|
-
const flows = new Set(options?.flows ?? defaultFlows);
|
|
29
|
-
// Optionally add validation flow to check location consistency
|
|
30
|
-
if (options?.validateCurrentLocation) {
|
|
31
|
-
flows.add(flowCreators.validateCurrentLocation);
|
|
32
|
-
}
|
|
33
|
-
// Create combined flow from all flow creators
|
|
34
|
-
// This merges all flows so they process actions in parallel
|
|
35
|
-
const flow = createFlow([...flows], {
|
|
36
|
-
skipBlockCheck: options?.skipBlockCheck,
|
|
37
|
-
});
|
|
38
|
-
// Initialize the flow with the stack and add it to the state subject
|
|
39
|
-
// The flow processes actions and updates state through the reducer
|
|
40
|
-
state.subject.addFlow(flow(stack));
|
|
41
|
-
return state;
|
|
42
|
-
};
|
|
43
5
|
//# sourceMappingURL=history.state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.state.js","sourceRoot":"","sources":["../../../../src/lib/state/history.state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"history.state.js","sourceRoot":"","sources":["../../../../src/lib/state/history.state.ts"],"names":[],"mappings":";AAWA;;GAEG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createStore } from './
|
|
2
|
-
export { createHistoryReducer } from './history
|
|
3
|
-
export { actions } from './
|
|
1
|
+
export { createStore } from './create-store';
|
|
2
|
+
export { createHistoryReducer } from './create-history-reducer';
|
|
3
|
+
export { actions } from './actions';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/state/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { map } from 'rxjs/operators';
|
|
2
|
+
import { filterAction } from '@equinor/fusion-observable/operators';
|
|
3
|
+
import { actions } from './actions';
|
|
4
|
+
import { resolvePath } from '../utils';
|
|
5
|
+
import { Action } from '../types';
|
|
6
|
+
const compareLocation = (a, b) => {
|
|
7
|
+
return (a.hash === b.hash &&
|
|
8
|
+
a.search === b.search &&
|
|
9
|
+
a.pathname === b.pathname &&
|
|
10
|
+
JSON.stringify(a.state) === JSON.stringify(b.state));
|
|
11
|
+
};
|
|
12
|
+
/** Flow creator for handling navigate actions. */
|
|
13
|
+
export const navigate = (stack) => (action$) => {
|
|
14
|
+
const { navigate } = actions;
|
|
15
|
+
// Transform matching navigation actions into stack updates and success actions.
|
|
16
|
+
return action$.pipe(filterAction(navigate.type), map((action) => {
|
|
17
|
+
const { payload, meta } = action;
|
|
18
|
+
const path = resolvePath(payload.to);
|
|
19
|
+
const nextLocation = {
|
|
20
|
+
...path,
|
|
21
|
+
key: meta.key,
|
|
22
|
+
state: payload.options.state,
|
|
23
|
+
unstable_mask: undefined,
|
|
24
|
+
};
|
|
25
|
+
// Abort duplicate navigations to prevent a feedback loop in history state.
|
|
26
|
+
if (compareLocation(nextLocation, stack.current)) {
|
|
27
|
+
return actions.abortNavigate('Location is the same as the current location');
|
|
28
|
+
}
|
|
29
|
+
// Apply replacement or append semantics selected by the navigation request.
|
|
30
|
+
if (payload.options.replace) {
|
|
31
|
+
stack.replace(nextLocation);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
stack.push(nextLocation);
|
|
35
|
+
}
|
|
36
|
+
return navigate.success({
|
|
37
|
+
delta: 0,
|
|
38
|
+
action: payload.options.replace ? Action.Replace : Action.Push,
|
|
39
|
+
location: nextLocation,
|
|
40
|
+
});
|
|
41
|
+
}));
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=navigate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../../../src/lib/state/navigate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAwD,MAAM,EAAE,MAAM,UAAU,CAAC;AAQxF,MAAM,eAAe,GAAG,CAAC,CAAW,EAAE,CAAW,EAAW,EAAE;IAC5D,OAAO,CACL,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACjB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QACrB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QACzB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CACpD,CAAC;AACJ,CAAC,CAAC;AAEF,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,KAAmB,EAAe,EAAE,CACrC,CAAC,OAA4B,EAAE,EAAE;IAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,gFAAgF;IAChF,OAAO,OAAO,CAAC,IAAI,CACjB,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACb,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QACjC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG;YACnB,GAAG,IAAI;YACP,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;YAC5B,aAAa,EAAE,SAAS;SACN,CAAC;QACrB,2EAA2E;QAC3E,IAAI,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,OAAO,OAAO,CAAC,aAAa,CAAC,8CAA8C,CAAC,CAAC;QAC/E,CAAC;QACD,4EAA4E;QAC5E,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC5B,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC;YACtB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;YAC9D,QAAQ,EAAE,YAAY;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { concatMap } from 'rxjs/operators';
|
|
3
|
+
import { actions } from './actions';
|
|
4
|
+
import { filterAction } from '@equinor/fusion-observable/operators';
|
|
5
|
+
import { Action } from '../types';
|
|
6
|
+
/** Flow creator for handling POP actions from browser navigation. */
|
|
7
|
+
export const pop = (stack) => (action$) =>
|
|
8
|
+
// Translate a browser-driven POP into a success action carrying its location.
|
|
9
|
+
action$.pipe(filterAction(actions.pop.type), concatMap((action) => new Observable((subscriber) => {
|
|
10
|
+
const currentLocation = action.payload.update?.location ?? stack.current;
|
|
11
|
+
subscriber.next(actions.pop.success({ delta: 0, action: Action.Pop, location: currentLocation }));
|
|
12
|
+
subscriber.complete();
|
|
13
|
+
})));
|
|
14
|
+
//# sourceMappingURL=pop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pop.js","sourceRoot":"","sources":["../../../../src/lib/state/pop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qEAAqE;AACrE,MAAM,CAAC,MAAM,GAAG,GAAuB,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,OAA4B,EAAE,EAAE;AAC/F,8EAA8E;AAC9E,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAC9B,SAAS,CACP,CAAC,MAAM,EAAE,EAAE,CACT,IAAI,UAAU,CAAU,CAAC,UAAU,EAAE,EAAE;IACrC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC;IACzE,UAAU,CAAC,IAAI,CACb,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CACjF,CAAC;IACF,UAAU,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC,CAAC,CACL,CACF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { map, withLatestFrom } from 'rxjs/operators';
|
|
2
|
+
import { actions } from './actions';
|
|
3
|
+
import { filterAction } from '@equinor/fusion-observable/operators';
|
|
4
|
+
import { Action } from '../types';
|
|
5
|
+
/** Flow creator that validates the current stack location against reducer state. */
|
|
6
|
+
export const validateCurrentLocation = (stack) => (action$, state$) =>
|
|
7
|
+
// Confirm the browser stack's current key still matches reducer state.
|
|
8
|
+
action$.pipe(filterAction(actions.validateLocation.type), withLatestFrom(state$), map(([, state]) => {
|
|
9
|
+
const currentLocation = stack.current;
|
|
10
|
+
// Find the reducer entry matching the stack key before comparing location state.
|
|
11
|
+
const record = state.history.find(({ location }) => location?.key === currentLocation?.key);
|
|
12
|
+
// Reject validation when the browser stack key is absent from reducer state.
|
|
13
|
+
if (!record) {
|
|
14
|
+
return actions.validateLocation.failure(new Error('Stack state not found'));
|
|
15
|
+
}
|
|
16
|
+
// Reject validation when the stack and reducer carry different location state.
|
|
17
|
+
if (record.location?.state !== currentLocation?.state) {
|
|
18
|
+
return actions.validateLocation.failure(new Error('Stack state mismatch'));
|
|
19
|
+
}
|
|
20
|
+
return actions.validateLocation.success({
|
|
21
|
+
delta: 0,
|
|
22
|
+
action: Action.Pop,
|
|
23
|
+
location: currentLocation,
|
|
24
|
+
});
|
|
25
|
+
}));
|
|
26
|
+
//# sourceMappingURL=validate-current-location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-current-location.js","sourceRoot":"","sources":["../../../../src/lib/state/validate-current-location.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAyC,MAAM,UAAU,CAAC;AAEzE,oFAAoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAClC,CAAC,KAAmB,EAAE,EAAE,CAAC,CAAC,OAA4B,EAAE,MAAiC,EAAE,EAAE;AAC3F,uEAAuE;AACvE,OAAO,CAAC,IAAI,CACV,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAC3C,cAAc,CAAC,MAAM,CAAC,EACtB,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE;IAChB,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC;IACtC,iFAAiF;IACjF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,eAAe,EAAE,GAAG,CAAC,CAAC;IAC5F,6EAA6E;IAC7E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,+EAA+E;IAC/E,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,eAAe,EAAE,KAAK,EAAE,CAAC;QACtD,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC;QACtC,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,MAAM,CAAC,GAAG;QAClB,QAAQ,EAAE,eAAe;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { pathToString } from './path-to-string';
|
|
2
2
|
export { pathToUrl } from './path-to-url';
|
|
3
3
|
export { resolvePath } from './resolve-path';
|
|
4
|
-
export { resolveWindowLocation } from './resolve-
|
|
5
|
-
export { resolveHashLocation } from './resolve-
|
|
4
|
+
export { resolveWindowLocation } from './resolve-window-location';
|
|
5
|
+
export { resolveHashLocation } from './resolve-hash-location';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,53 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
const resolveState = (target) => {
|
|
3
|
-
const { value, key = 'unknown' } = (target ?? window.history).state ??
|
|
4
|
-
{};
|
|
5
|
-
return { state: value, key };
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* Resolves the current location from window.location.
|
|
9
|
-
*
|
|
10
|
-
* @param window - The window object to extract location from
|
|
11
|
-
* @param target - Optional target object with state
|
|
12
|
-
* @returns The current location with pathname, search, hash, state, and key
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```ts
|
|
16
|
-
* // If window.location is 'https://example.com/users?id=1#section'
|
|
17
|
-
* resolveWindowLocation(window)
|
|
18
|
-
* // { pathname: '/users', search: '?id=1', hash: '#section', state: undefined, key: 'unknown' }
|
|
19
|
-
*
|
|
20
|
-
* resolveWindowLocation(window, { state: { userId: 123 } })
|
|
21
|
-
* // { pathname: '/users', search: '?id=1', hash: '#section', state: { userId: 123 }, key: 'abc123' }
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export const resolveWindowLocation = (window, target) => {
|
|
25
|
-
const { pathname, search, hash } = resolvePath(window.location);
|
|
26
|
-
const { state, key } = resolveState(target);
|
|
27
|
-
return { pathname, search, hash, state, key, unstable_mask: undefined };
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Resolves the current location from window.location.hash.
|
|
31
|
-
*
|
|
32
|
-
* @param window - The window object to extract location from
|
|
33
|
-
* @param target - Optional target object with state
|
|
34
|
-
* @returns The current location with pathname, search, hash, state, and key
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```ts
|
|
38
|
-
* // If window.location.hash is '#/users?id=1#section'
|
|
39
|
-
* resolveHashLocation(window)
|
|
40
|
-
* // { pathname: '/users', search: '?id=1', hash: '#section', state: undefined, key: 'unknown' }
|
|
41
|
-
*
|
|
42
|
-
* // If window.location.hash is '#/dashboard'
|
|
43
|
-
* resolveHashLocation(window)
|
|
44
|
-
* // { pathname: '/dashboard', search: '', hash: '', state: undefined, key: 'unknown' }
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
export const resolveHashLocation = (window, target) => {
|
|
48
|
-
const location = resolveWindowLocation(window, target);
|
|
49
|
-
const { pathname, search, hash } = resolvePath(location.hash?.replace('#', '') ?? '');
|
|
50
|
-
const { state, key } = resolveState(target);
|
|
51
|
-
return { pathname, search, hash, state, key, unstable_mask: undefined };
|
|
52
|
-
};
|
|
1
|
+
export { resolveWindowLocation } from './resolve-window-location';
|
|
53
2
|
//# sourceMappingURL=resolve-browser-location.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-browser-location.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-browser-location.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve-browser-location.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-browser-location.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { resolvePath } from './resolve-path';
|
|
2
|
+
import { resolveWindowLocation } from './resolve-window-location';
|
|
3
|
+
const resolveState = (target) => {
|
|
4
|
+
const { value, key = 'unknown' } = (target ?? window.history).state ??
|
|
5
|
+
{};
|
|
6
|
+
return { state: value, key };
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Resolves the current location from window.location.hash.
|
|
10
|
+
* @param window - The window object to extract location from.
|
|
11
|
+
* @param target - Optional target object with state.
|
|
12
|
+
* @returns The current hash-based navigation location.
|
|
13
|
+
*/
|
|
14
|
+
export const resolveHashLocation = (window, target) => {
|
|
15
|
+
const location = resolveWindowLocation(window, target);
|
|
16
|
+
const { pathname, search, hash } = resolvePath(location.hash?.replace('#', '') ?? '');
|
|
17
|
+
const { state, key } = resolveState(target);
|
|
18
|
+
return { pathname, search, hash, state, key, unstable_mask: undefined };
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=resolve-hash-location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-hash-location.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-hash-location.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,YAAY,GAAG,CAAC,MAA2B,EAAmC,EAAE;IACpF,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,SAAS,EAAE,GAC9B,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK;QAC/B,EAGC,CAAC;IACL,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,MAA2B,EAAY,EAAE;IAC3F,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AAC1E,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { resolvePath } from './resolve-path';
|
|
2
|
+
const resolveState = (target) => {
|
|
3
|
+
const { value, key = 'unknown' } = (target ?? window.history).state ??
|
|
4
|
+
{};
|
|
5
|
+
return { state: value, key };
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Resolves the current location from window.location.
|
|
9
|
+
* @param window - The window object to extract location from.
|
|
10
|
+
* @param target - Optional target object with state.
|
|
11
|
+
* @returns The current browser navigation location.
|
|
12
|
+
*/
|
|
13
|
+
export const resolveWindowLocation = (window, target) => {
|
|
14
|
+
const { pathname, search, hash } = resolvePath(window.location);
|
|
15
|
+
const { state, key } = resolveState(target);
|
|
16
|
+
return { pathname, search, hash, state, key, unstable_mask: undefined };
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=resolve-window-location.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-window-location.js","sourceRoot":"","sources":["../../../../src/lib/utils/resolve-window-location.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,YAAY,GAAG,CAAC,MAA2B,EAAmC,EAAE;IACpF,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,SAAS,EAAE,GAC9B,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK;QAC/B,EAGC,CAAC;IACL,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,MAA2B,EAAY,EAAE;IAC7F,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;AAC1E,CAAC,CAAC"}
|
package/dist/esm/version.js
CHANGED