@prose-reader/core 1.200.0 → 1.201.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.
Files changed (40) hide show
  1. package/dist/context/Context.d.ts +5 -7
  2. package/dist/createReaderWithEnhancer.d.ts +21 -13
  3. package/dist/enhancers/navigation/resolvers/getNavigationForLeftOrTopPage.d.ts +1 -1
  4. package/dist/enhancers/navigation/resolvers/getNavigationForLeftSinglePage.d.ts +1 -1
  5. package/dist/enhancers/navigation/resolvers/getNavigationForRightOrBottomPage.d.ts +1 -1
  6. package/dist/enhancers/navigation/resolvers/getNavigationForRightSinglePage.d.ts +1 -1
  7. package/dist/hooks/types.d.ts +0 -5
  8. package/dist/index.js +2470 -2338
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.umd.cjs +2467 -2336
  11. package/dist/index.umd.cjs.map +1 -1
  12. package/dist/navigation/InternalNavigator.d.ts +5 -4
  13. package/dist/navigation/Navigator.d.ts +19 -19
  14. package/dist/navigation/UserNavigator.d.ts +3 -3
  15. package/dist/navigation/consolidation/consolidateWithPagination.d.ts +1 -1
  16. package/dist/navigation/{viewport/ViewportNavigator.d.ts → controllers/ControlledNavigationController.d.ts} +5 -5
  17. package/dist/navigation/controllers/ScrollNavigationController.d.ts +26 -0
  18. package/dist/navigation/{viewport → controllers}/getScaledDownPosition.d.ts +1 -1
  19. package/dist/navigation/resolvers/NavigationResolver.d.ts +1 -1
  20. package/dist/navigation/resolvers/getAdjustedPositionForSpread.d.ts +1 -1
  21. package/dist/navigation/resolvers/getAdjustedPositionWithSafeEdge.d.ts +1 -1
  22. package/dist/navigation/resolvers/getNavigationForPosition.d.ts +1 -1
  23. package/dist/navigation/resolvers/getNavigationForSpineItemPage.d.ts +1 -1
  24. package/dist/navigation/resolvers/getNavigationForUrl.d.ts +1 -1
  25. package/dist/navigation/restoration/restorePosition.d.ts +1 -1
  26. package/dist/reader.d.ts +22 -13
  27. package/dist/spine/Spine.d.ts +8 -6
  28. package/dist/spine/SpineLayout.d.ts +3 -1
  29. package/dist/spine/layout/layoutItem.d.ts +3 -1
  30. package/dist/spine/locator/SpineLocator.d.ts +9 -3
  31. package/dist/spine/locator/getSpineItemFromPosition.d.ts +1 -1
  32. package/dist/spine/locator/getVisibleSpineItemsFromPosition.d.ts +4 -4
  33. package/dist/spineItem/SpineItemLayout.d.ts +3 -1
  34. package/dist/utils/ReactiveEntity.d.ts +8 -0
  35. package/dist/utils/rxjs.d.ts +1 -0
  36. package/dist/viewport/Viewport.d.ts +17 -0
  37. package/dist/viewport/translateSpinePositionToRelativeViewport.d.ts +1 -1
  38. package/package.json +3 -3
  39. package/dist/navigation/tests/SpineItemsManagerMock.d.ts +0 -30
  40. /package/dist/navigation/{viewport → controllers}/positions.d.ts +0 -0
@@ -7,8 +7,9 @@ import { SpineItemPosition } from '../spineItem/types';
7
7
  import { DestroyableClass } from '../utils/DestroyableClass';
8
8
  import { Locker } from './Locker';
9
9
  import { UserNavigationEntry } from './UserNavigator';
10
+ import { ControlledNavigationController, DeprecatedViewportPosition } from './controllers/ControlledNavigationController';
11
+ import { ScrollNavigationController } from './controllers/ScrollNavigationController';
10
12
  import { createNavigationResolver } from './resolvers/NavigationResolver';
11
- import { DeprecatedViewportPosition, ViewportNavigator } from './viewport/ViewportNavigator';
12
13
  export type NavigationConsolidation = {
13
14
  spineItemHeight?: number;
14
15
  spineItemWidth?: number;
@@ -40,10 +41,10 @@ export declare class InternalNavigator extends DestroyableClass {
40
41
  protected settings: ReaderSettingsManager;
41
42
  protected context: Context;
42
43
  protected userNavigation$: Observable<UserNavigationEntry>;
43
- protected viewportController: ViewportNavigator;
44
+ protected viewportController: ControlledNavigationController;
45
+ protected scrollNavigationController: ScrollNavigationController;
44
46
  protected navigationResolver: ReturnType<typeof createNavigationResolver>;
45
47
  protected spine: Spine;
46
- protected element$: Observable<HTMLElement>;
47
48
  protected isUserLocked$: Observable<boolean>;
48
49
  navigationSubject: BehaviorSubject<InternalNavigationEntry>;
49
50
  navigated$: Observable<{
@@ -63,6 +64,6 @@ export declare class InternalNavigator extends DestroyableClass {
63
64
  id: symbol;
64
65
  }>;
65
66
  locker: Locker;
66
- constructor(settings: ReaderSettingsManager, context: Context, userNavigation$: Observable<UserNavigationEntry>, viewportController: ViewportNavigator, navigationResolver: ReturnType<typeof createNavigationResolver>, spine: Spine, element$: Observable<HTMLElement>, isUserLocked$: Observable<boolean>);
67
+ constructor(settings: ReaderSettingsManager, context: Context, userNavigation$: Observable<UserNavigationEntry>, viewportController: ControlledNavigationController, scrollNavigationController: ScrollNavigationController, navigationResolver: ReturnType<typeof createNavigationResolver>, spine: Spine, isUserLocked$: Observable<boolean>);
67
68
  get navigation(): InternalNavigationEntry;
68
69
  }
@@ -1,31 +1,32 @@
1
1
  import { Context } from '../context/Context';
2
- import { SpineItemsManager } from '../spine/SpineItemsManager';
3
- import { BehaviorSubject } from 'rxjs';
4
- import { Spine } from '../spine/Spine';
5
- import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
6
2
  import { HookManager } from '../hooks/HookManager';
7
- import { ViewportNavigator } from './viewport/ViewportNavigator';
3
+ import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
4
+ import { Spine } from '../spine/Spine';
5
+ import { SpineItemsManager } from '../spine/SpineItemsManager';
6
+ import { Viewport } from '../viewport/Viewport';
8
7
  import { InternalNavigator } from './InternalNavigator';
9
- export declare const createNavigator: ({ spineItemsManager, context, parentElement$, hookManager, spine, settings, }: {
8
+ import { ControlledNavigationController } from './controllers/ControlledNavigationController';
9
+ import { ScrollNavigationController } from './controllers/ScrollNavigationController';
10
+ export declare const createNavigator: ({ spineItemsManager, context, hookManager, spine, settings, viewport, }: {
10
11
  spineItemsManager: SpineItemsManager;
11
12
  context: Context;
12
- parentElement$: BehaviorSubject<HTMLElement | undefined>;
13
13
  hookManager: HookManager;
14
14
  spine: Spine;
15
15
  settings: ReaderSettingsManager;
16
+ viewport: Viewport;
16
17
  }) => {
17
18
  destroy: () => void;
18
19
  getNavigation: () => import('./InternalNavigator').InternalNavigationEntry;
19
20
  internalNavigator: InternalNavigator;
20
- viewportNavigator: ViewportNavigator;
21
- element$: BehaviorSubject<HTMLElement>;
21
+ scrollNavigationController: ScrollNavigationController;
22
+ controlledNavigationController: ControlledNavigationController;
22
23
  isLocked$: import('rxjs').Observable<boolean>;
23
24
  viewportState$: import('rxjs').Observable<"free" | "busy">;
24
25
  navigate: (to: import('./UserNavigator').UserNavigationEntry) => void;
25
26
  lock(): () => void;
26
27
  navigationResolver: {
27
28
  getNavigationForUrl: (url: string | URL) => {
28
- position: import('./viewport/ViewportNavigator').DeprecatedViewportPosition;
29
+ position: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition;
29
30
  spineItemId: string;
30
31
  } | undefined;
31
32
  getNavigationForSpineItemPage: (params: Omit<Parameters<typeof import('./resolvers/getNavigationForSpineItemPage').getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => import('../spine/types').SpinePosition;
@@ -33,13 +34,13 @@ export declare const createNavigator: ({ spineItemsManager, context, parentEleme
33
34
  spineItemPosition: import('../spineItem/types').SpineItemPosition;
34
35
  spineItem: import('..').SpineItem;
35
36
  }) => import('../spine/types').SpinePosition;
36
- getNavigationForCfi: (cfi: string) => import('./viewport/ViewportNavigator').DeprecatedViewportPosition | undefined;
37
- getNavigationForLastPage: (spineItem: import('..').SpineItem) => import('./viewport/ViewportNavigator').DeprecatedViewportPosition;
38
- getNavigationForSpineIndexOrId: (indexOrId: number | string | import('..').SpineItem) => import('./viewport/ViewportNavigator').DeprecatedViewportPosition;
39
- getNavigationForPosition: (viewportPosition: import('./viewport/ViewportNavigator').DeprecatedViewportPosition | import('../spine/types').SpinePosition) => import('../spine/types').SpinePosition;
40
- getMostPredominantNavigationForPosition: (viewportPosition: import('./viewport/ViewportNavigator').DeprecatedViewportPosition) => import('./viewport/ViewportNavigator').DeprecatedViewportPosition;
41
- getAdjustedPositionWithSafeEdge: (position: import('./viewport/ViewportNavigator').DeprecatedViewportPosition | import('../spine/types').SpinePosition) => import('../spine/types').SpinePosition;
42
- isNavigationGoingForwardFrom: (to: import('./viewport/ViewportNavigator').DeprecatedViewportPosition, from: import('./viewport/ViewportNavigator').DeprecatedViewportPosition) => boolean;
37
+ getNavigationForCfi: (cfi: string) => import('./controllers/ControlledNavigationController').DeprecatedViewportPosition | undefined;
38
+ getNavigationForLastPage: (spineItem: import('..').SpineItem) => import('./controllers/ControlledNavigationController').DeprecatedViewportPosition;
39
+ getNavigationForSpineIndexOrId: (indexOrId: number | string | import('..').SpineItem) => import('./controllers/ControlledNavigationController').DeprecatedViewportPosition;
40
+ getNavigationForPosition: (viewportPosition: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition | import('../spine/types').SpinePosition) => import('../spine/types').SpinePosition;
41
+ getMostPredominantNavigationForPosition: (viewportPosition: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition) => import('./controllers/ControlledNavigationController').DeprecatedViewportPosition;
42
+ getAdjustedPositionWithSafeEdge: (position: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition | import('../spine/types').SpinePosition) => import('../spine/types').SpinePosition;
43
+ isNavigationGoingForwardFrom: (to: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition, from: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition) => boolean;
43
44
  arePositionsDifferent: (a: {
44
45
  x: number;
45
46
  y: number;
@@ -47,7 +48,7 @@ export declare const createNavigator: ({ spineItemsManager, context, parentEleme
47
48
  x: number;
48
49
  y: number;
49
50
  }) => boolean;
50
- getAdjustedPositionForSpread: (position: import('./viewport/ViewportNavigator').DeprecatedViewportPosition | import('../spine/types').SpinePosition) => import('../spine/types').SpinePosition;
51
+ getAdjustedPositionForSpread: (position: import('./controllers/ControlledNavigationController').DeprecatedViewportPosition | import('../spine/types').SpinePosition) => import('../spine/types').SpinePosition;
51
52
  spineItemNavigator: {
52
53
  getNavigationForLastPage: (spineItem: import('..').SpineItem) => import('../spineItem/types').SpineItemPosition;
53
54
  getNavigationForPosition: (spineItem: import('..').SpineItem, position: import('../spineItem/types').SpineItemPosition) => import('../spineItem/types').SpineItemPosition;
@@ -58,6 +59,5 @@ export declare const createNavigator: ({ spineItemsManager, context, parentEleme
58
59
  position: import('../spine/types').SpinePosition;
59
60
  id: symbol;
60
61
  }>;
61
- getElement: () => HTMLElement;
62
62
  };
63
63
  export type Navigator = ReturnType<typeof createNavigator>;
@@ -5,7 +5,7 @@ import { Spine } from '../spine/Spine';
5
5
  import { SpinePosition } from '../spine/types';
6
6
  import { DestroyableClass } from '../utils/DestroyableClass';
7
7
  import { Locker } from './Locker';
8
- import { DeprecatedViewportPosition } from './viewport/ViewportNavigator';
8
+ import { DeprecatedViewportPosition } from './controllers/ControlledNavigationController';
9
9
  export type UserNavigationEntry = {
10
10
  position?: DeprecatedViewportPosition | SpinePosition;
11
11
  spineItem?: number | string;
@@ -17,13 +17,13 @@ export type UserNavigationEntry = {
17
17
  };
18
18
  export declare class UserNavigator extends DestroyableClass {
19
19
  protected settings: ReaderSettingsManager;
20
- protected element$: Observable<HTMLElement>;
20
+ protected scrollNavigatorElement$: Observable<HTMLElement | undefined>;
21
21
  protected context: Context;
22
22
  protected scrollHappeningFromBrowser$: Observable<unknown>;
23
23
  protected spine: Spine;
24
24
  protected navigationSubject: Subject<UserNavigationEntry>;
25
25
  locker: Locker;
26
26
  navigation$: Observable<UserNavigationEntry>;
27
- constructor(settings: ReaderSettingsManager, element$: Observable<HTMLElement>, context: Context, scrollHappeningFromBrowser$: Observable<unknown>, spine: Spine);
27
+ constructor(settings: ReaderSettingsManager, scrollNavigatorElement$: Observable<HTMLElement | undefined>, context: Context, scrollHappeningFromBrowser$: Observable<unknown>, spine: Spine);
28
28
  navigate(to: UserNavigationEntry): void;
29
29
  }
@@ -6,7 +6,7 @@ export declare const consolidateWithPagination: (context: Context, navigation$:
6
6
  meta: {
7
7
  triggeredBy: "pagination";
8
8
  };
9
- position: import('../../spine/types').SpinePosition | import('../viewport/ViewportNavigator').DeprecatedViewportPosition;
9
+ position: import('../../spine/types').SpinePosition | import('../controllers/ControlledNavigationController').DeprecatedViewportPosition;
10
10
  id: symbol;
11
11
  type: `api` | `scroll`;
12
12
  animation?: boolean | `turn` | `snap`;
@@ -5,23 +5,23 @@ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
5
  import { Spine } from '../../spine/Spine';
6
6
  import { SpinePosition } from '../../spine/types';
7
7
  import { DestroyableClass } from '../../utils/DestroyableClass';
8
+ import { Viewport } from '../../viewport/Viewport';
8
9
  export type DeprecatedViewportPosition = SpinePosition;
9
10
  export type ViewportNavigationEntry = {
10
11
  position: SpinePosition;
11
12
  animation?: boolean | "turn" | "snap";
12
13
  };
13
- export declare class ViewportNavigator extends DestroyableClass {
14
+ export declare class ControlledNavigationController extends DestroyableClass {
14
15
  protected settings: ReaderSettingsManager;
15
- protected viewportElement$: BehaviorSubject<HTMLElement>;
16
16
  protected hookManager: HookManager;
17
17
  protected context: Context;
18
18
  protected spine: Spine;
19
+ protected viewport: Viewport;
19
20
  protected navigateSubject: Subject<ViewportNavigationEntry>;
20
- protected scrollingSubject: BehaviorSubject<boolean>;
21
+ readonly element$: BehaviorSubject<HTMLElement>;
21
22
  isNavigating$: Observable<boolean>;
22
- isScrolling$: Observable<boolean>;
23
23
  layout$: Observable<unknown>;
24
- constructor(settings: ReaderSettingsManager, viewportElement$: BehaviorSubject<HTMLElement>, hookManager: HookManager, context: Context, spine: Spine);
24
+ constructor(settings: ReaderSettingsManager, hookManager: HookManager, context: Context, spine: Spine, viewport: Viewport);
25
25
  protected setViewportPosition(position: SpinePosition): void;
26
26
  navigate(navigation: ViewportNavigationEntry): void;
27
27
  get viewportPosition(): SpinePosition;
@@ -0,0 +1,26 @@
1
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
+ import { Context } from '../../context/Context';
3
+ import { HookManager } from '../../hooks/HookManager';
4
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
+ import { Spine } from '../../spine/Spine';
6
+ import { SpinePosition } from '../../spine/types';
7
+ import { ReactiveEntity } from '../../utils/ReactiveEntity';
8
+ import { Viewport } from '../../viewport/Viewport';
9
+ import { ViewportNavigationEntry } from './ControlledNavigationController';
10
+ export declare class ScrollNavigationController extends ReactiveEntity<{
11
+ element: HTMLElement | undefined;
12
+ }> {
13
+ protected viewport: Viewport;
14
+ protected settings: ReaderSettingsManager;
15
+ protected hookManager: HookManager;
16
+ protected spine: Spine;
17
+ protected context: Context;
18
+ protected navigateSubject: Subject<ViewportNavigationEntry>;
19
+ protected scrollingSubject: BehaviorSubject<boolean>;
20
+ isScrolling$: Observable<boolean>;
21
+ isNavigating$: Observable<boolean>;
22
+ constructor(viewport: Viewport, settings: ReaderSettingsManager, hookManager: HookManager, spine: Spine, context: Context);
23
+ protected setViewportPosition: ({ position }: ViewportNavigationEntry) => void;
24
+ navigate(navigation: ViewportNavigationEntry): void;
25
+ get viewportPosition(): SpinePosition;
26
+ }
@@ -1,5 +1,5 @@
1
1
  import { SpinePosition } from '../../spine/types';
2
- import { DeprecatedViewportPosition } from './ViewportNavigator';
2
+ import { DeprecatedViewportPosition } from './ControlledNavigationController';
3
3
  export declare const getScaledDownPosition: ({ position: { x, y }, spineElement, element, }: {
4
4
  position: DeprecatedViewportPosition;
5
5
  spineElement: HTMLElement;
@@ -6,7 +6,7 @@ import { SpineLocator } from '../../spine/locator/SpineLocator';
6
6
  import { SpinePosition } from '../../spine/types';
7
7
  import { SpineItem } from '../../spineItem/SpineItem';
8
8
  import { SpineItemPosition } from '../../spineItem/types';
9
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
9
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
10
10
  import { getNavigationForSpineItemPage } from './getNavigationForSpineItemPage';
11
11
  export declare const NAMESPACE = "spineNavigator";
12
12
  export type NavigationResolver = ReturnType<typeof createNavigationResolver>;
@@ -1,5 +1,5 @@
1
1
  import { SpinePosition } from '../../spine/types';
2
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
2
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
3
3
  export declare const getAdjustedPositionForSpread: ({ position: { x, y }, pageSizeWidth, visibleAreaRectWidth, }: {
4
4
  position: DeprecatedViewportPosition | SpinePosition;
5
5
  pageSizeWidth: number;
@@ -1,7 +1,7 @@
1
1
  import { SpineItemsManager } from '../../spine/SpineItemsManager';
2
2
  import { SpineLayout } from '../../spine/SpineLayout';
3
3
  import { SpinePosition } from '../../spine/types';
4
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
4
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
5
5
  export declare const NAMESPACE = "spineNavigator";
6
6
  export declare const getAdjustedPositionWithSafeEdge: ({ position, isRTL, pageSizeHeight, spineItemsManager, visibleAreaRectWidth, spineLayout, }: {
7
7
  position: DeprecatedViewportPosition | SpinePosition;
@@ -2,7 +2,7 @@ import { Context } from '../../context/Context';
2
2
  import { SpineLocator } from '../../spine/locator/SpineLocator';
3
3
  import { SpinePosition } from '../../spine/types';
4
4
  import { SpineItemNavigationResolver } from '../../spineItem/navigationResolver';
5
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
5
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
6
6
  export declare const getNavigationForPosition: ({ viewportPosition, spineLocator, context, spineItemNavigationResolver, }: {
7
7
  viewportPosition: DeprecatedViewportPosition | SpinePosition;
8
8
  spineLocator: SpineLocator;
@@ -3,7 +3,7 @@ import { SpineItemsManager } from '../../spine/SpineItemsManager';
3
3
  import { SpineLocator } from '../../spine/locator/SpineLocator';
4
4
  import { SpineItem } from '../../spineItem/SpineItem';
5
5
  import { SpineItemNavigationResolver } from '../../spineItem/navigationResolver';
6
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
6
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
7
7
  export declare const getNavigationForSpineItemPage: ({ pageIndex, spineItemsManager, spineItemId, context, spineLocator, spineItemNavigationResolver, }: {
8
8
  pageIndex: number;
9
9
  spineItemId: SpineItem | number | string;
@@ -1,7 +1,7 @@
1
1
  import { Context } from '../../context/Context';
2
2
  import { SpineItemsManager } from '../../spine/SpineItemsManager';
3
3
  import { SpineLocator } from '../../spine/locator/SpineLocator';
4
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
4
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
5
5
  export declare const getNavigationForUrl: ({ context, spineItemsManager, spineLocator, url, pageSizeWidth, visibleAreaRectWidth, }: {
6
6
  url: string | URL;
7
7
  spineItemsManager: SpineItemsManager;
@@ -7,8 +7,8 @@ import { SpineLocator } from '../../spine/locator/SpineLocator';
7
7
  import { SpinePosition } from '../../spine/types';
8
8
  import { SpineItemLocator } from '../../spineItem/locationResolver';
9
9
  import { InternalNavigationEntry } from '../InternalNavigator';
10
+ import { DeprecatedViewportPosition } from '../controllers/ControlledNavigationController';
10
11
  import { NavigationResolver } from '../resolvers/NavigationResolver';
11
- import { DeprecatedViewportPosition } from '../viewport/ViewportNavigator';
12
12
  export declare const restorePosition: ({ navigation, spineItemsManager, settings, spineLocator, navigationResolver, spineLayout, }: {
13
13
  spineLocator: SpineLocator;
14
14
  settings: ReaderSettingsManager;
package/dist/reader.d.ts CHANGED
@@ -7,6 +7,7 @@ import { CoreInputSettings } from './settings/types';
7
7
  import { Spine } from './spine/Spine';
8
8
  import { SpineItemsManager } from './spine/SpineItemsManager';
9
9
  import { SpineItem } from './spineItem/SpineItem';
10
+ import { Viewport } from './viewport/Viewport';
10
11
  export type CreateReaderOptions = Partial<CoreInputSettings>;
11
12
  export type CreateReaderParameters = CreateReaderOptions;
12
13
  export type ContextSettings = Partial<CoreInputSettings>;
@@ -47,15 +48,18 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
47
48
  } | undefined;
48
49
  };
49
50
  navigation: {
50
- viewportBusy$: import('rxjs').Observable<"busy">;
51
- getViewportPosition: () => import('./spine/types').SpinePosition;
51
+ destroy: () => void;
52
52
  getNavigation: () => import('./navigation/InternalNavigator').InternalNavigationEntry;
53
- getElement: () => HTMLElement;
53
+ internalNavigator: import('./navigation/InternalNavigator').InternalNavigator;
54
+ scrollNavigationController: import('./navigation/controllers/ScrollNavigationController').ScrollNavigationController;
55
+ controlledNavigationController: import('./navigation/controllers/ControlledNavigationController').ControlledNavigationController;
56
+ isLocked$: import('rxjs').Observable<boolean>;
57
+ viewportState$: import('rxjs').Observable<"free" | "busy">;
54
58
  navigate: (to: import('./navigation/UserNavigator').UserNavigationEntry) => void;
55
- lock: () => () => void;
59
+ lock(): () => void;
56
60
  navigationResolver: {
57
61
  getNavigationForUrl: (url: string | URL) => {
58
- position: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition;
62
+ position: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition;
59
63
  spineItemId: string;
60
64
  } | undefined;
61
65
  getNavigationForSpineItemPage: (params: Omit<Parameters<typeof import('./navigation/resolvers/getNavigationForSpineItemPage').getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => import('./spine/types').SpinePosition;
@@ -63,13 +67,13 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
63
67
  spineItemPosition: import('./spineItem/types').SpineItemPosition;
64
68
  spineItem: SpineItem;
65
69
  }) => import('./spine/types').SpinePosition;
66
- getNavigationForCfi: (cfi: string) => import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition | undefined;
67
- getNavigationForLastPage: (spineItem: SpineItem) => import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition;
68
- getNavigationForSpineIndexOrId: (indexOrId: number | string | SpineItem) => import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition;
69
- getNavigationForPosition: (viewportPosition: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition | import('./spine/types').SpinePosition) => import('./spine/types').SpinePosition;
70
- getMostPredominantNavigationForPosition: (viewportPosition: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition) => import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition;
71
- getAdjustedPositionWithSafeEdge: (position: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition | import('./spine/types').SpinePosition) => import('./spine/types').SpinePosition;
72
- isNavigationGoingForwardFrom: (to: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition, from: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition) => boolean;
70
+ getNavigationForCfi: (cfi: string) => import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition | undefined;
71
+ getNavigationForLastPage: (spineItem: SpineItem) => import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition;
72
+ getNavigationForSpineIndexOrId: (indexOrId: number | string | SpineItem) => import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition;
73
+ getNavigationForPosition: (viewportPosition: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition | import('./spine/types').SpinePosition) => import('./spine/types').SpinePosition;
74
+ getMostPredominantNavigationForPosition: (viewportPosition: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition) => import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition;
75
+ getAdjustedPositionWithSafeEdge: (position: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition | import('./spine/types').SpinePosition) => import('./spine/types').SpinePosition;
76
+ isNavigationGoingForwardFrom: (to: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition, from: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition) => boolean;
73
77
  arePositionsDifferent: (a: {
74
78
  x: number;
75
79
  y: number;
@@ -77,13 +81,17 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
77
81
  x: number;
78
82
  y: number;
79
83
  }) => boolean;
80
- getAdjustedPositionForSpread: (position: import('./navigation/viewport/ViewportNavigator').DeprecatedViewportPosition | import('./spine/types').SpinePosition) => import('./spine/types').SpinePosition;
84
+ getAdjustedPositionForSpread: (position: import('./navigation/controllers/ControlledNavigationController').DeprecatedViewportPosition | import('./spine/types').SpinePosition) => import('./spine/types').SpinePosition;
81
85
  spineItemNavigator: {
82
86
  getNavigationForLastPage: (spineItem: SpineItem) => import('./spineItem/types').SpineItemPosition;
83
87
  getNavigationForPosition: (spineItem: SpineItem, position: import('./spineItem/types').SpineItemPosition) => import('./spineItem/types').SpineItemPosition;
84
88
  getNavigationFromNode: (spineItem: SpineItem, node: Node, offset: number) => import('./spineItem/types').SpineItemPosition;
85
89
  };
86
90
  };
91
+ navigation$: import('rxjs').Observable<{
92
+ position: import('./spine/types').SpinePosition;
93
+ id: symbol;
94
+ }>;
87
95
  };
88
96
  spineItemsObserver: import('./spine/SpineItemsObserver').SpineItemsObserver;
89
97
  spineItemsManager: SpineItemsManager;
@@ -95,6 +103,7 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
95
103
  state$: import('rxjs').Observable<import('./pagination/Pagination').PaginationInfo>;
96
104
  };
97
105
  settings: SettingsInterface<NonNullable<CoreInputSettings>, NonNullable<import('./settings/types').CoreOutputSettings | undefined>>;
106
+ viewport: Viewport;
98
107
  element$: import('rxjs').Observable<HTMLElement>;
99
108
  viewportState$: import('rxjs').Observable<"free" | "busy">;
100
109
  viewportFree$: import('rxjs').Observable<"free">;
@@ -1,15 +1,16 @@
1
1
  import { BehaviorSubject, Observable } from 'rxjs';
2
2
  import { Context } from '../context/Context';
3
+ import { HookManager } from '../hooks/HookManager';
3
4
  import { Pagination } from '../pagination/Pagination';
4
- import { SpineItemsManager } from './SpineItemsManager';
5
- import { SpineLocator } from './locator/SpineLocator';
6
- import { createSpineItemLocator as createSpineItemLocationResolver } from '../spineItem/locationResolver';
7
5
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
8
- import { HookManager } from '../hooks/HookManager';
9
- import { SpineItemsLoader } from './loader/SpineItemsLoader';
6
+ import { createSpineItemLocator as createSpineItemLocationResolver } from '../spineItem/locationResolver';
10
7
  import { DestroyableClass } from '../utils/DestroyableClass';
8
+ import { Viewport } from '../viewport/Viewport';
9
+ import { SpineItemsManager } from './SpineItemsManager';
11
10
  import { SpineItemsObserver } from './SpineItemsObserver';
12
11
  import { SpineLayout } from './SpineLayout';
12
+ import { SpineItemsLoader } from './loader/SpineItemsLoader';
13
+ import { SpineLocator } from './locator/SpineLocator';
13
14
  export declare class Spine extends DestroyableClass {
14
15
  protected parentElement$: Observable<HTMLElement>;
15
16
  protected context: Context;
@@ -18,13 +19,14 @@ export declare class Spine extends DestroyableClass {
18
19
  spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>;
19
20
  protected settings: ReaderSettingsManager;
20
21
  protected hookManager: HookManager;
22
+ protected viewport: Viewport;
21
23
  protected elementSubject: BehaviorSubject<HTMLElement>;
22
24
  readonly spineItemsLoader: SpineItemsLoader;
23
25
  locator: SpineLocator;
24
26
  spineItemsObserver: SpineItemsObserver;
25
27
  spineLayout: SpineLayout;
26
28
  element$: Observable<HTMLElement>;
27
- constructor(parentElement$: Observable<HTMLElement>, context: Context, pagination: Pagination, spineItemsManager: SpineItemsManager, spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>, settings: ReaderSettingsManager, hookManager: HookManager);
29
+ constructor(parentElement$: Observable<HTMLElement>, context: Context, pagination: Pagination, spineItemsManager: SpineItemsManager, spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>, settings: ReaderSettingsManager, hookManager: HookManager, viewport: Viewport);
28
30
  get element(): HTMLElement;
29
31
  layout(): void;
30
32
  destroy(): void;
@@ -3,6 +3,7 @@ import { Context } from '../context/Context';
3
3
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
4
4
  import { SpineItem } from '../spineItem/SpineItem';
5
5
  import { DestroyableClass } from '../utils/DestroyableClass';
6
+ import { Viewport } from '../viewport/Viewport';
6
7
  import { SpineItemsManager } from './SpineItemsManager';
7
8
  import { SpineItemSpineLayout } from './types';
8
9
  export type PageLayoutInformation = {
@@ -17,10 +18,11 @@ export declare class SpineLayout extends DestroyableClass {
17
18
  protected spineItemsManager: SpineItemsManager;
18
19
  protected context: Context;
19
20
  protected settings: ReaderSettingsManager;
21
+ protected viewport: Viewport;
20
22
  protected layoutSubject: Subject<unknown>;
21
23
  protected spineItemsRelativeLayouts: SpineItemSpineLayout[];
22
24
  readonly layout$: Observable<unknown>;
23
- constructor(spineItemsManager: SpineItemsManager, context: Context, settings: ReaderSettingsManager);
25
+ constructor(spineItemsManager: SpineItemsManager, context: Context, settings: ReaderSettingsManager, viewport: Viewport);
24
26
  layout(): void;
25
27
  getSpineItemSpineLayoutInfo(spineItemOrIndex: SpineItem | number | string | undefined): SpineItemSpineLayout;
26
28
  get numberOfPages(): number;
@@ -2,9 +2,10 @@ import { Observable } from 'rxjs';
2
2
  import { SpineItem } from '../..';
3
3
  import { Context } from '../../context/Context';
4
4
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
+ import { Viewport } from '../../viewport/Viewport';
5
6
  import { SpineItemsManager } from '../SpineItemsManager';
6
7
  import { SpineItemSpineLayout } from '../types';
7
- export declare const layoutItem: ({ horizontalOffset, verticalOffset, context, spineItemsManager, isGloballyPrePaginated, settings, index, item, }: {
8
+ export declare const layoutItem: ({ horizontalOffset, verticalOffset, context, spineItemsManager, isGloballyPrePaginated, settings, index, item, viewport, }: {
8
9
  horizontalOffset: number;
9
10
  verticalOffset: number;
10
11
  context: Context;
@@ -13,6 +14,7 @@ export declare const layoutItem: ({ horizontalOffset, verticalOffset, context, s
13
14
  settings: ReaderSettingsManager;
14
15
  item: SpineItem;
15
16
  index: number;
17
+ viewport: Viewport;
16
18
  }) => Observable<{
17
19
  horizontalOffset: number;
18
20
  verticalOffset: number;
@@ -3,6 +3,7 @@ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
3
3
  import { SpineItem } from '../../spineItem/SpineItem';
4
4
  import { createSpineItemLocator } from '../../spineItem/locationResolver';
5
5
  import { SpineItemPosition } from '../../spineItem/types';
6
+ import { Viewport } from '../../viewport/Viewport';
6
7
  import { ViewportSlicePosition } from '../../viewport/types';
7
8
  import { SpineItemsManager } from '../SpineItemsManager';
8
9
  import { SpineLayout } from '../SpineLayout';
@@ -11,12 +12,13 @@ import { getAbsolutePageIndexFromPageIndex } from './getAbsolutePageIndexFromPag
11
12
  import { getSpineInfoFromAbsolutePageIndex } from './getSpineInfoFromAbsolutePageIndex';
12
13
  import { getVisibleSpineItemsFromPosition } from './getVisibleSpineItemsFromPosition';
13
14
  export type SpineLocator = ReturnType<typeof createSpineLocator>;
14
- export declare const createSpineLocator: ({ spineItemsManager, context, spineItemLocator, settings, spineLayout, }: {
15
+ export declare const createSpineLocator: ({ spineItemsManager, context, spineItemLocator, settings, spineLayout, viewport, }: {
15
16
  spineItemsManager: SpineItemsManager;
16
17
  context: Context;
17
18
  spineItemLocator: ReturnType<typeof createSpineItemLocator>;
18
19
  settings: ReaderSettingsManager;
19
20
  spineLayout: SpineLayout;
21
+ viewport: Viewport;
20
22
  }) => {
21
23
  getSpinePositionFromSpineItemPosition: ({ spineItem, spineItemPosition, }: {
22
24
  spineItemPosition: SpineItemPosition;
@@ -34,19 +36,23 @@ export declare const createSpineLocator: ({ spineItemsManager, context, spineIte
34
36
  getSpineItemFromPosition: (position: SpinePosition) => SpineItem | undefined;
35
37
  getSpineItemFromIframe: (iframe: Element) => SpineItem | undefined;
36
38
  getSpineItemPageIndexFromNode: (node: Node, offset: number | undefined, spineItemOrIndex: SpineItem | number) => number | undefined;
37
- getVisibleSpineItemsFromPosition: (params: Omit<Parameters<typeof getVisibleSpineItemsFromPosition>[0], "context" | "spineItemsManager" | "settings" | "spineLayout">) => {
39
+ getVisibleSpineItemsFromPosition: (params: Omit<Parameters<typeof getVisibleSpineItemsFromPosition>[0], "spineItemsManager" | "settings" | "spineLayout" | "viewport">) => {
38
40
  beginIndex: number;
39
41
  endIndex: number;
40
42
  } | undefined;
41
- getVisiblePagesFromViewportPosition: ({ position, threshold, spineItem, restrictToScreen, useAbsoluteViewport, }: {
43
+ getVisiblePagesFromViewportPosition: (params: Omit<Parameters<({ position, threshold, spineItem, restrictToScreen, useAbsoluteViewport, viewport, }: {
42
44
  position: SpinePosition;
43
45
  threshold: number;
44
46
  spineItem: SpineItem;
45
47
  restrictToScreen?: boolean;
46
48
  useAbsoluteViewport?: boolean;
49
+ viewport: Viewport;
47
50
  }) => {
48
51
  beginPageIndex: number;
49
52
  endPageIndex: number;
53
+ } | undefined>[0], "viewport">) => {
54
+ beginPageIndex: number;
55
+ endPageIndex: number;
50
56
  } | undefined;
51
57
  isPositionWithinSpineItem: (position: ViewportSlicePosition | SpinePosition, spineItem: SpineItem) => boolean;
52
58
  spineItemLocator: {
@@ -1,4 +1,4 @@
1
- import { DeprecatedViewportPosition } from '../../navigation/viewport/ViewportNavigator';
1
+ import { DeprecatedViewportPosition } from '../../navigation/controllers/ControlledNavigationController';
2
2
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
3
3
  import { SpineItemsManager } from '../SpineItemsManager';
4
4
  import { SpineLayout } from '../SpineLayout';
@@ -1,18 +1,18 @@
1
- import { Context } from '../../context/Context';
2
- import { DeprecatedViewportPosition } from '../../navigation/viewport/ViewportNavigator';
1
+ import { DeprecatedViewportPosition } from '../../navigation/controllers/ControlledNavigationController';
3
2
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
3
+ import { Viewport } from '../../viewport/Viewport';
4
4
  import { SpineItemsManager } from '../SpineItemsManager';
5
5
  import { SpineLayout } from '../SpineLayout';
6
6
  import { SpinePosition } from '../types';
7
- export declare const getVisibleSpineItemsFromPosition: ({ position, threshold, restrictToScreen, spineItemsManager, context, settings, spineLayout, useAbsoluteViewport, }: {
7
+ export declare const getVisibleSpineItemsFromPosition: ({ position, threshold, restrictToScreen, spineItemsManager, settings, spineLayout, useAbsoluteViewport, viewport, }: {
8
8
  position: DeprecatedViewportPosition | SpinePosition;
9
9
  threshold: number;
10
10
  restrictToScreen?: boolean;
11
11
  spineItemsManager: SpineItemsManager;
12
- context: Context;
13
12
  settings: ReaderSettingsManager;
14
13
  spineLayout: SpineLayout;
15
14
  useAbsoluteViewport?: boolean;
15
+ viewport: Viewport;
16
16
  }) => {
17
17
  beginIndex: number;
18
18
  endIndex: number;
@@ -2,6 +2,7 @@ import { Manifest } from '@prose-reader/shared';
2
2
  import { Observable, ObservedValueOf } from 'rxjs';
3
3
  import { Context } from '../context/Context';
4
4
  import { HookManager } from '../hooks/HookManager';
5
+ import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
5
6
  import { DestroyableClass } from '../utils/DestroyableClass';
6
7
  import { DocumentRenderer } from './renderer/DocumentRenderer';
7
8
  export declare class SpineItemLayout extends DestroyableClass {
@@ -10,6 +11,7 @@ export declare class SpineItemLayout extends DestroyableClass {
10
11
  context: Context;
11
12
  hookManager: HookManager;
12
13
  renderer: DocumentRenderer;
14
+ settings: ReaderSettingsManager;
13
15
  private layoutTriggerSubject;
14
16
  private lastLayout;
15
17
  readonly layout$: Observable<{
@@ -25,7 +27,7 @@ export declare class SpineItemLayout extends DestroyableClass {
25
27
  height: number;
26
28
  };
27
29
  }>;
28
- constructor(item: Manifest[`spineItems`][number], containerElement: HTMLElement, context: Context, hookManager: HookManager, renderer: DocumentRenderer);
30
+ constructor(item: Manifest[`spineItems`][number], containerElement: HTMLElement, context: Context, hookManager: HookManager, renderer: DocumentRenderer, settings: ReaderSettingsManager);
29
31
  private validateDimension;
30
32
  private applyDimsAfterLayout;
31
33
  layout: (params: ObservedValueOf<typeof this.layoutTriggerSubject>) => Observable<{
@@ -0,0 +1,8 @@
1
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
+ export declare class ReactiveEntity<T extends Record<string, unknown>> extends BehaviorSubject<T> {
3
+ protected destroy$: Subject<void>;
4
+ update(value: Partial<T>): void;
5
+ watch<K extends keyof T>(key: K): Observable<T[K]>;
6
+ watch<K extends keyof T>(keys: K[]): Observable<Pick<T, K>>;
7
+ destroy(): void;
8
+ }
@@ -1,5 +1,6 @@
1
1
  import { Observable, OperatorFunction } from 'rxjs';
2
2
  export declare const mapKeysTo: <R extends Record<string, unknown>, K extends keyof R>(keys: K[]) => OperatorFunction<R, Pick<R, K>>;
3
+ export declare const watchKeys: <R extends Record<string, unknown>, K extends keyof R>(keys: K[]) => (stream: Observable<R>) => Observable<Pick<R, K>>;
3
4
  export declare function observeResize(element: HTMLElement): Observable<ResizeObserverEntry[]>;
4
5
  export declare const waitForSwitch: <O>(waitForStream: Observable<O>) => <N>(stream: Observable<N>) => Observable<N>;
5
6
  export declare const deferNextResult: <T>(stream: Observable<T>) => () => Observable<T>;
@@ -0,0 +1,17 @@
1
+ import { Context } from '../context/Context';
2
+ import { ReactiveEntity } from '../utils/ReactiveEntity';
3
+ import { AbsoluteViewport, RelativeViewport } from './types';
4
+ type State = {
5
+ element: HTMLElement;
6
+ };
7
+ export declare class Viewport extends ReactiveEntity<State> {
8
+ protected context: Context;
9
+ constructor(context: Context);
10
+ getPageSize(): {
11
+ width: number;
12
+ height: number;
13
+ };
14
+ get absoluteViewport(): AbsoluteViewport;
15
+ get relativeViewport(): RelativeViewport;
16
+ }
17
+ export {};
@@ -1,4 +1,4 @@
1
- import { DeprecatedViewportPosition } from '../navigation/viewport/ViewportNavigator';
1
+ import { DeprecatedViewportPosition } from '../navigation/controllers/ControlledNavigationController';
2
2
  import { SpinePosition, UnsafeSpinePosition } from '../spine/types';
3
3
  import { AbsoluteViewport, RelativeViewport } from './types';
4
4
  export declare const translateSpinePositionToRelativeViewport: (absolutePosition: DeprecatedViewportPosition | SpinePosition, absoluteViewport: AbsoluteViewport, relativeViewport: RelativeViewport | AbsoluteViewport) => UnsafeSpinePosition;