navigation-stack 0.5.2 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +144 -282
- package/karma.conf.cjs +1 -1
- package/lib/cjs/NavigationStack.js +138 -49
- package/lib/cjs/data-storage/DataStorage.js +7 -6
- package/lib/cjs/environment/InMemoryEnvironment.js +6 -0
- package/lib/cjs/{session/ServerSideRenderSession.js → environment/ServerSideRenderEnvironment.js} +5 -6
- package/lib/cjs/environment/WebBrowserEnvironment.js +6 -0
- package/lib/cjs/environment/log/InMemoryLog.js +23 -0
- package/lib/cjs/environment/log/WebBrowserLog.js +22 -0
- package/lib/cjs/{session → environment}/navigation/InMemoryNavigation.js +16 -5
- package/lib/cjs/{session → environment}/navigation/ServerSideNavigation.js +16 -7
- package/lib/cjs/{session → environment}/navigation/WebBrowserNavigation.js +48 -8
- package/lib/cjs/{session/navigation/error/ServerSideNavigationError.js → environment/navigation/error/ServerSideRedirectError.js} +2 -2
- package/lib/cjs/environment/scroll-position/WebBrowserScrollPosition.js +15 -0
- package/lib/cjs/getLocationBaseFromLocation.js +14 -0
- package/lib/cjs/getLocationUrl.js +3 -5
- package/lib/cjs/index.js +10 -16
- package/lib/cjs/navigationBlockers.js +34 -32
- package/lib/cjs/navigationBlockersEvaluation.js +150 -0
- package/lib/cjs/parseInputLocation.js +10 -3
- package/lib/cjs/parseQueryFromSearch.js +3 -6
- package/lib/cjs/parseQueryString.js +77 -0
- package/lib/cjs/scroll-position/ScrollPositionAutoSaver.js +7 -6
- package/lib/cjs/scroll-position/ScrollPositionRestoration.js +31 -27
- package/lib/cjs/scroll-position/ScrollPositionSaver.js +6 -4
- package/lib/cjs/session/Session.js +61 -26
- package/lib/cjs/session/subscription/Subscription.js +36 -18
- package/lib/cjs/stringifyQuery.js +66 -0
- package/lib/cjs/stringifyQueryAsSearch.js +14 -0
- package/lib/esm/NavigationStack.js +138 -49
- package/lib/esm/data-storage/DataStorage.js +7 -6
- package/lib/esm/environment/InMemoryEnvironment.js +6 -0
- package/lib/esm/environment/ServerSideRenderEnvironment.js +10 -0
- package/lib/esm/environment/WebBrowserEnvironment.js +6 -0
- package/lib/esm/environment/log/InMemoryLog.js +17 -0
- package/lib/esm/environment/log/WebBrowserLog.js +16 -0
- package/lib/esm/{session → environment}/navigation/InMemoryNavigation.js +16 -5
- package/lib/esm/{session → environment}/navigation/ServerSideNavigation.js +16 -7
- package/lib/esm/{session → environment}/navigation/WebBrowserNavigation.js +48 -8
- package/lib/esm/{session/navigation/error/ServerSideNavigationError.js → environment/navigation/error/ServerSideRedirectError.js} +1 -1
- package/lib/esm/environment/scroll-position/WebBrowserScrollPosition.js +15 -0
- package/lib/esm/getLocationBaseFromLocation.js +9 -0
- package/lib/esm/getLocationUrl.js +2 -5
- package/lib/esm/index.js +5 -8
- package/lib/esm/navigationBlockers.js +34 -32
- package/lib/esm/navigationBlockersEvaluation.js +145 -0
- package/lib/esm/parseInputLocation.js +9 -3
- package/lib/esm/parseQueryFromSearch.js +2 -6
- package/lib/esm/parseQueryString.js +72 -0
- package/lib/esm/scroll-position/ScrollPositionAutoSaver.js +7 -6
- package/lib/esm/scroll-position/ScrollPositionRestoration.js +31 -27
- package/lib/esm/scroll-position/ScrollPositionSaver.js +6 -4
- package/lib/esm/session/Session.js +61 -26
- package/lib/esm/session/subscription/Subscription.js +36 -18
- package/lib/esm/stringifyQuery.js +61 -0
- package/lib/esm/stringifyQueryAsSearch.js +8 -0
- package/lib/index.d.ts +180 -34
- package/package.json +4 -7
- package/src/NavigationStack.js +166 -56
- package/src/data-storage/DataStorage.js +9 -6
- package/src/environment/InMemoryEnvironment.js +6 -0
- package/src/environment/ServerSideRenderEnvironment.js +10 -0
- package/src/environment/WebBrowserEnvironment.js +6 -0
- package/src/environment/log/InMemoryLog.js +20 -0
- package/src/environment/log/WebBrowserLog.js +18 -0
- package/src/{session → environment}/navigation/InMemoryNavigation.js +16 -5
- package/src/{session → environment}/navigation/ServerSideNavigation.js +16 -7
- package/src/{session → environment}/navigation/WebBrowserNavigation.js +48 -8
- package/src/{session/navigation/error/ServerSideNavigationError.js → environment/navigation/error/ServerSideRedirectError.js} +1 -1
- package/src/environment/scroll-position/WebBrowserScrollPosition.js +15 -0
- package/src/getLocationBaseFromLocation.js +7 -0
- package/src/getLocationUrl.js +2 -5
- package/src/index.js +10 -13
- package/src/navigationBlockers.js +55 -34
- package/src/navigationBlockersEvaluation.js +161 -0
- package/src/parseInputLocation.js +10 -3
- package/src/parseQueryFromSearch.js +2 -6
- package/src/parseQueryString.js +81 -0
- package/src/scroll-position/ScrollPositionAutoSaver.js +10 -6
- package/src/scroll-position/ScrollPositionRestoration.js +36 -30
- package/src/scroll-position/ScrollPositionSaver.js +6 -4
- package/src/scroll-position/index.js +1 -1
- package/src/session/Session.js +68 -24
- package/src/session/subscription/Subscription.js +36 -11
- package/src/stringifyQuery.js +71 -0
- package/src/stringifyQueryAsSearch.js +9 -0
- package/test/NavigationStack.addBasePath.test.js +50 -0
- package/test/{redux/middleware/createNonProgrammaticNavigationBlockerMiddleware.test.js → NavigationStack.blockNonProgrammaticNavigationIfRequired.test.js} +51 -63
- package/test/{redux/middleware/createProgrammaticNavigationBlockerMiddleware.test.js → NavigationStack.blockProgrammaticNavigationIfRequired.test.js} +98 -78
- package/test/NavigationStack.general.test.js +68 -0
- package/test/NavigationStack.parseInputLocation.test.js +52 -0
- package/test/NavigationStack.removeBasePath.test.js +69 -0
- package/test/NavigationStack.test.js +97 -29
- package/test/data-storage/LocationDataStorage.test.js +3 -2
- package/test/index.js +7 -31
- package/test/index.test.js +4 -5
- package/test/parseQueryFromSearch.test.js +19 -0
- package/test/parseQueryString.test.js +18 -0
- package/test/scroll-position/ScrollPositionRestoration.test.js +34 -13
- package/test/scroll-position/createApp.js +8 -8
- package/test/scroll-position/withScrollableContainerAtIndexPageWithDisabledAutomaticScrollPositionRestoration.js +4 -4
- package/test/session/{InMemorySession.test.js → Session.InMemoryEnvironment.test.js} +10 -9
- package/test/session/{ServerSession.test.js → Session.ServerSideRenderEnvironment.test.js} +5 -4
- package/test/session/{WebBrowserSession.test.js → Session.WebBrowserEnvironment.test.js} +63 -13
- package/test/shouldWarn.js +44 -0
- package/test/stringifyQuery.test.js +65 -0
- package/types/index.d.ts +180 -34
- package/types/tsconfig.json +0 -1
- package/data-storage/package.json +0 -7
- package/lib/cjs/createSearchFromQuery.js +0 -13
- package/lib/cjs/debug.js +0 -12
- package/lib/cjs/redux/ActionTypes.js +0 -14
- package/lib/cjs/redux/ActionTypesInternal.js +0 -8
- package/lib/cjs/redux/Actions.js +0 -28
- package/lib/cjs/redux/createMiddlewares.js +0 -60
- package/lib/cjs/redux/index.js +0 -13
- package/lib/cjs/redux/internalLocationReducer.js +0 -14
- package/lib/cjs/redux/locationReducer.js +0 -13
- package/lib/cjs/redux/middleware/createAddInputLocationBasePathMiddleware.js +0 -32
- package/lib/cjs/redux/middleware/createNonProgrammaticNavigationBlockerMiddleware.js +0 -113
- package/lib/cjs/redux/middleware/createProgrammaticNavigationBlockerMiddleware.js +0 -94
- package/lib/cjs/redux/middleware/createRemoveOutputLocationBasePathMiddleware.js +0 -30
- package/lib/cjs/redux/middleware/createUpdateInternalLocationMiddleware.js +0 -73
- package/lib/cjs/redux/middleware/navigationOperationMiddleware.js +0 -40
- package/lib/cjs/redux/middleware/parseInputLocationMiddleware.js +0 -29
- package/lib/cjs/redux/middleware/updateLocationMiddleware.js +0 -34
- package/lib/cjs/session/InMemorySession.js +0 -22
- package/lib/cjs/session/WebBrowserSession.js +0 -20
- package/lib/data-storage/index.d.ts +0 -35
- package/lib/esm/createSearchFromQuery.js +0 -8
- package/lib/esm/debug.js +0 -7
- package/lib/esm/redux/ActionTypes.js +0 -9
- package/lib/esm/redux/ActionTypesInternal.js +0 -3
- package/lib/esm/redux/Actions.js +0 -22
- package/lib/esm/redux/createMiddlewares.js +0 -54
- package/lib/esm/redux/index.js +0 -4
- package/lib/esm/redux/internalLocationReducer.js +0 -8
- package/lib/esm/redux/locationReducer.js +0 -7
- package/lib/esm/redux/middleware/createAddInputLocationBasePathMiddleware.js +0 -27
- package/lib/esm/redux/middleware/createNonProgrammaticNavigationBlockerMiddleware.js +0 -108
- package/lib/esm/redux/middleware/createProgrammaticNavigationBlockerMiddleware.js +0 -88
- package/lib/esm/redux/middleware/createRemoveOutputLocationBasePathMiddleware.js +0 -25
- package/lib/esm/redux/middleware/createUpdateInternalLocationMiddleware.js +0 -68
- package/lib/esm/redux/middleware/navigationOperationMiddleware.js +0 -35
- package/lib/esm/redux/middleware/parseInputLocationMiddleware.js +0 -24
- package/lib/esm/redux/middleware/updateLocationMiddleware.js +0 -28
- package/lib/esm/session/InMemorySession.js +0 -15
- package/lib/esm/session/ServerSideRenderSession.js +0 -11
- package/lib/esm/session/WebBrowserSession.js +0 -13
- package/lib/redux/index.d.ts +0 -90
- package/lib/scroll-position/index.d.ts +0 -107
- package/redux/package.json +0 -7
- package/scroll-position/package.json +0 -7
- package/src/createSearchFromQuery.js +0 -9
- package/src/debug.js +0 -8
- package/src/redux/ActionTypes.js +0 -9
- package/src/redux/ActionTypesInternal.js +0 -3
- package/src/redux/Actions.js +0 -27
- package/src/redux/createMiddlewares.js +0 -65
- package/src/redux/index.js +0 -4
- package/src/redux/internalLocationReducer.js +0 -9
- package/src/redux/locationReducer.js +0 -8
- package/src/redux/middleware/createAddInputLocationBasePathMiddleware.js +0 -27
- package/src/redux/middleware/createNonProgrammaticNavigationBlockerMiddleware.js +0 -119
- package/src/redux/middleware/createProgrammaticNavigationBlockerMiddleware.js +0 -94
- package/src/redux/middleware/createRemoveOutputLocationBasePathMiddleware.js +0 -26
- package/src/redux/middleware/createUpdateInternalLocationMiddleware.js +0 -72
- package/src/redux/middleware/navigationOperationMiddleware.js +0 -34
- package/src/redux/middleware/parseInputLocationMiddleware.js +0 -23
- package/src/redux/middleware/updateLocationMiddleware.js +0 -28
- package/src/session/InMemorySession.js +0 -13
- package/src/session/ServerSideRenderSession.js +0 -9
- package/src/session/WebBrowserSession.js +0 -13
- package/test/middlewareTestUtil.js +0 -31
- package/test/redux/Action.test.js +0 -73
- package/test/redux/ActionTypes.test.js +0 -13
- package/test/redux/createMiddlewares.test.js +0 -96
- package/test/redux/index.test.js +0 -10
- package/test/redux/locationReducer.test.js +0 -39
- package/test/redux/middleware/createAddInputLocationBasePathMiddleware.test.js +0 -40
- package/test/redux/middleware/createRemoveOutputLocationBasePathMiddleware.test.js +0 -51
- package/test/redux/middleware/navigationOperationMiddleware.test.js +0 -78
- package/test/redux/middleware/parseInputLocationMiddleware.test.js +0 -62
- package/test/testUtil.js +0 -3
- package/types/data-storage/index.d.ts +0 -35
- package/types/redux/index.d.ts +0 -90
- package/types/scroll-position/index.d.ts +0 -107
- /package/lib/cjs/{session → environment}/lifecycle/InMemorySessionLifecycle.js +0 -0
- /package/lib/cjs/{session → environment}/lifecycle/WebBrowserSessionLifecycle.js +0 -0
- /package/lib/cjs/{session → environment}/lifecycle/page-lifecycle/PageLifecycle.js +0 -0
- /package/lib/cjs/{session → environment}/lifecycle/page-lifecycle/PageLifecycleInstance.js +0 -0
- /package/lib/cjs/{session → environment}/lifecycle/page-lifecycle/supportsConstructableEventTarget.js +0 -0
- /package/lib/cjs/{session → environment}/navigation/error/NavigationOutOfBoundsError.js +0 -0
- /package/lib/cjs/{session → environment}/navigation/operation/operations.js +0 -0
- /package/lib/esm/{session → environment}/lifecycle/InMemorySessionLifecycle.js +0 -0
- /package/lib/esm/{session → environment}/lifecycle/WebBrowserSessionLifecycle.js +0 -0
- /package/lib/esm/{session → environment}/lifecycle/page-lifecycle/PageLifecycle.js +0 -0
- /package/lib/esm/{session → environment}/lifecycle/page-lifecycle/PageLifecycleInstance.js +0 -0
- /package/lib/esm/{session → environment}/lifecycle/page-lifecycle/supportsConstructableEventTarget.js +0 -0
- /package/lib/esm/{session → environment}/navigation/error/NavigationOutOfBoundsError.js +0 -0
- /package/lib/esm/{session → environment}/navigation/operation/operations.js +0 -0
- /package/src/{session → environment}/lifecycle/InMemorySessionLifecycle.js +0 -0
- /package/src/{session → environment}/lifecycle/WebBrowserSessionLifecycle.js +0 -0
- /package/src/{session → environment}/lifecycle/page-lifecycle/PageLifecycle.js +0 -0
- /package/src/{session → environment}/lifecycle/page-lifecycle/PageLifecycleInstance.js +0 -0
- /package/src/{session → environment}/lifecycle/page-lifecycle/supportsConstructableEventTarget.js +0 -0
- /package/src/{session → environment}/navigation/error/NavigationOutOfBoundsError.js +0 -0
- /package/src/{session → environment}/navigation/operation/operations.js +0 -0
- /package/test/{parseInputLocationMiddleware.test.js → parseInputLocation.test.js} +0 -0
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import ActionTypes from '../../../src/redux/ActionTypes';
|
|
2
|
-
import parseInputLocationMiddleware from '../../../src/redux/middleware/parseInputLocationMiddleware';
|
|
3
|
-
|
|
4
|
-
describe('parseInputLocationMiddleware', () => {
|
|
5
|
-
let next;
|
|
6
|
-
let dispatch;
|
|
7
|
-
beforeEach(() => {
|
|
8
|
-
next = sinon.spy();
|
|
9
|
-
dispatch = parseInputLocationMiddleware()(next);
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
it('should transform input location of PUSH action (`string` to `object`)', () => {
|
|
13
|
-
dispatch({
|
|
14
|
-
type: ActionTypes.PUSH,
|
|
15
|
-
payload: '/foo?bar=baz#qux',
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
expect(next).to.be.calledWith({
|
|
19
|
-
type: ActionTypes.PUSH,
|
|
20
|
-
payload: {
|
|
21
|
-
pathname: '/foo',
|
|
22
|
-
search: '?bar=baz',
|
|
23
|
-
query: {
|
|
24
|
-
bar: 'baz',
|
|
25
|
-
},
|
|
26
|
-
hash: '#qux',
|
|
27
|
-
},
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it('should transform input location of REPLACE action (`string` to `object`)', () => {
|
|
32
|
-
dispatch({
|
|
33
|
-
type: ActionTypes.REPLACE,
|
|
34
|
-
payload: '/foo?bar=baz#qux',
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
expect(next).to.be.calledWith({
|
|
38
|
-
type: ActionTypes.REPLACE,
|
|
39
|
-
payload: {
|
|
40
|
-
pathname: '/foo',
|
|
41
|
-
search: '?bar=baz',
|
|
42
|
-
query: {
|
|
43
|
-
bar: 'baz',
|
|
44
|
-
},
|
|
45
|
-
hash: '#qux',
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it('should not affect other action', () => {
|
|
51
|
-
const UNKNOWN = 'UNKNOWN';
|
|
52
|
-
dispatch({
|
|
53
|
-
type: UNKNOWN,
|
|
54
|
-
payload: '/foo?bar=baz#qux',
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
expect(next).to.be.calledWith({
|
|
58
|
-
type: UNKNOWN,
|
|
59
|
-
payload: '/foo?bar=baz#qux',
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
});
|
package/test/testUtil.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
// TypeScript Version: 3.0
|
|
2
|
-
|
|
3
|
-
import { Session } from '../index.d.js';
|
|
4
|
-
|
|
5
|
-
export {};
|
|
6
|
-
|
|
7
|
-
export type GenericValue =
|
|
8
|
-
| string
|
|
9
|
-
| number
|
|
10
|
-
| boolean
|
|
11
|
-
| Record<string, unknown>
|
|
12
|
-
| null
|
|
13
|
-
| undefined;
|
|
14
|
-
|
|
15
|
-
export class DataStorage<
|
|
16
|
-
Key extends string = string,
|
|
17
|
-
Value extends GenericValue = GenericValue,
|
|
18
|
-
> {
|
|
19
|
-
constructor(session: Session, options: { namespace: string });
|
|
20
|
-
|
|
21
|
-
get(key: Key): Value;
|
|
22
|
-
|
|
23
|
-
set(key: Key, value: Value): void;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export class LocationDataStorage<
|
|
27
|
-
Key extends string = string,
|
|
28
|
-
Value extends GenericValue = GenericValue,
|
|
29
|
-
> {
|
|
30
|
-
constructor(session: Session, options: { namespace: string });
|
|
31
|
-
|
|
32
|
-
get(location: Location, key: Key): Value;
|
|
33
|
-
|
|
34
|
-
set(location: Location, key: Key, value: Value): void;
|
|
35
|
-
}
|
package/types/redux/index.d.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { InputLocation, Session } from '../index.d.js';
|
|
2
|
-
|
|
3
|
-
export interface CreateMiddlewaresOptions {
|
|
4
|
-
basePath?: string;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export function createMiddlewares(
|
|
8
|
-
session: Session,
|
|
9
|
-
options?: CreateMiddlewaresOptions,
|
|
10
|
-
): Middleware[];
|
|
11
|
-
|
|
12
|
-
export const ActionTypes: {
|
|
13
|
-
INIT: '@@navigation-stack/INIT';
|
|
14
|
-
PUSH: '@@navigation-stack/PUSH';
|
|
15
|
-
REPLACE: '@@navigation-stack/REPLACE';
|
|
16
|
-
NAVIGATE: '@@navigation-stack/NAVIGATE';
|
|
17
|
-
SHIFT: '@@navigation-stack/SHIFT';
|
|
18
|
-
UPDATE: '@@navigation-stack/UPDATE';
|
|
19
|
-
STOP: '@@navigation-stack/STOP';
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export interface InitAction {
|
|
23
|
-
type: (typeof ActionTypes)['INIT'];
|
|
24
|
-
payload?: InputLocation;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface PushAction {
|
|
28
|
-
type: (typeof ActionTypes)['PUSH'];
|
|
29
|
-
payload: InputLocation;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface ReplaceAction {
|
|
33
|
-
type: (typeof ActionTypes)['REPLACE'];
|
|
34
|
-
payload: InputLocation;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export interface ShiftAction {
|
|
38
|
-
type: (typeof ActionTypes)['SHIFT'];
|
|
39
|
-
payload: number;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export interface DisposeAction {
|
|
43
|
-
type: (typeof ActionTypes)['STOP'];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export type Action =
|
|
47
|
-
| InitAction
|
|
48
|
-
| PushAction
|
|
49
|
-
| ReplaceAction
|
|
50
|
-
| ShiftAction
|
|
51
|
-
| DisposeAction;
|
|
52
|
-
|
|
53
|
-
export const Actions: {
|
|
54
|
-
init(initialLocation?: InputLocation): InitAction;
|
|
55
|
-
push(location: InputLocation): PushAction;
|
|
56
|
-
replace(location: InputLocation): ReplaceAction;
|
|
57
|
-
shift(delta: number): ShiftAction;
|
|
58
|
-
stop(): DisposeAction;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export const locationReducer: Reducer<Location, Action>;
|
|
62
|
-
|
|
63
|
-
// The following types are copy-pasted from `redux`.
|
|
64
|
-
|
|
65
|
-
interface ReduxAction<T = any> {
|
|
66
|
-
type: T;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
interface AnyAction extends ReduxAction {
|
|
70
|
-
// Allows any extra properties to be defined in an action.
|
|
71
|
-
[extraProps: string]: any;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
interface Dispatch<A extends Action = AnyAction> {
|
|
75
|
-
<T extends A>(action: T): T;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
interface MiddlewareAPI<D extends Dispatch = Dispatch, S = any> {
|
|
79
|
-
dispatch: D;
|
|
80
|
-
getState(): S;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
interface Middleware<S = any, D extends Dispatch = Dispatch> {
|
|
84
|
-
(api: MiddlewareAPI<D, S>): (next: Dispatch) => (action: any) => any;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
type Reducer<S = any, A extends Action = AnyAction> = (
|
|
88
|
-
state: S | undefined,
|
|
89
|
-
action: A,
|
|
90
|
-
) => S;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
// TypeScript Version: 3.0
|
|
2
|
-
|
|
3
|
-
import { EnvironmentScrollPosition, Location, Session } from '../index.d.js';
|
|
4
|
-
|
|
5
|
-
export { EnvironmentScrollPosition, Location, Session } from '../index.d.js';
|
|
6
|
-
|
|
7
|
-
export {};
|
|
8
|
-
|
|
9
|
-
export class ScrollPositionRestoration<
|
|
10
|
-
ScrollableContainer = any,
|
|
11
|
-
Anchor = any,
|
|
12
|
-
> {
|
|
13
|
-
constructor(
|
|
14
|
-
session: Session<ScrollableContainer, Anchor>,
|
|
15
|
-
|
|
16
|
-
// `_options` are currently only used in tests.
|
|
17
|
-
_options?: {
|
|
18
|
-
// `_options._shouldSetPageScrollPositionOnLocationChange`
|
|
19
|
-
// isn't used in real life and is not part of the public API.
|
|
20
|
-
// It's only used in tests.
|
|
21
|
-
_shouldSetPageScrollPositionOnLocationChange?: (
|
|
22
|
-
location: Location,
|
|
23
|
-
prevLocation: Location | undefined,
|
|
24
|
-
) => boolean;
|
|
25
|
-
|
|
26
|
-
// `_options._getSavedPageScrollPositionOnLocationChange`
|
|
27
|
-
// isn't used in real life and is not part of the public API.
|
|
28
|
-
// It's only used in tests.
|
|
29
|
-
_getSavedPageScrollPositionOnLocationChange?: (
|
|
30
|
-
location: Location,
|
|
31
|
-
prevLocation: Location | undefined,
|
|
32
|
-
) => [number, number] | undefined;
|
|
33
|
-
|
|
34
|
-
// Using this option, a developer could theoretically provide their own implementation
|
|
35
|
-
// of setting a scroll position. For example, it could use "smooth" (animated) scrolling, etc.
|
|
36
|
-
// This could be part of the public API if anyone provided a sensible real-world use case for it.
|
|
37
|
-
_pageScrollPositionSetter?: ScrollPositionSetter<
|
|
38
|
-
ScrollableContainer,
|
|
39
|
-
Anchor
|
|
40
|
-
>;
|
|
41
|
-
},
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
addScrollableContainer(
|
|
45
|
-
scrollableContainerKey: string,
|
|
46
|
-
scrollableContainer: ScrollableContainer,
|
|
47
|
-
|
|
48
|
-
// `_options` are currently only used in tests.
|
|
49
|
-
_options?: {
|
|
50
|
-
// `_options._shouldSetScrollPositionOnLocationChange`
|
|
51
|
-
// isn't used in real life and is not part of the public API.
|
|
52
|
-
// It's only used in tests.
|
|
53
|
-
_shouldSetScrollPositionOnLocationChange?: (
|
|
54
|
-
location: Location,
|
|
55
|
-
prevLocation: Location | undefined,
|
|
56
|
-
) => boolean;
|
|
57
|
-
|
|
58
|
-
// `_options._getSavedScrollPositionOnLocationChange`
|
|
59
|
-
// isn't used in real life and is not part of the public API.
|
|
60
|
-
// It's only used in tests.
|
|
61
|
-
_getSavedScrollPositionOnLocationChange?: (
|
|
62
|
-
location: Location,
|
|
63
|
-
prevLocation: Location | undefined,
|
|
64
|
-
) => [number, number] | undefined;
|
|
65
|
-
|
|
66
|
-
// Using this option, a developer could theoretically provide their own implementation
|
|
67
|
-
// of setting a scroll position. For example, it could use "smooth" (animated) scrolling, etc.
|
|
68
|
-
// This could be part of the public API if anyone provided a sensible real-world use case for it.
|
|
69
|
-
_scrollPositionSetter: ScrollPositionSetter<ScrollableContainer, Anchor>;
|
|
70
|
-
},
|
|
71
|
-
): () => void;
|
|
72
|
-
|
|
73
|
-
locationRendered: (location: Location) => Promise<void>;
|
|
74
|
-
|
|
75
|
-
stop(): void;
|
|
76
|
-
|
|
77
|
-
// `_enableSavingScrollPosition()` and `_disableSavingScrollPosition()`
|
|
78
|
-
// aren't used in real life and are not part of the public API.
|
|
79
|
-
// They're only used in tests.
|
|
80
|
-
_enableSavingScrollPosition(): void;
|
|
81
|
-
|
|
82
|
-
// `_enableSavingScrollPosition()` and `_disableSavingScrollPosition()`
|
|
83
|
-
// aren't used in real life and are not part of the public API.
|
|
84
|
-
// They're only used in tests.
|
|
85
|
-
_disableSavingScrollPosition(): void;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Theoretically, a developer could pass their own `ScrollPositionSetter` implementation
|
|
89
|
-
// when calling `.addScrollableContainer()` or
|
|
90
|
-
export interface ScrollPositionSetter<ScrollableContainer, Anchor> {
|
|
91
|
-
// Sets scroll position of a page or a scrollable element.
|
|
92
|
-
// Returns a `Promise` that resolves when it has finished setting the scroll position.
|
|
93
|
-
set(
|
|
94
|
-
// When setting page scroll position, `scrollableContainer` is `undefined`.
|
|
95
|
-
// When setting scrollable element scroll position, `scrollableContainer` is the scrollable element.
|
|
96
|
-
scrollableContainer: ScrollableContainer,
|
|
97
|
-
// When setting page scroll position, it could be either an anchor or numeric coordinates.
|
|
98
|
-
// When setting scrollable element scroll position, it could only be numeric coordinates.
|
|
99
|
-
scrollPositionOrAnchor: Anchor | [number, number],
|
|
100
|
-
// `scrollPosition` provides the API for setting scroll position according to the environment.
|
|
101
|
-
// For example, `WebBrowserScrollPosition` provides the methods for setting scroll position in a web browser.
|
|
102
|
-
scrollPosition: EnvironmentScrollPosition<ScrollableContainer, Anchor>,
|
|
103
|
-
): Promise<void>;
|
|
104
|
-
|
|
105
|
-
// Cancels any pending (or in-progress) setting of scroll position.
|
|
106
|
-
cancel(): void;
|
|
107
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/src/{session → environment}/lifecycle/page-lifecycle/supportsConstructableEventTarget.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|