@prose-reader/core 1.67.0 → 1.68.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 (129) hide show
  1. package/dist/{cfi.d.ts → cfi/CfiHandler.d.ts} +1 -7
  2. package/dist/cfi/generate/generateCfiFromRange.d.ts +11 -0
  3. package/dist/cfi/generate/getCfiForSpineItemPage.d.ts +12 -0
  4. package/dist/cfi/generate/getItemAnchor.d.ts +3 -0
  5. package/dist/cfi/generate/getRootCfi.d.ts +3 -0
  6. package/dist/cfi/lookup/extractProseMetadataFromCfi.d.ts +5 -0
  7. package/dist/cfi/lookup/isRootCfi.d.ts +1 -0
  8. package/dist/cfi/lookup/resolveCfi.d.ts +14 -0
  9. package/dist/context/BridgeEvent.d.ts +16 -0
  10. package/dist/context/Context.d.ts +3 -1
  11. package/dist/createReaderWithEnhancer.d.ts +103 -167
  12. package/dist/enhancers/events/normalizeEventForViewport.d.ts +2 -2
  13. package/dist/enhancers/hotkeys.d.ts +2 -1
  14. package/dist/enhancers/links.d.ts +2 -1
  15. package/dist/enhancers/loadingEnhancer.d.ts +1 -1
  16. package/dist/enhancers/navigation/{navigation.d.ts → index.d.ts} +2 -7
  17. package/dist/enhancers/navigation/navigators/manualNavigator.d.ts +27 -0
  18. package/dist/enhancers/navigation/navigators/panNavigator.d.ts +21 -0
  19. package/dist/enhancers/navigation/resolvers/getNavigationForLeftPage.d.ts +16 -0
  20. package/dist/enhancers/navigation/resolvers/getNavigationForLeftSinglePage.d.ts +14 -0
  21. package/dist/enhancers/navigation/resolvers/getNavigationForRightPage.d.ts +16 -0
  22. package/dist/enhancers/navigation/resolvers/getNavigationForRightSinglePage.d.ts +14 -0
  23. package/dist/enhancers/navigation/resolvers/getSpineItemPositionForLeftPage.d.ts +11 -0
  24. package/dist/enhancers/navigation/resolvers/getSpineItemPositionForRightPage.d.ts +11 -0
  25. package/dist/enhancers/navigation/state.d.ts +2 -5
  26. package/dist/enhancers/navigation/types.d.ts +20 -0
  27. package/dist/enhancers/pagination/enhancer.d.ts +4 -4
  28. package/dist/enhancers/pagination/pagination.d.ts +1 -1
  29. package/dist/enhancers/pagination/spine.d.ts +0 -5
  30. package/dist/enhancers/pagination/types.d.ts +1 -1
  31. package/dist/enhancers/resources/resourcesManager.d.ts +1 -1
  32. package/dist/enhancers/types/enhancer.d.ts +1 -2
  33. package/dist/hooks/types.d.ts +2 -15
  34. package/dist/index.d.ts +1 -1
  35. package/dist/index.js +4933 -4293
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.umd.cjs +5019 -4379
  38. package/dist/index.umd.cjs.map +1 -1
  39. package/dist/navigation/InternalNavigator.d.ts +67 -0
  40. package/dist/navigation/InternalNavigator.test.d.ts +1 -0
  41. package/dist/navigation/Locker.d.ts +7 -0
  42. package/dist/navigation/Navigator.d.ts +70 -0
  43. package/dist/navigation/UserNavigator.d.ts +27 -0
  44. package/dist/navigation/consolidation/mapUserNavigationToInternal.d.ts +8 -0
  45. package/dist/navigation/consolidation/withCfiPosition.d.ts +11 -0
  46. package/dist/navigation/consolidation/withDirection.d.ts +22 -0
  47. package/dist/navigation/consolidation/withFallbackPosition.d.ts +13 -0
  48. package/dist/navigation/consolidation/withPaginationInfo.d.ts +10 -0
  49. package/dist/navigation/consolidation/withSpineItem.d.ts +19 -0
  50. package/dist/navigation/consolidation/withSpineItemLayoutInfo.d.ts +11 -0
  51. package/dist/navigation/consolidation/withSpineItemPosition.d.ts +19 -0
  52. package/dist/navigation/consolidation/withUrlInfo.d.ts +11 -0
  53. package/dist/navigation/resolvers/NavigationResolver.d.ts +51 -0
  54. package/dist/navigation/resolvers/getAdjustedPositionForSpread.d.ts +7 -0
  55. package/dist/navigation/resolvers/getNavigationForPosition.d.ts +11 -0
  56. package/dist/navigation/resolvers/getNavigationForSpineItemPage.d.ts +15 -0
  57. package/dist/navigation/resolvers/getNavigationForUrl.d.ts +16 -0
  58. package/dist/navigation/resolvers/getNavigationFromSpineItemPosition.d.ts +13 -0
  59. package/dist/navigation/resolvers/wrapPositionWithSafeEdge.d.ts +14 -0
  60. package/dist/navigation/restoration/restoreNavigationForControlledPageTurnMode.d.ts +11 -0
  61. package/dist/navigation/restoration/restoreNavigationForControlledPageTurnMode.test.d.ts +1 -0
  62. package/dist/navigation/restoration/restorePosition.d.ts +18 -0
  63. package/dist/navigation/restoration/withRestoredPosition.d.ts +21 -0
  64. package/dist/navigation/tests/SpineItemsManagerMock.d.ts +27 -0
  65. package/dist/navigation/tests/utils.d.ts +12 -0
  66. package/dist/navigation/viewport/ViewportNavigator.d.ts +36 -0
  67. package/dist/navigation/viewport/getScaledDownPosition.d.ts +11 -0
  68. package/dist/pagination/Pagination.d.ts +26 -0
  69. package/dist/pagination/PaginationController.d.ts +15 -0
  70. package/dist/reader.d.ts +108 -2
  71. package/dist/report.d.ts +2 -0
  72. package/dist/selection.d.ts +1 -1
  73. package/dist/settings/ReaderSettingsManager.d.ts +2 -1
  74. package/dist/spine/Spine.d.ts +32 -0
  75. package/dist/spine/{locationResolver.d.ts → SpineItemsManager.d.ts} +216 -226
  76. package/dist/spine/SpineItemsObserver.d.ts +17 -0
  77. package/dist/spine/loader/SpineItemsLoader.d.ts +13 -0
  78. package/dist/spine/loader/loadItems.d.ts +8 -0
  79. package/dist/spine/loader/mapToItemsToLoad.d.ts +7 -0
  80. package/dist/{spineItemManager.d.ts → spine/locator/SpineLocator.d.ts} +109 -198
  81. package/dist/spine/locator/getItemVisibilityForPosition.d.ts +19 -0
  82. package/dist/spine/locator/getItemVisibilityForPosition.test.d.ts +1 -0
  83. package/dist/spine/locator/getSpineItemFromPosition.d.ts +126 -0
  84. package/dist/spine/locator/getVisibleSpineItemsFromPosition.d.ts +16 -0
  85. package/dist/spine/locator/getVisibleSpineItemsFromPosition.test.d.ts +1 -0
  86. package/dist/spineItem/commonSpineItem.d.ts +25 -61
  87. package/dist/spineItem/createSpineItem.d.ts +24 -60
  88. package/dist/spineItem/frame/FrameItem.d.ts +44 -0
  89. package/dist/spineItem/{frameItem → frame}/createHtmlPageFromResource.d.ts +1 -1
  90. package/dist/spineItem/frame/loader/attachFrameSrc.d.ts +8 -0
  91. package/dist/spineItem/frame/loader/configureFrame.d.ts +10 -0
  92. package/dist/spineItem/frame/loader/createFrameElement.d.ts +1 -0
  93. package/dist/spineItem/frame/loader/loadFrame.d.ts +12 -0
  94. package/dist/spineItem/frame/loader/loader.d.ts +23 -0
  95. package/dist/spineItem/frame/loader/unloadFrame.d.ts +9 -0
  96. package/dist/spineItem/frame/loader/waitForFrameLoad.d.ts +3 -0
  97. package/dist/spineItem/frame/loader/waitForFrameReady.d.ts +3 -0
  98. package/dist/spineItem/helpers.d.ts +3 -0
  99. package/dist/spineItem/locationResolver.d.ts +17 -5
  100. package/dist/spineItem/navigationResolver.d.ts +6 -8
  101. package/dist/spineItem/prePaginatedSpineItem.d.ts +24 -60
  102. package/dist/spineItem/reflowable/ReflowableSpineItems.d.ts +24 -60
  103. package/dist/spineItem/types.d.ts +1 -10
  104. package/dist/tests/utils.d.ts +1 -0
  105. package/dist/utils/DestroyableClass.d.ts +5 -0
  106. package/dist/utils/dom.d.ts +3 -2
  107. package/dist/utils/rxjs.d.ts +3 -1
  108. package/package.json +3 -3
  109. package/dist/enhancers/navigation/navigator.d.ts +0 -8
  110. package/dist/enhancers/publicApi.d.ts +0 -5
  111. package/dist/pagination/pagination.d.ts +0 -88
  112. package/dist/pagination/types.d.ts +0 -10
  113. package/dist/spine/cfiLocator.d.ts +0 -340
  114. package/dist/spine/createSpine.d.ts +0 -31
  115. package/dist/spine/navigationResolver.d.ts +0 -48
  116. package/dist/spine/types.d.ts +0 -10
  117. package/dist/spineItem/frameItem/createFrame$.d.ts +0 -1
  118. package/dist/spineItem/frameItem/createFrameManipulator.d.ts +0 -5
  119. package/dist/spineItem/frameItem/frameItem.d.ts +0 -48
  120. package/dist/spineItem/frameItem/loader.d.ts +0 -29
  121. package/dist/types/Spine.d.ts +0 -40
  122. package/dist/types/index.d.ts +0 -12
  123. package/dist/types/reader.d.ts +0 -44
  124. package/dist/viewportNavigator/manualViewportNavigator.d.ts +0 -96
  125. package/dist/viewportNavigator/panViewportNavigator.d.ts +0 -55
  126. package/dist/viewportNavigator/scrollViewportNavigator.d.ts +0 -38
  127. package/dist/viewportNavigator/types.d.ts +0 -34
  128. package/dist/viewportNavigator/viewportNavigator.d.ts +0 -82
  129. /package/dist/enhancers/{pagination.test.d.ts → pagination/pagination.test.d.ts} +0 -0
@@ -0,0 +1,67 @@
1
+ import { BehaviorSubject, Observable } from 'rxjs';
2
+ import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
3
+ import { UserNavigationEntry } from './UserNavigator';
4
+ import { ViewportNavigator, ViewportPosition } from './viewport/ViewportNavigator';
5
+ import { createNavigationResolver } from './resolvers/NavigationResolver';
6
+ import { SpineItemsManager } from '../spine/SpineItemsManager';
7
+ import { SpineLocator } from '../spine/locator/SpineLocator';
8
+ import { DestroyableClass } from '../utils/DestroyableClass';
9
+ import { Context } from '../context/Context';
10
+ import { UnsafeSpineItemPosition } from '../spineItem/types';
11
+ import { Locker } from './Locker';
12
+
13
+ export type NavigationConsolidation = {
14
+ spineItemHeight?: number;
15
+ spineItemWidth?: number;
16
+ spineItemTop?: number;
17
+ spineItemLeft?: number;
18
+ spineItemIsUsingVerticalWriting?: boolean;
19
+ paginationBeginCfi?: string;
20
+ positionInSpineItem?: UnsafeSpineItemPosition;
21
+ directionFromLastNavigation?: "forward" | "backward" | "anchor";
22
+ };
23
+ export type InternalNavigationEntry = {
24
+ position: ViewportPosition;
25
+ id: symbol;
26
+ meta: {
27
+ triggeredBy: `user` | `restoration` | `pagination`;
28
+ };
29
+ type: `api` | `scroll`;
30
+ animation?: boolean | `turn` | `snap`;
31
+ url?: string | URL;
32
+ spineItem?: string | number;
33
+ cfi?: string;
34
+ } & NavigationConsolidation;
35
+ export type InternalNavigationInput = Omit<InternalNavigationEntry, "position"> & Partial<InternalNavigationEntry>;
36
+ export type Navigation = Pick<InternalNavigationEntry, "position" | "id">;
37
+ export declare class InternalNavigator extends DestroyableClass {
38
+ protected settings: ReaderSettingsManager;
39
+ protected context: Context;
40
+ protected userNavigation$: Observable<UserNavigationEntry>;
41
+ protected viewportController: ViewportNavigator;
42
+ protected navigationResolver: ReturnType<typeof createNavigationResolver>;
43
+ protected spineItemsManager: SpineItemsManager;
44
+ protected spineLocator: SpineLocator;
45
+ protected element$: Observable<HTMLElement>;
46
+ protected isUserLocked$: Observable<boolean>;
47
+ navigationSubject: BehaviorSubject<InternalNavigationEntry>;
48
+ navigated$: Observable<{
49
+ position: ViewportPosition;
50
+ id: symbol;
51
+ meta: {
52
+ triggeredBy: `user` | `restoration` | `pagination`;
53
+ };
54
+ type: `api` | `scroll`;
55
+ animation?: boolean | `turn` | `snap`;
56
+ url?: string | URL;
57
+ spineItem?: string | number;
58
+ cfi?: string;
59
+ } & NavigationConsolidation>;
60
+ navigation$: Observable<{
61
+ position: ViewportPosition;
62
+ id: symbol;
63
+ }>;
64
+ locker: Locker;
65
+ constructor(settings: ReaderSettingsManager, context: Context, userNavigation$: Observable<UserNavigationEntry>, viewportController: ViewportNavigator, navigationResolver: ReturnType<typeof createNavigationResolver>, spineItemsManager: SpineItemsManager, spineLocator: SpineLocator, element$: Observable<HTMLElement>, isUserLocked$: Observable<boolean>);
66
+ get navigation(): InternalNavigationEntry;
67
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+
3
+ export declare class Locker {
4
+ protected isLockedSubject: BehaviorSubject<number>;
5
+ isLocked$: import('rxjs').Observable<boolean>;
6
+ lock(): () => void;
7
+ }
@@ -0,0 +1,70 @@
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
+ import { HookManager } from '../hooks/HookManager';
7
+ import { ViewportNavigator } from './viewport/ViewportNavigator';
8
+ import { InternalNavigator } from './InternalNavigator';
9
+ import { SpineItemsObserver } from '../spine/SpineItemsObserver';
10
+
11
+ export declare const createNavigator: ({ spineItemsManager, spineItemsObserver, context, parentElement$, hookManager, spine, settings, }: {
12
+ spineItemsManager: SpineItemsManager;
13
+ spineItemsObserver: SpineItemsObserver;
14
+ context: Context;
15
+ parentElement$: BehaviorSubject<HTMLElement | undefined>;
16
+ hookManager: HookManager;
17
+ spine: Spine;
18
+ settings: ReaderSettingsManager;
19
+ }) => {
20
+ destroy: () => void;
21
+ getNavigation: () => import('./InternalNavigator').InternalNavigationEntry;
22
+ internalNavigator: InternalNavigator;
23
+ viewportNavigator: ViewportNavigator;
24
+ element$: BehaviorSubject<HTMLElement>;
25
+ isLocked$: import('rxjs').Observable<boolean>;
26
+ viewportState$: import('rxjs').Observable<"free" | "busy">;
27
+ navigate: (to: import('./UserNavigator').UserNavigationEntry) => void;
28
+ lock(): () => void;
29
+ navigationResolver: {
30
+ getNavigationForUrl: (url: string | URL) => {
31
+ position: import('./viewport/ViewportNavigator').ViewportPosition;
32
+ spineItemId: string;
33
+ } | undefined;
34
+ getNavigationForSpineItemPage: (params: Omit<Parameters<typeof import('./resolvers/getNavigationForSpineItemPage').getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => import('./viewport/ViewportNavigator').ViewportPosition;
35
+ getNavigationFromSpineItemPosition: (params: {
36
+ spineItemPosition: import('../spineItem/types').UnsafeSpineItemPosition;
37
+ spineItem: import('../spineItem/createSpineItem').SpineItem;
38
+ }) => import('./viewport/ViewportNavigator').ViewportPosition;
39
+ getNavigationForCfi: (cfi: string) => import('./viewport/ViewportNavigator').ViewportPosition | undefined;
40
+ getNavigationForLastPage: (spineItem: import('../spineItem/createSpineItem').SpineItem) => import('./viewport/ViewportNavigator').ViewportPosition;
41
+ getNavigationForSpineIndexOrId: (indexOrId: number | string | import('../spineItem/createSpineItem').SpineItem) => import('./viewport/ViewportNavigator').ViewportPosition;
42
+ getNavigationForPosition: (viewportPosition: import('./viewport/ViewportNavigator').ViewportPosition) => import('./viewport/ViewportNavigator').ViewportPosition;
43
+ getMostPredominantNavigationForPosition: (viewportPosition: import('./viewport/ViewportNavigator').ViewportPosition) => import('./viewport/ViewportNavigator').ViewportPosition;
44
+ wrapPositionWithSafeEdge: (position: import('./viewport/ViewportNavigator').ViewportPosition) => {
45
+ x: number;
46
+ y: number;
47
+ };
48
+ isNavigationGoingForwardFrom: (to: import('./viewport/ViewportNavigator').ViewportPosition, from: import('./viewport/ViewportNavigator').ViewportPosition) => boolean;
49
+ areNavigationDifferent: (a: import('./viewport/ViewportNavigator').ViewportPosition, b: import('./viewport/ViewportNavigator').ViewportPosition) => boolean;
50
+ arePositionsDifferent: (a: {
51
+ x: number;
52
+ y: number;
53
+ }, b: {
54
+ x: number;
55
+ y: number;
56
+ }) => boolean;
57
+ getAdjustedPositionForSpread: (position: import('./viewport/ViewportNavigator').ViewportPosition) => import('./viewport/ViewportNavigator').ViewportPosition;
58
+ spineItemNavigator: {
59
+ getNavigationForLastPage: (spineItem: import('../spineItem/createSpineItem').SpineItem) => import('../spineItem/types').SafeSpineItemPosition;
60
+ getNavigationForPosition: (spineItem: import('../spineItem/createSpineItem').SpineItem, position: import('../spineItem/types').UnsafeSpineItemPosition) => import('../spineItem/types').SafeSpineItemPosition;
61
+ getNavigationFromNode: (spineItem: import('../spineItem/createSpineItem').SpineItem, node: Node, offset: number) => import('../spineItem/types').SafeSpineItemPosition;
62
+ };
63
+ };
64
+ navigation$: import('rxjs').Observable<{
65
+ position: import('./viewport/ViewportNavigator').ViewportPosition;
66
+ id: symbol;
67
+ }>;
68
+ getElement: () => HTMLElement;
69
+ };
70
+ export type Navigator = ReturnType<typeof createNavigator>;
@@ -0,0 +1,27 @@
1
+ import { Observable, Subject } from 'rxjs';
2
+ import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
3
+ import { ViewportPosition } from './viewport/ViewportNavigator';
4
+ import { Context } from '../context/Context';
5
+ import { DestroyableClass } from '../utils/DestroyableClass';
6
+ import { Locker } from './Locker';
7
+
8
+ export type UserNavigationEntry = {
9
+ position?: ViewportPosition;
10
+ spineItem?: number | string;
11
+ url?: string | URL;
12
+ cfi?: string;
13
+ animation?: boolean | "turn" | "snap";
14
+ type?: "api" | "scroll";
15
+ direction?: "left" | "right" | "top" | "bottom";
16
+ };
17
+ export declare class UserNavigator extends DestroyableClass {
18
+ protected settings: ReaderSettingsManager;
19
+ protected element$: Observable<HTMLElement>;
20
+ protected context: Context;
21
+ protected scrollHappeningFromBrowser$: Observable<unknown>;
22
+ protected navigationSubject: Subject<UserNavigationEntry>;
23
+ locker: Locker;
24
+ navigation$: Observable<UserNavigationEntry>;
25
+ constructor(settings: ReaderSettingsManager, element$: Observable<HTMLElement>, context: Context, scrollHappeningFromBrowser$: Observable<unknown>);
26
+ navigate(to: UserNavigationEntry): void;
27
+ }
@@ -0,0 +1,8 @@
1
+ import { Observable } from 'rxjs';
2
+ import { UserNavigationEntry } from '../UserNavigator';
3
+ import { InternalNavigationEntry, InternalNavigationInput } from '../InternalNavigator';
4
+
5
+ export declare const mapUserNavigationToInternal: (stream: Observable<[UserNavigationEntry, InternalNavigationEntry]>) => Observable<{
6
+ navigation: InternalNavigationInput;
7
+ previousNavigation: InternalNavigationEntry;
8
+ }>;
@@ -0,0 +1,11 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationInput } from '../InternalNavigator';
3
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
4
+
5
+ type Navigation = {
6
+ navigation: InternalNavigationInput;
7
+ };
8
+ export declare const withCfiPosition: ({ navigationResolver }: {
9
+ navigationResolver: NavigationResolver;
10
+ }) => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
11
+ export {};
@@ -0,0 +1,22 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationEntry, InternalNavigationInput } from '../InternalNavigator';
3
+ import { Context } from '../../context/Context';
4
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
+
6
+ type Navigation = {
7
+ navigation: InternalNavigationInput;
8
+ previousNavigation: InternalNavigationEntry;
9
+ };
10
+ export declare const getOrGuessDirection: ({ navigation, previousNavigation, settings, }: {
11
+ previousNavigation: InternalNavigationEntry;
12
+ navigation: InternalNavigationInput;
13
+ context: Context;
14
+ settings: ReaderSettingsManager;
15
+ }) => InternalNavigationEntry["directionFromLastNavigation"];
16
+ export declare const withDirection: ({ context, settings, }: {
17
+ context: Context;
18
+ settings: ReaderSettingsManager;
19
+ }) => (stream: Observable<Navigation>) => Observable<Navigation & {
20
+ direction: InternalNavigationEntry["directionFromLastNavigation"];
21
+ }>;
22
+ export {};
@@ -0,0 +1,13 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationEntry, InternalNavigationInput } from '../InternalNavigator';
3
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
4
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
5
+
6
+ export declare const withFallbackPosition: ({ spineItemsManager, navigationResolver, }: {
7
+ spineItemsManager: SpineItemsManager;
8
+ navigationResolver: NavigationResolver;
9
+ }) => <Navigation extends {
10
+ navigation: InternalNavigationInput;
11
+ }>(stream: Observable<Navigation>) => Observable<Omit<Navigation, "navigation"> & {
12
+ navigation: InternalNavigationEntry;
13
+ }>;
@@ -0,0 +1,10 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationEntry } from '../InternalNavigator';
3
+ import { PaginationInfo } from '../../pagination/Pagination';
4
+
5
+ type Navigation = {
6
+ navigation: InternalNavigationEntry;
7
+ pagination: PaginationInfo;
8
+ };
9
+ export declare const withPaginationInfo: () => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
10
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationInput } from '../InternalNavigator';
3
+ import { Context } from '../../context/Context';
4
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
6
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
7
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
8
+
9
+ type Navigation = {
10
+ navigation: InternalNavigationInput;
11
+ };
12
+ export declare const withSpineItem: ({ settings, spineItemsManager, navigationResolver, spineLocator, }: {
13
+ context: Context;
14
+ settings: ReaderSettingsManager;
15
+ spineItemsManager: SpineItemsManager;
16
+ navigationResolver: NavigationResolver;
17
+ spineLocator: SpineLocator;
18
+ }) => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
19
+ export {};
@@ -0,0 +1,11 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationEntry, InternalNavigationInput } from '../InternalNavigator';
3
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
4
+
5
+ type Navigation = {
6
+ navigation: InternalNavigationInput | InternalNavigationEntry;
7
+ };
8
+ export declare const withSpineItemLayoutInfo: ({ spineItemsManager }: {
9
+ spineItemsManager: SpineItemsManager;
10
+ }) => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
11
+ export {};
@@ -0,0 +1,19 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationEntry, InternalNavigationInput } from '../InternalNavigator';
3
+ import { Context } from '../../context/Context';
4
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
6
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
7
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
8
+
9
+ type Navigation = {
10
+ navigation: InternalNavigationEntry | InternalNavigationInput;
11
+ };
12
+ export declare const withSpineItemPosition: ({ settings, spineItemsManager, spineLocator, navigationResolver, }: {
13
+ context: Context;
14
+ settings: ReaderSettingsManager;
15
+ spineItemsManager: SpineItemsManager;
16
+ navigationResolver: NavigationResolver;
17
+ spineLocator: SpineLocator;
18
+ }) => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
19
+ export {};
@@ -0,0 +1,11 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationInput } from '../InternalNavigator';
3
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
4
+
5
+ type Navigation = {
6
+ navigation: InternalNavigationInput;
7
+ };
8
+ export declare const withUrlInfo: ({ navigationResolver }: {
9
+ navigationResolver: NavigationResolver;
10
+ }) => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
11
+ export {};
@@ -0,0 +1,51 @@
1
+ import { Context } from '../../context/Context';
2
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
3
+ import { SpineItem } from '../../spineItem/createSpineItem';
4
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
5
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
6
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
7
+ import { SafeSpineItemPosition, UnsafeSpineItemPosition } from '../../spineItem/types';
8
+ import { getNavigationForSpineItemPage } from './getNavigationForSpineItemPage';
9
+
10
+ export declare const NAMESPACE = "spineNavigator";
11
+ export type NavigationResolver = ReturnType<typeof createNavigationResolver>;
12
+ export declare const createNavigationResolver: ({ context, spineItemsManager, locator, settings, }: {
13
+ context: Context;
14
+ spineItemsManager: SpineItemsManager;
15
+ locator: SpineLocator;
16
+ settings: ReaderSettingsManager;
17
+ }) => {
18
+ getNavigationForUrl: (url: string | URL) => {
19
+ position: ViewportPosition;
20
+ spineItemId: string;
21
+ } | undefined;
22
+ getNavigationForSpineItemPage: (params: Omit<Parameters<typeof getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => ViewportPosition;
23
+ getNavigationFromSpineItemPosition: (params: {
24
+ spineItemPosition: UnsafeSpineItemPosition;
25
+ spineItem: SpineItem;
26
+ }) => ViewportPosition;
27
+ getNavigationForCfi: (cfi: string) => ViewportPosition | undefined;
28
+ getNavigationForLastPage: (spineItem: SpineItem) => ViewportPosition;
29
+ getNavigationForSpineIndexOrId: (indexOrId: number | string | SpineItem) => ViewportPosition;
30
+ getNavigationForPosition: (viewportPosition: ViewportPosition) => ViewportPosition;
31
+ getMostPredominantNavigationForPosition: (viewportPosition: ViewportPosition) => ViewportPosition;
32
+ wrapPositionWithSafeEdge: (position: ViewportPosition) => {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ isNavigationGoingForwardFrom: (to: ViewportPosition, from: ViewportPosition) => boolean;
37
+ areNavigationDifferent: (a: ViewportPosition, b: ViewportPosition) => boolean;
38
+ arePositionsDifferent: (a: {
39
+ x: number;
40
+ y: number;
41
+ }, b: {
42
+ x: number;
43
+ y: number;
44
+ }) => boolean;
45
+ getAdjustedPositionForSpread: (position: ViewportPosition) => ViewportPosition;
46
+ spineItemNavigator: {
47
+ getNavigationForLastPage: (spineItem: SpineItem) => SafeSpineItemPosition;
48
+ getNavigationForPosition: (spineItem: SpineItem, position: UnsafeSpineItemPosition) => SafeSpineItemPosition;
49
+ getNavigationFromNode: (spineItem: SpineItem, node: Node, offset: number) => SafeSpineItemPosition;
50
+ };
51
+ };
@@ -0,0 +1,7 @@
1
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
2
+
3
+ export declare const getAdjustedPositionForSpread: ({ position: { x, y }, pageSizeWidth, visibleAreaRectWidth, }: {
4
+ position: ViewportPosition;
5
+ pageSizeWidth: number;
6
+ visibleAreaRectWidth: number;
7
+ }) => ViewportPosition;
@@ -0,0 +1,11 @@
1
+ import { Context } from '../../context/Context';
2
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
3
+ import { SpineItemNavigationResolver } from '../../spineItem/navigationResolver';
4
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
5
+
6
+ export declare const getNavigationForPosition: ({ viewportPosition, spineLocator, context, spineItemNavigationResolver, }: {
7
+ viewportPosition: ViewportPosition;
8
+ spineLocator: SpineLocator;
9
+ context: Context;
10
+ spineItemNavigationResolver: SpineItemNavigationResolver;
11
+ }) => ViewportPosition;
@@ -0,0 +1,15 @@
1
+ import { Context } from '../../context/Context';
2
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
3
+ import { SpineItem } from '../../spineItem/createSpineItem';
4
+ import { SpineItemNavigationResolver } from '../../spineItem/navigationResolver';
5
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
6
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
7
+
8
+ export declare const getNavigationForSpineItemPage: ({ pageIndex, spineItemsManager, spineItemId, context, spineLocator, spineItemNavigationResolver, }: {
9
+ pageIndex: number;
10
+ spineItemId: SpineItem | number | string;
11
+ spineItemsManager: SpineItemsManager;
12
+ spineItemNavigationResolver: SpineItemNavigationResolver;
13
+ spineLocator: SpineLocator;
14
+ context: Context;
15
+ }) => ViewportPosition;
@@ -0,0 +1,16 @@
1
+ import { Context } from '../../context/Context';
2
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
3
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
4
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
5
+
6
+ export declare const getNavigationForUrl: ({ context, spineItemsManager, spineLocator, url, pageSizeWidth, visibleAreaRectWidth, }: {
7
+ url: string | URL;
8
+ spineItemsManager: SpineItemsManager;
9
+ spineLocator: SpineLocator;
10
+ context: Context;
11
+ pageSizeWidth: number;
12
+ visibleAreaRectWidth: number;
13
+ }) => {
14
+ position: ViewportPosition;
15
+ spineItemId: string;
16
+ } | undefined;
@@ -0,0 +1,13 @@
1
+ import { Context } from '../../context/Context';
2
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
3
+ import { SpineItem } from '../../spineItem/createSpineItem';
4
+ import { SpineItemLocator } from '../../spineItem/locationResolver';
5
+ import { UnsafeSpineItemPosition } from '../../spineItem/types';
6
+
7
+ export declare const getNavigationFromSpineItemPosition: ({ spineItem, spineItemPosition, spineLocator, spineItemLocator, context, }: {
8
+ spineItemPosition: UnsafeSpineItemPosition;
9
+ spineItem: SpineItem;
10
+ spineLocator: SpineLocator;
11
+ spineItemLocator: SpineItemLocator;
12
+ context: Context;
13
+ }) => import('../viewport/ViewportNavigator').ViewportPosition;
@@ -0,0 +1,14 @@
1
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
2
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
3
+
4
+ export declare const NAMESPACE = "spineNavigator";
5
+ export declare const wrapPositionWithSafeEdge: ({ position, isRTL, pageSizeWidth, pageSizeHeight, spineItemsManager, }: {
6
+ position: ViewportPosition;
7
+ isRTL: boolean;
8
+ pageSizeWidth: number;
9
+ pageSizeHeight: number;
10
+ spineItemsManager: SpineItemsManager;
11
+ }) => {
12
+ x: number;
13
+ y: number;
14
+ };
@@ -0,0 +1,11 @@
1
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
2
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
3
+ import { InternalNavigationEntry } from '../InternalNavigator';
4
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
5
+
6
+ export declare const restoreNavigationForControlledPageTurnMode: ({ spineLocator, navigation, navigationResolver, spineItemsManager, }: {
7
+ navigation: InternalNavigationEntry;
8
+ spineLocator: SpineLocator;
9
+ navigationResolver: NavigationResolver;
10
+ spineItemsManager: SpineItemsManager;
11
+ }) => import('../viewport/ViewportNavigator').ViewportPosition;
@@ -0,0 +1,18 @@
1
+ import { Context } from '../../context/Context';
2
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
3
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
4
+ import { SpineItemLocator } from '../../spineItem/locationResolver';
5
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
6
+ import { InternalNavigationEntry } from '../InternalNavigator';
7
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
8
+ import { ViewportPosition } from '../viewport/ViewportNavigator';
9
+
10
+ export declare const restorePosition: ({ navigation, spineItemsManager, settings, spineLocator, navigationResolver, }: {
11
+ spineLocator: SpineLocator;
12
+ settings: ReaderSettingsManager;
13
+ navigationResolver: NavigationResolver;
14
+ navigation: InternalNavigationEntry;
15
+ spineItemsManager: SpineItemsManager;
16
+ spineItemLocator: SpineItemLocator;
17
+ context: Context;
18
+ }) => ViewportPosition;
@@ -0,0 +1,21 @@
1
+ import { Observable } from 'rxjs';
2
+ import { InternalNavigationEntry } from '../InternalNavigator';
3
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
4
+ import { SpineLocator } from '../../spine/locator/SpineLocator';
5
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
6
+ import { NavigationResolver } from '../resolvers/NavigationResolver';
7
+ import { SpineItemLocator } from '../../spineItem/locationResolver';
8
+ import { Context } from '../../context/Context';
9
+
10
+ type Navigation = {
11
+ navigation: InternalNavigationEntry;
12
+ };
13
+ export declare const withRestoredPosition: ({ spineItemsManager, settings, spineLocator, navigationResolver, spineItemLocator, context, }: {
14
+ spineLocator: SpineLocator;
15
+ navigationResolver: NavigationResolver;
16
+ spineItemsManager: SpineItemsManager;
17
+ settings: ReaderSettingsManager;
18
+ spineItemLocator: SpineItemLocator;
19
+ context: Context;
20
+ }) => <N extends Navigation>(stream: Observable<N>) => Observable<N>;
21
+ export {};
@@ -0,0 +1,27 @@
1
+ import { Subject } from 'rxjs';
2
+
3
+ export type Item = {
4
+ left: number;
5
+ top: number;
6
+ right: number;
7
+ bottom: number;
8
+ width: number;
9
+ height: number;
10
+ };
11
+ export declare class SpineItemsManagerMock {
12
+ items: Item[];
13
+ layout$: Subject<unknown>;
14
+ load(items: {
15
+ left: number;
16
+ top: number;
17
+ right: number;
18
+ bottom: number;
19
+ width: number;
20
+ height: number;
21
+ }[]): void;
22
+ get(id: number): Item | undefined;
23
+ getAll(): Item[];
24
+ getLength(): number;
25
+ getSpineItemIndex(item: Item): number;
26
+ getAbsolutePositionOf(spineItem: any): Item;
27
+ }
@@ -0,0 +1,12 @@
1
+ import { Context } from '../../context/Context';
2
+ import { InternalNavigator } from '../InternalNavigator';
3
+ import { UserNavigator } from '../UserNavigator';
4
+ import { Item, SpineItemsManagerMock } from './SpineItemsManagerMock';
5
+
6
+ export declare const generateItems: (size: number, number: number) => Item[];
7
+ export declare const createNavigator: () => {
8
+ internalNavigator: InternalNavigator;
9
+ userNavigator: UserNavigator;
10
+ context: Context;
11
+ spineItemsManagerMock: SpineItemsManagerMock;
12
+ };
@@ -0,0 +1,36 @@
1
+ import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
+ import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
3
+ import { HookManager } from '../../hooks/HookManager';
4
+ import { Context } from '../../context/Context';
5
+ import { DestroyableClass } from '../../utils/DestroyableClass';
6
+ import { Spine } from '../../spine/Spine';
7
+
8
+ export type ViewportPosition = {
9
+ x: number;
10
+ y: number;
11
+ __symbol?: `ViewportPosition`;
12
+ spineItem?: false;
13
+ };
14
+ export type ViewportNavigationEntry = {
15
+ position: ViewportPosition;
16
+ animation?: boolean | "turn" | "snap";
17
+ };
18
+ export declare class ViewportNavigator extends DestroyableClass {
19
+ protected settings: ReaderSettingsManager;
20
+ protected viewportElement$: BehaviorSubject<HTMLElement>;
21
+ protected hookManager: HookManager;
22
+ protected context: Context;
23
+ protected spine: Spine;
24
+ protected navigateSubject: Subject<ViewportNavigationEntry>;
25
+ protected scrollingSubject: BehaviorSubject<boolean>;
26
+ isNavigating$: Observable<boolean>;
27
+ isScrolling$: Observable<boolean>;
28
+ layout$: Observable<unknown>;
29
+ constructor(settings: ReaderSettingsManager, viewportElement$: BehaviorSubject<HTMLElement>, hookManager: HookManager, context: Context, spine: Spine);
30
+ protected setViewportPosition({ x, y }: ViewportPosition): void;
31
+ navigate(navigation: ViewportNavigationEntry): void;
32
+ get viewportPosition(): {
33
+ x: number;
34
+ y: number;
35
+ };
36
+ }
@@ -0,0 +1,11 @@
1
+ import { Spine } from '../../spine/Spine';
2
+ import { ViewportPosition } from './ViewportNavigator';
3
+
4
+ export declare const getScaledDownPosition: ({ position: { x, y }, spine, element, }: {
5
+ position: ViewportPosition;
6
+ spine: Spine;
7
+ element: HTMLElement;
8
+ }) => {
9
+ x: number;
10
+ y: number;
11
+ };
@@ -0,0 +1,26 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { Context } from '../context/Context';
3
+ import { SpineItemsManager } from '../spine/SpineItemsManager';
4
+ import { DestroyableClass } from '../utils/DestroyableClass';
5
+
6
+ export type PaginationInfo = {
7
+ beginPageIndexInSpineItem: number | undefined;
8
+ beginNumberOfPagesInSpineItem: number;
9
+ beginCfi: string | undefined;
10
+ beginSpineItemIndex: number | undefined;
11
+ endPageIndexInSpineItem: number | undefined;
12
+ endNumberOfPagesInSpineItem: number;
13
+ endCfi: string | undefined;
14
+ endSpineItemIndex: number | undefined;
15
+ navigationId?: symbol;
16
+ };
17
+ export declare class Pagination extends DestroyableClass {
18
+ protected context: Context;
19
+ protected spineItemsManager: SpineItemsManager;
20
+ protected paginationSubject: BehaviorSubject<PaginationInfo>;
21
+ pagination$: import('rxjs').Observable<PaginationInfo>;
22
+ constructor(context: Context, spineItemsManager: SpineItemsManager);
23
+ update(pagination: Partial<PaginationInfo>): void;
24
+ get pagination(): PaginationInfo;
25
+ destroy(): void;
26
+ }