@prose-reader/core 1.57.0 → 1.59.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 (100) hide show
  1. package/dist/cfi.d.ts +74 -0
  2. package/dist/constants.d.ts +6 -0
  3. package/dist/context/Context.d.ts +63 -0
  4. package/dist/context/isUsingSpreadMode.d.ts +10 -0
  5. package/dist/createReaderWithEnhancer.d.ts +268 -0
  6. package/dist/enhancers/accessibility.d.ts +3 -0
  7. package/dist/enhancers/chrome.d.ts +3 -0
  8. package/dist/enhancers/events/createIframeEventBridgeElement.d.ts +1 -0
  9. package/dist/enhancers/events/events.d.ts +8 -0
  10. package/dist/enhancers/events/normalizeEventForViewport.d.ts +7 -0
  11. package/dist/enhancers/firefox.d.ts +3 -0
  12. package/dist/enhancers/fonts.d.ts +19 -0
  13. package/dist/enhancers/hotkeys.d.ts +3 -0
  14. package/dist/enhancers/layoutEnhancer/createMovingSafePan$.d.ts +4 -0
  15. package/dist/enhancers/layoutEnhancer/fixReflowable.d.ts +3 -0
  16. package/dist/enhancers/layoutEnhancer/layoutEnhancer.d.ts +10 -0
  17. package/dist/enhancers/layoutEnhancer/types.d.ts +8 -0
  18. package/dist/enhancers/links.d.ts +14 -0
  19. package/dist/enhancers/loadingEnhancer.d.ts +24 -0
  20. package/dist/enhancers/media.d.ts +3 -0
  21. package/dist/enhancers/navigation/navigation.d.ts +9 -0
  22. package/dist/enhancers/navigation/navigator.d.ts +8 -0
  23. package/dist/enhancers/navigation/state.d.ts +12 -0
  24. package/dist/enhancers/pagination/chapters.d.ts +24 -0
  25. package/dist/enhancers/pagination/constants.d.ts +1 -0
  26. package/dist/enhancers/pagination/enhancer.d.ts +14 -0
  27. package/dist/enhancers/pagination/pagination.d.ts +10 -0
  28. package/dist/enhancers/pagination/spine.d.ts +13 -0
  29. package/dist/enhancers/pagination/types.d.ts +19 -0
  30. package/dist/enhancers/pagination.test.d.ts +1 -0
  31. package/dist/enhancers/progression.d.ts +16 -0
  32. package/dist/enhancers/publicApi.d.ts +5 -0
  33. package/dist/enhancers/resources/index.d.ts +3 -0
  34. package/dist/enhancers/resources/indexedDB.d.ts +6 -0
  35. package/dist/enhancers/resources/resourcesManager.d.ts +7 -0
  36. package/dist/enhancers/theme.d.ts +32 -0
  37. package/dist/enhancers/types/enhancer.d.ts +9 -0
  38. package/dist/enhancers/utils.d.ts +7 -0
  39. package/dist/enhancers/webkit.d.ts +3 -0
  40. package/dist/enhancers/zoom/elementZoomer.d.ts +19 -0
  41. package/dist/enhancers/zoom/index.d.ts +4 -0
  42. package/dist/enhancers/zoom/types.d.ts +23 -0
  43. package/dist/enhancers/zoom/viewportZoomer.d.ts +19 -0
  44. package/dist/frames.d.ts +5 -0
  45. package/dist/hooks/HookManager.d.ts +10 -0
  46. package/dist/hooks/types.d.ts +64 -0
  47. package/dist/index.d.ts +9 -4262
  48. package/dist/index.js +225 -255
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.umd.cjs +225 -255
  51. package/dist/index.umd.cjs.map +1 -1
  52. package/dist/manifest/areAllItemsPrePaginated.d.ts +3 -0
  53. package/dist/manifest/isFullyPrePaginated.d.ts +3 -0
  54. package/dist/pagination/pagination.d.ts +88 -0
  55. package/dist/pagination/types.d.ts +10 -0
  56. package/dist/reader.d.ts +8 -0
  57. package/dist/report.d.ts +26 -0
  58. package/dist/selection.d.ts +7 -0
  59. package/dist/settings/SettingsManager.d.ts +14 -0
  60. package/dist/settings/defaultSettings.d.ts +3 -0
  61. package/dist/settings/getComputedSettings.d.ts +4 -0
  62. package/dist/settings/types.d.ts +19 -0
  63. package/dist/spine/cfiLocator.d.ts +340 -0
  64. package/dist/spine/createSpine.d.ts +31 -0
  65. package/dist/spine/locationResolver.d.ts +636 -0
  66. package/dist/spine/navigationResolver.d.ts +48 -0
  67. package/dist/spine/types.d.ts +10 -0
  68. package/dist/spineItem/commonSpineItem.d.ts +165 -0
  69. package/dist/spineItem/createSpineItem.d.ts +167 -0
  70. package/dist/spineItem/frameItem/createFrame$.d.ts +1 -0
  71. package/dist/spineItem/frameItem/createFrameManipulator.d.ts +5 -0
  72. package/dist/spineItem/frameItem/createHtmlPageFromResource.d.ts +3 -0
  73. package/dist/spineItem/frameItem/frameItem.d.ts +49 -0
  74. package/dist/spineItem/frameItem/loader.d.ts +30 -0
  75. package/dist/spineItem/locationResolver.d.ts +24 -0
  76. package/dist/spineItem/navigationResolver.d.ts +16 -0
  77. package/dist/spineItem/prePaginatedSpineItem.d.ts +166 -0
  78. package/dist/spineItem/reflowableSpineItem.d.ts +165 -0
  79. package/dist/spineItem/styles/getStyleForViewportDocument.d.ts +1 -0
  80. package/dist/spineItem/trackers.d.ts +34 -0
  81. package/dist/spineItem/types.d.ts +19 -0
  82. package/dist/spineItemManager.d.ts +505 -0
  83. package/dist/types/Spine.d.ts +40 -0
  84. package/dist/types/index.d.ts +12 -0
  85. package/dist/types/reader.d.ts +44 -0
  86. package/dist/utils/compose.d.ts +8 -0
  87. package/dist/utils/dom.d.ts +19 -0
  88. package/dist/utils/isDefined.d.ts +1 -0
  89. package/dist/utils/layout.d.ts +7 -0
  90. package/dist/utils/layout.test.d.ts +1 -0
  91. package/dist/utils/manifest.d.ts +3 -0
  92. package/dist/utils/objects.d.ts +6 -0
  93. package/dist/utils/objects.test.d.ts +1 -0
  94. package/dist/utils/rxjs.d.ts +5 -0
  95. package/dist/viewportNavigator/manualViewportNavigator.d.ts +96 -0
  96. package/dist/viewportNavigator/panViewportNavigator.d.ts +55 -0
  97. package/dist/viewportNavigator/scrollViewportNavigator.d.ts +38 -0
  98. package/dist/viewportNavigator/types.d.ts +34 -0
  99. package/dist/viewportNavigator/viewportNavigator.d.ts +82 -0
  100. package/package.json +3 -3
@@ -0,0 +1,165 @@
1
+ import { Context } from '../context/Context';
2
+ import { Manifest } from '../types';
3
+ import { Observable } from 'rxjs';
4
+ import { createFrameManipulator } from './frameItem/createFrameManipulator';
5
+ import { SettingsManager } from '../settings/SettingsManager';
6
+ import { HookManager } from '../hooks/HookManager';
7
+
8
+ export declare const createCommonSpineItem: ({ item, context, parentElement, viewportState$, settings, hookManager, }: {
9
+ item: Manifest[`spineItems`][number];
10
+ parentElement: HTMLElement;
11
+ context: Context;
12
+ viewportState$: Observable<`free` | `busy`>;
13
+ settings: SettingsManager;
14
+ hookManager: HookManager;
15
+ }) => {
16
+ item: {
17
+ id: string;
18
+ href: string;
19
+ renditionLayout: `reflowable` | `pre-paginated`;
20
+ progressionWeight: number;
21
+ pageSpreadLeft: true | undefined;
22
+ pageSpreadRight: true | undefined;
23
+ mediaType?: string;
24
+ };
25
+ load: () => void;
26
+ layout: ({ height, width, blankPagePosition, minimumWidth, }: {
27
+ height: number;
28
+ width: number;
29
+ blankPagePosition: `before` | `after` | `none`;
30
+ minimumWidth: number;
31
+ }) => void;
32
+ adjustPositionOfElement: ({ right, left, top }: {
33
+ right?: number;
34
+ left?: number;
35
+ top?: number;
36
+ }) => void;
37
+ getElementDimensions: () => {
38
+ width: number;
39
+ height: number;
40
+ };
41
+ getHtmlFromResource: (response: Response) => Promise<string>;
42
+ getResource: () => Promise<Response>;
43
+ translateFramePositionIntoPage: (position: {
44
+ clientX: number;
45
+ clientY: number;
46
+ }) => {
47
+ clientX: number;
48
+ clientY: number;
49
+ };
50
+ setLayoutDirty: () => void;
51
+ injectStyle: (cssText: string) => void;
52
+ loadContent: () => void;
53
+ unloadContent: () => void;
54
+ spineItemFrame: {
55
+ getIsLoaded: () => boolean;
56
+ getIsReady: () => boolean;
57
+ getViewportDimensions: () => {
58
+ width: number;
59
+ height: number;
60
+ } | undefined;
61
+ getFrameElement: () => HTMLIFrameElement | undefined;
62
+ getHtmlFromResource: (response: Response) => Promise<string>;
63
+ load: () => void;
64
+ unload: () => void;
65
+ staticLayout: (size: {
66
+ width: number;
67
+ height: number;
68
+ }) => void;
69
+ getManipulableFrame: () => ReturnType<typeof createFrameManipulator> | undefined;
70
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
71
+ isUsingVerticalWriting: () => boolean;
72
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
73
+ destroy: () => void;
74
+ $: {
75
+ unload$: Observable<void>;
76
+ unloaded$: Observable<void>;
77
+ loaded$: Observable<HTMLIFrameElement>;
78
+ ready$: Observable<FontFaceSet | undefined>;
79
+ isReady$: Observable<boolean>;
80
+ contentLayoutChange$: Observable<{
81
+ isFirstLayout: boolean;
82
+ } | {
83
+ isFirstLayout: boolean;
84
+ }>;
85
+ };
86
+ };
87
+ element: HTMLElement;
88
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
89
+ getViewPortInformation: () => {
90
+ computedScale: number;
91
+ computedWidthScale: number;
92
+ viewportDimensions: {
93
+ width: number;
94
+ height: number;
95
+ };
96
+ } | undefined;
97
+ isImageType: () => boolean;
98
+ isReady: () => boolean;
99
+ destroy: () => void;
100
+ isUsingVerticalWriting: () => boolean | undefined;
101
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
102
+ manipulateSpineItem: (cb: (options: {
103
+ container: HTMLElement;
104
+ item: Manifest[`spineItems`][number];
105
+ overlayElement: HTMLDivElement;
106
+ } & (ReturnType<typeof createFrameManipulator> | {
107
+ frame: undefined;
108
+ removeStyle: (id: string) => void;
109
+ addStyle: (id: string, style: string) => void;
110
+ })) => boolean) => boolean;
111
+ executeOnLayoutBeforeMeasurementHook: (options: {
112
+ minimumWidth: number;
113
+ }) => void[];
114
+ selectionTracker: {
115
+ track: (frameToTrack: HTMLIFrameElement) => void;
116
+ destroy: () => void;
117
+ isSelecting: () => boolean;
118
+ getSelection: () => Selection | undefined;
119
+ $: Observable<{
120
+ event: `selectionchange`;
121
+ data: Selection | null;
122
+ } | {
123
+ event: `selectstart`;
124
+ data: Selection | null;
125
+ } | {
126
+ event: `selectend`;
127
+ data: Selection | null;
128
+ }>;
129
+ };
130
+ fingerTracker: {
131
+ track: (frame: HTMLIFrameElement) => void;
132
+ getFingerPositionInIframe(): {
133
+ x: number | undefined;
134
+ y: number | undefined;
135
+ } | undefined;
136
+ destroy: () => void;
137
+ $: Observable<{
138
+ event: `fingermove`;
139
+ data: {
140
+ x: number;
141
+ y: number;
142
+ };
143
+ } | {
144
+ event: `fingerout`;
145
+ data: undefined;
146
+ }>;
147
+ };
148
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
149
+ columnHeight: number;
150
+ columnWidth: number;
151
+ width: number;
152
+ };
153
+ getDimensionsForPaginatedContent: () => {
154
+ columnHeight: number;
155
+ columnWidth: number;
156
+ };
157
+ $: {
158
+ contentLayout$: Observable<{
159
+ isFirstLayout: boolean;
160
+ isReady: boolean;
161
+ }>;
162
+ loaded$: Observable<HTMLIFrameElement>;
163
+ isReady$: Observable<boolean>;
164
+ };
165
+ };
@@ -0,0 +1,167 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Context } from '../context/Context';
3
+ import { Manifest } from '../types';
4
+ import { SettingsManager } from '../settings/SettingsManager';
5
+ import { HookManager } from '../hooks/HookManager';
6
+
7
+ export declare const createSpineItem: ({ item, context, containerElement, viewportState$, settings, hookManager, }: {
8
+ item: Manifest[`spineItems`][number];
9
+ containerElement: HTMLElement;
10
+ context: Context;
11
+ viewportState$: Observable<`free` | `busy`>;
12
+ settings: SettingsManager;
13
+ hookManager: HookManager;
14
+ }) => {
15
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
16
+ blankPagePosition: `before` | `after` | `none`;
17
+ minimumWidth: number;
18
+ spreadPosition: `none` | `left` | `right`;
19
+ }) => {
20
+ width: number;
21
+ height: number;
22
+ };
23
+ item: {
24
+ id: string;
25
+ href: string;
26
+ renditionLayout: `reflowable` | `pre-paginated`;
27
+ progressionWeight: number;
28
+ pageSpreadLeft: true | undefined;
29
+ pageSpreadRight: true | undefined;
30
+ mediaType?: string;
31
+ };
32
+ load: () => void;
33
+ adjustPositionOfElement: ({ right, left, top }: {
34
+ right?: number;
35
+ left?: number;
36
+ top?: number;
37
+ }) => void;
38
+ getElementDimensions: () => {
39
+ width: number;
40
+ height: number;
41
+ };
42
+ getHtmlFromResource: (response: Response) => Promise<string>;
43
+ getResource: () => Promise<Response>;
44
+ translateFramePositionIntoPage: (position: {
45
+ clientX: number;
46
+ clientY: number;
47
+ }) => {
48
+ clientX: number;
49
+ clientY: number;
50
+ };
51
+ setLayoutDirty: () => void;
52
+ injectStyle: (cssText: string) => void;
53
+ loadContent: () => void;
54
+ unloadContent: () => void;
55
+ spineItemFrame: {
56
+ getIsLoaded: () => boolean;
57
+ getIsReady: () => boolean;
58
+ getViewportDimensions: () => {
59
+ width: number;
60
+ height: number;
61
+ } | undefined;
62
+ getFrameElement: () => HTMLIFrameElement | undefined;
63
+ getHtmlFromResource: (response: Response) => Promise<string>;
64
+ load: () => void;
65
+ unload: () => void;
66
+ staticLayout: (size: {
67
+ width: number;
68
+ height: number;
69
+ }) => void;
70
+ getManipulableFrame: () => ReturnType<typeof import('./frameItem/createFrameManipulator').createFrameManipulator> | undefined;
71
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
72
+ isUsingVerticalWriting: () => boolean;
73
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
74
+ destroy: () => void;
75
+ $: {
76
+ unload$: Observable<void>;
77
+ unloaded$: Observable<void>;
78
+ loaded$: Observable<HTMLIFrameElement>;
79
+ ready$: Observable<FontFaceSet | undefined>;
80
+ isReady$: Observable<boolean>;
81
+ contentLayoutChange$: Observable<{
82
+ isFirstLayout: boolean;
83
+ } | {
84
+ isFirstLayout: boolean;
85
+ }>;
86
+ };
87
+ };
88
+ element: HTMLElement;
89
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
90
+ getViewPortInformation: () => {
91
+ computedScale: number;
92
+ computedWidthScale: number;
93
+ viewportDimensions: {
94
+ width: number;
95
+ height: number;
96
+ };
97
+ } | undefined;
98
+ isImageType: () => boolean;
99
+ isReady: () => boolean;
100
+ destroy: () => void;
101
+ isUsingVerticalWriting: () => boolean | undefined;
102
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
103
+ manipulateSpineItem: (cb: (options: {
104
+ container: HTMLElement;
105
+ item: Manifest[`spineItems`][number];
106
+ overlayElement: HTMLDivElement;
107
+ } & (ReturnType<typeof import('./frameItem/createFrameManipulator').createFrameManipulator> | {
108
+ frame: undefined;
109
+ removeStyle: (id: string) => void;
110
+ addStyle: (id: string, style: string) => void;
111
+ })) => boolean) => boolean;
112
+ executeOnLayoutBeforeMeasurementHook: (options: {
113
+ minimumWidth: number;
114
+ }) => void[];
115
+ selectionTracker: {
116
+ track: (frameToTrack: HTMLIFrameElement) => void;
117
+ destroy: () => void;
118
+ isSelecting: () => boolean;
119
+ getSelection: () => Selection | undefined;
120
+ $: Observable<{
121
+ event: `selectionchange`;
122
+ data: Selection | null;
123
+ } | {
124
+ event: `selectstart`;
125
+ data: Selection | null;
126
+ } | {
127
+ event: `selectend`;
128
+ data: Selection | null;
129
+ }>;
130
+ };
131
+ fingerTracker: {
132
+ track: (frame: HTMLIFrameElement) => void;
133
+ getFingerPositionInIframe(): {
134
+ x: number | undefined;
135
+ y: number | undefined;
136
+ } | undefined;
137
+ destroy: () => void;
138
+ $: Observable<{
139
+ event: `fingermove`;
140
+ data: {
141
+ x: number;
142
+ y: number;
143
+ };
144
+ } | {
145
+ event: `fingerout`;
146
+ data: undefined;
147
+ }>;
148
+ };
149
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
150
+ columnHeight: number;
151
+ columnWidth: number;
152
+ width: number;
153
+ };
154
+ getDimensionsForPaginatedContent: () => {
155
+ columnHeight: number;
156
+ columnWidth: number;
157
+ };
158
+ $: {
159
+ contentLayout$: Observable<{
160
+ isFirstLayout: boolean;
161
+ isReady: boolean;
162
+ }>;
163
+ loaded$: Observable<HTMLIFrameElement>;
164
+ isReady$: Observable<boolean>;
165
+ };
166
+ };
167
+ export type SpineItem = ReturnType<typeof createSpineItem>;
@@ -0,0 +1 @@
1
+ export declare const createFrame$: (() => import('rxjs').Observable<HTMLIFrameElement>) | (() => ReturnType<() => import('rxjs').Observable<HTMLIFrameElement>>);
@@ -0,0 +1,5 @@
1
+ export declare const createFrameManipulator: (frameElement: HTMLIFrameElement) => {
2
+ frame: HTMLIFrameElement;
3
+ removeStyle: (id: string) => void;
4
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
5
+ };
@@ -0,0 +1,3 @@
1
+ import { Manifest } from '../../types';
2
+
3
+ export declare const createHtmlPageFromResource: (resourceResponse: Response | string, item: Manifest[`spineItems`][number]) => Promise<string>;
@@ -0,0 +1,49 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Manifest } from '../../types';
3
+ import { Context } from '../../context/Context';
4
+ import { createFrameManipulator } from './createFrameManipulator';
5
+ import { SettingsManager } from '../../settings/SettingsManager';
6
+ import { HookManager } from '../../hooks/HookManager';
7
+
8
+ export declare const createFrameItem: ({ item, parent, fetchResource, context, viewportState$, settings, hookManager, }: {
9
+ parent: HTMLElement;
10
+ item: Manifest[`spineItems`][number];
11
+ context: Context;
12
+ fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>;
13
+ viewportState$: Observable<`free` | `busy`>;
14
+ settings: SettingsManager;
15
+ hookManager: HookManager;
16
+ }) => {
17
+ getIsLoaded: () => boolean;
18
+ getIsReady: () => boolean;
19
+ getViewportDimensions: () => {
20
+ width: number;
21
+ height: number;
22
+ } | undefined;
23
+ getFrameElement: () => HTMLIFrameElement | undefined;
24
+ getHtmlFromResource: (response: Response) => Promise<string>;
25
+ load: () => void;
26
+ unload: () => void;
27
+ staticLayout: (size: {
28
+ width: number;
29
+ height: number;
30
+ }) => void;
31
+ getManipulableFrame: () => ReturnType<typeof createFrameManipulator> | undefined;
32
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
33
+ isUsingVerticalWriting: () => boolean;
34
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
35
+ destroy: () => void;
36
+ $: {
37
+ unload$: Observable<void>;
38
+ unloaded$: Observable<void>;
39
+ loaded$: Observable<HTMLIFrameElement>;
40
+ ready$: Observable<FontFaceSet | undefined>;
41
+ isReady$: Observable<boolean>;
42
+ contentLayoutChange$: Observable<{
43
+ isFirstLayout: boolean;
44
+ } | {
45
+ isFirstLayout: boolean;
46
+ }>;
47
+ };
48
+ };
49
+ export type SpineItemFrame = ReturnType<typeof createFrameItem>;
@@ -0,0 +1,30 @@
1
+ import { BehaviorSubject, Observable } from 'rxjs';
2
+ import { Context } from '../../context/Context';
3
+ import { Manifest } from '../../types';
4
+ import { SettingsManager } from '../../settings/SettingsManager';
5
+ import { HookManager } from '../../hooks/HookManager';
6
+
7
+ export declare const createLoader: ({ item, parent, fetchResource, context, viewportState$, settings, hookManager, }: {
8
+ item: Manifest[`spineItems`][number];
9
+ parent: HTMLElement;
10
+ fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>;
11
+ context: Context;
12
+ settings: SettingsManager;
13
+ viewportState$: Observable<`free` | `busy`>;
14
+ hookManager: HookManager;
15
+ }) => {
16
+ load: () => void;
17
+ unload: () => void;
18
+ destroy: () => void;
19
+ getComputedStyleAfterLoad: () => CSSStyleDeclaration | undefined;
20
+ $: {
21
+ load$: Observable<void>;
22
+ unload$: Observable<void>;
23
+ loaded$: Observable<HTMLIFrameElement>;
24
+ isLoaded$: Observable<boolean>;
25
+ isReady$: Observable<boolean>;
26
+ ready$: Observable<FontFaceSet | undefined>;
27
+ unloaded$: Observable<void>;
28
+ frameElement$: BehaviorSubject<HTMLIFrameElement | undefined>;
29
+ };
30
+ };
@@ -0,0 +1,24 @@
1
+ import { Context } from '../context/Context';
2
+ import { SpineItem } from './createSpineItem';
3
+ import { SpineItemPosition, UnsafeSpineItemPosition } from './types';
4
+
5
+ export declare const createLocationResolver: ({ context }: {
6
+ context: Context;
7
+ }) => {
8
+ getSpineItemPositionFromNode: (node: Node, offset: number, spineItem: SpineItem) => {
9
+ x: number;
10
+ y: number;
11
+ } | undefined;
12
+ getSpineItemPositionFromPageIndex: (pageIndex: number, spineItem: SpineItem) => SpineItemPosition;
13
+ getSpineItemOffsetFromAnchor: (anchor: string, spineItem: SpineItem) => number;
14
+ getSpineItemPageIndexFromPosition: (position: UnsafeSpineItemPosition, spineItem: SpineItem) => number;
15
+ getSpineItemPageIndexFromNode: (node: Node, offset: number, spineItem: SpineItem) => number | undefined;
16
+ getSpineItemClosestPositionFromUnsafePosition: (unsafePosition: UnsafeSpineItemPosition, spineItem: SpineItem) => {
17
+ x: number;
18
+ y: number;
19
+ };
20
+ getFirstNodeOrRangeAtPage: (pageIndex: number, spineItem: SpineItem) => {
21
+ node: Node;
22
+ offset: number;
23
+ } | undefined;
24
+ };
@@ -0,0 +1,16 @@
1
+ import { SpineItem } from './createSpineItem';
2
+ import { Context } from '../context/Context';
3
+ import { SpineItemNavigationPosition, UnsafeSpineItemPosition } from './types';
4
+ import { SettingsManager } from '../settings/SettingsManager';
5
+
6
+ export declare const createNavigationResolver: ({ context }: {
7
+ context: Context;
8
+ settings: SettingsManager;
9
+ }) => {
10
+ getNavigationForLeftPage: (position: UnsafeSpineItemPosition, spineItem: SpineItem) => SpineItemNavigationPosition;
11
+ getNavigationForRightPage: (position: UnsafeSpineItemPosition, spineItem: SpineItem) => SpineItemNavigationPosition;
12
+ getNavigationForLastPage: (spineItem: SpineItem) => SpineItemNavigationPosition;
13
+ getNavigationForPage: (pageIndex: number, spineItem: SpineItem) => SpineItemNavigationPosition;
14
+ getNavigationForPosition: (spineItem: SpineItem, position: UnsafeSpineItemPosition) => SpineItemNavigationPosition;
15
+ getNavigationFromNode: (spineItem: SpineItem, node: Node, offset: number) => SpineItemNavigationPosition;
16
+ };
@@ -0,0 +1,166 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Context } from '../context/Context';
3
+ import { Manifest } from '../types';
4
+ import { SettingsManager } from '../settings/SettingsManager';
5
+ import { HookManager } from '../hooks/HookManager';
6
+
7
+ export declare const createPrePaginatedSpineItem: ({ item, context, containerElement, viewportState$, settings, hookManager, }: {
8
+ item: Manifest[`spineItems`][number];
9
+ containerElement: HTMLElement;
10
+ context: Context;
11
+ viewportState$: Observable<`free` | `busy`>;
12
+ settings: SettingsManager;
13
+ hookManager: HookManager;
14
+ }) => {
15
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
16
+ blankPagePosition: `before` | `after` | `none`;
17
+ minimumWidth: number;
18
+ spreadPosition: `none` | `left` | `right`;
19
+ }) => {
20
+ width: number;
21
+ height: number;
22
+ };
23
+ item: {
24
+ id: string;
25
+ href: string;
26
+ renditionLayout: `reflowable` | `pre-paginated`;
27
+ progressionWeight: number;
28
+ pageSpreadLeft: true | undefined;
29
+ pageSpreadRight: true | undefined;
30
+ mediaType?: string;
31
+ };
32
+ load: () => void;
33
+ adjustPositionOfElement: ({ right, left, top }: {
34
+ right?: number;
35
+ left?: number;
36
+ top?: number;
37
+ }) => void;
38
+ getElementDimensions: () => {
39
+ width: number;
40
+ height: number;
41
+ };
42
+ getHtmlFromResource: (response: Response) => Promise<string>;
43
+ getResource: () => Promise<Response>;
44
+ translateFramePositionIntoPage: (position: {
45
+ clientX: number;
46
+ clientY: number;
47
+ }) => {
48
+ clientX: number;
49
+ clientY: number;
50
+ };
51
+ setLayoutDirty: () => void;
52
+ injectStyle: (cssText: string) => void;
53
+ loadContent: () => void;
54
+ unloadContent: () => void;
55
+ spineItemFrame: {
56
+ getIsLoaded: () => boolean;
57
+ getIsReady: () => boolean;
58
+ getViewportDimensions: () => {
59
+ width: number;
60
+ height: number;
61
+ } | undefined;
62
+ getFrameElement: () => HTMLIFrameElement | undefined;
63
+ getHtmlFromResource: (response: Response) => Promise<string>;
64
+ load: () => void;
65
+ unload: () => void;
66
+ staticLayout: (size: {
67
+ width: number;
68
+ height: number;
69
+ }) => void;
70
+ getManipulableFrame: () => ReturnType<typeof import('./frameItem/createFrameManipulator').createFrameManipulator> | undefined;
71
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
72
+ isUsingVerticalWriting: () => boolean;
73
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
74
+ destroy: () => void;
75
+ $: {
76
+ unload$: Observable<void>;
77
+ unloaded$: Observable<void>;
78
+ loaded$: Observable<HTMLIFrameElement>;
79
+ ready$: Observable<FontFaceSet | undefined>;
80
+ isReady$: Observable<boolean>;
81
+ contentLayoutChange$: Observable<{
82
+ isFirstLayout: boolean;
83
+ } | {
84
+ isFirstLayout: boolean;
85
+ }>;
86
+ };
87
+ };
88
+ element: HTMLElement;
89
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
90
+ getViewPortInformation: () => {
91
+ computedScale: number;
92
+ computedWidthScale: number;
93
+ viewportDimensions: {
94
+ width: number;
95
+ height: number;
96
+ };
97
+ } | undefined;
98
+ isImageType: () => boolean;
99
+ isReady: () => boolean;
100
+ destroy: () => void;
101
+ isUsingVerticalWriting: () => boolean | undefined;
102
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
103
+ manipulateSpineItem: (cb: (options: {
104
+ container: HTMLElement;
105
+ item: Manifest[`spineItems`][number];
106
+ overlayElement: HTMLDivElement;
107
+ } & (ReturnType<typeof import('./frameItem/createFrameManipulator').createFrameManipulator> | {
108
+ frame: undefined;
109
+ removeStyle: (id: string) => void;
110
+ addStyle: (id: string, style: string) => void;
111
+ })) => boolean) => boolean;
112
+ executeOnLayoutBeforeMeasurementHook: (options: {
113
+ minimumWidth: number;
114
+ }) => void[];
115
+ selectionTracker: {
116
+ track: (frameToTrack: HTMLIFrameElement) => void;
117
+ destroy: () => void;
118
+ isSelecting: () => boolean;
119
+ getSelection: () => Selection | undefined;
120
+ $: Observable<{
121
+ event: `selectionchange`;
122
+ data: Selection | null;
123
+ } | {
124
+ event: `selectstart`;
125
+ data: Selection | null;
126
+ } | {
127
+ event: `selectend`;
128
+ data: Selection | null;
129
+ }>;
130
+ };
131
+ fingerTracker: {
132
+ track: (frame: HTMLIFrameElement) => void;
133
+ getFingerPositionInIframe(): {
134
+ x: number | undefined;
135
+ y: number | undefined;
136
+ } | undefined;
137
+ destroy: () => void;
138
+ $: Observable<{
139
+ event: `fingermove`;
140
+ data: {
141
+ x: number;
142
+ y: number;
143
+ };
144
+ } | {
145
+ event: `fingerout`;
146
+ data: undefined;
147
+ }>;
148
+ };
149
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
150
+ columnHeight: number;
151
+ columnWidth: number;
152
+ width: number;
153
+ };
154
+ getDimensionsForPaginatedContent: () => {
155
+ columnHeight: number;
156
+ columnWidth: number;
157
+ };
158
+ $: {
159
+ contentLayout$: Observable<{
160
+ isFirstLayout: boolean;
161
+ isReady: boolean;
162
+ }>;
163
+ loaded$: Observable<HTMLIFrameElement>;
164
+ isReady$: Observable<boolean>;
165
+ };
166
+ };