@prose-reader/core 1.41.0 → 1.43.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 (76) hide show
  1. package/dist/index.d.ts +4366 -8
  2. package/dist/{prose.js → index.js} +632 -443
  3. package/dist/index.js.map +1 -0
  4. package/dist/{prose.umd.cjs → index.umd.cjs} +630 -441
  5. package/dist/index.umd.cjs.map +1 -0
  6. package/package.json +7 -7
  7. package/dist/cfi.d.ts +0 -74
  8. package/dist/constants.d.ts +0 -6
  9. package/dist/context.d.ts +0 -44
  10. package/dist/createReaderWithEnhancer.d.ts +0 -5381
  11. package/dist/enhancers/accessibility.d.ts +0 -4890
  12. package/dist/enhancers/chrome.d.ts +0 -4890
  13. package/dist/enhancers/fonts.d.ts +0 -4904
  14. package/dist/enhancers/hotkeys.d.ts +0 -4890
  15. package/dist/enhancers/layoutEnhancer/createMovingSafePan$.d.ts +0 -3
  16. package/dist/enhancers/layoutEnhancer/fixReflowable.d.ts +0 -2
  17. package/dist/enhancers/layoutEnhancer/layoutEnhancer.d.ts +0 -4897
  18. package/dist/enhancers/layoutEnhancer/types.d.ts +0 -8
  19. package/dist/enhancers/links.d.ts +0 -4900
  20. package/dist/enhancers/loadingEnhancer.d.ts +0 -4919
  21. package/dist/enhancers/media.d.ts +0 -4890
  22. package/dist/enhancers/navigation.d.ts +0 -4893
  23. package/dist/enhancers/pagination.d.ts +0 -5279
  24. package/dist/enhancers/progression.d.ts +0 -4903
  25. package/dist/enhancers/resources/index.d.ts +0 -4890
  26. package/dist/enhancers/resources/indexedDB.d.ts +0 -6
  27. package/dist/enhancers/resources/resourcesManager.d.ts +0 -6
  28. package/dist/enhancers/theme.d.ts +0 -4916
  29. package/dist/enhancers/types/enhancer.d.ts +0 -4894
  30. package/dist/enhancers/utils.d.ts +0 -4894
  31. package/dist/enhancers/webkit.d.ts +0 -4890
  32. package/dist/enhancers/zoom/elementZoomer.d.ts +0 -18
  33. package/dist/enhancers/zoom/index.d.ts +0 -4891
  34. package/dist/enhancers/zoom/types.d.ts +0 -22
  35. package/dist/enhancers/zoom/viewportZoomer.d.ts +0 -18
  36. package/dist/frames.d.ts +0 -5
  37. package/dist/pagination.d.ts +0 -65
  38. package/dist/prose.js.map +0 -1
  39. package/dist/prose.umd.cjs.map +0 -1
  40. package/dist/reader.d.ts +0 -4907
  41. package/dist/report.d.ts +0 -26
  42. package/dist/selection.d.ts +0 -6
  43. package/dist/settings.d.ts +0 -39
  44. package/dist/spine/cfiLocator.d.ts +0 -371
  45. package/dist/spine/createSpine.d.ts +0 -29
  46. package/dist/spine/eventsHelper.d.ts +0 -11
  47. package/dist/spine/locationResolver.d.ts +0 -697
  48. package/dist/spine/navigationResolver.d.ts +0 -45
  49. package/dist/spine/types.d.ts +0 -10
  50. package/dist/spineItem/commonSpineItem.d.ts +0 -171
  51. package/dist/spineItem/createSpineItem.d.ts +0 -181
  52. package/dist/spineItem/frameItem/createFrame$.d.ts +0 -1
  53. package/dist/spineItem/frameItem/createFrameManipulator.d.ts +0 -5
  54. package/dist/spineItem/frameItem/createHtmlPageFromResource.d.ts +0 -2
  55. package/dist/spineItem/frameItem/frameItem.d.ts +0 -46
  56. package/dist/spineItem/frameItem/loader.d.ts +0 -27
  57. package/dist/spineItem/locationResolver.d.ts +0 -23
  58. package/dist/spineItem/navigationResolver.d.ts +0 -13
  59. package/dist/spineItem/prePaginatedSpineItem.d.ts +0 -180
  60. package/dist/spineItem/reflowableSpineItem.d.ts +0 -179
  61. package/dist/spineItem/styles/getStyleForViewportDocument.d.ts +0 -1
  62. package/dist/spineItem/trackers.d.ts +0 -34
  63. package/dist/spineItem/types.d.ts +0 -19
  64. package/dist/spineItemManager.d.ts +0 -550
  65. package/dist/types/Hook.d.ts +0 -73
  66. package/dist/types/Spine.d.ts +0 -39
  67. package/dist/types/index.d.ts +0 -11
  68. package/dist/utils/dom.d.ts +0 -19
  69. package/dist/utils/layout.d.ts +0 -7
  70. package/dist/utils/objects.d.ts +0 -6
  71. package/dist/utils/rxjs.d.ts +0 -4
  72. package/dist/viewportNavigator/manualViewportNavigator.d.ts +0 -1440
  73. package/dist/viewportNavigator/panViewportNavigator.d.ts +0 -215
  74. package/dist/viewportNavigator/scrollViewportNavigator.d.ts +0 -35
  75. package/dist/viewportNavigator/types.d.ts +0 -33
  76. package/dist/viewportNavigator/viewportNavigator.d.ts +0 -71
package/dist/index.d.ts CHANGED
@@ -1,8 +1,4366 @@
1
- import { createSelection } from "./selection";
2
- export type { Manifest } from "./types";
3
- import { createReaderWithEnhancers } from "./createReaderWithEnhancer";
4
- export type Reader = ReturnType<typeof createReaderWithEnhancers>;
5
- export { createReaderWithEnhancers as createReader };
6
- export type ReaderSelection = ReturnType<typeof createSelection>;
7
- export { Report } from "./report";
8
- export { groupBy, isShallowEqual } from "./utils/objects";
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { Manifest } from '@prose-reader/shared';
3
+ import { Observable } from 'rxjs';
4
+
5
+ declare type Api = {
6
+ zoom: {
7
+ enter: (imgElement?: HTMLImageElement) => void;
8
+ exit: () => void;
9
+ move: (position: {
10
+ x: number;
11
+ y: number;
12
+ } | undefined, details: {
13
+ isFirst: boolean;
14
+ isLast: boolean;
15
+ }) => void;
16
+ isZooming: () => boolean;
17
+ isUsingScrollableZoom: () => boolean;
18
+ getScaleValue: () => number;
19
+ scale: (scale: number) => void;
20
+ setCurrentScaleAsBase: () => void;
21
+ $: {
22
+ isZooming$: Observable<boolean>;
23
+ };
24
+ };
25
+ };
26
+
27
+ declare type CfiLocator = ReturnType<typeof createCfiLocator>;
28
+
29
+ declare type Context = ReturnType<typeof createContext>;
30
+
31
+ declare type Context_2 = {
32
+ load: (newManifest: Manifest, newLoadOptions: LoadOptions) => void;
33
+ getManifest: () => Manifest | undefined;
34
+ areAllItemsPrePaginated: () => boolean;
35
+ getCalculatedInnerMargin: () => number;
36
+ getVisibleAreaRect: () => {
37
+ width: number;
38
+ height: number;
39
+ x: number;
40
+ y: number;
41
+ };
42
+ isUsingSpreadMode: () => boolean | undefined;
43
+ setHasVerticalWriting: (value: boolean) => void;
44
+ getReadingDirection: () => Manifest[`readingDirection`] | undefined;
45
+ getPageSize: () => {
46
+ height: number;
47
+ width: number;
48
+ };
49
+ setVisibleAreaRect: (options: {
50
+ x: number;
51
+ y: number;
52
+ width: number;
53
+ height: number;
54
+ }) => void;
55
+ isRTL: () => boolean;
56
+ destroy: () => void;
57
+ getState: () => State;
58
+ containerElement$: Observable<HTMLElement>;
59
+ isUsingSpreadMode$: Observable<boolean | undefined>;
60
+ hasVerticalWriting$: Observable<boolean>;
61
+ $: {
62
+ destroy$: Observable<void>;
63
+ state$: Observable<State>;
64
+ manifest$: Observable<Manifest>;
65
+ };
66
+ };
67
+
68
+ declare type ContextSettings = Partial<InputSettings>;
69
+
70
+ declare const createCfiLocator: ({ spineItemManager, spineItemLocator, }: {
71
+ spineItemManager: SpineItemManager;
72
+ context: Context_2;
73
+ spineItemLocator: ReturnType<typeof createLocationResolver_2>;
74
+ }) => {
75
+ getSpineItemFromCfi: (cfi: string) => {
76
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
77
+ blankPagePosition: "after" | "before" | "none";
78
+ minimumWidth: number;
79
+ spreadPosition: "none" | "left" | "right";
80
+ }) => {
81
+ width: number;
82
+ height: number;
83
+ };
84
+ item: {
85
+ id: string;
86
+ href: string;
87
+ renditionLayout: "reflowable" | "pre-paginated";
88
+ progressionWeight: number;
89
+ pageSpreadLeft: true | undefined;
90
+ pageSpreadRight: true | undefined;
91
+ mediaType?: string | undefined;
92
+ };
93
+ load: () => void;
94
+ adjustPositionOfElement: ({ right, left, top }: {
95
+ right?: number | undefined;
96
+ left?: number | undefined;
97
+ top?: number | undefined;
98
+ }) => void;
99
+ getElementDimensions: () => {
100
+ width: number;
101
+ height: number;
102
+ };
103
+ getHtmlFromResource: (response: Response) => Promise<string>;
104
+ getResource: () => Promise<Response>;
105
+ translateFramePositionIntoPage: (position: {
106
+ clientX: number;
107
+ clientY: number;
108
+ }) => {
109
+ clientX: number;
110
+ clientY: number;
111
+ };
112
+ setLayoutDirty: () => void;
113
+ injectStyle: (cssText: string) => void;
114
+ loadContent: () => void;
115
+ unloadContent: () => void;
116
+ spineItemFrame: {
117
+ getIsLoaded: () => boolean;
118
+ getIsReady: () => boolean;
119
+ getViewportDimensions: () => {
120
+ width: number;
121
+ height: number;
122
+ } | undefined;
123
+ getFrameElement: () => HTMLIFrameElement | undefined;
124
+ getHtmlFromResource: (response: Response) => Promise<string>;
125
+ load: () => void;
126
+ unload: () => void;
127
+ staticLayout: (size: {
128
+ width: number;
129
+ height: number;
130
+ }) => void;
131
+ getManipulableFrame: () => {
132
+ frame: HTMLIFrameElement;
133
+ removeStyle: (id: string) => void;
134
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
135
+ } | undefined;
136
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
137
+ isUsingVerticalWriting: () => boolean;
138
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
139
+ destroy: () => void;
140
+ $: {
141
+ unload$: Observable<void>;
142
+ unloaded$: Observable<void>;
143
+ loaded$: Observable<HTMLIFrameElement>;
144
+ ready$: Observable<FontFaceSet | undefined>;
145
+ isReady$: Observable<boolean>;
146
+ contentLayoutChange$: Observable<{
147
+ isFirstLayout: boolean;
148
+ } | {
149
+ isFirstLayout: boolean;
150
+ }>;
151
+ };
152
+ };
153
+ element: HTMLElement;
154
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
155
+ getViewPortInformation: () => {
156
+ computedScale: number;
157
+ computedWidthScale: number;
158
+ viewportDimensions: {
159
+ width: number;
160
+ height: number;
161
+ };
162
+ } | undefined;
163
+ isImageType: () => boolean;
164
+ isReady: () => boolean;
165
+ destroy: () => void;
166
+ isUsingVerticalWriting: () => boolean | undefined;
167
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
168
+ manipulateSpineItem: (cb: (options: {
169
+ container: HTMLElement;
170
+ item: {
171
+ id: string;
172
+ href: string;
173
+ renditionLayout: "reflowable" | "pre-paginated";
174
+ progressionWeight: number;
175
+ pageSpreadLeft: true | undefined;
176
+ pageSpreadRight: true | undefined;
177
+ mediaType?: string | undefined;
178
+ };
179
+ overlayElement: HTMLDivElement;
180
+ } & ({
181
+ frame: HTMLIFrameElement;
182
+ removeStyle: (id: string) => void;
183
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
184
+ } | {
185
+ frame: undefined;
186
+ removeStyle: (id: string) => void;
187
+ addStyle: (id: string, style: string) => void;
188
+ })) => boolean) => boolean;
189
+ executeOnLayoutBeforeMeasurementHook: (options: {
190
+ minimumWidth: number;
191
+ }) => void;
192
+ selectionTracker: {
193
+ track: (frameToTrack: HTMLIFrameElement) => void;
194
+ destroy: () => void;
195
+ isSelecting: () => boolean;
196
+ getSelection: () => Selection | undefined;
197
+ $: Observable<{
198
+ event: "selectionchange";
199
+ data: Selection | null;
200
+ } | {
201
+ event: "selectstart";
202
+ data: Selection | null;
203
+ } | {
204
+ event: "selectend";
205
+ data: Selection | null;
206
+ }>;
207
+ };
208
+ fingerTracker: {
209
+ track: (frame: HTMLIFrameElement) => void;
210
+ getFingerPositionInIframe(): {
211
+ x: number | undefined;
212
+ y: number | undefined;
213
+ } | undefined;
214
+ destroy: () => void;
215
+ $: Observable<{
216
+ event: "fingermove";
217
+ data: {
218
+ x: number;
219
+ y: number;
220
+ };
221
+ } | {
222
+ event: "fingerout";
223
+ data: undefined;
224
+ }>;
225
+ };
226
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
227
+ columnHeight: number;
228
+ columnWidth: number;
229
+ width: number;
230
+ };
231
+ getDimensionsForPaginatedContent: () => {
232
+ columnHeight: number;
233
+ columnWidth: number;
234
+ };
235
+ $: {
236
+ contentLayout$: Observable<{
237
+ isFirstLayout: boolean;
238
+ isReady: boolean;
239
+ }>;
240
+ loaded$: Observable<HTMLIFrameElement>;
241
+ isReady$: Observable<boolean>;
242
+ };
243
+ } | undefined;
244
+ getCfiMetaInformation: (cfi: string) => {
245
+ spineItemIndex: number | undefined;
246
+ } | undefined;
247
+ getCfi: ((pageIndex: number, spineItem: SpineItem) => string) | ((pageIndex: number, spineItem: {
248
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
249
+ blankPagePosition: "after" | "before" | "none";
250
+ minimumWidth: number;
251
+ spreadPosition: "none" | "left" | "right";
252
+ }) => {
253
+ width: number;
254
+ height: number;
255
+ };
256
+ item: {
257
+ id: string;
258
+ href: string;
259
+ renditionLayout: "reflowable" | "pre-paginated";
260
+ progressionWeight: number;
261
+ pageSpreadLeft: true | undefined;
262
+ pageSpreadRight: true | undefined;
263
+ mediaType?: string | undefined;
264
+ };
265
+ load: () => void;
266
+ adjustPositionOfElement: ({ right, left, top }: {
267
+ right?: number | undefined;
268
+ left?: number | undefined;
269
+ top?: number | undefined;
270
+ }) => void;
271
+ getElementDimensions: () => {
272
+ width: number;
273
+ height: number;
274
+ };
275
+ getHtmlFromResource: (response: Response) => Promise<string>;
276
+ getResource: () => Promise<Response>;
277
+ translateFramePositionIntoPage: (position: {
278
+ clientX: number;
279
+ clientY: number;
280
+ }) => {
281
+ clientX: number;
282
+ clientY: number;
283
+ };
284
+ setLayoutDirty: () => void;
285
+ injectStyle: (cssText: string) => void;
286
+ loadContent: () => void;
287
+ unloadContent: () => void;
288
+ spineItemFrame: {
289
+ getIsLoaded: () => boolean;
290
+ getIsReady: () => boolean;
291
+ getViewportDimensions: () => {
292
+ width: number;
293
+ height: number;
294
+ } | undefined;
295
+ getFrameElement: () => HTMLIFrameElement | undefined;
296
+ getHtmlFromResource: (response: Response) => Promise<string>;
297
+ load: () => void;
298
+ unload: () => void;
299
+ staticLayout: (size: {
300
+ width: number;
301
+ height: number;
302
+ }) => void;
303
+ getManipulableFrame: () => {
304
+ frame: HTMLIFrameElement;
305
+ removeStyle: (id: string) => void;
306
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
307
+ } | undefined;
308
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
309
+ isUsingVerticalWriting: () => boolean;
310
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
311
+ destroy: () => void;
312
+ $: {
313
+ unload$: Observable<void>;
314
+ unloaded$: Observable<void>;
315
+ loaded$: Observable<HTMLIFrameElement>;
316
+ ready$: Observable<FontFaceSet | undefined>;
317
+ isReady$: Observable<boolean>;
318
+ contentLayoutChange$: Observable<{
319
+ isFirstLayout: boolean;
320
+ } | {
321
+ isFirstLayout: boolean;
322
+ }>;
323
+ };
324
+ };
325
+ element: HTMLElement;
326
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
327
+ getViewPortInformation: () => {
328
+ computedScale: number;
329
+ computedWidthScale: number;
330
+ viewportDimensions: {
331
+ width: number;
332
+ height: number;
333
+ };
334
+ } | undefined;
335
+ isImageType: () => boolean;
336
+ isReady: () => boolean;
337
+ destroy: () => void;
338
+ isUsingVerticalWriting: () => boolean | undefined;
339
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
340
+ manipulateSpineItem: (cb: (options: {
341
+ container: HTMLElement;
342
+ item: {
343
+ id: string;
344
+ href: string;
345
+ renditionLayout: "reflowable" | "pre-paginated";
346
+ progressionWeight: number;
347
+ pageSpreadLeft: true | undefined;
348
+ pageSpreadRight: true | undefined;
349
+ mediaType?: string | undefined;
350
+ };
351
+ overlayElement: HTMLDivElement;
352
+ } & ({
353
+ frame: HTMLIFrameElement;
354
+ removeStyle: (id: string) => void;
355
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
356
+ } | {
357
+ frame: undefined;
358
+ removeStyle: (id: string) => void;
359
+ addStyle: (id: string, style: string) => void;
360
+ })) => boolean) => boolean;
361
+ executeOnLayoutBeforeMeasurementHook: (options: {
362
+ minimumWidth: number;
363
+ }) => void;
364
+ selectionTracker: {
365
+ track: (frameToTrack: HTMLIFrameElement) => void;
366
+ destroy: () => void;
367
+ isSelecting: () => boolean;
368
+ getSelection: () => Selection | undefined;
369
+ $: Observable<{
370
+ event: "selectionchange";
371
+ data: Selection | null;
372
+ } | {
373
+ event: "selectstart";
374
+ data: Selection | null;
375
+ } | {
376
+ event: "selectend";
377
+ data: Selection | null;
378
+ }>;
379
+ };
380
+ fingerTracker: {
381
+ track: (frame: HTMLIFrameElement) => void;
382
+ getFingerPositionInIframe(): {
383
+ x: number | undefined;
384
+ y: number | undefined;
385
+ } | undefined;
386
+ destroy: () => void;
387
+ $: Observable<{
388
+ event: "fingermove";
389
+ data: {
390
+ x: number;
391
+ y: number;
392
+ };
393
+ } | {
394
+ event: "fingerout";
395
+ data: undefined;
396
+ }>;
397
+ };
398
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
399
+ columnHeight: number;
400
+ columnWidth: number;
401
+ width: number;
402
+ };
403
+ getDimensionsForPaginatedContent: () => {
404
+ columnHeight: number;
405
+ columnWidth: number;
406
+ };
407
+ $: {
408
+ contentLayout$: Observable<{
409
+ isFirstLayout: boolean;
410
+ isReady: boolean;
411
+ }>;
412
+ loaded$: Observable<HTMLIFrameElement>;
413
+ isReady$: Observable<boolean>;
414
+ };
415
+ }) => string);
416
+ getRootCfi: (spineItem: SpineItem) => string;
417
+ resolveCfi: (cfiString: string) => {
418
+ node: Node | undefined;
419
+ offset: number | undefined;
420
+ spineItemIndex: number;
421
+ } | {
422
+ spineItemIndex: number;
423
+ node?: undefined;
424
+ offset?: undefined;
425
+ } | undefined;
426
+ generateFromRange: ({ startNode, start, end, endNode }: {
427
+ startNode: Node;
428
+ start: number;
429
+ endNode: Node;
430
+ end: number;
431
+ }, item: Manifest[`spineItems`][number]) => {
432
+ start: string;
433
+ end: string;
434
+ };
435
+ };
436
+
437
+ declare const createContext: (settings: ReturnType<typeof createSettings>) => Context_2;
438
+
439
+ declare const createEventsHelper: ({ iframeEventBridgeElement$, locator, }: {
440
+ iframeEventBridgeElement$: BehaviorSubject<HTMLElement | undefined>;
441
+ spineItemManager: SpineItemManager;
442
+ context: Context_2;
443
+ locator: ReturnType<typeof createLocationResolver>;
444
+ }) => {
445
+ normalizeEventForViewport: <E extends MouseEvent | PointerEvent | TouchEvent>(event: E) => E;
446
+ };
447
+
448
+ declare const createLocationResolver: ({ spineItemManager, context, spineItemLocator, settings }: {
449
+ spineItemManager: SpineItemManager;
450
+ context: Context_2;
451
+ spineItemLocator: ReturnType<typeof createLocationResolver_2>;
452
+ settings: Settings;
453
+ }) => {
454
+ getSpinePositionFromSpineItemPosition: (spineItemPosition: SpineItemNavigationPosition | SpineItemPosition, spineItem: SpineItem) => SpinePosition;
455
+ getSpinePositionFromSpineItem: (spineItem: SpineItem) => SpinePosition;
456
+ getSpinePositionFromSpineItemAnchor: (anchor: string, spineItem: SpineItem) => SpinePosition;
457
+ getSpineItemPositionFromSpinePosition: ((position: UnsafeSpinePosition, spineItem: SpineItem) => UnsafeSpineItemPosition) | ((position: UnsafeSpinePosition, spineItem: {
458
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
459
+ blankPagePosition: "after" | "before" | "none";
460
+ minimumWidth: number;
461
+ spreadPosition: "none" | "left" | "right";
462
+ }) => {
463
+ width: number;
464
+ height: number;
465
+ };
466
+ item: {
467
+ id: string;
468
+ href: string;
469
+ renditionLayout: "reflowable" | "pre-paginated";
470
+ progressionWeight: number;
471
+ pageSpreadLeft: true | undefined;
472
+ pageSpreadRight: true | undefined;
473
+ mediaType?: string | undefined;
474
+ };
475
+ load: () => void;
476
+ adjustPositionOfElement: ({ right, left, top }: {
477
+ right?: number | undefined;
478
+ left?: number | undefined;
479
+ top?: number | undefined;
480
+ }) => void;
481
+ getElementDimensions: () => {
482
+ width: number;
483
+ height: number;
484
+ };
485
+ getHtmlFromResource: (response: Response) => Promise<string>;
486
+ getResource: () => Promise<Response>;
487
+ translateFramePositionIntoPage: (position: {
488
+ clientX: number;
489
+ clientY: number;
490
+ }) => {
491
+ clientX: number;
492
+ clientY: number;
493
+ };
494
+ setLayoutDirty: () => void;
495
+ injectStyle: (cssText: string) => void;
496
+ loadContent: () => void;
497
+ unloadContent: () => void;
498
+ spineItemFrame: {
499
+ getIsLoaded: () => boolean;
500
+ getIsReady: () => boolean;
501
+ getViewportDimensions: () => {
502
+ width: number;
503
+ height: number;
504
+ } | undefined;
505
+ getFrameElement: () => HTMLIFrameElement | undefined;
506
+ getHtmlFromResource: (response: Response) => Promise<string>;
507
+ load: () => void;
508
+ unload: () => void;
509
+ staticLayout: (size: {
510
+ width: number;
511
+ height: number;
512
+ }) => void;
513
+ getManipulableFrame: () => {
514
+ frame: HTMLIFrameElement;
515
+ removeStyle: (id: string) => void;
516
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
517
+ } | undefined;
518
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
519
+ isUsingVerticalWriting: () => boolean;
520
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
521
+ destroy: () => void;
522
+ $: {
523
+ unload$: Observable<void>;
524
+ unloaded$: Observable<void>;
525
+ loaded$: Observable<HTMLIFrameElement>;
526
+ ready$: Observable<FontFaceSet | undefined>;
527
+ isReady$: Observable<boolean>;
528
+ contentLayoutChange$: Observable<{
529
+ isFirstLayout: boolean;
530
+ } | {
531
+ isFirstLayout: boolean;
532
+ }>;
533
+ };
534
+ };
535
+ element: HTMLElement;
536
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
537
+ getViewPortInformation: () => {
538
+ computedScale: number;
539
+ computedWidthScale: number;
540
+ viewportDimensions: {
541
+ width: number;
542
+ height: number;
543
+ };
544
+ } | undefined;
545
+ isImageType: () => boolean;
546
+ isReady: () => boolean;
547
+ destroy: () => void;
548
+ isUsingVerticalWriting: () => boolean | undefined;
549
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
550
+ manipulateSpineItem: (cb: (options: {
551
+ container: HTMLElement;
552
+ item: {
553
+ id: string;
554
+ href: string;
555
+ renditionLayout: "reflowable" | "pre-paginated";
556
+ progressionWeight: number;
557
+ pageSpreadLeft: true | undefined;
558
+ pageSpreadRight: true | undefined;
559
+ mediaType?: string | undefined;
560
+ };
561
+ overlayElement: HTMLDivElement;
562
+ } & ({
563
+ frame: HTMLIFrameElement;
564
+ removeStyle: (id: string) => void;
565
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
566
+ } | {
567
+ frame: undefined;
568
+ removeStyle: (id: string) => void;
569
+ addStyle: (id: string, style: string) => void;
570
+ })) => boolean) => boolean;
571
+ executeOnLayoutBeforeMeasurementHook: (options: {
572
+ minimumWidth: number;
573
+ }) => void;
574
+ selectionTracker: {
575
+ track: (frameToTrack: HTMLIFrameElement) => void;
576
+ destroy: () => void;
577
+ isSelecting: () => boolean;
578
+ getSelection: () => Selection | undefined;
579
+ $: Observable<{
580
+ event: "selectionchange";
581
+ data: Selection | null;
582
+ } | {
583
+ event: "selectstart";
584
+ data: Selection | null;
585
+ } | {
586
+ event: "selectend";
587
+ data: Selection | null;
588
+ }>;
589
+ };
590
+ fingerTracker: {
591
+ track: (frame: HTMLIFrameElement) => void;
592
+ getFingerPositionInIframe(): {
593
+ x: number | undefined;
594
+ y: number | undefined;
595
+ } | undefined;
596
+ destroy: () => void;
597
+ $: Observable<{
598
+ event: "fingermove";
599
+ data: {
600
+ x: number;
601
+ y: number;
602
+ };
603
+ } | {
604
+ event: "fingerout";
605
+ data: undefined;
606
+ }>;
607
+ };
608
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
609
+ columnHeight: number;
610
+ columnWidth: number;
611
+ width: number;
612
+ };
613
+ getDimensionsForPaginatedContent: () => {
614
+ columnHeight: number;
615
+ columnWidth: number;
616
+ };
617
+ $: {
618
+ contentLayout$: Observable<{
619
+ isFirstLayout: boolean;
620
+ isReady: boolean;
621
+ }>;
622
+ loaded$: Observable<HTMLIFrameElement>;
623
+ isReady$: Observable<boolean>;
624
+ };
625
+ }) => UnsafeSpineItemPosition);
626
+ getSpineItemFromPosition: ((position: UnsafeSpinePosition) => {
627
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
628
+ blankPagePosition: "after" | "before" | "none";
629
+ minimumWidth: number;
630
+ spreadPosition: "none" | "left" | "right";
631
+ }) => {
632
+ width: number;
633
+ height: number;
634
+ };
635
+ item: {
636
+ id: string;
637
+ href: string;
638
+ renditionLayout: "reflowable" | "pre-paginated";
639
+ progressionWeight: number;
640
+ pageSpreadLeft: true | undefined;
641
+ pageSpreadRight: true | undefined;
642
+ mediaType?: string | undefined;
643
+ };
644
+ load: () => void;
645
+ adjustPositionOfElement: ({ right, left, top }: {
646
+ right?: number | undefined;
647
+ left?: number | undefined;
648
+ top?: number | undefined;
649
+ }) => void;
650
+ getElementDimensions: () => {
651
+ width: number;
652
+ height: number;
653
+ };
654
+ getHtmlFromResource: (response: Response) => Promise<string>;
655
+ getResource: () => Promise<Response>;
656
+ translateFramePositionIntoPage: (position: {
657
+ clientX: number;
658
+ clientY: number;
659
+ }) => {
660
+ clientX: number;
661
+ clientY: number;
662
+ };
663
+ setLayoutDirty: () => void;
664
+ injectStyle: (cssText: string) => void;
665
+ loadContent: () => void;
666
+ unloadContent: () => void;
667
+ spineItemFrame: {
668
+ getIsLoaded: () => boolean;
669
+ getIsReady: () => boolean;
670
+ getViewportDimensions: () => {
671
+ width: number;
672
+ height: number;
673
+ } | undefined;
674
+ getFrameElement: () => HTMLIFrameElement | undefined;
675
+ getHtmlFromResource: (response: Response) => Promise<string>;
676
+ load: () => void;
677
+ unload: () => void;
678
+ staticLayout: (size: {
679
+ width: number;
680
+ height: number;
681
+ }) => void;
682
+ getManipulableFrame: () => {
683
+ frame: HTMLIFrameElement;
684
+ removeStyle: (id: string) => void;
685
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
686
+ } | undefined;
687
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
688
+ isUsingVerticalWriting: () => boolean;
689
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
690
+ destroy: () => void;
691
+ $: {
692
+ unload$: Observable<void>;
693
+ unloaded$: Observable<void>;
694
+ loaded$: Observable<HTMLIFrameElement>;
695
+ ready$: Observable<FontFaceSet | undefined>;
696
+ isReady$: Observable<boolean>;
697
+ contentLayoutChange$: Observable<{
698
+ isFirstLayout: boolean;
699
+ } | {
700
+ isFirstLayout: boolean;
701
+ }>;
702
+ };
703
+ };
704
+ element: HTMLElement;
705
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
706
+ getViewPortInformation: () => {
707
+ computedScale: number;
708
+ computedWidthScale: number;
709
+ viewportDimensions: {
710
+ width: number;
711
+ height: number;
712
+ };
713
+ } | undefined;
714
+ isImageType: () => boolean;
715
+ isReady: () => boolean;
716
+ destroy: () => void;
717
+ isUsingVerticalWriting: () => boolean | undefined;
718
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
719
+ manipulateSpineItem: (cb: (options: {
720
+ container: HTMLElement;
721
+ item: {
722
+ id: string;
723
+ href: string;
724
+ renditionLayout: "reflowable" | "pre-paginated";
725
+ progressionWeight: number;
726
+ pageSpreadLeft: true | undefined;
727
+ pageSpreadRight: true | undefined;
728
+ mediaType?: string | undefined;
729
+ };
730
+ overlayElement: HTMLDivElement;
731
+ } & ({
732
+ frame: HTMLIFrameElement;
733
+ removeStyle: (id: string) => void;
734
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
735
+ } | {
736
+ frame: undefined;
737
+ removeStyle: (id: string) => void;
738
+ addStyle: (id: string, style: string) => void;
739
+ })) => boolean) => boolean;
740
+ executeOnLayoutBeforeMeasurementHook: (options: {
741
+ minimumWidth: number;
742
+ }) => void;
743
+ selectionTracker: {
744
+ track: (frameToTrack: HTMLIFrameElement) => void;
745
+ destroy: () => void;
746
+ isSelecting: () => boolean;
747
+ getSelection: () => Selection | undefined;
748
+ $: Observable<{
749
+ event: "selectionchange";
750
+ data: Selection | null;
751
+ } | {
752
+ event: "selectstart";
753
+ data: Selection | null;
754
+ } | {
755
+ event: "selectend";
756
+ data: Selection | null;
757
+ }>;
758
+ };
759
+ fingerTracker: {
760
+ track: (frame: HTMLIFrameElement) => void;
761
+ getFingerPositionInIframe(): {
762
+ x: number | undefined;
763
+ y: number | undefined;
764
+ } | undefined;
765
+ destroy: () => void;
766
+ $: Observable<{
767
+ event: "fingermove";
768
+ data: {
769
+ x: number;
770
+ y: number;
771
+ };
772
+ } | {
773
+ event: "fingerout";
774
+ data: undefined;
775
+ }>;
776
+ };
777
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
778
+ columnHeight: number;
779
+ columnWidth: number;
780
+ width: number;
781
+ };
782
+ getDimensionsForPaginatedContent: () => {
783
+ columnHeight: number;
784
+ columnWidth: number;
785
+ };
786
+ $: {
787
+ contentLayout$: Observable<{
788
+ isFirstLayout: boolean;
789
+ isReady: boolean;
790
+ }>;
791
+ loaded$: Observable<HTMLIFrameElement>;
792
+ isReady$: Observable<boolean>;
793
+ };
794
+ } | undefined) | ((position: UnsafeSpinePosition) => {
795
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
796
+ blankPagePosition: "after" | "before" | "none";
797
+ minimumWidth: number;
798
+ spreadPosition: "none" | "left" | "right";
799
+ }) => {
800
+ width: number;
801
+ height: number;
802
+ };
803
+ item: {
804
+ id: string;
805
+ href: string;
806
+ renditionLayout: "reflowable" | "pre-paginated";
807
+ progressionWeight: number;
808
+ pageSpreadLeft: true | undefined;
809
+ pageSpreadRight: true | undefined;
810
+ mediaType?: string | undefined;
811
+ };
812
+ load: () => void;
813
+ adjustPositionOfElement: ({ right, left, top }: {
814
+ right?: number | undefined;
815
+ left?: number | undefined;
816
+ top?: number | undefined;
817
+ }) => void;
818
+ getElementDimensions: () => {
819
+ width: number;
820
+ height: number;
821
+ };
822
+ getHtmlFromResource: (response: Response) => Promise<string>;
823
+ getResource: () => Promise<Response>;
824
+ translateFramePositionIntoPage: (position: {
825
+ clientX: number;
826
+ clientY: number;
827
+ }) => {
828
+ clientX: number;
829
+ clientY: number;
830
+ };
831
+ setLayoutDirty: () => void;
832
+ injectStyle: (cssText: string) => void;
833
+ loadContent: () => void;
834
+ unloadContent: () => void;
835
+ spineItemFrame: {
836
+ getIsLoaded: () => boolean;
837
+ getIsReady: () => boolean;
838
+ getViewportDimensions: () => {
839
+ width: number;
840
+ height: number;
841
+ } | undefined;
842
+ getFrameElement: () => HTMLIFrameElement | undefined;
843
+ getHtmlFromResource: (response: Response) => Promise<string>;
844
+ load: () => void;
845
+ unload: () => void;
846
+ staticLayout: (size: {
847
+ width: number;
848
+ height: number;
849
+ }) => void;
850
+ getManipulableFrame: () => {
851
+ frame: HTMLIFrameElement;
852
+ removeStyle: (id: string) => void;
853
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
854
+ } | undefined;
855
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
856
+ isUsingVerticalWriting: () => boolean;
857
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
858
+ destroy: () => void;
859
+ $: {
860
+ unload$: Observable<void>;
861
+ unloaded$: Observable<void>;
862
+ loaded$: Observable<HTMLIFrameElement>;
863
+ ready$: Observable<FontFaceSet | undefined>;
864
+ isReady$: Observable<boolean>;
865
+ contentLayoutChange$: Observable<{
866
+ isFirstLayout: boolean;
867
+ } | {
868
+ isFirstLayout: boolean;
869
+ }>;
870
+ };
871
+ };
872
+ element: HTMLElement;
873
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
874
+ getViewPortInformation: () => {
875
+ computedScale: number;
876
+ computedWidthScale: number;
877
+ viewportDimensions: {
878
+ width: number;
879
+ height: number;
880
+ };
881
+ } | undefined;
882
+ isImageType: () => boolean;
883
+ isReady: () => boolean;
884
+ destroy: () => void;
885
+ isUsingVerticalWriting: () => boolean | undefined;
886
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
887
+ manipulateSpineItem: (cb: (options: {
888
+ container: HTMLElement;
889
+ item: {
890
+ id: string;
891
+ href: string;
892
+ renditionLayout: "reflowable" | "pre-paginated";
893
+ progressionWeight: number;
894
+ pageSpreadLeft: true | undefined;
895
+ pageSpreadRight: true | undefined;
896
+ mediaType?: string | undefined;
897
+ };
898
+ overlayElement: HTMLDivElement;
899
+ } & ({
900
+ frame: HTMLIFrameElement;
901
+ removeStyle: (id: string) => void;
902
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
903
+ } | {
904
+ frame: undefined;
905
+ removeStyle: (id: string) => void;
906
+ addStyle: (id: string, style: string) => void;
907
+ })) => boolean) => boolean;
908
+ executeOnLayoutBeforeMeasurementHook: (options: {
909
+ minimumWidth: number;
910
+ }) => void;
911
+ selectionTracker: {
912
+ track: (frameToTrack: HTMLIFrameElement) => void;
913
+ destroy: () => void;
914
+ isSelecting: () => boolean;
915
+ getSelection: () => Selection | undefined;
916
+ $: Observable<{
917
+ event: "selectionchange";
918
+ data: Selection | null;
919
+ } | {
920
+ event: "selectstart";
921
+ data: Selection | null;
922
+ } | {
923
+ event: "selectend";
924
+ data: Selection | null;
925
+ }>;
926
+ };
927
+ fingerTracker: {
928
+ track: (frame: HTMLIFrameElement) => void;
929
+ getFingerPositionInIframe(): {
930
+ x: number | undefined;
931
+ y: number | undefined;
932
+ } | undefined;
933
+ destroy: () => void;
934
+ $: Observable<{
935
+ event: "fingermove";
936
+ data: {
937
+ x: number;
938
+ y: number;
939
+ };
940
+ } | {
941
+ event: "fingerout";
942
+ data: undefined;
943
+ }>;
944
+ };
945
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
946
+ columnHeight: number;
947
+ columnWidth: number;
948
+ width: number;
949
+ };
950
+ getDimensionsForPaginatedContent: () => {
951
+ columnHeight: number;
952
+ columnWidth: number;
953
+ };
954
+ $: {
955
+ contentLayout$: Observable<{
956
+ isFirstLayout: boolean;
957
+ isReady: boolean;
958
+ }>;
959
+ loaded$: Observable<HTMLIFrameElement>;
960
+ isReady$: Observable<boolean>;
961
+ };
962
+ } | undefined);
963
+ getSpineItemFromIframe: (iframe: Element) => {
964
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
965
+ blankPagePosition: "after" | "before" | "none";
966
+ minimumWidth: number;
967
+ spreadPosition: "none" | "left" | "right";
968
+ }) => {
969
+ width: number;
970
+ height: number;
971
+ };
972
+ item: {
973
+ id: string;
974
+ href: string;
975
+ renditionLayout: "reflowable" | "pre-paginated";
976
+ progressionWeight: number;
977
+ pageSpreadLeft: true | undefined;
978
+ pageSpreadRight: true | undefined;
979
+ mediaType?: string | undefined;
980
+ };
981
+ load: () => void;
982
+ adjustPositionOfElement: ({ right, left, top }: {
983
+ right?: number | undefined;
984
+ left?: number | undefined;
985
+ top?: number | undefined;
986
+ }) => void;
987
+ getElementDimensions: () => {
988
+ width: number;
989
+ height: number;
990
+ };
991
+ getHtmlFromResource: (response: Response) => Promise<string>;
992
+ getResource: () => Promise<Response>;
993
+ translateFramePositionIntoPage: (position: {
994
+ clientX: number;
995
+ clientY: number;
996
+ }) => {
997
+ clientX: number;
998
+ clientY: number;
999
+ };
1000
+ setLayoutDirty: () => void;
1001
+ injectStyle: (cssText: string) => void;
1002
+ loadContent: () => void;
1003
+ unloadContent: () => void;
1004
+ spineItemFrame: {
1005
+ getIsLoaded: () => boolean;
1006
+ getIsReady: () => boolean;
1007
+ getViewportDimensions: () => {
1008
+ width: number;
1009
+ height: number;
1010
+ } | undefined;
1011
+ getFrameElement: () => HTMLIFrameElement | undefined;
1012
+ getHtmlFromResource: (response: Response) => Promise<string>;
1013
+ load: () => void;
1014
+ unload: () => void;
1015
+ staticLayout: (size: {
1016
+ width: number;
1017
+ height: number;
1018
+ }) => void;
1019
+ getManipulableFrame: () => {
1020
+ frame: HTMLIFrameElement;
1021
+ removeStyle: (id: string) => void;
1022
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1023
+ } | undefined;
1024
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1025
+ isUsingVerticalWriting: () => boolean;
1026
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
1027
+ destroy: () => void;
1028
+ $: {
1029
+ unload$: Observable<void>;
1030
+ unloaded$: Observable<void>;
1031
+ loaded$: Observable<HTMLIFrameElement>;
1032
+ ready$: Observable<FontFaceSet | undefined>;
1033
+ isReady$: Observable<boolean>;
1034
+ contentLayoutChange$: Observable<{
1035
+ isFirstLayout: boolean;
1036
+ } | {
1037
+ isFirstLayout: boolean;
1038
+ }>;
1039
+ };
1040
+ };
1041
+ element: HTMLElement;
1042
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
1043
+ getViewPortInformation: () => {
1044
+ computedScale: number;
1045
+ computedWidthScale: number;
1046
+ viewportDimensions: {
1047
+ width: number;
1048
+ height: number;
1049
+ };
1050
+ } | undefined;
1051
+ isImageType: () => boolean;
1052
+ isReady: () => boolean;
1053
+ destroy: () => void;
1054
+ isUsingVerticalWriting: () => boolean | undefined;
1055
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1056
+ manipulateSpineItem: (cb: (options: {
1057
+ container: HTMLElement;
1058
+ item: {
1059
+ id: string;
1060
+ href: string;
1061
+ renditionLayout: "reflowable" | "pre-paginated";
1062
+ progressionWeight: number;
1063
+ pageSpreadLeft: true | undefined;
1064
+ pageSpreadRight: true | undefined;
1065
+ mediaType?: string | undefined;
1066
+ };
1067
+ overlayElement: HTMLDivElement;
1068
+ } & ({
1069
+ frame: HTMLIFrameElement;
1070
+ removeStyle: (id: string) => void;
1071
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1072
+ } | {
1073
+ frame: undefined;
1074
+ removeStyle: (id: string) => void;
1075
+ addStyle: (id: string, style: string) => void;
1076
+ })) => boolean) => boolean;
1077
+ executeOnLayoutBeforeMeasurementHook: (options: {
1078
+ minimumWidth: number;
1079
+ }) => void;
1080
+ selectionTracker: {
1081
+ track: (frameToTrack: HTMLIFrameElement) => void;
1082
+ destroy: () => void;
1083
+ isSelecting: () => boolean;
1084
+ getSelection: () => Selection | undefined;
1085
+ $: Observable<{
1086
+ event: "selectionchange";
1087
+ data: Selection | null;
1088
+ } | {
1089
+ event: "selectstart";
1090
+ data: Selection | null;
1091
+ } | {
1092
+ event: "selectend";
1093
+ data: Selection | null;
1094
+ }>;
1095
+ };
1096
+ fingerTracker: {
1097
+ track: (frame: HTMLIFrameElement) => void;
1098
+ getFingerPositionInIframe(): {
1099
+ x: number | undefined;
1100
+ y: number | undefined;
1101
+ } | undefined;
1102
+ destroy: () => void;
1103
+ $: Observable<{
1104
+ event: "fingermove";
1105
+ data: {
1106
+ x: number;
1107
+ y: number;
1108
+ };
1109
+ } | {
1110
+ event: "fingerout";
1111
+ data: undefined;
1112
+ }>;
1113
+ };
1114
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
1115
+ columnHeight: number;
1116
+ columnWidth: number;
1117
+ width: number;
1118
+ };
1119
+ getDimensionsForPaginatedContent: () => {
1120
+ columnHeight: number;
1121
+ columnWidth: number;
1122
+ };
1123
+ $: {
1124
+ contentLayout$: Observable<{
1125
+ isFirstLayout: boolean;
1126
+ isReady: boolean;
1127
+ }>;
1128
+ loaded$: Observable<HTMLIFrameElement>;
1129
+ isReady$: Observable<boolean>;
1130
+ };
1131
+ } | undefined;
1132
+ getSpineItemPageIndexFromNode: (node: Node, offset: number | undefined, spineItemOrIndex: SpineItem | number) => number | undefined;
1133
+ getSpineItemsFromReadingOrderPosition: (position: SpinePosition) => {
1134
+ begin: number;
1135
+ beginPosition: SpinePosition;
1136
+ end: number;
1137
+ endPosition: SpinePosition;
1138
+ } | undefined;
1139
+ };
1140
+
1141
+ declare const createLocationResolver_2: ({ context }: {
1142
+ context: Context_2;
1143
+ }) => {
1144
+ getSpineItemPositionFromNode: (node: Node, offset: number, spineItem: SpineItem) => {
1145
+ x: number;
1146
+ y: number;
1147
+ } | undefined;
1148
+ getSpineItemPositionFromPageIndex: (pageIndex: number, spineItem: SpineItem) => SpineItemPosition;
1149
+ getSpineItemOffsetFromAnchor: (anchor: string, spineItem: SpineItem) => number;
1150
+ getSpineItemPageIndexFromPosition: (position: UnsafeSpineItemPosition, spineItem: SpineItem) => number;
1151
+ getSpineItemPageIndexFromNode: (node: Node, offset: number, spineItem: SpineItem) => number | undefined;
1152
+ getSpineItemClosestPositionFromUnsafePosition: (unsafePosition: UnsafeSpineItemPosition, spineItem: SpineItem) => {
1153
+ x: number;
1154
+ y: number;
1155
+ };
1156
+ getFirstNodeOrRangeAtPage: (pageIndex: number, spineItem: SpineItem) => {
1157
+ node: Node;
1158
+ offset: number;
1159
+ } | undefined;
1160
+ };
1161
+
1162
+ declare const createPagination: ({ context }: {
1163
+ context: Context_2;
1164
+ spineItemManager: SpineItemManager;
1165
+ }) => {
1166
+ destroy: () => void;
1167
+ updateBeginAndEnd: ((begin: {
1168
+ spineItem: SpineItem;
1169
+ pageIndex: number;
1170
+ cfi: string | undefined;
1171
+ options: {
1172
+ isAtEndOfChapter?: boolean;
1173
+ };
1174
+ } & {
1175
+ spineItemIndex: number;
1176
+ }, end: {
1177
+ spineItem: SpineItem;
1178
+ pageIndex: number;
1179
+ cfi: string | undefined;
1180
+ options: {
1181
+ isAtEndOfChapter?: boolean;
1182
+ };
1183
+ } & {
1184
+ spineItemIndex: number;
1185
+ }) => void) | ((begin: {
1186
+ spineItem: SpineItem;
1187
+ pageIndex: number;
1188
+ cfi: string | undefined;
1189
+ options: {
1190
+ isAtEndOfChapter?: boolean;
1191
+ };
1192
+ } & {
1193
+ spineItemIndex: number;
1194
+ }, end: {
1195
+ spineItem: SpineItem;
1196
+ pageIndex: number;
1197
+ cfi: string | undefined;
1198
+ options: {
1199
+ isAtEndOfChapter?: boolean;
1200
+ };
1201
+ } & {
1202
+ spineItemIndex: number;
1203
+ }) => void);
1204
+ getPaginationInfo: () => PaginationInfo;
1205
+ paginationInfo$: Observable<PaginationInfo>;
1206
+ };
1207
+
1208
+ export declare const createReader: (options: {
1209
+ hooks?: Hook[] | undefined;
1210
+ } & Pick<Partial<InputSettings>, "pageTurnMode" | "pageTurnDirection" | "pageTurnAnimation" | "forceSinglePageMode" | "navigationSnapThreshold" | "numberOfAdjacentSpineItemToPreLoad"> & {
1211
+ theme?: Theme | undefined;
1212
+ } & SettingsInput & {
1213
+ layoutAutoResize?: false | "container" | undefined;
1214
+ } & {
1215
+ fontScale?: number | undefined;
1216
+ lineHeight?: number | "publisher" | undefined;
1217
+ fontWeight?: 300 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
1218
+ fontJustification?: "center" | "left" | "right" | "justify" | "publisher" | undefined;
1219
+ } & {
1220
+ loadingElementCreate?: ((options: {
1221
+ container: HTMLElement;
1222
+ item: {
1223
+ id: string;
1224
+ href: string;
1225
+ renditionLayout: "reflowable" | "pre-paginated";
1226
+ progressionWeight: number;
1227
+ pageSpreadLeft: true | undefined;
1228
+ pageSpreadRight: true | undefined;
1229
+ mediaType?: string | undefined;
1230
+ };
1231
+ }) => HTMLElement) | undefined;
1232
+ }) => Omit<Omit<Omit<Omit<ReaderInternal & {
1233
+ progression: {
1234
+ getPercentageEstimate: (context: Context_2, currentSpineIndex: number, numberOfPages: number, pageIndex: number, currentPosition: {
1235
+ x: number;
1236
+ y: number;
1237
+ }, currentItem: {
1238
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1239
+ blankPagePosition: "after" | "before" | "none";
1240
+ minimumWidth: number;
1241
+ spreadPosition: "none" | "left" | "right";
1242
+ }) => {
1243
+ width: number;
1244
+ height: number;
1245
+ };
1246
+ item: {
1247
+ id: string;
1248
+ href: string;
1249
+ renditionLayout: "reflowable" | "pre-paginated";
1250
+ progressionWeight: number;
1251
+ pageSpreadLeft: true | undefined;
1252
+ pageSpreadRight: true | undefined;
1253
+ mediaType?: string | undefined;
1254
+ };
1255
+ load: () => void;
1256
+ adjustPositionOfElement: ({ right, left, top }: {
1257
+ right?: number | undefined;
1258
+ left?: number | undefined;
1259
+ top?: number | undefined;
1260
+ }) => void;
1261
+ getElementDimensions: () => {
1262
+ width: number;
1263
+ height: number;
1264
+ };
1265
+ getHtmlFromResource: (response: Response) => Promise<string>;
1266
+ getResource: () => Promise<Response>;
1267
+ translateFramePositionIntoPage: (position: {
1268
+ clientX: number;
1269
+ clientY: number;
1270
+ }) => {
1271
+ clientX: number;
1272
+ clientY: number;
1273
+ };
1274
+ setLayoutDirty: () => void;
1275
+ injectStyle: (cssText: string) => void;
1276
+ loadContent: () => void;
1277
+ unloadContent: () => void;
1278
+ spineItemFrame: {
1279
+ getIsLoaded: () => boolean;
1280
+ getIsReady: () => boolean;
1281
+ getViewportDimensions: () => {
1282
+ width: number;
1283
+ height: number;
1284
+ } | undefined;
1285
+ getFrameElement: () => HTMLIFrameElement | undefined;
1286
+ getHtmlFromResource: (response: Response) => Promise<string>;
1287
+ load: () => void;
1288
+ unload: () => void;
1289
+ staticLayout: (size: {
1290
+ width: number;
1291
+ height: number;
1292
+ }) => void;
1293
+ getManipulableFrame: () => {
1294
+ frame: HTMLIFrameElement;
1295
+ removeStyle: (id: string) => void;
1296
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1297
+ } | undefined;
1298
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1299
+ isUsingVerticalWriting: () => boolean;
1300
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
1301
+ destroy: () => void;
1302
+ $: {
1303
+ unload$: Observable<void>;
1304
+ unloaded$: Observable<void>;
1305
+ loaded$: Observable<HTMLIFrameElement>;
1306
+ ready$: Observable<FontFaceSet | undefined>;
1307
+ isReady$: Observable<boolean>;
1308
+ contentLayoutChange$: Observable<{
1309
+ isFirstLayout: boolean;
1310
+ } | {
1311
+ isFirstLayout: boolean;
1312
+ }>;
1313
+ };
1314
+ };
1315
+ element: HTMLElement;
1316
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
1317
+ getViewPortInformation: () => {
1318
+ computedScale: number;
1319
+ computedWidthScale: number;
1320
+ viewportDimensions: {
1321
+ width: number;
1322
+ height: number;
1323
+ };
1324
+ } | undefined;
1325
+ isImageType: () => boolean;
1326
+ isReady: () => boolean;
1327
+ destroy: () => void;
1328
+ isUsingVerticalWriting: () => boolean | undefined;
1329
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1330
+ manipulateSpineItem: (cb: (options: {
1331
+ container: HTMLElement;
1332
+ item: {
1333
+ id: string;
1334
+ href: string;
1335
+ renditionLayout: "reflowable" | "pre-paginated";
1336
+ progressionWeight: number;
1337
+ pageSpreadLeft: true | undefined;
1338
+ pageSpreadRight: true | undefined;
1339
+ mediaType?: string | undefined;
1340
+ };
1341
+ overlayElement: HTMLDivElement;
1342
+ } & ({
1343
+ frame: HTMLIFrameElement;
1344
+ removeStyle: (id: string) => void;
1345
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1346
+ } | {
1347
+ frame: undefined;
1348
+ removeStyle: (id: string) => void;
1349
+ addStyle: (id: string, style: string) => void;
1350
+ })) => boolean) => boolean;
1351
+ executeOnLayoutBeforeMeasurementHook: (options: {
1352
+ minimumWidth: number;
1353
+ }) => void;
1354
+ selectionTracker: {
1355
+ track: (frameToTrack: HTMLIFrameElement) => void;
1356
+ destroy: () => void;
1357
+ isSelecting: () => boolean;
1358
+ getSelection: () => Selection | undefined;
1359
+ $: Observable<{
1360
+ event: "selectionchange";
1361
+ data: Selection | null;
1362
+ } | {
1363
+ event: "selectstart";
1364
+ data: Selection | null;
1365
+ } | {
1366
+ event: "selectend";
1367
+ data: Selection | null;
1368
+ }>;
1369
+ };
1370
+ fingerTracker: {
1371
+ track: (frame: HTMLIFrameElement) => void;
1372
+ getFingerPositionInIframe(): {
1373
+ x: number | undefined;
1374
+ y: number | undefined;
1375
+ } | undefined;
1376
+ destroy: () => void;
1377
+ $: Observable<{
1378
+ event: "fingermove";
1379
+ data: {
1380
+ x: number;
1381
+ y: number;
1382
+ };
1383
+ } | {
1384
+ event: "fingerout";
1385
+ data: undefined;
1386
+ }>;
1387
+ };
1388
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
1389
+ columnHeight: number;
1390
+ columnWidth: number;
1391
+ width: number;
1392
+ };
1393
+ getDimensionsForPaginatedContent: () => {
1394
+ columnHeight: number;
1395
+ columnWidth: number;
1396
+ };
1397
+ $: {
1398
+ contentLayout$: Observable<{
1399
+ isFirstLayout: boolean;
1400
+ isReady: boolean;
1401
+ }>;
1402
+ loaded$: Observable<HTMLIFrameElement>;
1403
+ isReady$: Observable<boolean>;
1404
+ };
1405
+ }) => number;
1406
+ getScrollPercentageWithinItem: (context: Context_2, currentPosition: {
1407
+ x: number;
1408
+ y: number;
1409
+ }, currentItem: {
1410
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1411
+ blankPagePosition: "after" | "before" | "none";
1412
+ minimumWidth: number;
1413
+ spreadPosition: "none" | "left" | "right";
1414
+ }) => {
1415
+ width: number;
1416
+ height: number;
1417
+ };
1418
+ item: {
1419
+ id: string;
1420
+ href: string;
1421
+ renditionLayout: "reflowable" | "pre-paginated";
1422
+ progressionWeight: number;
1423
+ pageSpreadLeft: true | undefined;
1424
+ pageSpreadRight: true | undefined;
1425
+ mediaType?: string | undefined;
1426
+ };
1427
+ load: () => void;
1428
+ adjustPositionOfElement: ({ right, left, top }: {
1429
+ right?: number | undefined;
1430
+ left?: number | undefined;
1431
+ top?: number | undefined;
1432
+ }) => void;
1433
+ getElementDimensions: () => {
1434
+ width: number;
1435
+ height: number;
1436
+ };
1437
+ getHtmlFromResource: (response: Response) => Promise<string>;
1438
+ getResource: () => Promise<Response>;
1439
+ translateFramePositionIntoPage: (position: {
1440
+ clientX: number;
1441
+ clientY: number;
1442
+ }) => {
1443
+ clientX: number;
1444
+ clientY: number;
1445
+ };
1446
+ setLayoutDirty: () => void;
1447
+ injectStyle: (cssText: string) => void;
1448
+ loadContent: () => void;
1449
+ unloadContent: () => void;
1450
+ spineItemFrame: {
1451
+ getIsLoaded: () => boolean;
1452
+ getIsReady: () => boolean;
1453
+ getViewportDimensions: () => {
1454
+ width: number;
1455
+ height: number;
1456
+ } | undefined;
1457
+ getFrameElement: () => HTMLIFrameElement | undefined;
1458
+ getHtmlFromResource: (response: Response) => Promise<string>;
1459
+ load: () => void;
1460
+ unload: () => void;
1461
+ staticLayout: (size: {
1462
+ width: number;
1463
+ height: number;
1464
+ }) => void;
1465
+ getManipulableFrame: () => {
1466
+ frame: HTMLIFrameElement;
1467
+ removeStyle: (id: string) => void;
1468
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1469
+ } | undefined;
1470
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1471
+ isUsingVerticalWriting: () => boolean;
1472
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
1473
+ destroy: () => void;
1474
+ $: {
1475
+ unload$: Observable<void>;
1476
+ unloaded$: Observable<void>;
1477
+ loaded$: Observable<HTMLIFrameElement>;
1478
+ ready$: Observable<FontFaceSet | undefined>;
1479
+ isReady$: Observable<boolean>;
1480
+ contentLayoutChange$: Observable<{
1481
+ isFirstLayout: boolean;
1482
+ } | {
1483
+ isFirstLayout: boolean;
1484
+ }>;
1485
+ };
1486
+ };
1487
+ element: HTMLElement;
1488
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
1489
+ getViewPortInformation: () => {
1490
+ computedScale: number;
1491
+ computedWidthScale: number;
1492
+ viewportDimensions: {
1493
+ width: number;
1494
+ height: number;
1495
+ };
1496
+ } | undefined;
1497
+ isImageType: () => boolean;
1498
+ isReady: () => boolean;
1499
+ destroy: () => void;
1500
+ isUsingVerticalWriting: () => boolean | undefined;
1501
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1502
+ manipulateSpineItem: (cb: (options: {
1503
+ container: HTMLElement;
1504
+ item: {
1505
+ id: string;
1506
+ href: string;
1507
+ renditionLayout: "reflowable" | "pre-paginated";
1508
+ progressionWeight: number;
1509
+ pageSpreadLeft: true | undefined;
1510
+ pageSpreadRight: true | undefined;
1511
+ mediaType?: string | undefined;
1512
+ };
1513
+ overlayElement: HTMLDivElement;
1514
+ } & ({
1515
+ frame: HTMLIFrameElement;
1516
+ removeStyle: (id: string) => void;
1517
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1518
+ } | {
1519
+ frame: undefined;
1520
+ removeStyle: (id: string) => void;
1521
+ addStyle: (id: string, style: string) => void;
1522
+ })) => boolean) => boolean;
1523
+ executeOnLayoutBeforeMeasurementHook: (options: {
1524
+ minimumWidth: number;
1525
+ }) => void;
1526
+ selectionTracker: {
1527
+ track: (frameToTrack: HTMLIFrameElement) => void;
1528
+ destroy: () => void;
1529
+ isSelecting: () => boolean;
1530
+ getSelection: () => Selection | undefined;
1531
+ $: Observable<{
1532
+ event: "selectionchange";
1533
+ data: Selection | null;
1534
+ } | {
1535
+ event: "selectstart";
1536
+ data: Selection | null;
1537
+ } | {
1538
+ event: "selectend";
1539
+ data: Selection | null;
1540
+ }>;
1541
+ };
1542
+ fingerTracker: {
1543
+ track: (frame: HTMLIFrameElement) => void;
1544
+ getFingerPositionInIframe(): {
1545
+ x: number | undefined;
1546
+ y: number | undefined;
1547
+ } | undefined;
1548
+ destroy: () => void;
1549
+ $: Observable<{
1550
+ event: "fingermove";
1551
+ data: {
1552
+ x: number;
1553
+ y: number;
1554
+ };
1555
+ } | {
1556
+ event: "fingerout";
1557
+ data: undefined;
1558
+ }>;
1559
+ };
1560
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
1561
+ columnHeight: number;
1562
+ columnWidth: number;
1563
+ width: number;
1564
+ };
1565
+ getDimensionsForPaginatedContent: () => {
1566
+ columnHeight: number;
1567
+ columnWidth: number;
1568
+ };
1569
+ $: {
1570
+ contentLayout$: Observable<{
1571
+ isFirstLayout: boolean;
1572
+ isReady: boolean;
1573
+ }>;
1574
+ loaded$: Observable<HTMLIFrameElement>;
1575
+ isReady$: Observable<boolean>;
1576
+ };
1577
+ }) => number;
1578
+ };
1579
+ }, "pagination"> & {
1580
+ pagination: Omit<{
1581
+ destroy: () => void;
1582
+ updateBeginAndEnd: ((begin: {
1583
+ spineItem: {
1584
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1585
+ blankPagePosition: "after" | "before" | "none";
1586
+ minimumWidth: number;
1587
+ spreadPosition: "none" | "left" | "right";
1588
+ }) => {
1589
+ width: number;
1590
+ height: number;
1591
+ };
1592
+ item: {
1593
+ id: string;
1594
+ href: string;
1595
+ renditionLayout: "reflowable" | "pre-paginated";
1596
+ progressionWeight: number;
1597
+ pageSpreadLeft: true | undefined;
1598
+ pageSpreadRight: true | undefined;
1599
+ mediaType?: string | undefined;
1600
+ };
1601
+ load: () => void;
1602
+ adjustPositionOfElement: ({ right, left, top }: {
1603
+ right?: number | undefined;
1604
+ left?: number | undefined;
1605
+ top?: number | undefined;
1606
+ }) => void;
1607
+ getElementDimensions: () => {
1608
+ width: number;
1609
+ height: number;
1610
+ };
1611
+ getHtmlFromResource: (response: Response) => Promise<string>;
1612
+ getResource: () => Promise<Response>;
1613
+ translateFramePositionIntoPage: (position: {
1614
+ clientX: number;
1615
+ clientY: number;
1616
+ }) => {
1617
+ clientX: number;
1618
+ clientY: number;
1619
+ };
1620
+ setLayoutDirty: () => void;
1621
+ injectStyle: (cssText: string) => void;
1622
+ loadContent: () => void;
1623
+ unloadContent: () => void;
1624
+ spineItemFrame: {
1625
+ getIsLoaded: () => boolean;
1626
+ getIsReady: () => boolean;
1627
+ getViewportDimensions: () => {
1628
+ width: number;
1629
+ height: number;
1630
+ } | undefined;
1631
+ getFrameElement: () => HTMLIFrameElement | undefined;
1632
+ getHtmlFromResource: (response: Response) => Promise<string>;
1633
+ load: () => void;
1634
+ unload: () => void;
1635
+ staticLayout: (size: {
1636
+ width: number;
1637
+ height: number;
1638
+ }) => void;
1639
+ getManipulableFrame: () => {
1640
+ frame: HTMLIFrameElement;
1641
+ removeStyle: (id: string) => void;
1642
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1643
+ } | undefined;
1644
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1645
+ isUsingVerticalWriting: () => boolean;
1646
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
1647
+ destroy: () => void;
1648
+ $: {
1649
+ unload$: Observable<void>;
1650
+ unloaded$: Observable<void>;
1651
+ loaded$: Observable<HTMLIFrameElement>;
1652
+ ready$: Observable<FontFaceSet | undefined>;
1653
+ isReady$: Observable<boolean>;
1654
+ contentLayoutChange$: Observable<{
1655
+ isFirstLayout: boolean;
1656
+ } | {
1657
+ isFirstLayout: boolean;
1658
+ }>;
1659
+ };
1660
+ };
1661
+ element: HTMLElement;
1662
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
1663
+ getViewPortInformation: () => {
1664
+ computedScale: number;
1665
+ computedWidthScale: number;
1666
+ viewportDimensions: {
1667
+ width: number;
1668
+ height: number;
1669
+ };
1670
+ } | undefined;
1671
+ isImageType: () => boolean;
1672
+ isReady: () => boolean;
1673
+ destroy: () => void;
1674
+ isUsingVerticalWriting: () => boolean | undefined;
1675
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1676
+ manipulateSpineItem: (cb: (options: {
1677
+ container: HTMLElement;
1678
+ item: {
1679
+ id: string;
1680
+ href: string;
1681
+ renditionLayout: "reflowable" | "pre-paginated";
1682
+ progressionWeight: number;
1683
+ pageSpreadLeft: true | undefined;
1684
+ pageSpreadRight: true | undefined;
1685
+ mediaType?: string | undefined;
1686
+ };
1687
+ overlayElement: HTMLDivElement;
1688
+ } & ({
1689
+ frame: HTMLIFrameElement;
1690
+ removeStyle: (id: string) => void;
1691
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1692
+ } | {
1693
+ frame: undefined;
1694
+ removeStyle: (id: string) => void;
1695
+ addStyle: (id: string, style: string) => void;
1696
+ })) => boolean) => boolean;
1697
+ executeOnLayoutBeforeMeasurementHook: (options: {
1698
+ minimumWidth: number;
1699
+ }) => void;
1700
+ selectionTracker: {
1701
+ track: (frameToTrack: HTMLIFrameElement) => void;
1702
+ destroy: () => void;
1703
+ isSelecting: () => boolean;
1704
+ getSelection: () => Selection | undefined;
1705
+ $: Observable<{
1706
+ event: "selectionchange";
1707
+ data: Selection | null;
1708
+ } | {
1709
+ event: "selectstart";
1710
+ data: Selection | null;
1711
+ } | {
1712
+ event: "selectend";
1713
+ data: Selection | null;
1714
+ }>;
1715
+ };
1716
+ fingerTracker: {
1717
+ track: (frame: HTMLIFrameElement) => void;
1718
+ getFingerPositionInIframe(): {
1719
+ x: number | undefined;
1720
+ y: number | undefined;
1721
+ } | undefined;
1722
+ destroy: () => void;
1723
+ $: Observable<{
1724
+ event: "fingermove";
1725
+ data: {
1726
+ x: number;
1727
+ y: number;
1728
+ };
1729
+ } | {
1730
+ event: "fingerout";
1731
+ data: undefined;
1732
+ }>;
1733
+ };
1734
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
1735
+ columnHeight: number;
1736
+ columnWidth: number;
1737
+ width: number;
1738
+ };
1739
+ getDimensionsForPaginatedContent: () => {
1740
+ columnHeight: number;
1741
+ columnWidth: number;
1742
+ };
1743
+ $: {
1744
+ contentLayout$: Observable<{
1745
+ isFirstLayout: boolean;
1746
+ isReady: boolean;
1747
+ }>;
1748
+ loaded$: Observable<HTMLIFrameElement>;
1749
+ isReady$: Observable<boolean>;
1750
+ };
1751
+ };
1752
+ pageIndex: number;
1753
+ cfi: string | undefined;
1754
+ options: {
1755
+ isAtEndOfChapter?: boolean | undefined;
1756
+ };
1757
+ } & {
1758
+ spineItemIndex: number;
1759
+ }, end: {
1760
+ spineItem: {
1761
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1762
+ blankPagePosition: "after" | "before" | "none";
1763
+ minimumWidth: number;
1764
+ spreadPosition: "none" | "left" | "right";
1765
+ }) => {
1766
+ width: number;
1767
+ height: number;
1768
+ };
1769
+ item: {
1770
+ id: string;
1771
+ href: string;
1772
+ renditionLayout: "reflowable" | "pre-paginated";
1773
+ progressionWeight: number;
1774
+ pageSpreadLeft: true | undefined;
1775
+ pageSpreadRight: true | undefined;
1776
+ mediaType?: string | undefined;
1777
+ };
1778
+ load: () => void;
1779
+ adjustPositionOfElement: ({ right, left, top }: {
1780
+ right?: number | undefined;
1781
+ left?: number | undefined;
1782
+ top?: number | undefined;
1783
+ }) => void;
1784
+ getElementDimensions: () => {
1785
+ width: number;
1786
+ height: number;
1787
+ };
1788
+ getHtmlFromResource: (response: Response) => Promise<string>;
1789
+ getResource: () => Promise<Response>;
1790
+ translateFramePositionIntoPage: (position: {
1791
+ clientX: number;
1792
+ clientY: number;
1793
+ }) => {
1794
+ clientX: number;
1795
+ clientY: number;
1796
+ };
1797
+ setLayoutDirty: () => void;
1798
+ injectStyle: (cssText: string) => void;
1799
+ loadContent: () => void;
1800
+ unloadContent: () => void;
1801
+ spineItemFrame: {
1802
+ getIsLoaded: () => boolean;
1803
+ getIsReady: () => boolean;
1804
+ getViewportDimensions: () => {
1805
+ width: number;
1806
+ height: number;
1807
+ } | undefined;
1808
+ getFrameElement: () => HTMLIFrameElement | undefined;
1809
+ getHtmlFromResource: (response: Response) => Promise<string>;
1810
+ load: () => void;
1811
+ unload: () => void;
1812
+ staticLayout: (size: {
1813
+ width: number;
1814
+ height: number;
1815
+ }) => void;
1816
+ getManipulableFrame: () => {
1817
+ frame: HTMLIFrameElement;
1818
+ removeStyle: (id: string) => void;
1819
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1820
+ } | undefined;
1821
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1822
+ isUsingVerticalWriting: () => boolean;
1823
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
1824
+ destroy: () => void;
1825
+ $: {
1826
+ unload$: Observable<void>;
1827
+ unloaded$: Observable<void>;
1828
+ loaded$: Observable<HTMLIFrameElement>;
1829
+ ready$: Observable<FontFaceSet | undefined>;
1830
+ isReady$: Observable<boolean>;
1831
+ contentLayoutChange$: Observable<{
1832
+ isFirstLayout: boolean;
1833
+ } | {
1834
+ isFirstLayout: boolean;
1835
+ }>;
1836
+ };
1837
+ };
1838
+ element: HTMLElement;
1839
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
1840
+ getViewPortInformation: () => {
1841
+ computedScale: number;
1842
+ computedWidthScale: number;
1843
+ viewportDimensions: {
1844
+ width: number;
1845
+ height: number;
1846
+ };
1847
+ } | undefined;
1848
+ isImageType: () => boolean;
1849
+ isReady: () => boolean;
1850
+ destroy: () => void;
1851
+ isUsingVerticalWriting: () => boolean | undefined;
1852
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1853
+ manipulateSpineItem: (cb: (options: {
1854
+ container: HTMLElement;
1855
+ item: {
1856
+ id: string;
1857
+ href: string;
1858
+ renditionLayout: "reflowable" | "pre-paginated";
1859
+ progressionWeight: number;
1860
+ pageSpreadLeft: true | undefined;
1861
+ pageSpreadRight: true | undefined;
1862
+ mediaType?: string | undefined;
1863
+ };
1864
+ overlayElement: HTMLDivElement;
1865
+ } & ({
1866
+ frame: HTMLIFrameElement;
1867
+ removeStyle: (id: string) => void;
1868
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1869
+ } | {
1870
+ frame: undefined;
1871
+ removeStyle: (id: string) => void;
1872
+ addStyle: (id: string, style: string) => void;
1873
+ })) => boolean) => boolean;
1874
+ executeOnLayoutBeforeMeasurementHook: (options: {
1875
+ minimumWidth: number;
1876
+ }) => void;
1877
+ selectionTracker: {
1878
+ track: (frameToTrack: HTMLIFrameElement) => void;
1879
+ destroy: () => void;
1880
+ isSelecting: () => boolean;
1881
+ getSelection: () => Selection | undefined;
1882
+ $: Observable<{
1883
+ event: "selectionchange";
1884
+ data: Selection | null;
1885
+ } | {
1886
+ event: "selectstart";
1887
+ data: Selection | null;
1888
+ } | {
1889
+ event: "selectend";
1890
+ data: Selection | null;
1891
+ }>;
1892
+ };
1893
+ fingerTracker: {
1894
+ track: (frame: HTMLIFrameElement) => void;
1895
+ getFingerPositionInIframe(): {
1896
+ x: number | undefined;
1897
+ y: number | undefined;
1898
+ } | undefined;
1899
+ destroy: () => void;
1900
+ $: Observable<{
1901
+ event: "fingermove";
1902
+ data: {
1903
+ x: number;
1904
+ y: number;
1905
+ };
1906
+ } | {
1907
+ event: "fingerout";
1908
+ data: undefined;
1909
+ }>;
1910
+ };
1911
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
1912
+ columnHeight: number;
1913
+ columnWidth: number;
1914
+ width: number;
1915
+ };
1916
+ getDimensionsForPaginatedContent: () => {
1917
+ columnHeight: number;
1918
+ columnWidth: number;
1919
+ };
1920
+ $: {
1921
+ contentLayout$: Observable<{
1922
+ isFirstLayout: boolean;
1923
+ isReady: boolean;
1924
+ }>;
1925
+ loaded$: Observable<HTMLIFrameElement>;
1926
+ isReady$: Observable<boolean>;
1927
+ };
1928
+ };
1929
+ pageIndex: number;
1930
+ cfi: string | undefined;
1931
+ options: {
1932
+ isAtEndOfChapter?: boolean | undefined;
1933
+ };
1934
+ } & {
1935
+ spineItemIndex: number;
1936
+ }) => void) | ((begin: {
1937
+ spineItem: {
1938
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1939
+ blankPagePosition: "after" | "before" | "none";
1940
+ minimumWidth: number;
1941
+ spreadPosition: "none" | "left" | "right";
1942
+ }) => {
1943
+ width: number;
1944
+ height: number;
1945
+ };
1946
+ item: {
1947
+ id: string;
1948
+ href: string;
1949
+ renditionLayout: "reflowable" | "pre-paginated";
1950
+ progressionWeight: number;
1951
+ pageSpreadLeft: true | undefined;
1952
+ pageSpreadRight: true | undefined;
1953
+ mediaType?: string | undefined;
1954
+ };
1955
+ load: () => void;
1956
+ adjustPositionOfElement: ({ right, left, top }: {
1957
+ right?: number | undefined;
1958
+ left?: number | undefined;
1959
+ top?: number | undefined;
1960
+ }) => void;
1961
+ getElementDimensions: () => {
1962
+ width: number;
1963
+ height: number;
1964
+ };
1965
+ getHtmlFromResource: (response: Response) => Promise<string>;
1966
+ getResource: () => Promise<Response>;
1967
+ translateFramePositionIntoPage: (position: {
1968
+ clientX: number;
1969
+ clientY: number;
1970
+ }) => {
1971
+ clientX: number;
1972
+ clientY: number;
1973
+ };
1974
+ setLayoutDirty: () => void;
1975
+ injectStyle: (cssText: string) => void;
1976
+ loadContent: () => void;
1977
+ unloadContent: () => void;
1978
+ spineItemFrame: {
1979
+ getIsLoaded: () => boolean;
1980
+ getIsReady: () => boolean;
1981
+ getViewportDimensions: () => {
1982
+ width: number;
1983
+ height: number;
1984
+ } | undefined;
1985
+ getFrameElement: () => HTMLIFrameElement | undefined;
1986
+ getHtmlFromResource: (response: Response) => Promise<string>;
1987
+ load: () => void;
1988
+ unload: () => void;
1989
+ staticLayout: (size: {
1990
+ width: number;
1991
+ height: number;
1992
+ }) => void;
1993
+ getManipulableFrame: () => {
1994
+ frame: HTMLIFrameElement;
1995
+ removeStyle: (id: string) => void;
1996
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
1997
+ } | undefined;
1998
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
1999
+ isUsingVerticalWriting: () => boolean;
2000
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
2001
+ destroy: () => void;
2002
+ $: {
2003
+ unload$: Observable<void>;
2004
+ unloaded$: Observable<void>;
2005
+ loaded$: Observable<HTMLIFrameElement>;
2006
+ ready$: Observable<FontFaceSet | undefined>;
2007
+ isReady$: Observable<boolean>;
2008
+ contentLayoutChange$: Observable<{
2009
+ isFirstLayout: boolean;
2010
+ } | {
2011
+ isFirstLayout: boolean;
2012
+ }>;
2013
+ };
2014
+ };
2015
+ element: HTMLElement;
2016
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
2017
+ getViewPortInformation: () => {
2018
+ computedScale: number;
2019
+ computedWidthScale: number;
2020
+ viewportDimensions: {
2021
+ width: number;
2022
+ height: number;
2023
+ };
2024
+ } | undefined;
2025
+ isImageType: () => boolean;
2026
+ isReady: () => boolean;
2027
+ destroy: () => void;
2028
+ isUsingVerticalWriting: () => boolean | undefined;
2029
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2030
+ manipulateSpineItem: (cb: (options: {
2031
+ container: HTMLElement;
2032
+ item: {
2033
+ id: string;
2034
+ href: string;
2035
+ renditionLayout: "reflowable" | "pre-paginated";
2036
+ progressionWeight: number;
2037
+ pageSpreadLeft: true | undefined;
2038
+ pageSpreadRight: true | undefined;
2039
+ mediaType?: string | undefined;
2040
+ };
2041
+ overlayElement: HTMLDivElement;
2042
+ } & ({
2043
+ frame: HTMLIFrameElement;
2044
+ removeStyle: (id: string) => void;
2045
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2046
+ } | {
2047
+ frame: undefined;
2048
+ removeStyle: (id: string) => void;
2049
+ addStyle: (id: string, style: string) => void;
2050
+ })) => boolean) => boolean;
2051
+ executeOnLayoutBeforeMeasurementHook: (options: {
2052
+ minimumWidth: number;
2053
+ }) => void;
2054
+ selectionTracker: {
2055
+ track: (frameToTrack: HTMLIFrameElement) => void;
2056
+ destroy: () => void;
2057
+ isSelecting: () => boolean;
2058
+ getSelection: () => Selection | undefined;
2059
+ $: Observable<{
2060
+ event: "selectionchange";
2061
+ data: Selection | null;
2062
+ } | {
2063
+ event: "selectstart";
2064
+ data: Selection | null;
2065
+ } | {
2066
+ event: "selectend";
2067
+ data: Selection | null;
2068
+ }>;
2069
+ };
2070
+ fingerTracker: {
2071
+ track: (frame: HTMLIFrameElement) => void;
2072
+ getFingerPositionInIframe(): {
2073
+ x: number | undefined;
2074
+ y: number | undefined;
2075
+ } | undefined;
2076
+ destroy: () => void;
2077
+ $: Observable<{
2078
+ event: "fingermove";
2079
+ data: {
2080
+ x: number;
2081
+ y: number;
2082
+ };
2083
+ } | {
2084
+ event: "fingerout";
2085
+ data: undefined;
2086
+ }>;
2087
+ };
2088
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
2089
+ columnHeight: number;
2090
+ columnWidth: number;
2091
+ width: number;
2092
+ };
2093
+ getDimensionsForPaginatedContent: () => {
2094
+ columnHeight: number;
2095
+ columnWidth: number;
2096
+ };
2097
+ $: {
2098
+ contentLayout$: Observable<{
2099
+ isFirstLayout: boolean;
2100
+ isReady: boolean;
2101
+ }>;
2102
+ loaded$: Observable<HTMLIFrameElement>;
2103
+ isReady$: Observable<boolean>;
2104
+ };
2105
+ };
2106
+ pageIndex: number;
2107
+ cfi: string | undefined;
2108
+ options: {
2109
+ isAtEndOfChapter?: boolean | undefined;
2110
+ };
2111
+ } & {
2112
+ spineItemIndex: number;
2113
+ }, end: {
2114
+ spineItem: {
2115
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2116
+ blankPagePosition: "after" | "before" | "none";
2117
+ minimumWidth: number;
2118
+ spreadPosition: "none" | "left" | "right";
2119
+ }) => {
2120
+ width: number;
2121
+ height: number;
2122
+ };
2123
+ item: {
2124
+ id: string;
2125
+ href: string;
2126
+ renditionLayout: "reflowable" | "pre-paginated";
2127
+ progressionWeight: number;
2128
+ pageSpreadLeft: true | undefined;
2129
+ pageSpreadRight: true | undefined;
2130
+ mediaType?: string | undefined;
2131
+ };
2132
+ load: () => void;
2133
+ adjustPositionOfElement: ({ right, left, top }: {
2134
+ right?: number | undefined;
2135
+ left?: number | undefined;
2136
+ top?: number | undefined;
2137
+ }) => void;
2138
+ getElementDimensions: () => {
2139
+ width: number;
2140
+ height: number;
2141
+ };
2142
+ getHtmlFromResource: (response: Response) => Promise<string>;
2143
+ getResource: () => Promise<Response>;
2144
+ translateFramePositionIntoPage: (position: {
2145
+ clientX: number;
2146
+ clientY: number;
2147
+ }) => {
2148
+ clientX: number;
2149
+ clientY: number;
2150
+ };
2151
+ setLayoutDirty: () => void;
2152
+ injectStyle: (cssText: string) => void;
2153
+ loadContent: () => void;
2154
+ unloadContent: () => void;
2155
+ spineItemFrame: {
2156
+ getIsLoaded: () => boolean;
2157
+ getIsReady: () => boolean;
2158
+ getViewportDimensions: () => {
2159
+ width: number;
2160
+ height: number;
2161
+ } | undefined;
2162
+ getFrameElement: () => HTMLIFrameElement | undefined;
2163
+ getHtmlFromResource: (response: Response) => Promise<string>;
2164
+ load: () => void;
2165
+ unload: () => void;
2166
+ staticLayout: (size: {
2167
+ width: number;
2168
+ height: number;
2169
+ }) => void;
2170
+ getManipulableFrame: () => {
2171
+ frame: HTMLIFrameElement;
2172
+ removeStyle: (id: string) => void;
2173
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2174
+ } | undefined;
2175
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2176
+ isUsingVerticalWriting: () => boolean;
2177
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
2178
+ destroy: () => void;
2179
+ $: {
2180
+ unload$: Observable<void>;
2181
+ unloaded$: Observable<void>;
2182
+ loaded$: Observable<HTMLIFrameElement>;
2183
+ ready$: Observable<FontFaceSet | undefined>;
2184
+ isReady$: Observable<boolean>;
2185
+ contentLayoutChange$: Observable<{
2186
+ isFirstLayout: boolean;
2187
+ } | {
2188
+ isFirstLayout: boolean;
2189
+ }>;
2190
+ };
2191
+ };
2192
+ element: HTMLElement;
2193
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
2194
+ getViewPortInformation: () => {
2195
+ computedScale: number;
2196
+ computedWidthScale: number;
2197
+ viewportDimensions: {
2198
+ width: number;
2199
+ height: number;
2200
+ };
2201
+ } | undefined;
2202
+ isImageType: () => boolean;
2203
+ isReady: () => boolean;
2204
+ destroy: () => void;
2205
+ isUsingVerticalWriting: () => boolean | undefined;
2206
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2207
+ manipulateSpineItem: (cb: (options: {
2208
+ container: HTMLElement;
2209
+ item: {
2210
+ id: string;
2211
+ href: string;
2212
+ renditionLayout: "reflowable" | "pre-paginated";
2213
+ progressionWeight: number;
2214
+ pageSpreadLeft: true | undefined;
2215
+ pageSpreadRight: true | undefined;
2216
+ mediaType?: string | undefined;
2217
+ };
2218
+ overlayElement: HTMLDivElement;
2219
+ } & ({
2220
+ frame: HTMLIFrameElement;
2221
+ removeStyle: (id: string) => void;
2222
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2223
+ } | {
2224
+ frame: undefined;
2225
+ removeStyle: (id: string) => void;
2226
+ addStyle: (id: string, style: string) => void;
2227
+ })) => boolean) => boolean;
2228
+ executeOnLayoutBeforeMeasurementHook: (options: {
2229
+ minimumWidth: number;
2230
+ }) => void;
2231
+ selectionTracker: {
2232
+ track: (frameToTrack: HTMLIFrameElement) => void;
2233
+ destroy: () => void;
2234
+ isSelecting: () => boolean;
2235
+ getSelection: () => Selection | undefined;
2236
+ $: Observable<{
2237
+ event: "selectionchange";
2238
+ data: Selection | null;
2239
+ } | {
2240
+ event: "selectstart";
2241
+ data: Selection | null;
2242
+ } | {
2243
+ event: "selectend";
2244
+ data: Selection | null;
2245
+ }>;
2246
+ };
2247
+ fingerTracker: {
2248
+ track: (frame: HTMLIFrameElement) => void;
2249
+ getFingerPositionInIframe(): {
2250
+ x: number | undefined;
2251
+ y: number | undefined;
2252
+ } | undefined;
2253
+ destroy: () => void;
2254
+ $: Observable<{
2255
+ event: "fingermove";
2256
+ data: {
2257
+ x: number;
2258
+ y: number;
2259
+ };
2260
+ } | {
2261
+ event: "fingerout";
2262
+ data: undefined;
2263
+ }>;
2264
+ };
2265
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
2266
+ columnHeight: number;
2267
+ columnWidth: number;
2268
+ width: number;
2269
+ };
2270
+ getDimensionsForPaginatedContent: () => {
2271
+ columnHeight: number;
2272
+ columnWidth: number;
2273
+ };
2274
+ $: {
2275
+ contentLayout$: Observable<{
2276
+ isFirstLayout: boolean;
2277
+ isReady: boolean;
2278
+ }>;
2279
+ loaded$: Observable<HTMLIFrameElement>;
2280
+ isReady$: Observable<boolean>;
2281
+ };
2282
+ };
2283
+ pageIndex: number;
2284
+ cfi: string | undefined;
2285
+ options: {
2286
+ isAtEndOfChapter?: boolean | undefined;
2287
+ };
2288
+ } & {
2289
+ spineItemIndex: number;
2290
+ }) => void);
2291
+ getPaginationInfo: () => PaginationInfo;
2292
+ paginationInfo$: Observable<PaginationInfo>;
2293
+ }, "paginationInfo$"> & {
2294
+ paginationInfo$: Observable<PaginationInfo & {
2295
+ beginChapterInfo: {
2296
+ title: string;
2297
+ subChapter?: {
2298
+ title: string;
2299
+ subChapter?: {
2300
+ title: string;
2301
+ subChapter?: {
2302
+ title: string;
2303
+ path: string;
2304
+ } | undefined;
2305
+ path: string;
2306
+ } | undefined;
2307
+ path: string;
2308
+ } | undefined;
2309
+ path: string;
2310
+ } | undefined;
2311
+ beginSpineItemReadingDirection: "ltr" | "rtl" | undefined;
2312
+ beginAbsolutePageIndex: number | undefined;
2313
+ endChapterInfo: {
2314
+ title: string;
2315
+ subChapter?: {
2316
+ title: string;
2317
+ subChapter?: {
2318
+ title: string;
2319
+ subChapter?: {
2320
+ title: string;
2321
+ path: string;
2322
+ } | undefined;
2323
+ path: string;
2324
+ } | undefined;
2325
+ path: string;
2326
+ } | undefined;
2327
+ path: string;
2328
+ } | undefined;
2329
+ endSpineItemReadingDirection: "ltr" | "rtl" | undefined;
2330
+ endAbsolutePageIndex: number | undefined;
2331
+ percentageEstimateOfBook: number | undefined;
2332
+ numberOfTotalPages: number | undefined;
2333
+ isUsingSpread: boolean;
2334
+ }>;
2335
+ };
2336
+ } & {
2337
+ theme: {
2338
+ set: (theme: Theme) => void;
2339
+ get: () => Theme;
2340
+ $: {
2341
+ theme$: Observable<Theme>;
2342
+ };
2343
+ };
2344
+ } & {
2345
+ navigation: {
2346
+ goToNextSpineItem: () => void;
2347
+ goToPreviousSpineItem: () => void;
2348
+ goToLeftSpineItem: () => void;
2349
+ goToRightSpineItem: () => void;
2350
+ } & {
2351
+ state$: Observable<{
2352
+ canGoTopSpineItem: boolean;
2353
+ canGoBottomSpineItem: boolean;
2354
+ canGoLeftSpineItem: boolean;
2355
+ canGoRightSpineItem: boolean;
2356
+ }>;
2357
+ };
2358
+ } & Api, "settings"> & {
2359
+ settings: Omit<{
2360
+ settings$: Observable<InputSettings & {
2361
+ computedPageTurnMode: "controlled" | "scrollable";
2362
+ computedPageTurnDirection: "vertical" | "horizontal";
2363
+ computedPageTurnAnimation: "none" | "fade" | "slide";
2364
+ computedPageTurnAnimationDuration: number;
2365
+ computedSnapAnimationDuration: number;
2366
+ }>;
2367
+ setSettings: (data: Partial<InputSettings>) => void;
2368
+ getSettings: () => OutputSettings;
2369
+ }, "settings$" | "setSettings"> & {
2370
+ settings$: Observable<InputSettings & {
2371
+ computedPageTurnMode: "controlled" | "scrollable";
2372
+ computedPageTurnDirection: "vertical" | "horizontal";
2373
+ computedPageTurnAnimation: "none" | "fade" | "slide";
2374
+ computedPageTurnAnimationDuration: number;
2375
+ computedSnapAnimationDuration: number;
2376
+ } & Required<SettingsInput>>;
2377
+ setSettings: (settings: Partial<InputSettings> & SettingsInput) => void;
2378
+ };
2379
+ } & {
2380
+ utils: {
2381
+ isOrIsWithinValidLink: (target: EventTarget | null) => boolean;
2382
+ };
2383
+ } & {
2384
+ $: {
2385
+ links$: Observable<{
2386
+ event: "linkClicked";
2387
+ data: HTMLAnchorElement;
2388
+ isNavigable: boolean;
2389
+ }>;
2390
+ };
2391
+ }, "settings"> & {
2392
+ settings: Omit<Omit<{
2393
+ settings$: Observable<InputSettings & {
2394
+ computedPageTurnMode: "controlled" | "scrollable";
2395
+ computedPageTurnDirection: "vertical" | "horizontal";
2396
+ computedPageTurnAnimation: "none" | "fade" | "slide";
2397
+ computedPageTurnAnimationDuration: number;
2398
+ computedSnapAnimationDuration: number;
2399
+ }>;
2400
+ setSettings: (data: Partial<InputSettings>) => void;
2401
+ getSettings: () => OutputSettings;
2402
+ }, "settings$" | "setSettings"> & {
2403
+ settings$: Observable<InputSettings & {
2404
+ computedPageTurnMode: "controlled" | "scrollable";
2405
+ computedPageTurnDirection: "vertical" | "horizontal";
2406
+ computedPageTurnAnimation: "none" | "fade" | "slide";
2407
+ computedPageTurnAnimationDuration: number;
2408
+ computedSnapAnimationDuration: number;
2409
+ } & Required<SettingsInput>>;
2410
+ setSettings: (settings: Partial<InputSettings> & SettingsInput) => void;
2411
+ }, "settings$" | "setSettings"> & {
2412
+ settings$: Observable<InputSettings & {
2413
+ computedPageTurnMode: "controlled" | "scrollable";
2414
+ computedPageTurnDirection: "vertical" | "horizontal";
2415
+ computedPageTurnAnimation: "none" | "fade" | "slide";
2416
+ computedPageTurnAnimationDuration: number;
2417
+ computedSnapAnimationDuration: number;
2418
+ } & Required<SettingsInput> & Required<{
2419
+ fontScale?: number | undefined;
2420
+ lineHeight?: number | "publisher" | undefined;
2421
+ fontWeight?: 300 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
2422
+ fontJustification?: "center" | "left" | "right" | "justify" | "publisher" | undefined;
2423
+ }>>;
2424
+ setSettings: (settings: Partial<InputSettings> & SettingsInput & {
2425
+ fontScale?: number | undefined;
2426
+ lineHeight?: number | "publisher" | undefined;
2427
+ fontWeight?: 300 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
2428
+ fontJustification?: "center" | "left" | "right" | "justify" | "publisher" | undefined;
2429
+ }) => void;
2430
+ };
2431
+ } & {
2432
+ loading: {
2433
+ $: {
2434
+ items$: Observable<{
2435
+ [key: string]: HTMLElement;
2436
+ }>;
2437
+ };
2438
+ };
2439
+ }, "pagination"> & {
2440
+ pagination: Pick<Omit<{
2441
+ destroy: () => void;
2442
+ updateBeginAndEnd: ((begin: {
2443
+ spineItem: {
2444
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2445
+ blankPagePosition: "after" | "before" | "none";
2446
+ minimumWidth: number;
2447
+ spreadPosition: "none" | "left" | "right";
2448
+ }) => {
2449
+ width: number;
2450
+ height: number;
2451
+ };
2452
+ item: {
2453
+ id: string;
2454
+ href: string;
2455
+ renditionLayout: "reflowable" | "pre-paginated";
2456
+ progressionWeight: number;
2457
+ pageSpreadLeft: true | undefined;
2458
+ pageSpreadRight: true | undefined;
2459
+ mediaType?: string | undefined;
2460
+ };
2461
+ load: () => void;
2462
+ adjustPositionOfElement: ({ right, left, top }: {
2463
+ right?: number | undefined;
2464
+ left?: number | undefined;
2465
+ top?: number | undefined;
2466
+ }) => void;
2467
+ getElementDimensions: () => {
2468
+ width: number;
2469
+ height: number;
2470
+ };
2471
+ getHtmlFromResource: (response: Response) => Promise<string>;
2472
+ getResource: () => Promise<Response>;
2473
+ translateFramePositionIntoPage: (position: {
2474
+ clientX: number;
2475
+ clientY: number;
2476
+ }) => {
2477
+ clientX: number;
2478
+ clientY: number;
2479
+ };
2480
+ setLayoutDirty: () => void;
2481
+ injectStyle: (cssText: string) => void;
2482
+ loadContent: () => void;
2483
+ unloadContent: () => void;
2484
+ spineItemFrame: {
2485
+ getIsLoaded: () => boolean;
2486
+ getIsReady: () => boolean;
2487
+ getViewportDimensions: () => {
2488
+ width: number;
2489
+ height: number;
2490
+ } | undefined;
2491
+ getFrameElement: () => HTMLIFrameElement | undefined;
2492
+ getHtmlFromResource: (response: Response) => Promise<string>;
2493
+ load: () => void;
2494
+ unload: () => void;
2495
+ staticLayout: (size: {
2496
+ width: number;
2497
+ height: number;
2498
+ }) => void;
2499
+ getManipulableFrame: () => {
2500
+ frame: HTMLIFrameElement;
2501
+ removeStyle: (id: string) => void;
2502
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2503
+ } | undefined;
2504
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2505
+ isUsingVerticalWriting: () => boolean;
2506
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
2507
+ destroy: () => void;
2508
+ $: {
2509
+ unload$: Observable<void>;
2510
+ unloaded$: Observable<void>;
2511
+ loaded$: Observable<HTMLIFrameElement>;
2512
+ ready$: Observable<FontFaceSet | undefined>;
2513
+ isReady$: Observable<boolean>;
2514
+ contentLayoutChange$: Observable<{
2515
+ isFirstLayout: boolean;
2516
+ } | {
2517
+ isFirstLayout: boolean;
2518
+ }>;
2519
+ };
2520
+ };
2521
+ element: HTMLElement;
2522
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
2523
+ getViewPortInformation: () => {
2524
+ computedScale: number;
2525
+ computedWidthScale: number;
2526
+ viewportDimensions: {
2527
+ width: number;
2528
+ height: number;
2529
+ };
2530
+ } | undefined;
2531
+ isImageType: () => boolean;
2532
+ isReady: () => boolean;
2533
+ destroy: () => void;
2534
+ isUsingVerticalWriting: () => boolean | undefined;
2535
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2536
+ manipulateSpineItem: (cb: (options: {
2537
+ container: HTMLElement;
2538
+ item: {
2539
+ id: string;
2540
+ href: string;
2541
+ renditionLayout: "reflowable" | "pre-paginated";
2542
+ progressionWeight: number;
2543
+ pageSpreadLeft: true | undefined;
2544
+ pageSpreadRight: true | undefined;
2545
+ mediaType?: string | undefined;
2546
+ };
2547
+ overlayElement: HTMLDivElement;
2548
+ } & ({
2549
+ frame: HTMLIFrameElement;
2550
+ removeStyle: (id: string) => void;
2551
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2552
+ } | {
2553
+ frame: undefined;
2554
+ removeStyle: (id: string) => void;
2555
+ addStyle: (id: string, style: string) => void;
2556
+ })) => boolean) => boolean;
2557
+ executeOnLayoutBeforeMeasurementHook: (options: {
2558
+ minimumWidth: number;
2559
+ }) => void;
2560
+ selectionTracker: {
2561
+ track: (frameToTrack: HTMLIFrameElement) => void;
2562
+ destroy: () => void;
2563
+ isSelecting: () => boolean;
2564
+ getSelection: () => Selection | undefined;
2565
+ $: Observable<{
2566
+ event: "selectionchange";
2567
+ data: Selection | null;
2568
+ } | {
2569
+ event: "selectstart";
2570
+ data: Selection | null;
2571
+ } | {
2572
+ event: "selectend";
2573
+ data: Selection | null;
2574
+ }>;
2575
+ };
2576
+ fingerTracker: {
2577
+ track: (frame: HTMLIFrameElement) => void;
2578
+ getFingerPositionInIframe(): {
2579
+ x: number | undefined;
2580
+ y: number | undefined;
2581
+ } | undefined;
2582
+ destroy: () => void;
2583
+ $: Observable<{
2584
+ event: "fingermove";
2585
+ data: {
2586
+ x: number;
2587
+ y: number;
2588
+ };
2589
+ } | {
2590
+ event: "fingerout";
2591
+ data: undefined;
2592
+ }>;
2593
+ };
2594
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
2595
+ columnHeight: number;
2596
+ columnWidth: number;
2597
+ width: number;
2598
+ };
2599
+ getDimensionsForPaginatedContent: () => {
2600
+ columnHeight: number;
2601
+ columnWidth: number;
2602
+ };
2603
+ $: {
2604
+ contentLayout$: Observable<{
2605
+ isFirstLayout: boolean;
2606
+ isReady: boolean;
2607
+ }>;
2608
+ loaded$: Observable<HTMLIFrameElement>;
2609
+ isReady$: Observable<boolean>;
2610
+ };
2611
+ };
2612
+ pageIndex: number;
2613
+ cfi: string | undefined;
2614
+ options: {
2615
+ isAtEndOfChapter?: boolean | undefined;
2616
+ };
2617
+ } & {
2618
+ spineItemIndex: number;
2619
+ }, end: {
2620
+ spineItem: {
2621
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2622
+ blankPagePosition: "after" | "before" | "none";
2623
+ minimumWidth: number;
2624
+ spreadPosition: "none" | "left" | "right";
2625
+ }) => {
2626
+ width: number;
2627
+ height: number;
2628
+ };
2629
+ item: {
2630
+ id: string;
2631
+ href: string;
2632
+ renditionLayout: "reflowable" | "pre-paginated";
2633
+ progressionWeight: number;
2634
+ pageSpreadLeft: true | undefined;
2635
+ pageSpreadRight: true | undefined;
2636
+ mediaType?: string | undefined;
2637
+ };
2638
+ load: () => void;
2639
+ adjustPositionOfElement: ({ right, left, top }: {
2640
+ right?: number | undefined;
2641
+ left?: number | undefined;
2642
+ top?: number | undefined;
2643
+ }) => void;
2644
+ getElementDimensions: () => {
2645
+ width: number;
2646
+ height: number;
2647
+ };
2648
+ getHtmlFromResource: (response: Response) => Promise<string>;
2649
+ getResource: () => Promise<Response>;
2650
+ translateFramePositionIntoPage: (position: {
2651
+ clientX: number;
2652
+ clientY: number;
2653
+ }) => {
2654
+ clientX: number;
2655
+ clientY: number;
2656
+ };
2657
+ setLayoutDirty: () => void;
2658
+ injectStyle: (cssText: string) => void;
2659
+ loadContent: () => void;
2660
+ unloadContent: () => void;
2661
+ spineItemFrame: {
2662
+ getIsLoaded: () => boolean;
2663
+ getIsReady: () => boolean;
2664
+ getViewportDimensions: () => {
2665
+ width: number;
2666
+ height: number;
2667
+ } | undefined;
2668
+ getFrameElement: () => HTMLIFrameElement | undefined;
2669
+ getHtmlFromResource: (response: Response) => Promise<string>;
2670
+ load: () => void;
2671
+ unload: () => void;
2672
+ staticLayout: (size: {
2673
+ width: number;
2674
+ height: number;
2675
+ }) => void;
2676
+ getManipulableFrame: () => {
2677
+ frame: HTMLIFrameElement;
2678
+ removeStyle: (id: string) => void;
2679
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2680
+ } | undefined;
2681
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2682
+ isUsingVerticalWriting: () => boolean;
2683
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
2684
+ destroy: () => void;
2685
+ $: {
2686
+ unload$: Observable<void>;
2687
+ unloaded$: Observable<void>;
2688
+ loaded$: Observable<HTMLIFrameElement>;
2689
+ ready$: Observable<FontFaceSet | undefined>;
2690
+ isReady$: Observable<boolean>;
2691
+ contentLayoutChange$: Observable<{
2692
+ isFirstLayout: boolean;
2693
+ } | {
2694
+ isFirstLayout: boolean;
2695
+ }>;
2696
+ };
2697
+ };
2698
+ element: HTMLElement;
2699
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
2700
+ getViewPortInformation: () => {
2701
+ computedScale: number;
2702
+ computedWidthScale: number;
2703
+ viewportDimensions: {
2704
+ width: number;
2705
+ height: number;
2706
+ };
2707
+ } | undefined;
2708
+ isImageType: () => boolean;
2709
+ isReady: () => boolean;
2710
+ destroy: () => void;
2711
+ isUsingVerticalWriting: () => boolean | undefined;
2712
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2713
+ manipulateSpineItem: (cb: (options: {
2714
+ container: HTMLElement;
2715
+ item: {
2716
+ id: string;
2717
+ href: string;
2718
+ renditionLayout: "reflowable" | "pre-paginated";
2719
+ progressionWeight: number;
2720
+ pageSpreadLeft: true | undefined;
2721
+ pageSpreadRight: true | undefined;
2722
+ mediaType?: string | undefined;
2723
+ };
2724
+ overlayElement: HTMLDivElement;
2725
+ } & ({
2726
+ frame: HTMLIFrameElement;
2727
+ removeStyle: (id: string) => void;
2728
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2729
+ } | {
2730
+ frame: undefined;
2731
+ removeStyle: (id: string) => void;
2732
+ addStyle: (id: string, style: string) => void;
2733
+ })) => boolean) => boolean;
2734
+ executeOnLayoutBeforeMeasurementHook: (options: {
2735
+ minimumWidth: number;
2736
+ }) => void;
2737
+ selectionTracker: {
2738
+ track: (frameToTrack: HTMLIFrameElement) => void;
2739
+ destroy: () => void;
2740
+ isSelecting: () => boolean;
2741
+ getSelection: () => Selection | undefined;
2742
+ $: Observable<{
2743
+ event: "selectionchange";
2744
+ data: Selection | null;
2745
+ } | {
2746
+ event: "selectstart";
2747
+ data: Selection | null;
2748
+ } | {
2749
+ event: "selectend";
2750
+ data: Selection | null;
2751
+ }>;
2752
+ };
2753
+ fingerTracker: {
2754
+ track: (frame: HTMLIFrameElement) => void;
2755
+ getFingerPositionInIframe(): {
2756
+ x: number | undefined;
2757
+ y: number | undefined;
2758
+ } | undefined;
2759
+ destroy: () => void;
2760
+ $: Observable<{
2761
+ event: "fingermove";
2762
+ data: {
2763
+ x: number;
2764
+ y: number;
2765
+ };
2766
+ } | {
2767
+ event: "fingerout";
2768
+ data: undefined;
2769
+ }>;
2770
+ };
2771
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
2772
+ columnHeight: number;
2773
+ columnWidth: number;
2774
+ width: number;
2775
+ };
2776
+ getDimensionsForPaginatedContent: () => {
2777
+ columnHeight: number;
2778
+ columnWidth: number;
2779
+ };
2780
+ $: {
2781
+ contentLayout$: Observable<{
2782
+ isFirstLayout: boolean;
2783
+ isReady: boolean;
2784
+ }>;
2785
+ loaded$: Observable<HTMLIFrameElement>;
2786
+ isReady$: Observable<boolean>;
2787
+ };
2788
+ };
2789
+ pageIndex: number;
2790
+ cfi: string | undefined;
2791
+ options: {
2792
+ isAtEndOfChapter?: boolean | undefined;
2793
+ };
2794
+ } & {
2795
+ spineItemIndex: number;
2796
+ }) => void) | ((begin: {
2797
+ spineItem: {
2798
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2799
+ blankPagePosition: "after" | "before" | "none";
2800
+ minimumWidth: number;
2801
+ spreadPosition: "none" | "left" | "right";
2802
+ }) => {
2803
+ width: number;
2804
+ height: number;
2805
+ };
2806
+ item: {
2807
+ id: string;
2808
+ href: string;
2809
+ renditionLayout: "reflowable" | "pre-paginated";
2810
+ progressionWeight: number;
2811
+ pageSpreadLeft: true | undefined;
2812
+ pageSpreadRight: true | undefined;
2813
+ mediaType?: string | undefined;
2814
+ };
2815
+ load: () => void;
2816
+ adjustPositionOfElement: ({ right, left, top }: {
2817
+ right?: number | undefined;
2818
+ left?: number | undefined;
2819
+ top?: number | undefined;
2820
+ }) => void;
2821
+ getElementDimensions: () => {
2822
+ width: number;
2823
+ height: number;
2824
+ };
2825
+ getHtmlFromResource: (response: Response) => Promise<string>;
2826
+ getResource: () => Promise<Response>;
2827
+ translateFramePositionIntoPage: (position: {
2828
+ clientX: number;
2829
+ clientY: number;
2830
+ }) => {
2831
+ clientX: number;
2832
+ clientY: number;
2833
+ };
2834
+ setLayoutDirty: () => void;
2835
+ injectStyle: (cssText: string) => void;
2836
+ loadContent: () => void;
2837
+ unloadContent: () => void;
2838
+ spineItemFrame: {
2839
+ getIsLoaded: () => boolean;
2840
+ getIsReady: () => boolean;
2841
+ getViewportDimensions: () => {
2842
+ width: number;
2843
+ height: number;
2844
+ } | undefined;
2845
+ getFrameElement: () => HTMLIFrameElement | undefined;
2846
+ getHtmlFromResource: (response: Response) => Promise<string>;
2847
+ load: () => void;
2848
+ unload: () => void;
2849
+ staticLayout: (size: {
2850
+ width: number;
2851
+ height: number;
2852
+ }) => void;
2853
+ getManipulableFrame: () => {
2854
+ frame: HTMLIFrameElement;
2855
+ removeStyle: (id: string) => void;
2856
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2857
+ } | undefined;
2858
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2859
+ isUsingVerticalWriting: () => boolean;
2860
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
2861
+ destroy: () => void;
2862
+ $: {
2863
+ unload$: Observable<void>;
2864
+ unloaded$: Observable<void>;
2865
+ loaded$: Observable<HTMLIFrameElement>;
2866
+ ready$: Observable<FontFaceSet | undefined>;
2867
+ isReady$: Observable<boolean>;
2868
+ contentLayoutChange$: Observable<{
2869
+ isFirstLayout: boolean;
2870
+ } | {
2871
+ isFirstLayout: boolean;
2872
+ }>;
2873
+ };
2874
+ };
2875
+ element: HTMLElement;
2876
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
2877
+ getViewPortInformation: () => {
2878
+ computedScale: number;
2879
+ computedWidthScale: number;
2880
+ viewportDimensions: {
2881
+ width: number;
2882
+ height: number;
2883
+ };
2884
+ } | undefined;
2885
+ isImageType: () => boolean;
2886
+ isReady: () => boolean;
2887
+ destroy: () => void;
2888
+ isUsingVerticalWriting: () => boolean | undefined;
2889
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
2890
+ manipulateSpineItem: (cb: (options: {
2891
+ container: HTMLElement;
2892
+ item: {
2893
+ id: string;
2894
+ href: string;
2895
+ renditionLayout: "reflowable" | "pre-paginated";
2896
+ progressionWeight: number;
2897
+ pageSpreadLeft: true | undefined;
2898
+ pageSpreadRight: true | undefined;
2899
+ mediaType?: string | undefined;
2900
+ };
2901
+ overlayElement: HTMLDivElement;
2902
+ } & ({
2903
+ frame: HTMLIFrameElement;
2904
+ removeStyle: (id: string) => void;
2905
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
2906
+ } | {
2907
+ frame: undefined;
2908
+ removeStyle: (id: string) => void;
2909
+ addStyle: (id: string, style: string) => void;
2910
+ })) => boolean) => boolean;
2911
+ executeOnLayoutBeforeMeasurementHook: (options: {
2912
+ minimumWidth: number;
2913
+ }) => void;
2914
+ selectionTracker: {
2915
+ track: (frameToTrack: HTMLIFrameElement) => void;
2916
+ destroy: () => void;
2917
+ isSelecting: () => boolean;
2918
+ getSelection: () => Selection | undefined;
2919
+ $: Observable<{
2920
+ event: "selectionchange";
2921
+ data: Selection | null;
2922
+ } | {
2923
+ event: "selectstart";
2924
+ data: Selection | null;
2925
+ } | {
2926
+ event: "selectend";
2927
+ data: Selection | null;
2928
+ }>;
2929
+ };
2930
+ fingerTracker: {
2931
+ track: (frame: HTMLIFrameElement) => void;
2932
+ getFingerPositionInIframe(): {
2933
+ x: number | undefined;
2934
+ y: number | undefined;
2935
+ } | undefined;
2936
+ destroy: () => void;
2937
+ $: Observable<{
2938
+ event: "fingermove";
2939
+ data: {
2940
+ x: number;
2941
+ y: number;
2942
+ };
2943
+ } | {
2944
+ event: "fingerout";
2945
+ data: undefined;
2946
+ }>;
2947
+ };
2948
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
2949
+ columnHeight: number;
2950
+ columnWidth: number;
2951
+ width: number;
2952
+ };
2953
+ getDimensionsForPaginatedContent: () => {
2954
+ columnHeight: number;
2955
+ columnWidth: number;
2956
+ };
2957
+ $: {
2958
+ contentLayout$: Observable<{
2959
+ isFirstLayout: boolean;
2960
+ isReady: boolean;
2961
+ }>;
2962
+ loaded$: Observable<HTMLIFrameElement>;
2963
+ isReady$: Observable<boolean>;
2964
+ };
2965
+ };
2966
+ pageIndex: number;
2967
+ cfi: string | undefined;
2968
+ options: {
2969
+ isAtEndOfChapter?: boolean | undefined;
2970
+ };
2971
+ } & {
2972
+ spineItemIndex: number;
2973
+ }, end: {
2974
+ spineItem: {
2975
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2976
+ blankPagePosition: "after" | "before" | "none";
2977
+ minimumWidth: number;
2978
+ spreadPosition: "none" | "left" | "right";
2979
+ }) => {
2980
+ width: number;
2981
+ height: number;
2982
+ };
2983
+ item: {
2984
+ id: string;
2985
+ href: string;
2986
+ renditionLayout: "reflowable" | "pre-paginated";
2987
+ progressionWeight: number;
2988
+ pageSpreadLeft: true | undefined;
2989
+ pageSpreadRight: true | undefined;
2990
+ mediaType?: string | undefined;
2991
+ };
2992
+ load: () => void;
2993
+ adjustPositionOfElement: ({ right, left, top }: {
2994
+ right?: number | undefined;
2995
+ left?: number | undefined;
2996
+ top?: number | undefined;
2997
+ }) => void;
2998
+ getElementDimensions: () => {
2999
+ width: number;
3000
+ height: number;
3001
+ };
3002
+ getHtmlFromResource: (response: Response) => Promise<string>;
3003
+ getResource: () => Promise<Response>;
3004
+ translateFramePositionIntoPage: (position: {
3005
+ clientX: number;
3006
+ clientY: number;
3007
+ }) => {
3008
+ clientX: number;
3009
+ clientY: number;
3010
+ };
3011
+ setLayoutDirty: () => void;
3012
+ injectStyle: (cssText: string) => void;
3013
+ loadContent: () => void;
3014
+ unloadContent: () => void;
3015
+ spineItemFrame: {
3016
+ getIsLoaded: () => boolean;
3017
+ getIsReady: () => boolean;
3018
+ getViewportDimensions: () => {
3019
+ width: number;
3020
+ height: number;
3021
+ } | undefined;
3022
+ getFrameElement: () => HTMLIFrameElement | undefined;
3023
+ getHtmlFromResource: (response: Response) => Promise<string>;
3024
+ load: () => void;
3025
+ unload: () => void;
3026
+ staticLayout: (size: {
3027
+ width: number;
3028
+ height: number;
3029
+ }) => void;
3030
+ getManipulableFrame: () => {
3031
+ frame: HTMLIFrameElement;
3032
+ removeStyle: (id: string) => void;
3033
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3034
+ } | undefined;
3035
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3036
+ isUsingVerticalWriting: () => boolean;
3037
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
3038
+ destroy: () => void;
3039
+ $: {
3040
+ unload$: Observable<void>;
3041
+ unloaded$: Observable<void>;
3042
+ loaded$: Observable<HTMLIFrameElement>;
3043
+ ready$: Observable<FontFaceSet | undefined>;
3044
+ isReady$: Observable<boolean>;
3045
+ contentLayoutChange$: Observable<{
3046
+ isFirstLayout: boolean;
3047
+ } | {
3048
+ isFirstLayout: boolean;
3049
+ }>;
3050
+ };
3051
+ };
3052
+ element: HTMLElement;
3053
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
3054
+ getViewPortInformation: () => {
3055
+ computedScale: number;
3056
+ computedWidthScale: number;
3057
+ viewportDimensions: {
3058
+ width: number;
3059
+ height: number;
3060
+ };
3061
+ } | undefined;
3062
+ isImageType: () => boolean;
3063
+ isReady: () => boolean;
3064
+ destroy: () => void;
3065
+ isUsingVerticalWriting: () => boolean | undefined;
3066
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3067
+ manipulateSpineItem: (cb: (options: {
3068
+ container: HTMLElement;
3069
+ item: {
3070
+ id: string;
3071
+ href: string;
3072
+ renditionLayout: "reflowable" | "pre-paginated";
3073
+ progressionWeight: number;
3074
+ pageSpreadLeft: true | undefined;
3075
+ pageSpreadRight: true | undefined;
3076
+ mediaType?: string | undefined;
3077
+ };
3078
+ overlayElement: HTMLDivElement;
3079
+ } & ({
3080
+ frame: HTMLIFrameElement;
3081
+ removeStyle: (id: string) => void;
3082
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3083
+ } | {
3084
+ frame: undefined;
3085
+ removeStyle: (id: string) => void;
3086
+ addStyle: (id: string, style: string) => void;
3087
+ })) => boolean) => boolean;
3088
+ executeOnLayoutBeforeMeasurementHook: (options: {
3089
+ minimumWidth: number;
3090
+ }) => void;
3091
+ selectionTracker: {
3092
+ track: (frameToTrack: HTMLIFrameElement) => void;
3093
+ destroy: () => void;
3094
+ isSelecting: () => boolean;
3095
+ getSelection: () => Selection | undefined;
3096
+ $: Observable<{
3097
+ event: "selectionchange";
3098
+ data: Selection | null;
3099
+ } | {
3100
+ event: "selectstart";
3101
+ data: Selection | null;
3102
+ } | {
3103
+ event: "selectend";
3104
+ data: Selection | null;
3105
+ }>;
3106
+ };
3107
+ fingerTracker: {
3108
+ track: (frame: HTMLIFrameElement) => void;
3109
+ getFingerPositionInIframe(): {
3110
+ x: number | undefined;
3111
+ y: number | undefined;
3112
+ } | undefined;
3113
+ destroy: () => void;
3114
+ $: Observable<{
3115
+ event: "fingermove";
3116
+ data: {
3117
+ x: number;
3118
+ y: number;
3119
+ };
3120
+ } | {
3121
+ event: "fingerout";
3122
+ data: undefined;
3123
+ }>;
3124
+ };
3125
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
3126
+ columnHeight: number;
3127
+ columnWidth: number;
3128
+ width: number;
3129
+ };
3130
+ getDimensionsForPaginatedContent: () => {
3131
+ columnHeight: number;
3132
+ columnWidth: number;
3133
+ };
3134
+ $: {
3135
+ contentLayout$: Observable<{
3136
+ isFirstLayout: boolean;
3137
+ isReady: boolean;
3138
+ }>;
3139
+ loaded$: Observable<HTMLIFrameElement>;
3140
+ isReady$: Observable<boolean>;
3141
+ };
3142
+ };
3143
+ pageIndex: number;
3144
+ cfi: string | undefined;
3145
+ options: {
3146
+ isAtEndOfChapter?: boolean | undefined;
3147
+ };
3148
+ } & {
3149
+ spineItemIndex: number;
3150
+ }) => void);
3151
+ getPaginationInfo: () => PaginationInfo;
3152
+ paginationInfo$: Observable<PaginationInfo>;
3153
+ }, "paginationInfo$"> & {
3154
+ paginationInfo$: Observable<PaginationInfo & {
3155
+ beginChapterInfo: {
3156
+ title: string;
3157
+ subChapter?: {
3158
+ title: string;
3159
+ subChapter?: {
3160
+ title: string;
3161
+ subChapter?: {
3162
+ title: string;
3163
+ path: string;
3164
+ } | undefined;
3165
+ path: string;
3166
+ } | undefined;
3167
+ path: string;
3168
+ } | undefined;
3169
+ path: string;
3170
+ } | undefined;
3171
+ beginSpineItemReadingDirection: "ltr" | "rtl" | undefined;
3172
+ beginAbsolutePageIndex: number | undefined;
3173
+ endChapterInfo: {
3174
+ title: string;
3175
+ subChapter?: {
3176
+ title: string;
3177
+ subChapter?: {
3178
+ title: string;
3179
+ subChapter?: {
3180
+ title: string;
3181
+ path: string;
3182
+ } | undefined;
3183
+ path: string;
3184
+ } | undefined;
3185
+ path: string;
3186
+ } | undefined;
3187
+ path: string;
3188
+ } | undefined;
3189
+ endSpineItemReadingDirection: "ltr" | "rtl" | undefined;
3190
+ endAbsolutePageIndex: number | undefined;
3191
+ percentageEstimateOfBook: number | undefined;
3192
+ numberOfTotalPages: number | undefined;
3193
+ isUsingSpread: boolean;
3194
+ }>;
3195
+ }, "paginationInfo$" | "getPaginationInfo">;
3196
+ };
3197
+
3198
+ declare const createSelection: (selection: Selection, item: Manifest[`spineItems`][number]) => {
3199
+ toString: () => string;
3200
+ getAnchorCfi: () => string | undefined;
3201
+ getFocusCfi: () => string | undefined;
3202
+ };
3203
+
3204
+ declare const createSettings: (initialSettings: Partial<InputSettings>) => {
3205
+ getSettings: () => OutputSettings;
3206
+ setSettings: (newSettings: Partial<InputSettings>, options: {
3207
+ hasVerticalWriting?: boolean;
3208
+ manifest?: Manifest | undefined;
3209
+ }) => void;
3210
+ recompute: (options: {
3211
+ hasVerticalWriting?: boolean;
3212
+ manifest?: Manifest | undefined;
3213
+ }) => void;
3214
+ destroy: () => void;
3215
+ $: {
3216
+ settings$: Observable<InputSettings & {
3217
+ computedPageTurnMode: "controlled" | "scrollable";
3218
+ computedPageTurnDirection: "vertical" | "horizontal";
3219
+ computedPageTurnAnimation: "none" | "fade" | "slide";
3220
+ computedPageTurnAnimationDuration: number;
3221
+ computedSnapAnimationDuration: number;
3222
+ }>;
3223
+ };
3224
+ };
3225
+
3226
+ declare const createSpineItem: ({ item, context, containerElement, iframeEventBridgeElement$, hooks$, viewportState$, settings }: {
3227
+ item: Manifest[`spineItems`][number];
3228
+ containerElement: HTMLElement;
3229
+ iframeEventBridgeElement$: BehaviorSubject<HTMLElement | undefined>;
3230
+ context: Context_2;
3231
+ hooks$: BehaviorSubject<Hook[]>;
3232
+ viewportState$: Observable<`free` | `busy`>;
3233
+ settings: Settings;
3234
+ }) => {
3235
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3236
+ blankPagePosition: "after" | "before" | "none";
3237
+ minimumWidth: number;
3238
+ spreadPosition: "none" | "left" | "right";
3239
+ }) => {
3240
+ width: number;
3241
+ height: number;
3242
+ };
3243
+ item: {
3244
+ id: string;
3245
+ href: string;
3246
+ renditionLayout: "reflowable" | "pre-paginated";
3247
+ progressionWeight: number;
3248
+ pageSpreadLeft: true | undefined;
3249
+ pageSpreadRight: true | undefined;
3250
+ mediaType?: string | undefined;
3251
+ };
3252
+ load: () => void;
3253
+ adjustPositionOfElement: ({ right, left, top }: {
3254
+ right?: number | undefined;
3255
+ left?: number | undefined;
3256
+ top?: number | undefined;
3257
+ }) => void;
3258
+ getElementDimensions: () => {
3259
+ width: number;
3260
+ height: number;
3261
+ };
3262
+ getHtmlFromResource: (response: Response) => Promise<string>;
3263
+ getResource: () => Promise<Response>;
3264
+ translateFramePositionIntoPage: (position: {
3265
+ clientX: number;
3266
+ clientY: number;
3267
+ }) => {
3268
+ clientX: number;
3269
+ clientY: number;
3270
+ };
3271
+ setLayoutDirty: () => void;
3272
+ injectStyle: (cssText: string) => void;
3273
+ loadContent: () => void;
3274
+ unloadContent: () => void;
3275
+ spineItemFrame: {
3276
+ getIsLoaded: () => boolean;
3277
+ getIsReady: () => boolean;
3278
+ getViewportDimensions: () => {
3279
+ width: number;
3280
+ height: number;
3281
+ } | undefined;
3282
+ getFrameElement: () => HTMLIFrameElement | undefined;
3283
+ getHtmlFromResource: (response: Response) => Promise<string>;
3284
+ load: () => void;
3285
+ unload: () => void;
3286
+ staticLayout: (size: {
3287
+ width: number;
3288
+ height: number;
3289
+ }) => void;
3290
+ getManipulableFrame: () => {
3291
+ frame: HTMLIFrameElement;
3292
+ removeStyle: (id: string) => void;
3293
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3294
+ } | undefined;
3295
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3296
+ isUsingVerticalWriting: () => boolean;
3297
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
3298
+ destroy: () => void;
3299
+ $: {
3300
+ unload$: Observable<void>;
3301
+ unloaded$: Observable<void>;
3302
+ loaded$: Observable<HTMLIFrameElement>;
3303
+ ready$: Observable<FontFaceSet | undefined>;
3304
+ isReady$: Observable<boolean>;
3305
+ contentLayoutChange$: Observable<{
3306
+ isFirstLayout: boolean;
3307
+ } | {
3308
+ isFirstLayout: boolean;
3309
+ }>;
3310
+ };
3311
+ };
3312
+ element: HTMLElement;
3313
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
3314
+ getViewPortInformation: () => {
3315
+ computedScale: number;
3316
+ computedWidthScale: number;
3317
+ viewportDimensions: {
3318
+ width: number;
3319
+ height: number;
3320
+ };
3321
+ } | undefined;
3322
+ isImageType: () => boolean;
3323
+ isReady: () => boolean;
3324
+ destroy: () => void;
3325
+ isUsingVerticalWriting: () => boolean | undefined;
3326
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3327
+ manipulateSpineItem: (cb: (options: {
3328
+ container: HTMLElement;
3329
+ item: {
3330
+ id: string;
3331
+ href: string;
3332
+ renditionLayout: "reflowable" | "pre-paginated";
3333
+ progressionWeight: number;
3334
+ pageSpreadLeft: true | undefined;
3335
+ pageSpreadRight: true | undefined;
3336
+ mediaType?: string | undefined;
3337
+ };
3338
+ overlayElement: HTMLDivElement;
3339
+ } & ({
3340
+ frame: HTMLIFrameElement;
3341
+ removeStyle: (id: string) => void;
3342
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3343
+ } | {
3344
+ frame: undefined;
3345
+ removeStyle: (id: string) => void;
3346
+ addStyle: (id: string, style: string) => void;
3347
+ })) => boolean) => boolean;
3348
+ executeOnLayoutBeforeMeasurementHook: (options: {
3349
+ minimumWidth: number;
3350
+ }) => void;
3351
+ selectionTracker: {
3352
+ track: (frameToTrack: HTMLIFrameElement) => void;
3353
+ destroy: () => void;
3354
+ isSelecting: () => boolean;
3355
+ getSelection: () => Selection | undefined;
3356
+ $: Observable<{
3357
+ event: "selectionchange";
3358
+ data: Selection | null;
3359
+ } | {
3360
+ event: "selectstart";
3361
+ data: Selection | null;
3362
+ } | {
3363
+ event: "selectend";
3364
+ data: Selection | null;
3365
+ }>;
3366
+ };
3367
+ fingerTracker: {
3368
+ track: (frame: HTMLIFrameElement) => void;
3369
+ getFingerPositionInIframe(): {
3370
+ x: number | undefined;
3371
+ y: number | undefined;
3372
+ } | undefined;
3373
+ destroy: () => void;
3374
+ $: Observable<{
3375
+ event: "fingermove";
3376
+ data: {
3377
+ x: number;
3378
+ y: number;
3379
+ };
3380
+ } | {
3381
+ event: "fingerout";
3382
+ data: undefined;
3383
+ }>;
3384
+ };
3385
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
3386
+ columnHeight: number;
3387
+ columnWidth: number;
3388
+ width: number;
3389
+ };
3390
+ getDimensionsForPaginatedContent: () => {
3391
+ columnHeight: number;
3392
+ columnWidth: number;
3393
+ };
3394
+ $: {
3395
+ contentLayout$: Observable<{
3396
+ isFirstLayout: boolean;
3397
+ isReady: boolean;
3398
+ }>;
3399
+ loaded$: Observable<HTMLIFrameElement>;
3400
+ isReady$: Observable<boolean>;
3401
+ };
3402
+ };
3403
+
3404
+ declare const createSpineItemManager: ({ context, settings }: {
3405
+ context: Context_2;
3406
+ settings: Settings;
3407
+ }) => {
3408
+ destroyItems: () => void;
3409
+ add: (spineItem: SpineItem) => void;
3410
+ get: (indexOrId: number | string) => {
3411
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3412
+ blankPagePosition: "after" | "before" | "none";
3413
+ minimumWidth: number;
3414
+ spreadPosition: "none" | "left" | "right";
3415
+ }) => {
3416
+ width: number;
3417
+ height: number;
3418
+ };
3419
+ item: {
3420
+ id: string;
3421
+ href: string;
3422
+ renditionLayout: "reflowable" | "pre-paginated";
3423
+ progressionWeight: number;
3424
+ pageSpreadLeft: true | undefined;
3425
+ pageSpreadRight: true | undefined;
3426
+ mediaType?: string | undefined;
3427
+ };
3428
+ load: () => void;
3429
+ adjustPositionOfElement: ({ right, left, top }: {
3430
+ right?: number | undefined;
3431
+ left?: number | undefined;
3432
+ top?: number | undefined;
3433
+ }) => void;
3434
+ getElementDimensions: () => {
3435
+ width: number;
3436
+ height: number;
3437
+ };
3438
+ getHtmlFromResource: (response: Response) => Promise<string>;
3439
+ getResource: () => Promise<Response>;
3440
+ translateFramePositionIntoPage: (position: {
3441
+ clientX: number;
3442
+ clientY: number;
3443
+ }) => {
3444
+ clientX: number;
3445
+ clientY: number;
3446
+ };
3447
+ setLayoutDirty: () => void;
3448
+ injectStyle: (cssText: string) => void;
3449
+ loadContent: () => void;
3450
+ unloadContent: () => void;
3451
+ spineItemFrame: {
3452
+ getIsLoaded: () => boolean;
3453
+ getIsReady: () => boolean;
3454
+ getViewportDimensions: () => {
3455
+ width: number;
3456
+ height: number;
3457
+ } | undefined;
3458
+ getFrameElement: () => HTMLIFrameElement | undefined;
3459
+ getHtmlFromResource: (response: Response) => Promise<string>;
3460
+ load: () => void;
3461
+ unload: () => void;
3462
+ staticLayout: (size: {
3463
+ width: number;
3464
+ height: number;
3465
+ }) => void;
3466
+ getManipulableFrame: () => {
3467
+ frame: HTMLIFrameElement;
3468
+ removeStyle: (id: string) => void;
3469
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3470
+ } | undefined;
3471
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3472
+ isUsingVerticalWriting: () => boolean;
3473
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
3474
+ destroy: () => void;
3475
+ $: {
3476
+ unload$: Observable<void>;
3477
+ unloaded$: Observable<void>;
3478
+ loaded$: Observable<HTMLIFrameElement>;
3479
+ ready$: Observable<FontFaceSet | undefined>;
3480
+ isReady$: Observable<boolean>;
3481
+ contentLayoutChange$: Observable<{
3482
+ isFirstLayout: boolean;
3483
+ } | {
3484
+ isFirstLayout: boolean;
3485
+ }>;
3486
+ };
3487
+ };
3488
+ element: HTMLElement;
3489
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
3490
+ getViewPortInformation: () => {
3491
+ computedScale: number;
3492
+ computedWidthScale: number;
3493
+ viewportDimensions: {
3494
+ width: number;
3495
+ height: number;
3496
+ };
3497
+ } | undefined;
3498
+ isImageType: () => boolean;
3499
+ isReady: () => boolean;
3500
+ destroy: () => void;
3501
+ isUsingVerticalWriting: () => boolean | undefined;
3502
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3503
+ manipulateSpineItem: (cb: (options: {
3504
+ container: HTMLElement;
3505
+ item: {
3506
+ id: string;
3507
+ href: string;
3508
+ renditionLayout: "reflowable" | "pre-paginated";
3509
+ progressionWeight: number;
3510
+ pageSpreadLeft: true | undefined;
3511
+ pageSpreadRight: true | undefined;
3512
+ mediaType?: string | undefined;
3513
+ };
3514
+ overlayElement: HTMLDivElement;
3515
+ } & ({
3516
+ frame: HTMLIFrameElement;
3517
+ removeStyle: (id: string) => void;
3518
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3519
+ } | {
3520
+ frame: undefined;
3521
+ removeStyle: (id: string) => void;
3522
+ addStyle: (id: string, style: string) => void;
3523
+ })) => boolean) => boolean;
3524
+ executeOnLayoutBeforeMeasurementHook: (options: {
3525
+ minimumWidth: number;
3526
+ }) => void;
3527
+ selectionTracker: {
3528
+ track: (frameToTrack: HTMLIFrameElement) => void;
3529
+ destroy: () => void;
3530
+ isSelecting: () => boolean;
3531
+ getSelection: () => Selection | undefined;
3532
+ $: Observable<{
3533
+ event: "selectionchange";
3534
+ data: Selection | null;
3535
+ } | {
3536
+ event: "selectstart";
3537
+ data: Selection | null;
3538
+ } | {
3539
+ event: "selectend";
3540
+ data: Selection | null;
3541
+ }>;
3542
+ };
3543
+ fingerTracker: {
3544
+ track: (frame: HTMLIFrameElement) => void;
3545
+ getFingerPositionInIframe(): {
3546
+ x: number | undefined;
3547
+ y: number | undefined;
3548
+ } | undefined;
3549
+ destroy: () => void;
3550
+ $: Observable<{
3551
+ event: "fingermove";
3552
+ data: {
3553
+ x: number;
3554
+ y: number;
3555
+ };
3556
+ } | {
3557
+ event: "fingerout";
3558
+ data: undefined;
3559
+ }>;
3560
+ };
3561
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
3562
+ columnHeight: number;
3563
+ columnWidth: number;
3564
+ width: number;
3565
+ };
3566
+ getDimensionsForPaginatedContent: () => {
3567
+ columnHeight: number;
3568
+ columnWidth: number;
3569
+ };
3570
+ $: {
3571
+ contentLayout$: Observable<{
3572
+ isFirstLayout: boolean;
3573
+ isReady: boolean;
3574
+ }>;
3575
+ loaded$: Observable<HTMLIFrameElement>;
3576
+ isReady$: Observable<boolean>;
3577
+ };
3578
+ } | undefined;
3579
+ getAll: () => {
3580
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3581
+ blankPagePosition: "after" | "before" | "none";
3582
+ minimumWidth: number;
3583
+ spreadPosition: "none" | "left" | "right";
3584
+ }) => {
3585
+ width: number;
3586
+ height: number;
3587
+ };
3588
+ item: {
3589
+ id: string;
3590
+ href: string;
3591
+ renditionLayout: "reflowable" | "pre-paginated";
3592
+ progressionWeight: number;
3593
+ pageSpreadLeft: true | undefined;
3594
+ pageSpreadRight: true | undefined;
3595
+ mediaType?: string | undefined;
3596
+ };
3597
+ load: () => void;
3598
+ adjustPositionOfElement: ({ right, left, top }: {
3599
+ right?: number | undefined;
3600
+ left?: number | undefined;
3601
+ top?: number | undefined;
3602
+ }) => void;
3603
+ getElementDimensions: () => {
3604
+ width: number;
3605
+ height: number;
3606
+ };
3607
+ getHtmlFromResource: (response: Response) => Promise<string>;
3608
+ getResource: () => Promise<Response>;
3609
+ translateFramePositionIntoPage: (position: {
3610
+ clientX: number;
3611
+ clientY: number;
3612
+ }) => {
3613
+ clientX: number;
3614
+ clientY: number;
3615
+ };
3616
+ setLayoutDirty: () => void;
3617
+ injectStyle: (cssText: string) => void;
3618
+ loadContent: () => void;
3619
+ unloadContent: () => void;
3620
+ spineItemFrame: {
3621
+ getIsLoaded: () => boolean;
3622
+ getIsReady: () => boolean;
3623
+ getViewportDimensions: () => {
3624
+ width: number;
3625
+ height: number;
3626
+ } | undefined;
3627
+ getFrameElement: () => HTMLIFrameElement | undefined;
3628
+ getHtmlFromResource: (response: Response) => Promise<string>;
3629
+ load: () => void;
3630
+ unload: () => void;
3631
+ staticLayout: (size: {
3632
+ width: number;
3633
+ height: number;
3634
+ }) => void;
3635
+ getManipulableFrame: () => {
3636
+ frame: HTMLIFrameElement;
3637
+ removeStyle: (id: string) => void;
3638
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3639
+ } | undefined;
3640
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3641
+ isUsingVerticalWriting: () => boolean;
3642
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
3643
+ destroy: () => void;
3644
+ $: {
3645
+ unload$: Observable<void>;
3646
+ unloaded$: Observable<void>;
3647
+ loaded$: Observable<HTMLIFrameElement>;
3648
+ ready$: Observable<FontFaceSet | undefined>;
3649
+ isReady$: Observable<boolean>;
3650
+ contentLayoutChange$: Observable<{
3651
+ isFirstLayout: boolean;
3652
+ } | {
3653
+ isFirstLayout: boolean;
3654
+ }>;
3655
+ };
3656
+ };
3657
+ element: HTMLElement;
3658
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
3659
+ getViewPortInformation: () => {
3660
+ computedScale: number;
3661
+ computedWidthScale: number;
3662
+ viewportDimensions: {
3663
+ width: number;
3664
+ height: number;
3665
+ };
3666
+ } | undefined;
3667
+ isImageType: () => boolean;
3668
+ isReady: () => boolean;
3669
+ destroy: () => void;
3670
+ isUsingVerticalWriting: () => boolean | undefined;
3671
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3672
+ manipulateSpineItem: (cb: (options: {
3673
+ container: HTMLElement;
3674
+ item: {
3675
+ id: string;
3676
+ href: string;
3677
+ renditionLayout: "reflowable" | "pre-paginated";
3678
+ progressionWeight: number;
3679
+ pageSpreadLeft: true | undefined;
3680
+ pageSpreadRight: true | undefined;
3681
+ mediaType?: string | undefined;
3682
+ };
3683
+ overlayElement: HTMLDivElement;
3684
+ } & ({
3685
+ frame: HTMLIFrameElement;
3686
+ removeStyle: (id: string) => void;
3687
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3688
+ } | {
3689
+ frame: undefined;
3690
+ removeStyle: (id: string) => void;
3691
+ addStyle: (id: string, style: string) => void;
3692
+ })) => boolean) => boolean;
3693
+ executeOnLayoutBeforeMeasurementHook: (options: {
3694
+ minimumWidth: number;
3695
+ }) => void;
3696
+ selectionTracker: {
3697
+ track: (frameToTrack: HTMLIFrameElement) => void;
3698
+ destroy: () => void;
3699
+ isSelecting: () => boolean;
3700
+ getSelection: () => Selection | undefined;
3701
+ $: Observable<{
3702
+ event: "selectionchange";
3703
+ data: Selection | null;
3704
+ } | {
3705
+ event: "selectstart";
3706
+ data: Selection | null;
3707
+ } | {
3708
+ event: "selectend";
3709
+ data: Selection | null;
3710
+ }>;
3711
+ };
3712
+ fingerTracker: {
3713
+ track: (frame: HTMLIFrameElement) => void;
3714
+ getFingerPositionInIframe(): {
3715
+ x: number | undefined;
3716
+ y: number | undefined;
3717
+ } | undefined;
3718
+ destroy: () => void;
3719
+ $: Observable<{
3720
+ event: "fingermove";
3721
+ data: {
3722
+ x: number;
3723
+ y: number;
3724
+ };
3725
+ } | {
3726
+ event: "fingerout";
3727
+ data: undefined;
3728
+ }>;
3729
+ };
3730
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
3731
+ columnHeight: number;
3732
+ columnWidth: number;
3733
+ width: number;
3734
+ };
3735
+ getDimensionsForPaginatedContent: () => {
3736
+ columnHeight: number;
3737
+ columnWidth: number;
3738
+ };
3739
+ $: {
3740
+ contentLayout$: Observable<{
3741
+ isFirstLayout: boolean;
3742
+ isReady: boolean;
3743
+ }>;
3744
+ loaded$: Observable<HTMLIFrameElement>;
3745
+ isReady$: Observable<boolean>;
3746
+ };
3747
+ }[];
3748
+ getLength: () => number;
3749
+ layout: () => void;
3750
+ focus: (indexOrSpineItem: number | SpineItem) => void;
3751
+ loadContents: ((rangeOfIndex: [number, number]) => void) | ((rangeOfIndex: [number, number]) => void);
3752
+ comparePositionOf: (toCompare: SpineItem, withItem: SpineItem) => "after" | "before";
3753
+ getAbsolutePositionOf: (spineItemOrIndex: SpineItem | number) => {
3754
+ left: number;
3755
+ right: number;
3756
+ top: number;
3757
+ bottom: number;
3758
+ width: number;
3759
+ height: number;
3760
+ };
3761
+ getFocusedSpineItem: () => {
3762
+ layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3763
+ blankPagePosition: "after" | "before" | "none";
3764
+ minimumWidth: number;
3765
+ spreadPosition: "none" | "left" | "right";
3766
+ }) => {
3767
+ width: number;
3768
+ height: number;
3769
+ };
3770
+ item: {
3771
+ id: string;
3772
+ href: string;
3773
+ renditionLayout: "reflowable" | "pre-paginated";
3774
+ progressionWeight: number;
3775
+ pageSpreadLeft: true | undefined;
3776
+ pageSpreadRight: true | undefined;
3777
+ mediaType?: string | undefined;
3778
+ };
3779
+ load: () => void;
3780
+ adjustPositionOfElement: ({ right, left, top }: {
3781
+ right?: number | undefined;
3782
+ left?: number | undefined;
3783
+ top?: number | undefined;
3784
+ }) => void;
3785
+ getElementDimensions: () => {
3786
+ width: number;
3787
+ height: number;
3788
+ };
3789
+ getHtmlFromResource: (response: Response) => Promise<string>;
3790
+ getResource: () => Promise<Response>;
3791
+ translateFramePositionIntoPage: (position: {
3792
+ clientX: number;
3793
+ clientY: number;
3794
+ }) => {
3795
+ clientX: number;
3796
+ clientY: number;
3797
+ };
3798
+ setLayoutDirty: () => void;
3799
+ injectStyle: (cssText: string) => void;
3800
+ loadContent: () => void;
3801
+ unloadContent: () => void;
3802
+ spineItemFrame: {
3803
+ getIsLoaded: () => boolean;
3804
+ getIsReady: () => boolean;
3805
+ getViewportDimensions: () => {
3806
+ width: number;
3807
+ height: number;
3808
+ } | undefined;
3809
+ getFrameElement: () => HTMLIFrameElement | undefined;
3810
+ getHtmlFromResource: (response: Response) => Promise<string>;
3811
+ load: () => void;
3812
+ unload: () => void;
3813
+ staticLayout: (size: {
3814
+ width: number;
3815
+ height: number;
3816
+ }) => void;
3817
+ getManipulableFrame: () => {
3818
+ frame: HTMLIFrameElement;
3819
+ removeStyle: (id: string) => void;
3820
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3821
+ } | undefined;
3822
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3823
+ isUsingVerticalWriting: () => boolean;
3824
+ getWritingMode: () => "vertical-rl" | "horizontal-tb" | undefined;
3825
+ destroy: () => void;
3826
+ $: {
3827
+ unload$: Observable<void>;
3828
+ unloaded$: Observable<void>;
3829
+ loaded$: Observable<HTMLIFrameElement>;
3830
+ ready$: Observable<FontFaceSet | undefined>;
3831
+ isReady$: Observable<boolean>;
3832
+ contentLayoutChange$: Observable<{
3833
+ isFirstLayout: boolean;
3834
+ } | {
3835
+ isFirstLayout: boolean;
3836
+ }>;
3837
+ };
3838
+ };
3839
+ element: HTMLElement;
3840
+ getBoundingRectOfElementFromSelector: (selector: string) => DOMRect | undefined;
3841
+ getViewPortInformation: () => {
3842
+ computedScale: number;
3843
+ computedWidthScale: number;
3844
+ viewportDimensions: {
3845
+ width: number;
3846
+ height: number;
3847
+ };
3848
+ } | undefined;
3849
+ isImageType: () => boolean;
3850
+ isReady: () => boolean;
3851
+ destroy: () => void;
3852
+ isUsingVerticalWriting: () => boolean | undefined;
3853
+ getReadingDirection: () => "ltr" | "rtl" | undefined;
3854
+ manipulateSpineItem: (cb: (options: {
3855
+ container: HTMLElement;
3856
+ item: {
3857
+ id: string;
3858
+ href: string;
3859
+ renditionLayout: "reflowable" | "pre-paginated";
3860
+ progressionWeight: number;
3861
+ pageSpreadLeft: true | undefined;
3862
+ pageSpreadRight: true | undefined;
3863
+ mediaType?: string | undefined;
3864
+ };
3865
+ overlayElement: HTMLDivElement;
3866
+ } & ({
3867
+ frame: HTMLIFrameElement;
3868
+ removeStyle: (id: string) => void;
3869
+ addStyle: (id: string, style: string, prepend?: boolean) => void;
3870
+ } | {
3871
+ frame: undefined;
3872
+ removeStyle: (id: string) => void;
3873
+ addStyle: (id: string, style: string) => void;
3874
+ })) => boolean) => boolean;
3875
+ executeOnLayoutBeforeMeasurementHook: (options: {
3876
+ minimumWidth: number;
3877
+ }) => void;
3878
+ selectionTracker: {
3879
+ track: (frameToTrack: HTMLIFrameElement) => void;
3880
+ destroy: () => void;
3881
+ isSelecting: () => boolean;
3882
+ getSelection: () => Selection | undefined;
3883
+ $: Observable<{
3884
+ event: "selectionchange";
3885
+ data: Selection | null;
3886
+ } | {
3887
+ event: "selectstart";
3888
+ data: Selection | null;
3889
+ } | {
3890
+ event: "selectend";
3891
+ data: Selection | null;
3892
+ }>;
3893
+ };
3894
+ fingerTracker: {
3895
+ track: (frame: HTMLIFrameElement) => void;
3896
+ getFingerPositionInIframe(): {
3897
+ x: number | undefined;
3898
+ y: number | undefined;
3899
+ } | undefined;
3900
+ destroy: () => void;
3901
+ $: Observable<{
3902
+ event: "fingermove";
3903
+ data: {
3904
+ x: number;
3905
+ y: number;
3906
+ };
3907
+ } | {
3908
+ event: "fingerout";
3909
+ data: undefined;
3910
+ }>;
3911
+ };
3912
+ getDimensionsForReflowableContent: (isUsingVerticalWriting: boolean, minimumWidth: number) => {
3913
+ columnHeight: number;
3914
+ columnWidth: number;
3915
+ width: number;
3916
+ };
3917
+ getDimensionsForPaginatedContent: () => {
3918
+ columnHeight: number;
3919
+ columnWidth: number;
3920
+ };
3921
+ $: {
3922
+ contentLayout$: Observable<{
3923
+ isFirstLayout: boolean;
3924
+ isReady: boolean;
3925
+ }>;
3926
+ loaded$: Observable<HTMLIFrameElement>;
3927
+ isReady$: Observable<boolean>;
3928
+ };
3929
+ } | undefined;
3930
+ getFocusedSpineItemIndex: () => number | undefined;
3931
+ getSpineItemIndex: (spineItem: SpineItem | undefined) => number | undefined;
3932
+ destroy: () => void;
3933
+ $: {
3934
+ focus$: Observable<{
3935
+ data: SpineItem;
3936
+ }>;
3937
+ layout$: Observable<boolean>;
3938
+ itemIsReady$: Observable<{
3939
+ item: {
3940
+ id: string;
3941
+ href: string;
3942
+ renditionLayout: "reflowable" | "pre-paginated";
3943
+ progressionWeight: number;
3944
+ pageSpreadLeft: true | undefined;
3945
+ pageSpreadRight: true | undefined;
3946
+ mediaType?: string | undefined;
3947
+ };
3948
+ isReady: boolean;
3949
+ }>;
3950
+ };
3951
+ };
3952
+
3953
+ declare const createViewportNavigator: ({ spineItemManager, context, pagination, parentElement$, cfiLocator, spineLocator, hooks$, spine, settings, }: {
3954
+ spineItemManager: SpineItemManager;
3955
+ pagination: Pagination;
3956
+ context: Context_2;
3957
+ parentElement$: BehaviorSubject<HTMLElement | undefined>;
3958
+ cfiLocator: ReturnType<typeof createCfiLocator>;
3959
+ spineLocator: ReturnType<typeof createLocationResolver>;
3960
+ hooks$: BehaviorSubject<Hook[]>;
3961
+ spine: Spine;
3962
+ settings: Settings;
3963
+ }) => {
3964
+ destroy: () => void;
3965
+ layout: () => void;
3966
+ getCurrentNavigationPosition: () => ViewportNavigationEntry;
3967
+ getCurrentViewportPosition: (() => {
3968
+ x: number;
3969
+ y: number;
3970
+ }) | (() => {
3971
+ x: number;
3972
+ y: number;
3973
+ });
3974
+ turnLeft: ({ allowSpineItemChange }?: {
3975
+ allowSpineItemChange?: boolean | undefined;
3976
+ }) => void;
3977
+ turnRight: ({ allowSpineItemChange }?: {
3978
+ allowSpineItemChange?: boolean | undefined;
3979
+ }) => void;
3980
+ goToPage: (pageIndex: number) => void;
3981
+ goToSpineItem: (indexOrId: string | number, options?: {
3982
+ animate: boolean;
3983
+ }) => void;
3984
+ goToUrl: (url: string | URL) => void;
3985
+ goToCfi: (cfi: string, options?: {
3986
+ animate: boolean;
3987
+ }) => void;
3988
+ goToPageOfCurrentChapter: (pageIndex: number) => void;
3989
+ moveTo: ((delta: {
3990
+ x: number;
3991
+ y: number;
3992
+ } | undefined, { final, start }?: {
3993
+ start?: boolean | undefined;
3994
+ final?: boolean | undefined;
3995
+ }) => void) | ((delta: {
3996
+ x: number;
3997
+ y: number;
3998
+ } | undefined, args_1?: {
3999
+ start?: boolean | undefined;
4000
+ final?: boolean | undefined;
4001
+ } | undefined) => void);
4002
+ getLastUserExpectedNavigation: () => LastUserExpectedNavigation;
4003
+ element$: BehaviorSubject<HTMLElement>;
4004
+ getElement: () => HTMLElement;
4005
+ $: {
4006
+ state$: Observable<"free" | "busy">;
4007
+ navigation$: Observable<Navigation>;
4008
+ navigationAdjustedAfterLayout$: Observable<{
4009
+ previousNavigationPosition: ViewportNavigationEntry;
4010
+ adjustedSpinePosition: ViewportNavigationEntry;
4011
+ areDifferent: boolean;
4012
+ }>;
4013
+ currentNavigationPosition$: Observable<ViewportNavigationEntry>;
4014
+ };
4015
+ };
4016
+
4017
+ declare const defaultThemes: ({
4018
+ name: "bright";
4019
+ backgroundColor: string;
4020
+ foregroundColor?: undefined;
4021
+ } | {
4022
+ name: "sepia";
4023
+ backgroundColor: string;
4024
+ foregroundColor: string;
4025
+ } | {
4026
+ name: "night";
4027
+ backgroundColor: string;
4028
+ foregroundColor: string;
4029
+ })[];
4030
+
4031
+ declare type Event_2 = {
4032
+ type: `onSelectionChange`;
4033
+ data: ReturnType<typeof createSelection> | null;
4034
+ };
4035
+
4036
+ export declare const groupBy: <T, K extends string | number | symbol>(list: T[], getKey: (item: T) => K) => Record<K, T[]>;
4037
+
4038
+ declare type Hook = ItemOnLoadHook | {
4039
+ name: `item.onBeforeContainerCreated`;
4040
+ fn: (payload: HTMLElement) => HTMLElement;
4041
+ } | {
4042
+ name: `item.onLayoutBeforeMeasurement`;
4043
+ fn: (payload: {
4044
+ frame: {
4045
+ getManipulableFrame: () => undefined | {
4046
+ removeStyle: (id: string) => void;
4047
+ addStyle: (id: string, style: CSSStyleDeclaration[`cssText`]) => void;
4048
+ };
4049
+ getViewportDimensions: () => {
4050
+ width: number;
4051
+ height: number;
4052
+ } | undefined;
4053
+ isUsingVerticalWriting: () => boolean;
4054
+ getIsReady: () => boolean;
4055
+ };
4056
+ container: HTMLElement;
4057
+ item: Manifest[`spineItems`][number];
4058
+ minimumWidth: number;
4059
+ isImageType: () => boolean | undefined;
4060
+ }) => void;
4061
+ } | {
4062
+ name: `item.onAfterLayout`;
4063
+ fn: (payload: {
4064
+ item: Manifest[`spineItems`][number];
4065
+ blankPagePosition: `before` | `after` | `none`;
4066
+ minimumWidth: number;
4067
+ }) => void;
4068
+ } | {
4069
+ name: `item.onGetResource`;
4070
+ fn: (fetchResource: (item: Manifest[`spineItems`][number]) => Promise<Response>) => (item: Manifest[`spineItems`][number]) => Promise<Response>;
4071
+ } | {
4072
+ name: `viewportNavigator.onBeforeContainerCreated`;
4073
+ fn: (payload: HTMLElement) => HTMLElement;
4074
+ } | {
4075
+ name: `onViewportOffsetAdjust`;
4076
+ fn: () => void;
4077
+ };
4078
+
4079
+ declare type InputSettings = {
4080
+ forceSinglePageMode: boolean;
4081
+ pageTurnAnimation: `none` | `fade` | `slide`;
4082
+ pageTurnAnimationDuration: undefined | number;
4083
+ pageTurnDirection: `vertical` | `horizontal`;
4084
+ pageTurnMode: `controlled` | `scrollable`;
4085
+ navigationSnapThreshold: number;
4086
+ numberOfAdjacentSpineItemToPreLoad: number;
4087
+ };
4088
+
4089
+ export declare const isShallowEqual: <T = any, R = any>(objectA: T, objectB: R, options?: {
4090
+ customEqual?: (<T_1>(a: T_1, b: T_1) => boolean) | undefined;
4091
+ } | undefined) => boolean;
4092
+
4093
+ declare type ItemOnLoadHook = {
4094
+ name: `item.onLoad`;
4095
+ fn: (manipulableFrame: {
4096
+ frame: HTMLIFrameElement;
4097
+ removeStyle: (id: string) => void;
4098
+ item: Manifest[`spineItems`][number];
4099
+ addStyle: (id: string, style: CSSStyleDeclaration[`cssText`]) => void;
4100
+ }) => (() => void) | Observable<unknown> | void;
4101
+ };
4102
+
4103
+ declare type LastUserExpectedNavigation = undefined | {
4104
+ type: `navigate-from-previous-item`;
4105
+ } | {
4106
+ type: `navigate-from-next-item`;
4107
+ } | {
4108
+ type: `navigate-from-cfi`;
4109
+ data: string;
4110
+ } | {
4111
+ type: `navigate-from-anchor`;
4112
+ data: string;
4113
+ };
4114
+
4115
+ declare type LoadOptions = {
4116
+ cfi?: string | null;
4117
+ fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>;
4118
+ containerElement: HTMLElement;
4119
+ };
4120
+
4121
+ declare type Locator = ReturnType<typeof createLocationResolver>;
4122
+
4123
+ export { Manifest }
4124
+
4125
+ declare type ManipulableSpineItemCallback = Parameters<SpineItem[`manipulateSpineItem`]>[0];
4126
+
4127
+ declare type ManipulableSpineItemCallbackPayload = Parameters<ManipulableSpineItemCallback>[0];
4128
+
4129
+ declare type Navigation = {
4130
+ position: {
4131
+ x: number;
4132
+ y: number;
4133
+ spineItem?: SpineItem | undefined;
4134
+ };
4135
+ triggeredBy: `scroll` | `manual` | `adjust`;
4136
+ animation: false | `turn` | `snap`;
4137
+ lastUserExpectedNavigation: LastUserExpectedNavigation;
4138
+ };
4139
+
4140
+ declare type OutputSettings = InputSettings & {
4141
+ computedPageTurnMode: InputSettings[`pageTurnMode`];
4142
+ computedPageTurnDirection: InputSettings[`pageTurnDirection`];
4143
+ computedPageTurnAnimation: InputSettings[`pageTurnAnimation`];
4144
+ computedPageTurnAnimationDuration: number;
4145
+ computedSnapAnimationDuration: number;
4146
+ };
4147
+
4148
+ declare type Pagination = ReturnType<typeof createPagination>;
4149
+
4150
+ declare type PaginationInfo = {
4151
+ beginPageIndexInSpineItem: number | undefined;
4152
+ beginNumberOfPagesInSpineItem: number;
4153
+ beginCfi: string | undefined;
4154
+ beginSpineItemIndex: number | undefined;
4155
+ endPageIndexInSpineItem: number | undefined;
4156
+ endNumberOfPagesInSpineItem: number;
4157
+ endCfi: string | undefined;
4158
+ endSpineItemIndex: number | undefined;
4159
+ };
4160
+
4161
+ export declare type Reader = ReturnType<typeof createReader>;
4162
+
4163
+ declare type ReaderInternal = {
4164
+ context: Context;
4165
+ registerHook: RegisterHook;
4166
+ spine: Spine;
4167
+ viewportNavigator: ViewportNavigator;
4168
+ manipulateSpineItems: Spine["manipulateSpineItems"];
4169
+ manipulateSpineItem: Spine["manipulateSpineItem"];
4170
+ moveTo: ViewportNavigator["moveTo"];
4171
+ turnLeft: ViewportNavigator["turnLeft"];
4172
+ turnRight: ViewportNavigator["turnRight"];
4173
+ goToPageOfCurrentChapter: ViewportNavigator["goToPageOfCurrentChapter"];
4174
+ goToPage: ViewportNavigator["goToPage"];
4175
+ goToUrl: ViewportNavigator["goToUrl"];
4176
+ goToCfi: ViewportNavigator["goToCfi"];
4177
+ goToSpineItem: ViewportNavigator["goToSpineItem"];
4178
+ getFocusedSpineItemIndex: SpineItemManager["getFocusedSpineItemIndex"];
4179
+ getSpineItem: SpineItemManager["get"];
4180
+ getSpineItems: SpineItemManager["getAll"];
4181
+ getAbsolutePositionOf: SpineItemManager["getAbsolutePositionOf"];
4182
+ getSelection: Spine["getSelection"];
4183
+ isSelecting: Spine["isSelecting"];
4184
+ normalizeEventForViewport: Spine["normalizeEventForViewport"];
4185
+ getCfiMetaInformation: Spine["cfiLocator"]["getCfiMetaInformation"];
4186
+ resolveCfi: Spine["cfiLocator"]["resolveCfi"];
4187
+ generateCfi: Spine["cfiLocator"]["generateFromRange"];
4188
+ locator: Spine["locator"];
4189
+ getCurrentNavigationPosition: ViewportNavigator["getCurrentNavigationPosition"];
4190
+ getCurrentViewportPosition: ViewportNavigator["getCurrentViewportPosition"];
4191
+ layout: () => void;
4192
+ load: (manifest: Manifest, loadOptions: LoadOptions) => void;
4193
+ destroy: () => void;
4194
+ pagination: Pagination;
4195
+ spineItems$: Spine["$"]["spineItems$"];
4196
+ context$: Context["$"]["state$"];
4197
+ settings: {
4198
+ settings$: ReturnType<typeof createSettings>["$"]["settings$"];
4199
+ setSettings: (data: Partial<InputSettings>) => void;
4200
+ getSettings: Settings["getSettings"];
4201
+ };
4202
+ $: {
4203
+ state$: Observable<{
4204
+ supportedPageTurnAnimation: NonNullable<ContextSettings[`pageTurnAnimation`]>[];
4205
+ supportedPageTurnMode: NonNullable<ContextSettings[`pageTurnMode`]>[];
4206
+ supportedPageTurnDirection: NonNullable<ContextSettings[`pageTurnDirection`]>[];
4207
+ supportedComputedPageTurnDirection: NonNullable<ContextSettings[`pageTurnDirection`]>[];
4208
+ }>;
4209
+ loadStatus$: Observable<"idle" | "loading" | "ready">;
4210
+ selection$: Observable<{
4211
+ toString: () => string;
4212
+ getAnchorCfi: () => string | undefined;
4213
+ getFocusCfi: () => string | undefined;
4214
+ } | null>;
4215
+ viewportState$: Observable<"free" | "busy">;
4216
+ layout$: Spine["$"]["layout$"];
4217
+ itemsBeforeDestroy$: Spine["$"]["itemsBeforeDestroy$"];
4218
+ itemIsReady$: SpineItemManager["$"]["itemIsReady$"];
4219
+ destroy$: Observable<void>;
4220
+ };
4221
+ __debug: {
4222
+ pagination: Pagination;
4223
+ context: Context;
4224
+ spineItemManager: SpineItemManager;
4225
+ };
4226
+ };
4227
+
4228
+ export declare type ReaderSelection = ReturnType<typeof createSelection>;
4229
+
4230
+ export declare interface RegisterHook {
4231
+ (name: `item.onBeforeContainerCreated`, fn: Extract<Hook, {
4232
+ name: `item.onBeforeContainerCreated`;
4233
+ }>[`fn`]): void;
4234
+ (name: `item.onGetResource`, fn: Extract<Hook, {
4235
+ name: `item.onGetResource`;
4236
+ }>[`fn`]): void;
4237
+ (name: `item.onLayoutBeforeMeasurement`, fn: Extract<Hook, {
4238
+ name: `item.onLayoutBeforeMeasurement`;
4239
+ }>[`fn`]): void;
4240
+ (name: `item.onAfterLayout`, fn: Extract<Hook, {
4241
+ name: `item.onAfterLayout`;
4242
+ }>[`fn`]): void;
4243
+ (name: `onViewportOffsetAdjust`, fn: Extract<Hook, {
4244
+ name: `onViewportOffsetAdjust`;
4245
+ }>[`fn`]): void;
4246
+ (name: `item.onLoad`, fn: ItemOnLoadHook["fn"]): void;
4247
+ }
4248
+
4249
+ declare const Report_2: {
4250
+ namespace: (namespace: string) => {
4251
+ log: (...data: any[]) => void;
4252
+ warn: (...data: any[]) => void;
4253
+ error: (...data: any[]) => void;
4254
+ time: (name: string, targetDuration?: number) => () => void;
4255
+ logMetric: (performanceEntry: PerformanceEntry | {
4256
+ name: string;
4257
+ duration: number;
4258
+ }, targetDuration?: number) => void;
4259
+ measurePerformance: <F extends (...args: any[]) => any>(name: string, targetDuration: number | undefined, functionToMeasure: F, { disable }?: {
4260
+ disable?: boolean | undefined;
4261
+ }) => F | ((...args: Parameters<F>) => ReturnType<F>);
4262
+ };
4263
+ log: (...data: any[]) => void;
4264
+ warn: (...data: any[]) => void;
4265
+ error: (...data: any[]) => void;
4266
+ time: (name: string, targetDuration?: number) => () => void;
4267
+ logMetric: (performanceEntry: PerformanceEntry | {
4268
+ name: string;
4269
+ duration: number;
4270
+ }, targetDuration?: number) => void;
4271
+ measurePerformance: <F extends (...args: any[]) => any>(name: string, targetDuration: number | undefined, functionToMeasure: F, { disable }?: {
4272
+ disable?: boolean | undefined;
4273
+ }) => F | ((...args: Parameters<F>) => ReturnType<F>);
4274
+ };
4275
+ export { Report_2 as Report }
4276
+
4277
+ declare type RequireLayout = boolean;
4278
+
4279
+ declare type Settings = ReturnType<typeof createSettings>;
4280
+
4281
+ declare type SettingsInput = {
4282
+ pageHorizontalMargin?: number;
4283
+ pageVerticalMargin?: number;
4284
+ };
4285
+
4286
+ declare type Spine = {
4287
+ element$: Observable<HTMLElement>;
4288
+ getElement: () => HTMLElement | undefined;
4289
+ locator: Locator;
4290
+ spineItemLocator: SpineItemLocator;
4291
+ cfiLocator: CfiLocator;
4292
+ normalizeEventForViewport: ReturnType<typeof createEventsHelper>["normalizeEventForViewport"];
4293
+ manipulateSpineItems: (cb: (payload: ManipulableSpineItemCallbackPayload & {
4294
+ index: number;
4295
+ }) => RequireLayout) => void;
4296
+ manipulateSpineItem: (id: string, cb: Parameters<SpineItem[`manipulateSpineItem`]>[0]) => void;
4297
+ destroy: () => void;
4298
+ isSelecting: () => boolean | undefined;
4299
+ getSelection: () => Selection | undefined;
4300
+ adjustPagination: (position: ViewportNavigationEntry) => Observable<`free` | `busy`>;
4301
+ $: {
4302
+ $: Observable<Event_2>;
4303
+ layout$: Observable<boolean>;
4304
+ spineItems$: Observable<SpineItem[]>;
4305
+ itemsBeforeDestroy$: Observable<void>;
4306
+ };
4307
+ };
4308
+
4309
+ declare type SpineItem = ReturnType<typeof createSpineItem>;
4310
+
4311
+ declare type SpineItemLocator = ReturnType<typeof createLocationResolver_2>;
4312
+
4313
+ declare type SpineItemManager = ReturnType<typeof createSpineItemManager>;
4314
+
4315
+ declare class SpineItemNavigationPosition {
4316
+ __symbol: string;
4317
+ x: number;
4318
+ y: number;
4319
+ constructor(position: {
4320
+ x: number;
4321
+ y: number;
4322
+ });
4323
+ }
4324
+
4325
+ declare type SpineItemPosition = {
4326
+ x: number;
4327
+ y: number;
4328
+ __symbol?: `SpineItemPosition`;
4329
+ };
4330
+
4331
+ declare type SpinePosition = {
4332
+ x: number;
4333
+ y: number;
4334
+ __symbol?: `SpinePosition`;
4335
+ };
4336
+
4337
+ declare type State = Partial<Pick<LoadOptions, "containerElement" | "fetchResource">> & {
4338
+ manifest?: Manifest;
4339
+ hasVerticalWriting?: boolean;
4340
+ isUsingSpreadMode?: boolean;
4341
+ isFullyPrePaginated?: boolean;
4342
+ };
4343
+
4344
+ declare type Theme = (typeof defaultThemes)[number][`name`] | `publisher`;
4345
+
4346
+ declare type UnsafeSpineItemPosition = {
4347
+ x: number;
4348
+ y: number;
4349
+ __symbol?: `UnsafeSpineItemPosition` | `SpineItemPosition`;
4350
+ };
4351
+
4352
+ declare type UnsafeSpinePosition = {
4353
+ x: number;
4354
+ y: number;
4355
+ __symbol?: `UnsafeSpinePosition` | `SpinePosition`;
4356
+ };
4357
+
4358
+ declare type ViewportNavigationEntry = {
4359
+ x: number;
4360
+ y: number;
4361
+ spineItem?: SpineItem;
4362
+ };
4363
+
4364
+ declare type ViewportNavigator = ReturnType<typeof createViewportNavigator>;
4365
+
4366
+ export { }