@prose-reader/core 1.55.0 → 1.57.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.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { BehaviorSubject } from 'rxjs';
2
2
  import { Manifest } from '@prose-reader/shared';
3
3
  import { Observable } from 'rxjs';
4
+ import { Subject } from 'rxjs';
4
5
 
5
6
  declare type Api = {
6
7
  zoom: {
@@ -43,57 +44,69 @@ declare type ChapterInfo = {
43
44
  path: string;
44
45
  };
45
46
 
46
- declare type Context = ReturnType<typeof createContext>;
47
+ declare type ComputedSettings = Settings & {
48
+ computedPageTurnMode: Settings[`pageTurnMode`];
49
+ computedPageTurnDirection: Settings[`pageTurnDirection`];
50
+ computedPageTurnAnimation: Settings[`pageTurnAnimation`];
51
+ computedPageTurnAnimationDuration: number;
52
+ computedSnapAnimationDuration: number;
53
+ };
47
54
 
48
- declare type Context_2 = {
49
- load: (newManifest: Manifest, newLoadOptions: LoadOptions) => void;
50
- getManifest: () => Manifest | undefined;
51
- areAllItemsPrePaginated: () => boolean;
52
- getCalculatedInnerMargin: () => number;
53
- getVisibleAreaRect: () => {
54
- width: number;
55
- height: number;
56
- x: number;
57
- y: number;
58
- };
59
- isUsingSpreadMode: () => boolean | undefined;
60
- setHasVerticalWriting: (value: boolean) => void;
61
- getReadingDirection: () => Manifest[`readingDirection`] | undefined;
62
- getPageSize: () => {
63
- height: number;
64
- width: number;
55
+ declare class Context {
56
+ _stateSubject: BehaviorSubject<State>;
57
+ destroy$: Subject<void>;
58
+ state$: Observable<Partial<Pick<LoadOptions, "containerElement">> & {
59
+ manifest?: Manifest | undefined;
60
+ hasVerticalWriting?: boolean | undefined;
61
+ isUsingSpreadMode?: boolean | undefined;
62
+ isFullyPrePaginated?: boolean | undefined;
63
+ forceSinglePageMode?: boolean | undefined;
64
+ areAllItemsPrePaginated?: boolean | undefined;
65
+ calculatedInnerMargin: number;
66
+ marginTop: number;
67
+ marginBottom: number;
68
+ visibleAreaRect: {
69
+ width: number;
70
+ height: number;
71
+ x: number;
72
+ y: number;
65
73
  };
66
- setVisibleAreaRect: (options: {
67
- x: number;
68
- y: number;
69
- width: number;
70
- height: number;
71
- }) => void;
72
- isRTL: () => boolean;
73
- destroy: () => void;
74
- getState: () => State;
74
+ }>;
75
+ manifest$: Observable<Manifest>;
75
76
  containerElement$: Observable<HTMLElement>;
76
- isUsingSpreadMode$: Observable<boolean | undefined>;
77
77
  hasVerticalWriting$: Observable<boolean>;
78
- $: {
79
- destroy$: Observable<void>;
80
- state$: Observable<State>;
81
- manifest$: Observable<Manifest>;
78
+ isUsingSpreadMode$: Observable<boolean | undefined>;
79
+ update(newState: {
80
+ manifest?: Manifest;
81
+ forceSinglePageMode?: boolean;
82
+ visibleAreaRect?: State["visibleAreaRect"];
83
+ marginTop?: number;
84
+ marginBottom?: number;
85
+ hasVerticalWriting?: boolean;
86
+ }): void;
87
+ isRTL: () => boolean;
88
+ get state(): State;
89
+ get manifest(): Manifest | undefined;
90
+ get readingDirection(): "ltr" | "rtl" | undefined;
91
+ getPageSize(): {
92
+ width: number;
93
+ height: number;
82
94
  };
83
- };
95
+ destroy: () => void;
96
+ }
84
97
 
85
- declare type ContextSettings = Partial<InputSettings>;
98
+ declare type ContextSettings = Partial<Settings>;
86
99
 
87
100
  declare const createCfiLocator: ({ spineItemManager, spineItemLocator, }: {
88
101
  spineItemManager: SpineItemManager;
89
- context: Context_2;
102
+ context: Context;
90
103
  spineItemLocator: ReturnType<typeof createLocationResolver_2>;
91
104
  }) => {
92
105
  getSpineItemFromCfi: (cfi: string) => {
93
106
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
94
107
  blankPagePosition: "after" | "before" | "none";
95
108
  minimumWidth: number;
96
- spreadPosition: "none" | "left" | "right";
109
+ spreadPosition: "none" | "right" | "left";
97
110
  }) => {
98
111
  width: number;
99
112
  height: number;
@@ -205,7 +218,7 @@ declare const createCfiLocator: ({ spineItemManager, spineItemLocator, }: {
205
218
  })) => boolean) => boolean;
206
219
  executeOnLayoutBeforeMeasurementHook: (options: {
207
220
  minimumWidth: number;
208
- }) => void;
221
+ }) => Observable<[void | Observable<void>]>;
209
222
  selectionTracker: {
210
223
  track: (frameToTrack: HTMLIFrameElement) => void;
211
224
  destroy: () => void;
@@ -265,7 +278,7 @@ declare const createCfiLocator: ({ spineItemManager, spineItemLocator, }: {
265
278
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
266
279
  blankPagePosition: "after" | "before" | "none";
267
280
  minimumWidth: number;
268
- spreadPosition: "none" | "left" | "right";
281
+ spreadPosition: "none" | "right" | "left";
269
282
  }) => {
270
283
  width: number;
271
284
  height: number;
@@ -377,7 +390,7 @@ declare const createCfiLocator: ({ spineItemManager, spineItemLocator, }: {
377
390
  })) => boolean) => boolean;
378
391
  executeOnLayoutBeforeMeasurementHook: (options: {
379
392
  minimumWidth: number;
380
- }) => void;
393
+ }) => Observable<[void | Observable<void>]>;
381
394
  selectionTracker: {
382
395
  track: (frameToTrack: HTMLIFrameElement) => void;
383
396
  destroy: () => void;
@@ -451,22 +464,11 @@ declare const createCfiLocator: ({ spineItemManager, spineItemLocator, }: {
451
464
  };
452
465
  };
453
466
 
454
- declare const createContext: (settings: ReturnType<typeof createSettings>) => Context_2;
455
-
456
- declare const createEventsHelper: ({ iframeEventBridgeElement$, locator, }: {
457
- iframeEventBridgeElement$: BehaviorSubject<HTMLElement | undefined>;
458
- spineItemManager: SpineItemManager;
459
- context: Context_2;
460
- locator: ReturnType<typeof createLocationResolver>;
461
- }) => {
462
- normalizeEventForViewport: <E extends MouseEvent | PointerEvent | TouchEvent>(event: E) => E;
463
- };
464
-
465
467
  declare const createLocationResolver: ({ spineItemManager, context, spineItemLocator, settings }: {
466
468
  spineItemManager: SpineItemManager;
467
- context: Context_2;
469
+ context: Context;
468
470
  spineItemLocator: ReturnType<typeof createLocationResolver_2>;
469
- settings: Settings;
471
+ settings: SettingsManager;
470
472
  }) => {
471
473
  getSpinePositionFromSpineItemPosition: (spineItemPosition: SpineItemNavigationPosition | SpineItemPosition, spineItem: SpineItem) => SpinePosition;
472
474
  getSpinePositionFromSpineItem: (spineItem: SpineItem) => SpinePosition;
@@ -475,7 +477,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
475
477
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
476
478
  blankPagePosition: "after" | "before" | "none";
477
479
  minimumWidth: number;
478
- spreadPosition: "none" | "left" | "right";
480
+ spreadPosition: "none" | "right" | "left";
479
481
  }) => {
480
482
  width: number;
481
483
  height: number;
@@ -587,7 +589,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
587
589
  })) => boolean) => boolean;
588
590
  executeOnLayoutBeforeMeasurementHook: (options: {
589
591
  minimumWidth: number;
590
- }) => void;
592
+ }) => Observable<[void | Observable<void>]>;
591
593
  selectionTracker: {
592
594
  track: (frameToTrack: HTMLIFrameElement) => void;
593
595
  destroy: () => void;
@@ -644,7 +646,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
644
646
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
645
647
  blankPagePosition: "after" | "before" | "none";
646
648
  minimumWidth: number;
647
- spreadPosition: "none" | "left" | "right";
649
+ spreadPosition: "none" | "right" | "left";
648
650
  }) => {
649
651
  width: number;
650
652
  height: number;
@@ -756,7 +758,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
756
758
  })) => boolean) => boolean;
757
759
  executeOnLayoutBeforeMeasurementHook: (options: {
758
760
  minimumWidth: number;
759
- }) => void;
761
+ }) => Observable<[void | Observable<void>]>;
760
762
  selectionTracker: {
761
763
  track: (frameToTrack: HTMLIFrameElement) => void;
762
764
  destroy: () => void;
@@ -812,7 +814,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
812
814
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
813
815
  blankPagePosition: "after" | "before" | "none";
814
816
  minimumWidth: number;
815
- spreadPosition: "none" | "left" | "right";
817
+ spreadPosition: "none" | "right" | "left";
816
818
  }) => {
817
819
  width: number;
818
820
  height: number;
@@ -924,7 +926,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
924
926
  })) => boolean) => boolean;
925
927
  executeOnLayoutBeforeMeasurementHook: (options: {
926
928
  minimumWidth: number;
927
- }) => void;
929
+ }) => Observable<[void | Observable<void>]>;
928
930
  selectionTracker: {
929
931
  track: (frameToTrack: HTMLIFrameElement) => void;
930
932
  destroy: () => void;
@@ -981,7 +983,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
981
983
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
982
984
  blankPagePosition: "after" | "before" | "none";
983
985
  minimumWidth: number;
984
- spreadPosition: "none" | "left" | "right";
986
+ spreadPosition: "none" | "right" | "left";
985
987
  }) => {
986
988
  width: number;
987
989
  height: number;
@@ -1093,7 +1095,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
1093
1095
  })) => boolean) => boolean;
1094
1096
  executeOnLayoutBeforeMeasurementHook: (options: {
1095
1097
  minimumWidth: number;
1096
- }) => void;
1098
+ }) => Observable<[void | Observable<void>]>;
1097
1099
  selectionTracker: {
1098
1100
  track: (frameToTrack: HTMLIFrameElement) => void;
1099
1101
  destroy: () => void;
@@ -1156,7 +1158,7 @@ declare const createLocationResolver: ({ spineItemManager, context, spineItemLoc
1156
1158
  };
1157
1159
 
1158
1160
  declare const createLocationResolver_2: ({ context }: {
1159
- context: Context_2;
1161
+ context: Context;
1160
1162
  }) => {
1161
1163
  getSpineItemPositionFromNode: (node: Node, offset: number, spineItem: SpineItem) => {
1162
1164
  x: number;
@@ -1177,7 +1179,7 @@ declare const createLocationResolver_2: ({ context }: {
1177
1179
  };
1178
1180
 
1179
1181
  declare const createPagination: ({ context }: {
1180
- context: Context_2;
1182
+ context: Context;
1181
1183
  spineItemManager: SpineItemManager;
1182
1184
  }) => {
1183
1185
  destroy: () => void;
@@ -1222,17 +1224,15 @@ declare const createPagination: ({ context }: {
1222
1224
  paginationInfo$: Observable<PaginationInfo>;
1223
1225
  };
1224
1226
 
1225
- export declare const createReader: (options: {
1226
- hooks?: Hook[] | undefined;
1227
- } & Pick<Partial<InputSettings>, "pageTurnMode" | "pageTurnDirection" | "pageTurnAnimation" | "forceSinglePageMode" | "navigationSnapThreshold" | "numberOfAdjacentSpineItemToPreLoad"> & {
1227
+ export declare const createReader: (options: Partial<Settings> & {
1228
1228
  theme?: Theme | undefined;
1229
1229
  } & SettingsInput & {
1230
1230
  layoutAutoResize?: false | "container" | undefined;
1231
1231
  } & {
1232
1232
  fontScale?: number | undefined;
1233
1233
  lineHeight?: number | "publisher" | undefined;
1234
- fontWeight?: 300 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
1235
- fontJustification?: "center" | "left" | "right" | "justify" | "publisher" | undefined;
1234
+ fontWeight?: 200 | 300 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
1235
+ fontJustification?: "center" | "right" | "left" | "justify" | "publisher" | undefined;
1236
1236
  } & {
1237
1237
  loadingElementCreate?: ((options: {
1238
1238
  container: HTMLElement;
@@ -1247,15 +1247,19 @@ export declare const createReader: (options: {
1247
1247
  };
1248
1248
  }) => HTMLElement) | undefined;
1249
1249
  }) => Omit<Omit<Omit<Omit<ReaderInternal & {
1250
+ events: {
1251
+ normalizeEventForViewport: <E extends MouseEvent | PointerEvent | TouchEvent>(event: E) => E;
1252
+ };
1253
+ } & {
1250
1254
  progression: {
1251
- getPercentageEstimate: (context: Context_2, currentSpineIndex: number, numberOfPages: number, pageIndex: number, currentPosition: {
1255
+ getPercentageEstimate: (context: Context, currentSpineIndex: number, numberOfPages: number, pageIndex: number, currentPosition: {
1252
1256
  x: number;
1253
1257
  y: number;
1254
1258
  }, currentItem: {
1255
1259
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1256
1260
  blankPagePosition: "after" | "before" | "none";
1257
1261
  minimumWidth: number;
1258
- spreadPosition: "none" | "left" | "right";
1262
+ spreadPosition: "none" | "right" | "left";
1259
1263
  }) => {
1260
1264
  width: number;
1261
1265
  height: number;
@@ -1367,7 +1371,7 @@ export declare const createReader: (options: {
1367
1371
  })) => boolean) => boolean;
1368
1372
  executeOnLayoutBeforeMeasurementHook: (options: {
1369
1373
  minimumWidth: number;
1370
- }) => void;
1374
+ }) => Observable<[void | Observable<void>]>;
1371
1375
  selectionTracker: {
1372
1376
  track: (frameToTrack: HTMLIFrameElement) => void;
1373
1377
  destroy: () => void;
@@ -1420,14 +1424,14 @@ export declare const createReader: (options: {
1420
1424
  isReady$: Observable<boolean>;
1421
1425
  };
1422
1426
  }) => number;
1423
- getScrollPercentageWithinItem: (context: Context_2, currentPosition: {
1427
+ getScrollPercentageWithinItem: (context: Context, currentPosition: {
1424
1428
  x: number;
1425
1429
  y: number;
1426
1430
  }, currentItem: {
1427
1431
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1428
1432
  blankPagePosition: "after" | "before" | "none";
1429
1433
  minimumWidth: number;
1430
- spreadPosition: "none" | "left" | "right";
1434
+ spreadPosition: "none" | "right" | "left";
1431
1435
  }) => {
1432
1436
  width: number;
1433
1437
  height: number;
@@ -1539,7 +1543,7 @@ export declare const createReader: (options: {
1539
1543
  })) => boolean) => boolean;
1540
1544
  executeOnLayoutBeforeMeasurementHook: (options: {
1541
1545
  minimumWidth: number;
1542
- }) => void;
1546
+ }) => Observable<[void | Observable<void>]>;
1543
1547
  selectionTracker: {
1544
1548
  track: (frameToTrack: HTMLIFrameElement) => void;
1545
1549
  destroy: () => void;
@@ -1601,7 +1605,7 @@ export declare const createReader: (options: {
1601
1605
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1602
1606
  blankPagePosition: "after" | "before" | "none";
1603
1607
  minimumWidth: number;
1604
- spreadPosition: "none" | "left" | "right";
1608
+ spreadPosition: "none" | "right" | "left";
1605
1609
  }) => {
1606
1610
  width: number;
1607
1611
  height: number;
@@ -1713,7 +1717,7 @@ export declare const createReader: (options: {
1713
1717
  })) => boolean) => boolean;
1714
1718
  executeOnLayoutBeforeMeasurementHook: (options: {
1715
1719
  minimumWidth: number;
1716
- }) => void;
1720
+ }) => Observable<[void | Observable<void>]>;
1717
1721
  selectionTracker: {
1718
1722
  track: (frameToTrack: HTMLIFrameElement) => void;
1719
1723
  destroy: () => void;
@@ -1778,7 +1782,7 @@ export declare const createReader: (options: {
1778
1782
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1779
1783
  blankPagePosition: "after" | "before" | "none";
1780
1784
  minimumWidth: number;
1781
- spreadPosition: "none" | "left" | "right";
1785
+ spreadPosition: "none" | "right" | "left";
1782
1786
  }) => {
1783
1787
  width: number;
1784
1788
  height: number;
@@ -1890,7 +1894,7 @@ export declare const createReader: (options: {
1890
1894
  })) => boolean) => boolean;
1891
1895
  executeOnLayoutBeforeMeasurementHook: (options: {
1892
1896
  minimumWidth: number;
1893
- }) => void;
1897
+ }) => Observable<[void | Observable<void>]>;
1894
1898
  selectionTracker: {
1895
1899
  track: (frameToTrack: HTMLIFrameElement) => void;
1896
1900
  destroy: () => void;
@@ -1955,7 +1959,7 @@ export declare const createReader: (options: {
1955
1959
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
1956
1960
  blankPagePosition: "after" | "before" | "none";
1957
1961
  minimumWidth: number;
1958
- spreadPosition: "none" | "left" | "right";
1962
+ spreadPosition: "none" | "right" | "left";
1959
1963
  }) => {
1960
1964
  width: number;
1961
1965
  height: number;
@@ -2067,7 +2071,7 @@ export declare const createReader: (options: {
2067
2071
  })) => boolean) => boolean;
2068
2072
  executeOnLayoutBeforeMeasurementHook: (options: {
2069
2073
  minimumWidth: number;
2070
- }) => void;
2074
+ }) => Observable<[void | Observable<void>]>;
2071
2075
  selectionTracker: {
2072
2076
  track: (frameToTrack: HTMLIFrameElement) => void;
2073
2077
  destroy: () => void;
@@ -2132,7 +2136,7 @@ export declare const createReader: (options: {
2132
2136
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2133
2137
  blankPagePosition: "after" | "before" | "none";
2134
2138
  minimumWidth: number;
2135
- spreadPosition: "none" | "left" | "right";
2139
+ spreadPosition: "none" | "right" | "left";
2136
2140
  }) => {
2137
2141
  width: number;
2138
2142
  height: number;
@@ -2244,7 +2248,7 @@ export declare const createReader: (options: {
2244
2248
  })) => boolean) => boolean;
2245
2249
  executeOnLayoutBeforeMeasurementHook: (options: {
2246
2250
  minimumWidth: number;
2247
- }) => void;
2251
+ }) => Observable<[void | Observable<void>]>;
2248
2252
  selectionTracker: {
2249
2253
  track: (frameToTrack: HTMLIFrameElement) => void;
2250
2254
  destroy: () => void;
@@ -2334,25 +2338,15 @@ export declare const createReader: (options: {
2334
2338
  }>;
2335
2339
  };
2336
2340
  } & Api, "settings"> & {
2337
- settings: Omit<{
2338
- settings$: Observable<InputSettings & {
2339
- computedPageTurnMode: "controlled" | "scrollable";
2340
- computedPageTurnDirection: "vertical" | "horizontal";
2341
- computedPageTurnAnimation: "none" | "fade" | "slide";
2342
- computedPageTurnAnimationDuration: number;
2343
- computedSnapAnimationDuration: number;
2344
- }>;
2345
- setSettings: (data: Partial<InputSettings>) => void;
2346
- getSettings: () => OutputSettings;
2347
- }, "settings$" | "setSettings"> & {
2348
- settings$: Observable<InputSettings & {
2341
+ settings: Omit<SettingsManager, "setSettings" | "settings$"> & {
2342
+ settings$: Observable<Settings & {
2349
2343
  computedPageTurnMode: "controlled" | "scrollable";
2350
2344
  computedPageTurnDirection: "vertical" | "horizontal";
2351
2345
  computedPageTurnAnimation: "none" | "fade" | "slide";
2352
2346
  computedPageTurnAnimationDuration: number;
2353
2347
  computedSnapAnimationDuration: number;
2354
2348
  } & Required<SettingsInput>>;
2355
- setSettings: (settings: Partial<InputSettings> & SettingsInput) => void;
2349
+ setSettings: (settings: Partial<Settings> & SettingsInput) => void;
2356
2350
  };
2357
2351
  } & {
2358
2352
  utils: {
@@ -2367,27 +2361,17 @@ export declare const createReader: (options: {
2367
2361
  }>;
2368
2362
  };
2369
2363
  }, "settings"> & {
2370
- settings: Omit<Omit<{
2371
- settings$: Observable<InputSettings & {
2372
- computedPageTurnMode: "controlled" | "scrollable";
2373
- computedPageTurnDirection: "vertical" | "horizontal";
2374
- computedPageTurnAnimation: "none" | "fade" | "slide";
2375
- computedPageTurnAnimationDuration: number;
2376
- computedSnapAnimationDuration: number;
2377
- }>;
2378
- setSettings: (data: Partial<InputSettings>) => void;
2379
- getSettings: () => OutputSettings;
2380
- }, "settings$" | "setSettings"> & {
2381
- settings$: Observable<InputSettings & {
2364
+ settings: Omit<Omit<SettingsManager, "setSettings" | "settings$"> & {
2365
+ settings$: Observable<Settings & {
2382
2366
  computedPageTurnMode: "controlled" | "scrollable";
2383
2367
  computedPageTurnDirection: "vertical" | "horizontal";
2384
2368
  computedPageTurnAnimation: "none" | "fade" | "slide";
2385
2369
  computedPageTurnAnimationDuration: number;
2386
2370
  computedSnapAnimationDuration: number;
2387
2371
  } & Required<SettingsInput>>;
2388
- setSettings: (settings: Partial<InputSettings> & SettingsInput) => void;
2389
- }, "settings$" | "setSettings"> & {
2390
- settings$: Observable<InputSettings & {
2372
+ setSettings: (settings: Partial<Settings> & SettingsInput) => void;
2373
+ }, "setSettings" | "settings$"> & {
2374
+ settings$: Observable<Settings & {
2391
2375
  computedPageTurnMode: "controlled" | "scrollable";
2392
2376
  computedPageTurnDirection: "vertical" | "horizontal";
2393
2377
  computedPageTurnAnimation: "none" | "fade" | "slide";
@@ -2396,14 +2380,14 @@ export declare const createReader: (options: {
2396
2380
  } & Required<SettingsInput> & Required<{
2397
2381
  fontScale?: number | undefined;
2398
2382
  lineHeight?: number | "publisher" | undefined;
2399
- fontWeight?: 300 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
2400
- fontJustification?: "center" | "left" | "right" | "justify" | "publisher" | undefined;
2383
+ fontWeight?: 200 | 300 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
2384
+ fontJustification?: "center" | "right" | "left" | "justify" | "publisher" | undefined;
2401
2385
  }>>;
2402
- setSettings: (settings: Partial<InputSettings> & SettingsInput & {
2386
+ setSettings: (settings: Partial<Settings> & SettingsInput & {
2403
2387
  fontScale?: number | undefined;
2404
2388
  lineHeight?: number | "publisher" | undefined;
2405
- fontWeight?: 300 | 200 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
2406
- fontJustification?: "center" | "left" | "right" | "justify" | "publisher" | undefined;
2389
+ fontWeight?: 200 | 300 | 100 | 400 | 500 | 600 | 700 | 800 | 900 | "publisher" | undefined;
2390
+ fontJustification?: "center" | "right" | "left" | "justify" | "publisher" | undefined;
2407
2391
  }) => void;
2408
2392
  };
2409
2393
  } & {
@@ -2422,7 +2406,7 @@ export declare const createReader: (options: {
2422
2406
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2423
2407
  blankPagePosition: "after" | "before" | "none";
2424
2408
  minimumWidth: number;
2425
- spreadPosition: "none" | "left" | "right";
2409
+ spreadPosition: "none" | "right" | "left";
2426
2410
  }) => {
2427
2411
  width: number;
2428
2412
  height: number;
@@ -2534,7 +2518,7 @@ export declare const createReader: (options: {
2534
2518
  })) => boolean) => boolean;
2535
2519
  executeOnLayoutBeforeMeasurementHook: (options: {
2536
2520
  minimumWidth: number;
2537
- }) => void;
2521
+ }) => Observable<[void | Observable<void>]>;
2538
2522
  selectionTracker: {
2539
2523
  track: (frameToTrack: HTMLIFrameElement) => void;
2540
2524
  destroy: () => void;
@@ -2599,7 +2583,7 @@ export declare const createReader: (options: {
2599
2583
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2600
2584
  blankPagePosition: "after" | "before" | "none";
2601
2585
  minimumWidth: number;
2602
- spreadPosition: "none" | "left" | "right";
2586
+ spreadPosition: "none" | "right" | "left";
2603
2587
  }) => {
2604
2588
  width: number;
2605
2589
  height: number;
@@ -2711,7 +2695,7 @@ export declare const createReader: (options: {
2711
2695
  })) => boolean) => boolean;
2712
2696
  executeOnLayoutBeforeMeasurementHook: (options: {
2713
2697
  minimumWidth: number;
2714
- }) => void;
2698
+ }) => Observable<[void | Observable<void>]>;
2715
2699
  selectionTracker: {
2716
2700
  track: (frameToTrack: HTMLIFrameElement) => void;
2717
2701
  destroy: () => void;
@@ -2776,7 +2760,7 @@ export declare const createReader: (options: {
2776
2760
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2777
2761
  blankPagePosition: "after" | "before" | "none";
2778
2762
  minimumWidth: number;
2779
- spreadPosition: "none" | "left" | "right";
2763
+ spreadPosition: "none" | "right" | "left";
2780
2764
  }) => {
2781
2765
  width: number;
2782
2766
  height: number;
@@ -2888,7 +2872,7 @@ export declare const createReader: (options: {
2888
2872
  })) => boolean) => boolean;
2889
2873
  executeOnLayoutBeforeMeasurementHook: (options: {
2890
2874
  minimumWidth: number;
2891
- }) => void;
2875
+ }) => Observable<[void | Observable<void>]>;
2892
2876
  selectionTracker: {
2893
2877
  track: (frameToTrack: HTMLIFrameElement) => void;
2894
2878
  destroy: () => void;
@@ -2953,7 +2937,7 @@ export declare const createReader: (options: {
2953
2937
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
2954
2938
  blankPagePosition: "after" | "before" | "none";
2955
2939
  minimumWidth: number;
2956
- spreadPosition: "none" | "left" | "right";
2940
+ spreadPosition: "none" | "right" | "left";
2957
2941
  }) => {
2958
2942
  width: number;
2959
2943
  height: number;
@@ -3065,7 +3049,7 @@ export declare const createReader: (options: {
3065
3049
  })) => boolean) => boolean;
3066
3050
  executeOnLayoutBeforeMeasurementHook: (options: {
3067
3051
  minimumWidth: number;
3068
- }) => void;
3052
+ }) => Observable<[void | Observable<void>]>;
3069
3053
  selectionTracker: {
3070
3054
  track: (frameToTrack: HTMLIFrameElement) => void;
3071
3055
  destroy: () => void;
@@ -3140,41 +3124,18 @@ declare const createSelection: (selection: Selection, item: Manifest[`spineItems
3140
3124
  getFocusCfi: () => string | undefined;
3141
3125
  };
3142
3126
 
3143
- declare const createSettings: (initialSettings: Partial<InputSettings>) => {
3144
- getSettings: () => OutputSettings;
3145
- setSettings: (newSettings: Partial<InputSettings>, options: {
3146
- hasVerticalWriting?: boolean;
3147
- manifest?: Manifest | undefined;
3148
- }) => void;
3149
- recompute: (options: {
3150
- hasVerticalWriting?: boolean;
3151
- manifest?: Manifest | undefined;
3152
- }) => void;
3153
- destroy: () => void;
3154
- $: {
3155
- settings$: Observable<InputSettings & {
3156
- computedPageTurnMode: "controlled" | "scrollable";
3157
- computedPageTurnDirection: "vertical" | "horizontal";
3158
- computedPageTurnAnimation: "none" | "fade" | "slide";
3159
- computedPageTurnAnimationDuration: number;
3160
- computedSnapAnimationDuration: number;
3161
- }>;
3162
- };
3163
- };
3164
-
3165
- declare const createSpineItem: ({ item, context, containerElement, iframeEventBridgeElement$, hooks$, viewportState$, settings }: {
3127
+ declare const createSpineItem: ({ item, context, containerElement, viewportState$, settings, hookManager }: {
3166
3128
  item: Manifest[`spineItems`][number];
3167
3129
  containerElement: HTMLElement;
3168
- iframeEventBridgeElement$: BehaviorSubject<HTMLElement | undefined>;
3169
- context: Context_2;
3170
- hooks$: BehaviorSubject<Hook[]>;
3130
+ context: Context;
3171
3131
  viewportState$: Observable<`free` | `busy`>;
3172
- settings: Settings;
3132
+ settings: SettingsManager;
3133
+ hookManager: HookManager;
3173
3134
  }) => {
3174
3135
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3175
3136
  blankPagePosition: "after" | "before" | "none";
3176
3137
  minimumWidth: number;
3177
- spreadPosition: "none" | "left" | "right";
3138
+ spreadPosition: "none" | "right" | "left";
3178
3139
  }) => {
3179
3140
  width: number;
3180
3141
  height: number;
@@ -3286,7 +3247,7 @@ declare const createSpineItem: ({ item, context, containerElement, iframeEventBr
3286
3247
  })) => boolean) => boolean;
3287
3248
  executeOnLayoutBeforeMeasurementHook: (options: {
3288
3249
  minimumWidth: number;
3289
- }) => void;
3250
+ }) => Observable<[void | Observable<void>]>;
3290
3251
  selectionTracker: {
3291
3252
  track: (frameToTrack: HTMLIFrameElement) => void;
3292
3253
  destroy: () => void;
@@ -3341,8 +3302,8 @@ declare const createSpineItem: ({ item, context, containerElement, iframeEventBr
3341
3302
  };
3342
3303
 
3343
3304
  declare const createSpineItemManager: ({ context, settings }: {
3344
- context: Context_2;
3345
- settings: Settings;
3305
+ context: Context;
3306
+ settings: SettingsManager;
3346
3307
  }) => {
3347
3308
  destroyItems: () => void;
3348
3309
  add: (spineItem: SpineItem) => void;
@@ -3350,7 +3311,7 @@ declare const createSpineItemManager: ({ context, settings }: {
3350
3311
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3351
3312
  blankPagePosition: "after" | "before" | "none";
3352
3313
  minimumWidth: number;
3353
- spreadPosition: "none" | "left" | "right";
3314
+ spreadPosition: "none" | "right" | "left";
3354
3315
  }) => {
3355
3316
  width: number;
3356
3317
  height: number;
@@ -3462,7 +3423,7 @@ declare const createSpineItemManager: ({ context, settings }: {
3462
3423
  })) => boolean) => boolean;
3463
3424
  executeOnLayoutBeforeMeasurementHook: (options: {
3464
3425
  minimumWidth: number;
3465
- }) => void;
3426
+ }) => Observable<[void | Observable<void>]>;
3466
3427
  selectionTracker: {
3467
3428
  track: (frameToTrack: HTMLIFrameElement) => void;
3468
3429
  destroy: () => void;
@@ -3519,7 +3480,7 @@ declare const createSpineItemManager: ({ context, settings }: {
3519
3480
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3520
3481
  blankPagePosition: "after" | "before" | "none";
3521
3482
  minimumWidth: number;
3522
- spreadPosition: "none" | "left" | "right";
3483
+ spreadPosition: "none" | "right" | "left";
3523
3484
  }) => {
3524
3485
  width: number;
3525
3486
  height: number;
@@ -3631,7 +3592,7 @@ declare const createSpineItemManager: ({ context, settings }: {
3631
3592
  })) => boolean) => boolean;
3632
3593
  executeOnLayoutBeforeMeasurementHook: (options: {
3633
3594
  minimumWidth: number;
3634
- }) => void;
3595
+ }) => Observable<[void | Observable<void>]>;
3635
3596
  selectionTracker: {
3636
3597
  track: (frameToTrack: HTMLIFrameElement) => void;
3637
3598
  destroy: () => void;
@@ -3701,7 +3662,7 @@ declare const createSpineItemManager: ({ context, settings }: {
3701
3662
  layout: ({ blankPagePosition, minimumWidth, spreadPosition, }: {
3702
3663
  blankPagePosition: "after" | "before" | "none";
3703
3664
  minimumWidth: number;
3704
- spreadPosition: "none" | "left" | "right";
3665
+ spreadPosition: "none" | "right" | "left";
3705
3666
  }) => {
3706
3667
  width: number;
3707
3668
  height: number;
@@ -3813,7 +3774,7 @@ declare const createSpineItemManager: ({ context, settings }: {
3813
3774
  })) => boolean) => boolean;
3814
3775
  executeOnLayoutBeforeMeasurementHook: (options: {
3815
3776
  minimumWidth: number;
3816
- }) => void;
3777
+ }) => Observable<[void | Observable<void>]>;
3817
3778
  selectionTracker: {
3818
3779
  track: (frameToTrack: HTMLIFrameElement) => void;
3819
3780
  destroy: () => void;
@@ -3889,16 +3850,16 @@ declare const createSpineItemManager: ({ context, settings }: {
3889
3850
  };
3890
3851
  };
3891
3852
 
3892
- declare const createViewportNavigator: ({ spineItemManager, context, pagination, parentElement$, cfiLocator, spineLocator, hooks$, spine, settings, }: {
3853
+ declare const createViewportNavigator: ({ spineItemManager, context, pagination, parentElement$, cfiLocator, spineLocator, hookManager, spine, settings, }: {
3893
3854
  spineItemManager: SpineItemManager;
3894
3855
  pagination: Pagination;
3895
- context: Context_2;
3856
+ context: Context;
3896
3857
  parentElement$: BehaviorSubject<HTMLElement | undefined>;
3897
3858
  cfiLocator: ReturnType<typeof createCfiLocator>;
3898
3859
  spineLocator: ReturnType<typeof createLocationResolver>;
3899
- hooks$: BehaviorSubject<Hook[]>;
3860
+ hookManager: HookManager;
3900
3861
  spine: Spine;
3901
- settings: Settings;
3862
+ settings: SettingsManager;
3902
3863
  }) => {
3903
3864
  destroy: () => void;
3904
3865
  layout: () => void;
@@ -3986,12 +3947,29 @@ declare type ExtraPaginationInfo = {
3986
3947
 
3987
3948
  export declare const groupBy: <T, K extends string | number | symbol>(list: T[], getKey: (item: T) => K) => Record<K, T[]>;
3988
3949
 
3989
- declare type Hook = ItemOnLoadHook | {
3990
- name: `item.onBeforeContainerCreated`;
3991
- fn: (payload: HTMLElement) => HTMLElement;
3950
+ declare type Hook = {
3951
+ name: `item.onLoad`;
3952
+ runFn: (params: {
3953
+ destroy$: Observable<void>;
3954
+ destroy: (fn: UserDestroyFn) => void;
3955
+ itemId: string;
3956
+ frame: HTMLIFrameElement;
3957
+ }) => Observable<void>;
3958
+ } | {
3959
+ name: "item.onAfterLayout";
3960
+ runFn: (params: {
3961
+ blankPagePosition: "before" | "after" | "none";
3962
+ item: Manifest["spineItems"][number];
3963
+ minimumWidth: number;
3964
+ }) => void;
3965
+ } | {
3966
+ name: "item.onBeforeContainerCreated";
3967
+ runFn: (params: {
3968
+ element: HTMLElement;
3969
+ }) => void;
3992
3970
  } | {
3993
- name: `item.onLayoutBeforeMeasurement`;
3994
- fn: (payload: {
3971
+ name: "item.onLayoutBeforeMeasurement";
3972
+ runFn: (params: {
3995
3973
  frame: {
3996
3974
  getManipulableFrame: () => undefined | {
3997
3975
  removeStyle: (id: string) => void;
@@ -4010,47 +3988,39 @@ declare type Hook = ItemOnLoadHook | {
4010
3988
  isImageType: () => boolean | undefined;
4011
3989
  }) => void;
4012
3990
  } | {
4013
- name: `item.onAfterLayout`;
4014
- fn: (payload: {
4015
- item: Manifest[`spineItems`][number];
4016
- blankPagePosition: `before` | `after` | `none`;
4017
- minimumWidth: number;
4018
- }) => void;
4019
- } | {
4020
- name: `item.onGetResource`;
4021
- fn: (fetchResource: (item: Manifest[`spineItems`][number]) => Promise<Response>) => (item: Manifest[`spineItems`][number]) => Promise<Response>;
3991
+ name: "onViewportOffsetAdjust";
3992
+ runFn: (params: void) => void;
4022
3993
  } | {
4023
3994
  name: `viewportNavigator.onBeforeContainerCreated`;
4024
- fn: (payload: HTMLElement) => HTMLElement;
4025
- } | {
4026
- name: `onViewportOffsetAdjust`;
4027
- fn: () => void;
3995
+ runFn: (params: {
3996
+ element: HTMLElement;
3997
+ }) => void;
4028
3998
  };
4029
3999
 
4030
- declare type InputSettings = {
4031
- forceSinglePageMode: boolean;
4032
- pageTurnAnimation: `none` | `fade` | `slide`;
4033
- pageTurnAnimationDuration: undefined | number;
4034
- pageTurnDirection: `vertical` | `horizontal`;
4035
- pageTurnMode: `controlled` | `scrollable`;
4036
- navigationSnapThreshold: number;
4037
- numberOfAdjacentSpineItemToPreLoad: number;
4000
+ declare type HookExecution = {
4001
+ name: string;
4002
+ id: string | undefined;
4003
+ destroyFn: () => Observable<unknown>;
4004
+ ref: Hook;
4038
4005
  };
4039
4006
 
4007
+ declare type HookFrom<Name extends Hook["name"]> = Hook extends infer HK ? HK extends Hook ? HK["name"] extends Name ? HK : never : never : never;
4008
+
4009
+ declare class HookManager {
4010
+ _hooks: Array<Hook>;
4011
+ _hookExecutions: Array<HookExecution>;
4012
+ _deregister(hookToDeregister: Hook): Observable<unknown[]>;
4013
+ register<Name extends Hook["name"]>(name: Name, fn: (params: HookParamsFrom<Name>) => void | Observable<void>): () => void;
4014
+ execute<Name extends Hook["name"]>(name: Name, id: string | undefined, params: Omit<HookParamsFrom<Name>, "destroy$" | "destroy">): Observable<[void | Observable<void>]>;
4015
+ destroy<Name extends Hook["name"]>(name: Name, id?: string, ref?: Hook): Observable<unknown[]>;
4016
+ }
4017
+
4018
+ declare type HookParamsFrom<Name extends Hook["name"]> = Parameters<HookFrom<Name>["runFn"]>[0];
4019
+
4040
4020
  export declare const isShallowEqual: <T = any, R = any>(objectA: T, objectB: R, options?: {
4041
4021
  customEqual?: (<T_1>(a: T_1, b: T_1) => boolean) | undefined;
4042
4022
  } | undefined) => boolean;
4043
4023
 
4044
- declare type ItemOnLoadHook = {
4045
- name: `item.onLoad`;
4046
- fn: (manipulableFrame: {
4047
- frame: HTMLIFrameElement;
4048
- removeStyle: (id: string) => void;
4049
- item: Manifest[`spineItems`][number];
4050
- addStyle: (id: string, style: CSSStyleDeclaration[`cssText`]) => void;
4051
- }) => (() => void) | Observable<unknown> | void;
4052
- };
4053
-
4054
4024
  declare type LastUserExpectedNavigation = undefined | {
4055
4025
  type: `navigate-from-previous-item`;
4056
4026
  } | {
@@ -4065,7 +4035,6 @@ declare type LastUserExpectedNavigation = undefined | {
4065
4035
 
4066
4036
  declare type LoadOptions = {
4067
4037
  cfi?: string | null;
4068
- fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>;
4069
4038
  containerElement: HTMLElement;
4070
4039
  };
4071
4040
 
@@ -4088,14 +4057,6 @@ declare type Navigation = {
4088
4057
  lastUserExpectedNavigation: LastUserExpectedNavigation;
4089
4058
  };
4090
4059
 
4091
- declare type OutputSettings = InputSettings & {
4092
- computedPageTurnMode: InputSettings[`pageTurnMode`];
4093
- computedPageTurnDirection: InputSettings[`pageTurnDirection`];
4094
- computedPageTurnAnimation: InputSettings[`pageTurnAnimation`];
4095
- computedPageTurnAnimationDuration: number;
4096
- computedSnapAnimationDuration: number;
4097
- };
4098
-
4099
4060
  declare type Pagination = ReturnType<typeof createPagination>;
4100
4061
 
4101
4062
  declare type PaginationInfo = {
@@ -4113,43 +4074,16 @@ export declare type Reader = ReturnType<typeof createReader>;
4113
4074
 
4114
4075
  declare type ReaderInternal = {
4115
4076
  context: Context;
4116
- registerHook: RegisterHook;
4117
4077
  spine: Spine;
4078
+ spineItemManager: SpineItemManager;
4118
4079
  viewportNavigator: ViewportNavigator;
4119
- manipulateSpineItems: Spine["manipulateSpineItems"];
4120
- manipulateSpineItem: Spine["manipulateSpineItem"];
4121
- moveTo: ViewportNavigator["moveTo"];
4122
- turnLeft: ViewportNavigator["turnLeft"];
4123
- turnRight: ViewportNavigator["turnRight"];
4124
- goToPageOfCurrentChapter: ViewportNavigator["goToPageOfCurrentChapter"];
4125
- goToPage: ViewportNavigator["goToPage"];
4126
- goToUrl: ViewportNavigator["goToUrl"];
4127
- goToCfi: ViewportNavigator["goToCfi"];
4128
- goToSpineItem: ViewportNavigator["goToSpineItem"];
4129
- getFocusedSpineItemIndex: SpineItemManager["getFocusedSpineItemIndex"];
4130
- getSpineItem: SpineItemManager["get"];
4131
- getSpineItems: SpineItemManager["getAll"];
4132
- getAbsolutePositionOf: SpineItemManager["getAbsolutePositionOf"];
4133
- getSelection: Spine["getSelection"];
4134
- isSelecting: Spine["isSelecting"];
4135
- normalizeEventForViewport: Spine["normalizeEventForViewport"];
4136
- getCfiMetaInformation: Spine["cfiLocator"]["getCfiMetaInformation"];
4137
- resolveCfi: Spine["cfiLocator"]["resolveCfi"];
4138
- generateCfi: Spine["cfiLocator"]["generateFromRange"];
4139
- locator: Spine["locator"];
4140
- getCurrentNavigationPosition: ViewportNavigator["getCurrentNavigationPosition"];
4141
- getCurrentViewportPosition: ViewportNavigator["getCurrentViewportPosition"];
4080
+ settings: SettingsManager;
4081
+ hookManager: HookManager;
4142
4082
  layout: () => void;
4143
4083
  load: (manifest: Manifest, loadOptions: LoadOptions) => void;
4144
4084
  destroy: () => void;
4145
4085
  pagination: Pagination;
4146
- spineItems$: Spine["$"]["spineItems$"];
4147
- context$: Context["$"]["state$"];
4148
- settings: {
4149
- settings$: ReturnType<typeof createSettings>["$"]["settings$"];
4150
- setSettings: (data: Partial<InputSettings>) => void;
4151
- getSettings: Settings["getSettings"];
4152
- };
4086
+ element$: Observable<HTMLElement>;
4153
4087
  $: {
4154
4088
  state$: Observable<{
4155
4089
  supportedPageTurnAnimation: NonNullable<ContextSettings[`pageTurnAnimation`]>[];
@@ -4163,40 +4097,12 @@ declare type ReaderInternal = {
4163
4097
  getAnchorCfi: () => string | undefined;
4164
4098
  getFocusCfi: () => string | undefined;
4165
4099
  } | null>;
4166
- viewportState$: Observable<"free" | "busy">;
4167
- layout$: Spine["$"]["layout$"];
4168
- itemsBeforeDestroy$: Spine["$"]["itemsBeforeDestroy$"];
4169
- itemIsReady$: SpineItemManager["$"]["itemIsReady$"];
4170
4100
  destroy$: Observable<void>;
4171
4101
  };
4172
- __debug: {
4173
- pagination: Pagination;
4174
- context: Context;
4175
- spineItemManager: SpineItemManager;
4176
- };
4177
4102
  };
4178
4103
 
4179
4104
  export declare type ReaderSelection = ReturnType<typeof createSelection>;
4180
4105
 
4181
- export declare interface RegisterHook {
4182
- (name: `item.onBeforeContainerCreated`, fn: Extract<Hook, {
4183
- name: `item.onBeforeContainerCreated`;
4184
- }>[`fn`]): void;
4185
- (name: `item.onGetResource`, fn: Extract<Hook, {
4186
- name: `item.onGetResource`;
4187
- }>[`fn`]): void;
4188
- (name: `item.onLayoutBeforeMeasurement`, fn: Extract<Hook, {
4189
- name: `item.onLayoutBeforeMeasurement`;
4190
- }>[`fn`]): void;
4191
- (name: `item.onAfterLayout`, fn: Extract<Hook, {
4192
- name: `item.onAfterLayout`;
4193
- }>[`fn`]): void;
4194
- (name: `onViewportOffsetAdjust`, fn: Extract<Hook, {
4195
- name: `onViewportOffsetAdjust`;
4196
- }>[`fn`]): void;
4197
- (name: `item.onLoad`, fn: ItemOnLoadHook["fn"]): void;
4198
- }
4199
-
4200
4106
  declare const Report_2: {
4201
4107
  namespace: (namespace: string) => {
4202
4108
  log: (...data: any[]) => void;
@@ -4227,20 +4133,39 @@ export { Report_2 as Report }
4227
4133
 
4228
4134
  declare type RequireLayout = boolean;
4229
4135
 
4230
- declare type Settings = ReturnType<typeof createSettings>;
4136
+ declare type Settings = {
4137
+ forceSinglePageMode: boolean;
4138
+ pageTurnAnimation: `none` | `fade` | `slide`;
4139
+ pageTurnAnimationDuration: undefined | number;
4140
+ pageTurnDirection: `vertical` | `horizontal`;
4141
+ pageTurnMode: `controlled` | `scrollable`;
4142
+ navigationSnapThreshold: number;
4143
+ numberOfAdjacentSpineItemToPreLoad: number;
4144
+ fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>;
4145
+ };
4231
4146
 
4232
4147
  declare type SettingsInput = {
4233
4148
  pageHorizontalMargin?: number;
4234
4149
  pageVerticalMargin?: number;
4235
4150
  };
4236
4151
 
4152
+ declare class SettingsManager {
4153
+ _settingsSubject$: BehaviorSubject<ComputedSettings>;
4154
+ _context: Context;
4155
+ settings$: Observable<ComputedSettings>;
4156
+ constructor(initialSettings: Partial<Settings>, context: Context);
4157
+ _updateSettings(settings: Settings): void;
4158
+ setSettings(settings: Partial<Settings>): void;
4159
+ get settings(): ComputedSettings;
4160
+ destroy(): void;
4161
+ }
4162
+
4237
4163
  declare type Spine = {
4238
4164
  element$: Observable<HTMLElement>;
4239
4165
  getElement: () => HTMLElement | undefined;
4240
4166
  locator: Locator;
4241
4167
  spineItemLocator: SpineItemLocator;
4242
4168
  cfiLocator: CfiLocator;
4243
- normalizeEventForViewport: ReturnType<typeof createEventsHelper>["normalizeEventForViewport"];
4244
4169
  manipulateSpineItems: (cb: (payload: ManipulableSpineItemCallbackPayload & {
4245
4170
  index: number;
4246
4171
  }) => RequireLayout) => void;
@@ -4285,11 +4210,22 @@ declare type SpinePosition = {
4285
4210
  __symbol?: `SpinePosition`;
4286
4211
  };
4287
4212
 
4288
- declare type State = Partial<Pick<LoadOptions, "containerElement" | "fetchResource">> & {
4213
+ declare type State = Partial<Pick<LoadOptions, "containerElement">> & {
4289
4214
  manifest?: Manifest;
4290
4215
  hasVerticalWriting?: boolean;
4291
4216
  isUsingSpreadMode?: boolean;
4292
4217
  isFullyPrePaginated?: boolean;
4218
+ forceSinglePageMode?: boolean;
4219
+ areAllItemsPrePaginated?: boolean;
4220
+ calculatedInnerMargin: number;
4221
+ marginTop: number;
4222
+ marginBottom: number;
4223
+ visibleAreaRect: {
4224
+ width: number;
4225
+ height: number;
4226
+ x: number;
4227
+ y: number;
4228
+ };
4293
4229
  };
4294
4230
 
4295
4231
  declare type Theme = (typeof defaultThemes)[number][`name`] | `publisher`;
@@ -4306,6 +4242,8 @@ declare type UnsafeSpinePosition = {
4306
4242
  __symbol?: `UnsafeSpinePosition` | `SpinePosition`;
4307
4243
  };
4308
4244
 
4245
+ declare type UserDestroyFn = () => void | Observable<unknown>;
4246
+
4309
4247
  declare type ViewportNavigationEntry = {
4310
4248
  x: number;
4311
4249
  y: number;