@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,505 @@
1
+ import { Context } from './context/Context';
2
+ import { SpineItem } from './spineItem/createSpineItem';
3
+ import { SettingsManager } from './settings/SettingsManager';
4
+
5
+ export declare const createSpineItemManager: ({ context, settings }: {
6
+ context: Context;
7
+ settings: SettingsManager;
8
+ }) => {
9
+ destroyItems: () => void;
10
+ add: (spineItem: SpineItem) => void;
11
+ get: (indexOrId: number | string) => {
12
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
13
+ blankPagePosition: `before` | `after` | `none`;
14
+ minimumWidth: number;
15
+ spreadPosition: `none` | `left` | `right`;
16
+ }) => {
17
+ width: number;
18
+ height: number;
19
+ };
20
+ item: {
21
+ id: string;
22
+ href: string;
23
+ renditionLayout: `reflowable` | `pre-paginated`;
24
+ progressionWeight: number;
25
+ pageSpreadLeft: true | undefined;
26
+ pageSpreadRight: true | undefined;
27
+ mediaType?: string;
28
+ };
29
+ load: () => void;
30
+ adjustPositionOfElement: ({ right, left, top }: {
31
+ right?: number;
32
+ left?: number;
33
+ top?: number;
34
+ }) => void;
35
+ getElementDimensions: () => {
36
+ width: number;
37
+ height: number;
38
+ };
39
+ getHtmlFromResource: (response: Response) => Promise<string>;
40
+ getResource: () => Promise<Response>;
41
+ translateFramePositionIntoPage: (position: {
42
+ clientX: number;
43
+ clientY: number;
44
+ }) => {
45
+ clientX: number;
46
+ clientY: number;
47
+ };
48
+ setLayoutDirty: () => void;
49
+ injectStyle: (cssText: string) => void;
50
+ loadContent: () => void;
51
+ unloadContent: () => void;
52
+ spineItemFrame: {
53
+ getIsLoaded: () => boolean;
54
+ getIsReady: () => boolean;
55
+ getViewportDimensions: () => {
56
+ width: number;
57
+ height: number;
58
+ } | undefined;
59
+ getFrameElement: () => HTMLIFrameElement | undefined;
60
+ getHtmlFromResource: (response: Response) => Promise<string>;
61
+ load: () => void;
62
+ unload: () => void;
63
+ staticLayout: (size: {
64
+ width: number;
65
+ height: number;
66
+ }) => void;
67
+ getManipulableFrame: () => ReturnType<typeof import('./spineItem/frameItem/createFrameManipulator').createFrameManipulator> | undefined;
68
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
69
+ isUsingVerticalWriting: () => boolean;
70
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
71
+ destroy: () => void;
72
+ $: {
73
+ unload$: import('rxjs').Observable<void>;
74
+ unloaded$: import('rxjs').Observable<void>;
75
+ loaded$: import('rxjs').Observable<HTMLIFrameElement>;
76
+ ready$: import('rxjs').Observable<FontFaceSet | undefined>;
77
+ isReady$: import('rxjs').Observable<boolean>;
78
+ contentLayoutChange$: import('rxjs').Observable<{
79
+ isFirstLayout: boolean;
80
+ } | {
81
+ isFirstLayout: boolean;
82
+ }>;
83
+ };
84
+ };
85
+ element: HTMLElement;
86
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
87
+ getViewPortInformation: () => {
88
+ computedScale: number;
89
+ computedWidthScale: number;
90
+ viewportDimensions: {
91
+ width: number;
92
+ height: number;
93
+ };
94
+ } | undefined;
95
+ isImageType: () => boolean;
96
+ isReady: () => boolean;
97
+ destroy: () => void;
98
+ isUsingVerticalWriting: () => boolean | undefined;
99
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
100
+ manipulateSpineItem: (cb: (options: {
101
+ container: HTMLElement;
102
+ item: import('@prose-reader/shared').Manifest[`spineItems`][number];
103
+ overlayElement: HTMLDivElement;
104
+ } & (ReturnType<typeof import('./spineItem/frameItem/createFrameManipulator').createFrameManipulator> | {
105
+ frame: undefined;
106
+ removeStyle: (id: string) => void;
107
+ addStyle: (id: string, style: string) => void;
108
+ })) => boolean) => boolean;
109
+ executeOnLayoutBeforeMeasurementHook: (options: {
110
+ minimumWidth: number;
111
+ }) => void[];
112
+ selectionTracker: {
113
+ track: (frameToTrack: HTMLIFrameElement) => void;
114
+ destroy: () => void;
115
+ isSelecting: () => boolean;
116
+ getSelection: () => Selection | undefined;
117
+ $: import('rxjs').Observable<{
118
+ event: `selectionchange`;
119
+ data: Selection | null;
120
+ } | {
121
+ event: `selectstart`;
122
+ data: Selection | null;
123
+ } | {
124
+ event: `selectend`;
125
+ data: Selection | null;
126
+ }>;
127
+ };
128
+ fingerTracker: {
129
+ track: (frame: HTMLIFrameElement) => void;
130
+ getFingerPositionInIframe(): {
131
+ x: number | undefined;
132
+ y: number | undefined;
133
+ } | undefined;
134
+ destroy: () => void;
135
+ $: import('rxjs').Observable<{
136
+ event: `fingermove`;
137
+ data: {
138
+ x: number;
139
+ y: number;
140
+ };
141
+ } | {
142
+ event: `fingerout`;
143
+ data: undefined;
144
+ }>;
145
+ };
146
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
147
+ columnHeight: number;
148
+ columnWidth: number;
149
+ width: number;
150
+ };
151
+ getDimensionsForPaginatedContent: () => {
152
+ columnHeight: number;
153
+ columnWidth: number;
154
+ };
155
+ $: {
156
+ contentLayout$: import('rxjs').Observable<{
157
+ isFirstLayout: boolean;
158
+ isReady: boolean;
159
+ }>;
160
+ loaded$: import('rxjs').Observable<HTMLIFrameElement>;
161
+ isReady$: import('rxjs').Observable<boolean>;
162
+ };
163
+ } | undefined;
164
+ getAll: () => {
165
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
166
+ blankPagePosition: `before` | `after` | `none`;
167
+ minimumWidth: number;
168
+ spreadPosition: `none` | `left` | `right`;
169
+ }) => {
170
+ width: number;
171
+ height: number;
172
+ };
173
+ item: {
174
+ id: string;
175
+ href: string;
176
+ renditionLayout: `reflowable` | `pre-paginated`;
177
+ progressionWeight: number;
178
+ pageSpreadLeft: true | undefined;
179
+ pageSpreadRight: true | undefined;
180
+ mediaType?: string;
181
+ };
182
+ load: () => void;
183
+ adjustPositionOfElement: ({ right, left, top }: {
184
+ right?: number;
185
+ left?: number;
186
+ top?: number;
187
+ }) => void;
188
+ getElementDimensions: () => {
189
+ width: number;
190
+ height: number;
191
+ };
192
+ getHtmlFromResource: (response: Response) => Promise<string>;
193
+ getResource: () => Promise<Response>;
194
+ translateFramePositionIntoPage: (position: {
195
+ clientX: number;
196
+ clientY: number;
197
+ }) => {
198
+ clientX: number;
199
+ clientY: number;
200
+ };
201
+ setLayoutDirty: () => void;
202
+ injectStyle: (cssText: string) => void;
203
+ loadContent: () => void;
204
+ unloadContent: () => void;
205
+ spineItemFrame: {
206
+ getIsLoaded: () => boolean;
207
+ getIsReady: () => boolean;
208
+ getViewportDimensions: () => {
209
+ width: number;
210
+ height: number;
211
+ } | undefined;
212
+ getFrameElement: () => HTMLIFrameElement | undefined;
213
+ getHtmlFromResource: (response: Response) => Promise<string>;
214
+ load: () => void;
215
+ unload: () => void;
216
+ staticLayout: (size: {
217
+ width: number;
218
+ height: number;
219
+ }) => void;
220
+ getManipulableFrame: () => ReturnType<typeof import('./spineItem/frameItem/createFrameManipulator').createFrameManipulator> | undefined;
221
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
222
+ isUsingVerticalWriting: () => boolean;
223
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
224
+ destroy: () => void;
225
+ $: {
226
+ unload$: import('rxjs').Observable<void>;
227
+ unloaded$: import('rxjs').Observable<void>;
228
+ loaded$: import('rxjs').Observable<HTMLIFrameElement>;
229
+ ready$: import('rxjs').Observable<FontFaceSet | undefined>;
230
+ isReady$: import('rxjs').Observable<boolean>;
231
+ contentLayoutChange$: import('rxjs').Observable<{
232
+ isFirstLayout: boolean;
233
+ } | {
234
+ isFirstLayout: boolean;
235
+ }>;
236
+ };
237
+ };
238
+ element: HTMLElement;
239
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
240
+ getViewPortInformation: () => {
241
+ computedScale: number;
242
+ computedWidthScale: number;
243
+ viewportDimensions: {
244
+ width: number;
245
+ height: number;
246
+ };
247
+ } | undefined;
248
+ isImageType: () => boolean;
249
+ isReady: () => boolean;
250
+ destroy: () => void;
251
+ isUsingVerticalWriting: () => boolean | undefined;
252
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
253
+ manipulateSpineItem: (cb: (options: {
254
+ container: HTMLElement;
255
+ item: import('@prose-reader/shared').Manifest[`spineItems`][number];
256
+ overlayElement: HTMLDivElement;
257
+ } & (ReturnType<typeof import('./spineItem/frameItem/createFrameManipulator').createFrameManipulator> | {
258
+ frame: undefined;
259
+ removeStyle: (id: string) => void;
260
+ addStyle: (id: string, style: string) => void;
261
+ })) => boolean) => boolean;
262
+ executeOnLayoutBeforeMeasurementHook: (options: {
263
+ minimumWidth: number;
264
+ }) => void[];
265
+ selectionTracker: {
266
+ track: (frameToTrack: HTMLIFrameElement) => void;
267
+ destroy: () => void;
268
+ isSelecting: () => boolean;
269
+ getSelection: () => Selection | undefined;
270
+ $: import('rxjs').Observable<{
271
+ event: `selectionchange`;
272
+ data: Selection | null;
273
+ } | {
274
+ event: `selectstart`;
275
+ data: Selection | null;
276
+ } | {
277
+ event: `selectend`;
278
+ data: Selection | null;
279
+ }>;
280
+ };
281
+ fingerTracker: {
282
+ track: (frame: HTMLIFrameElement) => void;
283
+ getFingerPositionInIframe(): {
284
+ x: number | undefined;
285
+ y: number | undefined;
286
+ } | undefined;
287
+ destroy: () => void;
288
+ $: import('rxjs').Observable<{
289
+ event: `fingermove`;
290
+ data: {
291
+ x: number;
292
+ y: number;
293
+ };
294
+ } | {
295
+ event: `fingerout`;
296
+ data: undefined;
297
+ }>;
298
+ };
299
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
300
+ columnHeight: number;
301
+ columnWidth: number;
302
+ width: number;
303
+ };
304
+ getDimensionsForPaginatedContent: () => {
305
+ columnHeight: number;
306
+ columnWidth: number;
307
+ };
308
+ $: {
309
+ contentLayout$: import('rxjs').Observable<{
310
+ isFirstLayout: boolean;
311
+ isReady: boolean;
312
+ }>;
313
+ loaded$: import('rxjs').Observable<HTMLIFrameElement>;
314
+ isReady$: import('rxjs').Observable<boolean>;
315
+ };
316
+ }[];
317
+ getLength: () => number;
318
+ layout: () => void;
319
+ focus: (indexOrSpineItem: number | SpineItem) => void;
320
+ loadContents: ((rangeOfIndex: [number, number]) => void) | ((rangeOfIndex: [number, number]) => ReturnType<(rangeOfIndex: [number, number]) => void>);
321
+ comparePositionOf: (toCompare: SpineItem, withItem: SpineItem) => "after" | "before";
322
+ getAbsolutePositionOf: (spineItemOrIndex: SpineItem | number) => {
323
+ left: number;
324
+ right: number;
325
+ top: number;
326
+ bottom: number;
327
+ width: number;
328
+ height: number;
329
+ };
330
+ getFocusedSpineItem: () => {
331
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
332
+ blankPagePosition: `before` | `after` | `none`;
333
+ minimumWidth: number;
334
+ spreadPosition: `none` | `left` | `right`;
335
+ }) => {
336
+ width: number;
337
+ height: number;
338
+ };
339
+ item: {
340
+ id: string;
341
+ href: string;
342
+ renditionLayout: `reflowable` | `pre-paginated`;
343
+ progressionWeight: number;
344
+ pageSpreadLeft: true | undefined;
345
+ pageSpreadRight: true | undefined;
346
+ mediaType?: string;
347
+ };
348
+ load: () => void;
349
+ adjustPositionOfElement: ({ right, left, top }: {
350
+ right?: number;
351
+ left?: number;
352
+ top?: number;
353
+ }) => void;
354
+ getElementDimensions: () => {
355
+ width: number;
356
+ height: number;
357
+ };
358
+ getHtmlFromResource: (response: Response) => Promise<string>;
359
+ getResource: () => Promise<Response>;
360
+ translateFramePositionIntoPage: (position: {
361
+ clientX: number;
362
+ clientY: number;
363
+ }) => {
364
+ clientX: number;
365
+ clientY: number;
366
+ };
367
+ setLayoutDirty: () => void;
368
+ injectStyle: (cssText: string) => void;
369
+ loadContent: () => void;
370
+ unloadContent: () => void;
371
+ spineItemFrame: {
372
+ getIsLoaded: () => boolean;
373
+ getIsReady: () => boolean;
374
+ getViewportDimensions: () => {
375
+ width: number;
376
+ height: number;
377
+ } | undefined;
378
+ getFrameElement: () => HTMLIFrameElement | undefined;
379
+ getHtmlFromResource: (response: Response) => Promise<string>;
380
+ load: () => void;
381
+ unload: () => void;
382
+ staticLayout: (size: {
383
+ width: number;
384
+ height: number;
385
+ }) => void;
386
+ getManipulableFrame: () => ReturnType<typeof import('./spineItem/frameItem/createFrameManipulator').createFrameManipulator> | undefined;
387
+ getReadingDirection: () => `ltr` | `rtl` | undefined;
388
+ isUsingVerticalWriting: () => boolean;
389
+ getWritingMode: () => `vertical-rl` | `horizontal-tb` | undefined;
390
+ destroy: () => void;
391
+ $: {
392
+ unload$: import('rxjs').Observable<void>;
393
+ unloaded$: import('rxjs').Observable<void>;
394
+ loaded$: import('rxjs').Observable<HTMLIFrameElement>;
395
+ ready$: import('rxjs').Observable<FontFaceSet | undefined>;
396
+ isReady$: import('rxjs').Observable<boolean>;
397
+ contentLayoutChange$: import('rxjs').Observable<{
398
+ isFirstLayout: boolean;
399
+ } | {
400
+ isFirstLayout: boolean;
401
+ }>;
402
+ };
403
+ };
404
+ element: HTMLElement;
405
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
406
+ getViewPortInformation: () => {
407
+ computedScale: number;
408
+ computedWidthScale: number;
409
+ viewportDimensions: {
410
+ width: number;
411
+ height: number;
412
+ };
413
+ } | undefined;
414
+ isImageType: () => boolean;
415
+ isReady: () => boolean;
416
+ destroy: () => void;
417
+ isUsingVerticalWriting: () => boolean | undefined;
418
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
419
+ manipulateSpineItem: (cb: (options: {
420
+ container: HTMLElement;
421
+ item: import('@prose-reader/shared').Manifest[`spineItems`][number];
422
+ overlayElement: HTMLDivElement;
423
+ } & (ReturnType<typeof import('./spineItem/frameItem/createFrameManipulator').createFrameManipulator> | {
424
+ frame: undefined;
425
+ removeStyle: (id: string) => void;
426
+ addStyle: (id: string, style: string) => void;
427
+ })) => boolean) => boolean;
428
+ executeOnLayoutBeforeMeasurementHook: (options: {
429
+ minimumWidth: number;
430
+ }) => void[];
431
+ selectionTracker: {
432
+ track: (frameToTrack: HTMLIFrameElement) => void;
433
+ destroy: () => void;
434
+ isSelecting: () => boolean;
435
+ getSelection: () => Selection | undefined;
436
+ $: import('rxjs').Observable<{
437
+ event: `selectionchange`;
438
+ data: Selection | null;
439
+ } | {
440
+ event: `selectstart`;
441
+ data: Selection | null;
442
+ } | {
443
+ event: `selectend`;
444
+ data: Selection | null;
445
+ }>;
446
+ };
447
+ fingerTracker: {
448
+ track: (frame: HTMLIFrameElement) => void;
449
+ getFingerPositionInIframe(): {
450
+ x: number | undefined;
451
+ y: number | undefined;
452
+ } | undefined;
453
+ destroy: () => void;
454
+ $: import('rxjs').Observable<{
455
+ event: `fingermove`;
456
+ data: {
457
+ x: number;
458
+ y: number;
459
+ };
460
+ } | {
461
+ event: `fingerout`;
462
+ data: undefined;
463
+ }>;
464
+ };
465
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
466
+ columnHeight: number;
467
+ columnWidth: number;
468
+ width: number;
469
+ };
470
+ getDimensionsForPaginatedContent: () => {
471
+ columnHeight: number;
472
+ columnWidth: number;
473
+ };
474
+ $: {
475
+ contentLayout$: import('rxjs').Observable<{
476
+ isFirstLayout: boolean;
477
+ isReady: boolean;
478
+ }>;
479
+ loaded$: import('rxjs').Observable<HTMLIFrameElement>;
480
+ isReady$: import('rxjs').Observable<boolean>;
481
+ };
482
+ } | undefined;
483
+ getFocusedSpineItemIndex: () => number | undefined;
484
+ getSpineItemIndex: (spineItem: SpineItem | undefined) => number | undefined;
485
+ destroy: () => void;
486
+ $: {
487
+ focus$: import('rxjs').Observable<{
488
+ data: SpineItem;
489
+ }>;
490
+ layout$: import('rxjs').Observable<boolean>;
491
+ itemIsReady$: import('rxjs').Observable<{
492
+ item: {
493
+ id: string;
494
+ href: string;
495
+ renditionLayout: `reflowable` | `pre-paginated`;
496
+ progressionWeight: number;
497
+ pageSpreadLeft: true | undefined;
498
+ pageSpreadRight: true | undefined;
499
+ mediaType?: string;
500
+ };
501
+ isReady: boolean;
502
+ }>;
503
+ };
504
+ };
505
+ export type SpineItemManager = ReturnType<typeof createSpineItemManager>;
@@ -0,0 +1,40 @@
1
+ import { Observable } from 'rxjs';
2
+ import { SpineItem } from '../spineItem/createSpineItem';
3
+ import { createSelection } from '../selection';
4
+ import { createCfiLocator } from '../spine/cfiLocator';
5
+ import { createLocationResolver } from '../spine/locationResolver';
6
+ import { createLocationResolver as createSpineItemLocator } from '../spineItem/locationResolver';
7
+ import { ViewportNavigationEntry } from '../spine/navigationResolver';
8
+
9
+ type RequireLayout = boolean;
10
+ type ManipulableSpineItemCallback = Parameters<SpineItem[`manipulateSpineItem`]>[0];
11
+ type ManipulableSpineItemCallbackPayload = Parameters<ManipulableSpineItemCallback>[0];
12
+ type CfiLocator = ReturnType<typeof createCfiLocator>;
13
+ type SpineItemLocator = ReturnType<typeof createSpineItemLocator>;
14
+ type Locator = ReturnType<typeof createLocationResolver>;
15
+ type Event = {
16
+ type: `onSelectionChange`;
17
+ data: ReturnType<typeof createSelection> | null;
18
+ };
19
+ export type Spine = {
20
+ element$: Observable<HTMLElement>;
21
+ getElement: () => HTMLElement | undefined;
22
+ locator: Locator;
23
+ spineItemLocator: SpineItemLocator;
24
+ cfiLocator: CfiLocator;
25
+ manipulateSpineItems: (cb: (payload: ManipulableSpineItemCallbackPayload & {
26
+ index: number;
27
+ }) => RequireLayout) => void;
28
+ manipulateSpineItem: (id: string, cb: Parameters<SpineItem[`manipulateSpineItem`]>[0]) => void;
29
+ destroy: () => void;
30
+ isSelecting: () => boolean | undefined;
31
+ getSelection: () => Selection | undefined;
32
+ adjustPagination: (position: ViewportNavigationEntry) => Observable<`free` | `busy`>;
33
+ $: {
34
+ $: Observable<Event>;
35
+ layout$: Observable<boolean>;
36
+ spineItems$: Observable<SpineItem[]>;
37
+ itemsBeforeDestroy$: Observable<void>;
38
+ };
39
+ };
40
+ export {};
@@ -0,0 +1,12 @@
1
+ import { Manifest } from '@prose-reader/shared';
2
+
3
+ export type ViewportPosition = {
4
+ x: number;
5
+ y: number;
6
+ };
7
+ declare global {
8
+ interface Window {
9
+ __PROSE_READER_DEBUG?: boolean;
10
+ }
11
+ }
12
+ export { Manifest };
@@ -0,0 +1,44 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Spine } from './Spine';
3
+ import { Pagination } from '../pagination/pagination';
4
+ import { Manifest } from '@prose-reader/shared';
5
+ import { SpineItemManager } from '../spineItemManager';
6
+ import { ViewportNavigator } from '../viewportNavigator/viewportNavigator';
7
+ import { SettingsManager } from '../settings/SettingsManager';
8
+ import { Settings } from '../settings/types';
9
+ import { Context } from '../context/Context';
10
+ import { HookManager } from '../hooks/HookManager';
11
+
12
+ export type ContextSettings = Partial<Settings>;
13
+ export type LoadOptions = {
14
+ cfi?: string | null;
15
+ containerElement: HTMLElement;
16
+ };
17
+ export type ReaderInternal = {
18
+ context: Context;
19
+ spine: Spine;
20
+ spineItemManager: SpineItemManager;
21
+ viewportNavigator: ViewportNavigator;
22
+ settings: SettingsManager;
23
+ hookManager: HookManager;
24
+ layout: () => void;
25
+ load: (manifest: Manifest, loadOptions: LoadOptions) => void;
26
+ destroy: () => void;
27
+ pagination: Pagination;
28
+ element$: Observable<HTMLElement>;
29
+ $: {
30
+ state$: Observable<{
31
+ supportedPageTurnAnimation: NonNullable<ContextSettings[`pageTurnAnimation`]>[];
32
+ supportedPageTurnMode: NonNullable<ContextSettings[`pageTurnMode`]>[];
33
+ supportedPageTurnDirection: NonNullable<ContextSettings[`pageTurnDirection`]>[];
34
+ supportedComputedPageTurnDirection: NonNullable<ContextSettings[`pageTurnDirection`]>[];
35
+ }>;
36
+ loadStatus$: Observable<"idle" | "loading" | "ready">;
37
+ selection$: Observable<{
38
+ toString: () => string;
39
+ getAnchorCfi: () => string | undefined;
40
+ getFocusCfi: () => string | undefined;
41
+ } | null>;
42
+ destroy$: Observable<void>;
43
+ };
44
+ };
@@ -0,0 +1,8 @@
1
+ type Func<T extends any[], R> = (...a: T) => R;
2
+ declare function compose<F extends Function>(f: F): F;
3
+ declare function compose<A, T extends any[], R>(f1: (a: A) => R, f2: Func<T, A>): Func<T, R>;
4
+ declare function compose<A, B, T extends any[], R>(f1: (b: B) => R, f2: (a: A) => B, f3: Func<T, A>): Func<T, R>;
5
+ declare function compose<A, B, C, T extends any[], R>(f1: (c: C) => R, f2: (b: B) => C, f3: (a: A) => B, f4: Func<T, A>): Func<T, R>;
6
+ declare function compose<R>(f1: (a: any) => R, ...funcs: Function[]): (...args: any[]) => R;
7
+ declare function compose<R>(...funcs: Function[]): (...args: any[]) => R;
8
+ export { compose };
@@ -0,0 +1,19 @@
1
+ export declare const isHtmlElement: (element?: Element | Node | null | EventTarget) => element is HTMLElement;
2
+ type ViewPort = {
3
+ left: number;
4
+ right: number;
5
+ top: number;
6
+ bottom: number;
7
+ };
8
+ export declare const getFirstVisibleNodeForViewport: ((documentOrElement: Document | Element, viewport: ViewPort) => {
9
+ node: Node;
10
+ offset: number;
11
+ } | undefined) | ((documentOrElement: Document | Element, viewport: ViewPort) => ReturnType<(documentOrElement: Document | Element, viewport: ViewPort) => {
12
+ node: Node;
13
+ offset: number;
14
+ } | undefined>);
15
+ export declare const getRangeFromNode: (node: Node, offset: number) => Range | undefined;
16
+ export declare const isPointerEvent: (event: Event) => event is PointerEvent;
17
+ export declare const isMouseEvent: (event: Event) => event is MouseEvent;
18
+ export declare const isTouchEvent: (event: Event) => event is TouchEvent;
19
+ export {};
@@ -0,0 +1 @@
1
+ export declare function isDefined<T>(arg: T | null | undefined): arg is T extends null | undefined ? never : T;
@@ -0,0 +1,7 @@
1
+ export declare const getNewScaledOffset: ({ newScale, oldScale, screenSize, scrollOffset, }: {
2
+ screenSize: number;
3
+ pageSize: number;
4
+ scrollOffset: number;
5
+ newScale: number;
6
+ oldScale: number;
7
+ }) => number;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import { Manifest } from '@prose-reader/shared';
2
+
3
+ export declare const getCoverItem: (manifest: Manifest) => number;
@@ -0,0 +1,6 @@
1
+ export declare const is: (x: any, y: any) => boolean;
2
+ export declare const isShallowEqual: <T = any, R = any>(objectA: T, objectB: R, options?: {
3
+ customEqual?: <T_1>(a: T_1, b: T_1) => boolean;
4
+ }) => boolean;
5
+ export declare const groupBy: <T, K extends keyof any>(list: T[], getKey: (item: T) => K) => Record<K, T[]>;
6
+ export declare const getBase64FromBlob: (data: Blob) => Promise<string>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { OperatorFunction } from 'rxjs';
2
+
3
+ export declare const mapKeysTo: <R extends {
4
+ [key: string]: any;
5
+ }, K extends keyof R>(keys: K[]) => OperatorFunction<R, Pick<R, K>>;