@prose-reader/core 1.57.0 → 1.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/dist/cfi.d.ts +74 -0
  2. package/dist/constants.d.ts +6 -0
  3. package/dist/context/Context.d.ts +63 -0
  4. package/dist/context/isUsingSpreadMode.d.ts +10 -0
  5. package/dist/createReaderWithEnhancer.d.ts +268 -0
  6. package/dist/enhancers/accessibility.d.ts +3 -0
  7. package/dist/enhancers/chrome.d.ts +3 -0
  8. package/dist/enhancers/events/createIframeEventBridgeElement.d.ts +1 -0
  9. package/dist/enhancers/events/events.d.ts +8 -0
  10. package/dist/enhancers/events/normalizeEventForViewport.d.ts +7 -0
  11. package/dist/enhancers/firefox.d.ts +3 -0
  12. package/dist/enhancers/fonts.d.ts +19 -0
  13. package/dist/enhancers/hotkeys.d.ts +3 -0
  14. package/dist/enhancers/layoutEnhancer/createMovingSafePan$.d.ts +4 -0
  15. package/dist/enhancers/layoutEnhancer/fixReflowable.d.ts +3 -0
  16. package/dist/enhancers/layoutEnhancer/layoutEnhancer.d.ts +10 -0
  17. package/dist/enhancers/layoutEnhancer/types.d.ts +8 -0
  18. package/dist/enhancers/links.d.ts +14 -0
  19. package/dist/enhancers/loadingEnhancer.d.ts +24 -0
  20. package/dist/enhancers/media.d.ts +3 -0
  21. package/dist/enhancers/navigation/navigation.d.ts +9 -0
  22. package/dist/enhancers/navigation/navigator.d.ts +8 -0
  23. package/dist/enhancers/navigation/state.d.ts +12 -0
  24. package/dist/enhancers/pagination/chapters.d.ts +24 -0
  25. package/dist/enhancers/pagination/constants.d.ts +1 -0
  26. package/dist/enhancers/pagination/enhancer.d.ts +14 -0
  27. package/dist/enhancers/pagination/pagination.d.ts +10 -0
  28. package/dist/enhancers/pagination/spine.d.ts +13 -0
  29. package/dist/enhancers/pagination/types.d.ts +19 -0
  30. package/dist/enhancers/pagination.test.d.ts +1 -0
  31. package/dist/enhancers/progression.d.ts +16 -0
  32. package/dist/enhancers/publicApi.d.ts +5 -0
  33. package/dist/enhancers/resources/index.d.ts +3 -0
  34. package/dist/enhancers/resources/indexedDB.d.ts +6 -0
  35. package/dist/enhancers/resources/resourcesManager.d.ts +7 -0
  36. package/dist/enhancers/theme.d.ts +32 -0
  37. package/dist/enhancers/types/enhancer.d.ts +9 -0
  38. package/dist/enhancers/utils.d.ts +7 -0
  39. package/dist/enhancers/webkit.d.ts +3 -0
  40. package/dist/enhancers/zoom/elementZoomer.d.ts +19 -0
  41. package/dist/enhancers/zoom/index.d.ts +4 -0
  42. package/dist/enhancers/zoom/types.d.ts +23 -0
  43. package/dist/enhancers/zoom/viewportZoomer.d.ts +19 -0
  44. package/dist/frames.d.ts +5 -0
  45. package/dist/hooks/HookManager.d.ts +10 -0
  46. package/dist/hooks/types.d.ts +64 -0
  47. package/dist/index.d.ts +9 -4262
  48. package/dist/index.js +225 -255
  49. package/dist/index.js.map +1 -1
  50. package/dist/index.umd.cjs +225 -255
  51. package/dist/index.umd.cjs.map +1 -1
  52. package/dist/manifest/areAllItemsPrePaginated.d.ts +3 -0
  53. package/dist/manifest/isFullyPrePaginated.d.ts +3 -0
  54. package/dist/pagination/pagination.d.ts +88 -0
  55. package/dist/pagination/types.d.ts +10 -0
  56. package/dist/reader.d.ts +8 -0
  57. package/dist/report.d.ts +26 -0
  58. package/dist/selection.d.ts +7 -0
  59. package/dist/settings/SettingsManager.d.ts +14 -0
  60. package/dist/settings/defaultSettings.d.ts +3 -0
  61. package/dist/settings/getComputedSettings.d.ts +4 -0
  62. package/dist/settings/types.d.ts +19 -0
  63. package/dist/spine/cfiLocator.d.ts +340 -0
  64. package/dist/spine/createSpine.d.ts +31 -0
  65. package/dist/spine/locationResolver.d.ts +636 -0
  66. package/dist/spine/navigationResolver.d.ts +48 -0
  67. package/dist/spine/types.d.ts +10 -0
  68. package/dist/spineItem/commonSpineItem.d.ts +165 -0
  69. package/dist/spineItem/createSpineItem.d.ts +167 -0
  70. package/dist/spineItem/frameItem/createFrame$.d.ts +1 -0
  71. package/dist/spineItem/frameItem/createFrameManipulator.d.ts +5 -0
  72. package/dist/spineItem/frameItem/createHtmlPageFromResource.d.ts +3 -0
  73. package/dist/spineItem/frameItem/frameItem.d.ts +49 -0
  74. package/dist/spineItem/frameItem/loader.d.ts +30 -0
  75. package/dist/spineItem/locationResolver.d.ts +24 -0
  76. package/dist/spineItem/navigationResolver.d.ts +16 -0
  77. package/dist/spineItem/prePaginatedSpineItem.d.ts +166 -0
  78. package/dist/spineItem/reflowableSpineItem.d.ts +165 -0
  79. package/dist/spineItem/styles/getStyleForViewportDocument.d.ts +1 -0
  80. package/dist/spineItem/trackers.d.ts +34 -0
  81. package/dist/spineItem/types.d.ts +19 -0
  82. package/dist/spineItemManager.d.ts +505 -0
  83. package/dist/types/Spine.d.ts +40 -0
  84. package/dist/types/index.d.ts +12 -0
  85. package/dist/types/reader.d.ts +44 -0
  86. package/dist/utils/compose.d.ts +8 -0
  87. package/dist/utils/dom.d.ts +19 -0
  88. package/dist/utils/isDefined.d.ts +1 -0
  89. package/dist/utils/layout.d.ts +7 -0
  90. package/dist/utils/layout.test.d.ts +1 -0
  91. package/dist/utils/manifest.d.ts +3 -0
  92. package/dist/utils/objects.d.ts +6 -0
  93. package/dist/utils/objects.test.d.ts +1 -0
  94. package/dist/utils/rxjs.d.ts +5 -0
  95. package/dist/viewportNavigator/manualViewportNavigator.d.ts +96 -0
  96. package/dist/viewportNavigator/panViewportNavigator.d.ts +55 -0
  97. package/dist/viewportNavigator/scrollViewportNavigator.d.ts +38 -0
  98. package/dist/viewportNavigator/types.d.ts +34 -0
  99. package/dist/viewportNavigator/viewportNavigator.d.ts +82 -0
  100. package/package.json +3 -3
@@ -0,0 +1,13 @@
1
+ import { Observable } from 'rxjs';
2
+ import { Reader } from '../../reader';
3
+ import { SpineItem } from '../../spineItem/createSpineItem';
4
+
5
+ export declare const getSpineItemNumberOfPages: ({ spineItem, reader }: {
6
+ spineItem: SpineItem;
7
+ reader: Reader;
8
+ }) => number;
9
+ export declare const getNumberOfPagesForAllSpineItems: (reader: Reader) => number[];
10
+ export declare const trackTotalPages: (reader: Reader) => Observable<{
11
+ numberOfPagesPerItems: number[];
12
+ numberOfTotalPages: number;
13
+ }>;
@@ -0,0 +1,19 @@
1
+ import { PaginationInfo } from '../../pagination/types';
2
+ import { Reader } from '../../reader';
3
+ import { progressionEnhancer } from '../progression';
4
+ import { EnhancerOutput } from '../types/enhancer';
5
+ import { ChapterInfo } from './chapters';
6
+
7
+ export type ReaderWithProgression = Reader & EnhancerOutput<typeof progressionEnhancer>;
8
+ export type ExtraPaginationInfo = {
9
+ beginChapterInfo: ChapterInfo | undefined;
10
+ beginSpineItemReadingDirection: `rtl` | `ltr` | undefined;
11
+ beginAbsolutePageIndex: number | undefined;
12
+ endChapterInfo: ChapterInfo | undefined;
13
+ endSpineItemReadingDirection: `rtl` | `ltr` | undefined;
14
+ endAbsolutePageIndex: number | undefined;
15
+ percentageEstimateOfBook: number | undefined;
16
+ numberOfTotalPages: number | undefined;
17
+ isUsingSpread: boolean;
18
+ };
19
+ export type EnhancerPaginationInto = PaginationInfo & ExtraPaginationInfo;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { Context } from '../context/Context';
2
+ import { SpineItem } from '../spineItem/createSpineItem';
3
+ import { Reader } from '../reader';
4
+
5
+ export declare const progressionEnhancer: <InheritOptions, InheritOutput extends Reader>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => InheritOutput & {
6
+ progression: {
7
+ getPercentageEstimate: (context: Context, currentSpineIndex: number, numberOfPages: number, pageIndex: number, currentPosition: {
8
+ x: number;
9
+ y: number;
10
+ }, currentItem: SpineItem) => number;
11
+ getScrollPercentageWithinItem: (context: Context, currentPosition: {
12
+ x: number;
13
+ y: number;
14
+ }, currentItem: SpineItem) => number;
15
+ };
16
+ };
@@ -0,0 +1,5 @@
1
+ import { Reader } from '../reader';
2
+
3
+ export declare const publicApiEnhancer: <InheritOptions, InheritOutput extends Reader>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => Omit<InheritOutput, "pagination"> & {
4
+ pagination: Pick<InheritOutput["pagination"], "paginationInfo$" | "getPaginationInfo">;
5
+ };
@@ -0,0 +1,3 @@
1
+ import { EnhancerOutput, RootEnhancer } from '../types/enhancer';
2
+
3
+ export declare const resourcesEnhancer: <InheritOptions, InheritOutput extends EnhancerOutput<RootEnhancer>>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => InheritOutput;
@@ -0,0 +1,6 @@
1
+ export declare const openDatabase: (name: string) => Promise<{
2
+ put: (key: string, data: Blob) => Promise<void>;
3
+ keys: () => Promise<IDBValidKey[]>;
4
+ get: (key: string) => Promise<Blob | null>;
5
+ remove: (key: globalThis.IDBValidKey) => Promise<void>;
6
+ }>;
@@ -0,0 +1,7 @@
1
+ import { Context } from '../../context/Context';
2
+ import { Manifest } from '../../types';
3
+
4
+ export declare const createResourcesManager: (context: Context) => {
5
+ get: (itemIndexOrId: number | Pick<Manifest[`spineItems`][number], `id`>, fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>) => Promise<Response>;
6
+ destroy: () => void;
7
+ };
@@ -0,0 +1,32 @@
1
+ import { Observable } from 'rxjs';
2
+ import { EnhancerOutput, RootEnhancer } from './types/enhancer';
3
+
4
+ declare const defaultThemes: ({
5
+ name: "bright";
6
+ backgroundColor: string;
7
+ foregroundColor?: undefined;
8
+ } | {
9
+ name: "sepia";
10
+ backgroundColor: string;
11
+ foregroundColor: string;
12
+ } | {
13
+ name: "night";
14
+ backgroundColor: string;
15
+ foregroundColor: string;
16
+ })[];
17
+ export type Theme = (typeof defaultThemes)[number][`name`] | `publisher`;
18
+ export interface ThemeEnhancer {
19
+ <InheritOptions, InheritOutput extends EnhancerOutput<RootEnhancer>>(next: (options: InheritOptions) => InheritOutput): (options: InheritOptions & {
20
+ theme?: Theme;
21
+ }) => InheritOutput & {
22
+ theme: {
23
+ set: (theme: Theme) => void;
24
+ get: () => Theme;
25
+ $: {
26
+ theme$: Observable<Theme>;
27
+ };
28
+ };
29
+ };
30
+ }
31
+ export declare const themeEnhancer: ThemeEnhancer;
32
+ export {};
@@ -0,0 +1,9 @@
1
+ import { CreateReaderParameters } from '../../reader';
2
+ import { ReaderInternal } from '../../types/reader';
3
+
4
+ export type EnhancerOutput<Enhancer extends (options: any) => any> = ReturnType<ReturnType<Enhancer>>;
5
+ export type EnhancerOptions<Enhancer extends (options: any) => any> = Parameters<ReturnType<Enhancer>>[0];
6
+ export interface RootEnhancer<Options extends CreateReaderParameters = CreateReaderParameters, Reader extends ReaderInternal = ReaderInternal> {
7
+ (next: (options: Options) => Reader): (options: Options) => Reader;
8
+ }
9
+ export declare const rootEnhancer: <Options extends CreateReaderParameters, Reader extends ReaderInternal>(next: (options: Options) => Reader) => (options: Options) => Reader;
@@ -0,0 +1,7 @@
1
+ import { EnhancerOutput, RootEnhancer } from './types/enhancer';
2
+
3
+ export declare const utilsEnhancer: <InheritOptions, InheritOutput extends EnhancerOutput<RootEnhancer>>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => InheritOutput & {
4
+ utils: {
5
+ isOrIsWithinValidLink: (target: Event[`target`]) => boolean;
6
+ };
7
+ };
@@ -0,0 +1,3 @@
1
+ import { EnhancerOptions, EnhancerOutput, RootEnhancer } from './types/enhancer';
2
+
3
+ export declare const webkitEnhancer: <InheritOptions extends EnhancerOptions<RootEnhancer>, InheritOutput extends EnhancerOutput<RootEnhancer>>(createReader: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => InheritOutput;
@@ -0,0 +1,19 @@
1
+ import { Reader } from '../../reader';
2
+
3
+ export declare const createElementZoomer: (reader: Reader) => {
4
+ enter: (imgElement: HTMLImageElement) => void;
5
+ exit: () => void;
6
+ move: (delta: {
7
+ x: number;
8
+ y: number;
9
+ } | undefined, { isFirst, isLast }: {
10
+ isFirst: boolean;
11
+ isLast: boolean;
12
+ }) => void;
13
+ scale: (userScale: number) => void;
14
+ setCurrentScaleAsBase: () => void;
15
+ getScaleValue: () => number;
16
+ isZooming: () => boolean;
17
+ destroy: () => void;
18
+ isZooming$: import('rxjs').Observable<boolean>;
19
+ };
@@ -0,0 +1,4 @@
1
+ import { Reader } from '../../reader';
2
+ import { Api } from './types';
3
+
4
+ export declare const zoomEnhancer: <InheritOptions, InheritOutput extends Reader>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => InheritOutput & Api;
@@ -0,0 +1,23 @@
1
+ import { Observable } from 'rxjs';
2
+
3
+ export type Api = {
4
+ zoom: {
5
+ enter: (imgElement?: HTMLImageElement) => void;
6
+ exit: () => void;
7
+ move: (position: {
8
+ x: number;
9
+ y: number;
10
+ } | undefined, details: {
11
+ isFirst: boolean;
12
+ isLast: boolean;
13
+ }) => void;
14
+ isZooming: () => boolean;
15
+ isUsingScrollableZoom: () => boolean;
16
+ getScaleValue: () => number;
17
+ scale: (scale: number) => void;
18
+ setCurrentScaleAsBase: () => void;
19
+ $: {
20
+ isZooming$: Observable<boolean>;
21
+ };
22
+ };
23
+ };
@@ -0,0 +1,19 @@
1
+ import { Reader } from '../../reader';
2
+
3
+ export declare const createViewportZoomer: (reader: Reader) => {
4
+ enter: () => void;
5
+ exit: () => void;
6
+ move: (_: {
7
+ x: number;
8
+ y: number;
9
+ } | undefined, __: {
10
+ isFirst: boolean;
11
+ isLast: boolean;
12
+ }) => void;
13
+ scale: (userScale: number) => void;
14
+ setCurrentScaleAsBase: () => void;
15
+ getScaleValue: () => number;
16
+ isZooming: () => boolean;
17
+ destroy: () => void;
18
+ isZooming$: import('rxjs').Observable<boolean>;
19
+ };
@@ -0,0 +1,5 @@
1
+ export declare const createRemoveStyleHelper: (frameElement: HTMLIFrameElement | undefined) => (id: string) => void;
2
+ export declare const createAddStyleHelper: (frameElement: HTMLIFrameElement | undefined) => (id: string, style: string, prepend?: boolean) => void;
3
+ export declare const getAttributeValueFromString: (string: string, key: string) => number;
4
+ export declare const getOriginalFrameEventFromDocumentEvent: <E extends Event>(event: E) => E | undefined;
5
+ export declare const attachOriginalFrameEventToDocumentEvent: <E extends Event>(event: E, frameEvent: E) => void;
@@ -0,0 +1,10 @@
1
+ import { CoreHook, Hook, HookExecution, HookFrom } from './types';
2
+
3
+ export declare class HookManager<H extends Hook<any, any, any> = CoreHook> {
4
+ _hooks: Array<H>;
5
+ _hookExecutions: Array<HookExecution<H>>;
6
+ protected deregister(hookToDeregister: H): import('rxjs').Observable<unknown[]>;
7
+ register<Name extends H["name"]>(name: Name, fn: HookFrom<H, Name>["runFn"]): () => void;
8
+ execute<Name extends H["name"]>(name: Name, id: string | undefined, params: Omit<Parameters<HookFrom<H, Name>["runFn"]>[0], "destroy" | "destroy$">): ReturnType<HookFrom<H, Name>["runFn"]>[];
9
+ destroy<Name extends H["name"]>(name: Name, id?: string, ref?: H): import('rxjs').Observable<unknown[]>;
10
+ }
@@ -0,0 +1,64 @@
1
+ import { Manifest } from '@prose-reader/shared';
2
+ import { Observable } from 'rxjs';
3
+
4
+ export type UserDestroyFn = () => void | Observable<unknown>;
5
+ export interface Hook<Name, Params, Result> {
6
+ name: Name;
7
+ runFn: (params: Params) => Result;
8
+ }
9
+ export type CoreHook = {
10
+ name: `item.onLoad`;
11
+ runFn: (params: {
12
+ destroy$: Observable<void>;
13
+ destroy: (fn: UserDestroyFn) => void;
14
+ itemId: string;
15
+ frame: HTMLIFrameElement;
16
+ }) => Observable<void> | void;
17
+ } | {
18
+ name: "item.onAfterLayout";
19
+ runFn: (params: {
20
+ blankPagePosition: "before" | "after" | "none";
21
+ item: Manifest["spineItems"][number];
22
+ minimumWidth: number;
23
+ }) => void;
24
+ } | {
25
+ name: "item.onBeforeContainerCreated";
26
+ runFn: (params: {
27
+ element: HTMLElement;
28
+ }) => void;
29
+ } | {
30
+ name: "item.onLayoutBeforeMeasurement";
31
+ runFn: (params: {
32
+ frame: {
33
+ getManipulableFrame: () => undefined | {
34
+ removeStyle: (id: string) => void;
35
+ addStyle: (id: string, style: CSSStyleDeclaration[`cssText`]) => void;
36
+ };
37
+ getViewportDimensions: () => {
38
+ width: number;
39
+ height: number;
40
+ } | undefined;
41
+ isUsingVerticalWriting: () => boolean;
42
+ getIsReady: () => boolean;
43
+ };
44
+ container: HTMLElement;
45
+ item: Manifest[`spineItems`][number];
46
+ minimumWidth: number;
47
+ isImageType: () => boolean | undefined;
48
+ }) => void;
49
+ } | {
50
+ name: "onViewportOffsetAdjust";
51
+ runFn: (params: void) => void;
52
+ } | {
53
+ name: `viewportNavigator.onBeforeContainerCreated`;
54
+ runFn: (params: {
55
+ element: HTMLElement;
56
+ }) => void;
57
+ };
58
+ export type HookExecution<H extends Hook<any, any, any>> = {
59
+ name: string;
60
+ id: string | undefined;
61
+ destroyFn: () => Observable<unknown>;
62
+ ref: H;
63
+ };
64
+ export type HookFrom<H extends Hook<any, any, any>, Name extends H["name"]> = H extends infer HK ? HK extends H ? HK["name"] extends Name ? HK : never : never : never;