@prose-reader/core 1.295.0 → 1.297.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.
@@ -0,0 +1,43 @@
1
+ import { Manifest } from '@prose-reader/shared';
2
+ import { HookManager } from '../hooks/HookManager';
3
+ import { PageEntry } from '../spine/Pages';
4
+ import { SpineItemsManager } from '../spine/SpineItemsManager';
5
+ import { ProseParsedCfi } from './parse';
6
+ import { resolveCfi as resolveBaseCfi } from './resolve';
7
+ import { SpineItem } from '..';
8
+ export type CfiGenerateHookParams = {
9
+ cfi: string;
10
+ spineItem: Manifest["spineItems"][number];
11
+ };
12
+ export type CfiResolveHookParams = {
13
+ cfi: string;
14
+ };
15
+ export type CfiTransformHook<Params extends {
16
+ cfi: string;
17
+ }> = (params: Params) => string | undefined;
18
+ export declare class CfiManager {
19
+ private hookManager;
20
+ private spineItemsManager;
21
+ constructor(hookManager: HookManager, spineItemsManager: SpineItemsManager);
22
+ transformForResolve: (cfi: string) => string;
23
+ parseCfi: (cfi: string) => ProseParsedCfi & {
24
+ offset: number;
25
+ };
26
+ getSpineItemFromCfi: (cfi: string) => SpineItem | undefined;
27
+ isRootCfi: (cfi: string) => boolean;
28
+ generateRootCfi: (item: Manifest["spineItems"][number]) => string;
29
+ generateCfiForSpineItemPage: ({ spineItem, pageNode, }: {
30
+ spineItem: Manifest["spineItems"][number];
31
+ pageNode: NonNullable<PageEntry["firstVisibleNode"]>;
32
+ }) => string;
33
+ generateCfiFromRange: (range: Range, item: Manifest[`spineItems`][number]) => string;
34
+ resolveCfi: (params: Omit<Parameters<typeof resolveBaseCfi>[0], "spineItemsManager">) => Omit<ProseParsedCfi & {
35
+ offset: number;
36
+ }, "offset"> & {
37
+ offset?: number | undefined;
38
+ node: Node | null;
39
+ range?: Range | null;
40
+ spineItem?: SpineItem;
41
+ };
42
+ private transformGeneratedCfi;
43
+ }
@@ -1,3 +1,4 @@
1
+ export * from './CfiManager';
1
2
  export * from './generate';
2
3
  export * from './parse';
3
4
  export * from './resolve';
@@ -1,7 +1,6 @@
1
- import { CoreInputSettings, Theme, EnhancerLayoutInputSettings, EnhancerFontsInputSettings, Context, Spine, PageEntry, SpineItem, InternalNavigationEntry, InternalNavigator, ScrollNavigationController, ControlledNavigationController, UserNavigationEntry, SpinePosition, SpineItemPosition, UnboundSpinePosition, NavigationVisibleArea, SpineBoundary, SpineItemsObserver, SpineItemsManager, ContextState, SettingsInterface, CoreOutputSettings, SpineItemReference, Viewport, Features, LayoutEnhancerOutput, ComputedCoreSettings, ExtraPaginationInfo, ResourcesLocator, NavigationEnhancerOutput, ZoomEnhancerOutput } from '.';
1
+ import { CoreInputSettings, Theme, EnhancerLayoutInputSettings, EnhancerFontsInputSettings, Context, Spine, InternalNavigationEntry, InternalNavigator, ScrollNavigationController, ControlledNavigationController, UserNavigationEntry, SpinePosition, SpineItemPosition, SpineItem, UnboundSpinePosition, NavigationVisibleArea, SpineBoundary, SpineItemsObserver, SpineItemsManager, ContextState, SettingsInterface, CoreOutputSettings, SpineItemReference, Viewport, Features, LayoutEnhancerOutput, ComputedCoreSettings, ExtraPaginationInfo, ResourcesLocator, NavigationEnhancerOutput, ZoomEnhancerOutput } from '.';
2
2
  import { HookManager, CoreHook } from './hooks';
3
- import { Manifest } from '@prose-reader/shared';
4
- import { ProseParsedCfi, resolveCfi } from './cfi';
3
+ import { CfiManager } from './cfi';
5
4
  import { Observable, ObservedValueOf, Subject } from 'rxjs';
6
5
  import { getNavigationForSpineItemPage } from './navigation/resolvers/getNavigationForSpineItemPage';
7
6
  import { PaginationInfo, Pagination } from './pagination';
@@ -12,24 +11,7 @@ export declare const createReaderWithEnhancers: (options: Partial< CoreInputSett
12
11
  context: Context;
13
12
  spine: Spine;
14
13
  hookManager: HookManager<CoreHook>;
15
- cfi: {
16
- generateCfiFromRange: (range: Range, item: Manifest[`spineItems`][number]) => string;
17
- parseCfi: (cfi: string) => ProseParsedCfi & {
18
- offset: number;
19
- };
20
- generateCfiForSpineItemPage: ({ spineItem, pageNode, }: {
21
- spineItem: Manifest["spineItems"][number];
22
- pageNode: NonNullable< PageEntry["firstVisibleNode"]>;
23
- }) => string;
24
- resolveCfi: (params: Omit<Parameters< resolveCfi>[0], "spineItemsManager">) => Omit< ProseParsedCfi & {
25
- offset: number;
26
- }, "offset"> & {
27
- offset?: number | undefined;
28
- node: Node | null;
29
- range?: Range | null;
30
- spineItem?: SpineItem;
31
- };
32
- };
14
+ cfi: CfiManager;
33
15
  navigation: {
34
16
  destroy: () => void;
35
17
  getNavigation: () => InternalNavigationEntry;
@@ -1,10 +1,11 @@
1
1
  import { Manifest } from '@prose-reader/shared';
2
- export declare const renderReflowable: ({ pageHeight: pageSizeHeight, pageWidth, frameElement, manifest, minPageSpread, isRTL, blankPagePosition, isImageType, enableTouch, isUsingVerticalWriting, }: {
2
+ export declare const renderReflowable: ({ pageHeight: pageSizeHeight, pageWidth, frameElement, manifest, renditionFlow, minPageSpread, isRTL, blankPagePosition, isImageType, enableTouch, isUsingVerticalWriting, }: {
3
3
  blankPagePosition: `before` | `after` | `none`;
4
4
  pageWidth: number;
5
5
  pageHeight: number;
6
6
  frameElement: HTMLIFrameElement;
7
7
  manifest?: Manifest;
8
+ renditionFlow?: Manifest["renditionFlow"];
8
9
  minPageSpread: number;
9
10
  isRTL: boolean;
10
11
  isImageType: boolean;
@@ -1,12 +1,12 @@
1
1
  import { Observable } from 'rxjs';
2
- import { ProseParsedCfi, resolveCfi } from '../../cfi';
2
+ import { ProseParsedCfi } from '../../cfi';
3
3
  import { Reader } from '../../reader';
4
4
  import { SpineItem } from '../../spineItem/SpineItem';
5
5
  type CfiLocatableResource = {
6
6
  cfi: string;
7
7
  };
8
8
  export type LocatableResource = SpineItem | CfiLocatableResource;
9
- export type ConsolidatedResource = ReturnType<typeof resolveCfi> & ProseParsedCfi & CfiLocatableResource & {
9
+ export type ConsolidatedResource = ReturnType<Reader["cfi"]["resolveCfi"]> & ProseParsedCfi & CfiLocatableResource & {
10
10
  itemPageIndex?: number;
11
11
  absolutePageIndex?: number;
12
12
  startOffset?: number;
@@ -1,10 +1,17 @@
1
- import { CoreHook, Hook, HookExecution, HookFrom } from './types';
2
1
  import { Observable } from 'rxjs';
2
+ import { AsyncHookName, AsyncHookParams, CoreHook, Hook, HookExecution, HookFrom, HookParams, HookResult, SyncHookName } from './types';
3
3
  export declare class HookManager<H extends Hook<any, any, any> = CoreHook> {
4
4
  _hooks: Array<H>;
5
5
  _hookExecutions: Array<HookExecution<H>>;
6
+ private getHooks;
6
7
  protected deregister(hookToDeregister: H): Observable<unknown[]>;
7
8
  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
+ execute<Name extends SyncHookName<H>>(name: Name, params: HookParams<H, Name>): HookResult<H, Name>[];
10
+ executeAsync<Name extends AsyncHookName<H>>(name: Name, id: string | undefined, params: Omit<HookParams<H, Name>, keyof AsyncHookParams>, signal?: AbortSignal): Promise<Awaited<HookResult<H, Name>>[]>;
11
+ fromExecuteAsync<Name extends AsyncHookName<H>>(name: Name, id: string | undefined, params: Omit<HookParams<H, Name>, keyof AsyncHookParams>): Observable<Awaited<HookResult<H, Name>>[]>;
12
+ executeSequential<Name extends SyncHookName<H>>(name: Name, params: HookParams<H, Name>, getNextParams: (params: HookParams<H, Name>, result: HookResult<H, Name>) => HookParams<H, Name>): {
13
+ finalParams: HookParams<H, Name>;
14
+ results: HookResult<H, Name>[];
15
+ };
9
16
  destroy<Name extends H["name"]>(name: Name, id?: string, ref?: H): Observable<unknown[]>;
10
17
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,24 +1,46 @@
1
1
  import { Manifest } from '@prose-reader/shared';
2
2
  import { Observable } from 'rxjs';
3
- export type UserDestroyFn = () => void | Observable<unknown>;
4
- export interface Hook<Name, Params, Result> {
3
+ export type AsyncHookParams = {
4
+ signal: AbortSignal;
5
+ };
6
+ export interface SyncHook<Name, Params, Result> {
5
7
  name: Name;
6
8
  runFn: (params: Params) => Result;
7
9
  }
10
+ export interface AsyncHook<Name, Params, Result> {
11
+ name: Name;
12
+ runFn: (params: AsyncHookParams & Params) => Promise<Result>;
13
+ }
14
+ export type Hook<Name, Params, Result> = SyncHook<Name, Params, Result> | AsyncHook<Name, Params, Result>;
8
15
  export type CoreHook = {
9
16
  name: `item.onDocumentCreated`;
10
17
  runFn: (params: {
11
18
  itemId: string;
12
19
  documentContainer: HTMLElement;
13
- }) => Observable<void> | void;
20
+ }) => void;
14
21
  } | {
15
- name: `item.onDocumentLoad`;
22
+ name: "cfi.afterGenerate";
23
+ runFn: (params: {
24
+ cfi: string;
25
+ spineItem: Manifest["spineItems"][number];
26
+ }) => string | undefined;
27
+ } | {
28
+ name: "cfi.beforeResolve";
16
29
  runFn: (params: {
17
- destroy$: Observable<void>;
18
- destroy: (fn: UserDestroyFn) => void;
30
+ cfi: string;
31
+ }) => string | undefined;
32
+ } | {
33
+ name: `item.onDocumentLoad`;
34
+ runFn: (params: AsyncHookParams & {
35
+ itemId: string;
36
+ documentContainer: HTMLElement;
37
+ }) => Promise<void>;
38
+ } | {
39
+ name: `item.onDocumentUnload`;
40
+ runFn: (params: AsyncHookParams & {
19
41
  itemId: string;
20
42
  documentContainer: HTMLElement;
21
- }) => Observable<void> | void;
43
+ }) => Promise<void>;
22
44
  } | {
23
45
  name: "item.onBeforeLayout";
24
46
  runFn: (params: {
@@ -49,3 +71,7 @@ export type HookExecution<H extends Hook<any, any, any>> = {
49
71
  ref: H;
50
72
  };
51
73
  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;
74
+ export type HookParams<H extends Hook<any, any, any>, Name extends H["name"]> = Parameters<HookFrom<H, Name>["runFn"]>[0];
75
+ export type HookResult<H extends Hook<any, any, any>, Name extends H["name"]> = ReturnType<HookFrom<H, Name>["runFn"]>;
76
+ export type AsyncHookName<H extends Hook<any, any, any>> = H extends infer HK ? HK extends H ? ReturnType<HK["runFn"]> extends Promise<unknown> ? HK["name"] : never : never : never;
77
+ export type SyncHookName<H extends Hook<any, any, any>> = H extends infer HK ? HK extends H ? ReturnType<HK["runFn"]> extends Promise<unknown> ? never : HK["name"] : never : never;