@prose-reader/core 1.324.0 → 1.326.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 (35) hide show
  1. package/dist/context/Context.d.ts +5 -7
  2. package/dist/createReaderWithEnhancer.d.ts +9 -7
  3. package/dist/enhancers/html/renderer/HtmlRenderer.d.ts +1 -1
  4. package/dist/enhancers/html/renderer/reflowable/renderReflowable.d.ts +1 -1
  5. package/dist/enhancers/layout/spreadMode.d.ts +2 -2
  6. package/dist/enhancers/layout/updateSpreadMode.d.ts +1 -1
  7. package/dist/enhancers/navigation/index.d.ts +1 -1
  8. package/dist/enhancers/navigation/resolvers/getSpineItemPositionForLeftPage.d.ts +1 -1
  9. package/dist/enhancers/navigation/types.d.ts +0 -4
  10. package/dist/hooks/types.d.ts +2 -2
  11. package/dist/index.cjs +16 -20
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.js +942 -1038
  14. package/dist/index.js.map +1 -1
  15. package/dist/manifest/isFullyPrePaginated.d.ts +1 -1
  16. package/dist/navigation/controllers/ControlledNavigationController.d.ts +1 -0
  17. package/dist/navigation/controllers/ScrollNavigationController.d.ts +1 -0
  18. package/dist/navigation/tests/utils.d.ts +2 -5
  19. package/dist/pagination/index.d.ts +1 -1
  20. package/dist/reader.d.ts +9 -7
  21. package/dist/reader.test.d.ts +1 -0
  22. package/dist/settings/computeSpreadMode.d.ts +1 -1
  23. package/dist/spine/Spine.d.ts +1 -3
  24. package/dist/spine/SpineItemsManager.d.ts +7 -7
  25. package/dist/spine/SpineItemsObserver.d.ts +1 -1
  26. package/dist/spine/SpineItemsObserver.test.d.ts +1 -0
  27. package/dist/spineItem/SpineItem.d.ts +2 -2
  28. package/dist/spineItem/renderer/DefaultRenderer.d.ts +1 -1
  29. package/dist/spineItem/renderer/DocumentRenderer.d.ts +1 -1
  30. package/dist/tests/utils.d.ts +3 -0
  31. package/dist/utils/ReactiveEntity.d.ts +1 -0
  32. package/package.json +4 -4
  33. package/dist/enhancers/resources/index.d.ts +0 -2
  34. package/dist/enhancers/resources/indexedDB.d.ts +0 -6
  35. package/dist/enhancers/resources/resourcesManager.d.ts +0 -6
@@ -1,2 +1,2 @@
1
1
  import { Manifest } from '@prose-reader/shared';
2
- export declare const isFullyPrePaginated: (manifest?: Manifest) => boolean | undefined;
2
+ export declare const isFullyPrePaginated: (manifest: Manifest) => boolean;
@@ -22,6 +22,7 @@ export declare class ControlledNavigationController extends DestroyableClass imp
22
22
  constructor(settings: ReaderSettingsManager, hookManager: HookManager, context: Context, spine: Spine, viewport: Viewport);
23
23
  protected applyNavigationPosition(position: ControlledNavigationEntry["position"]): void;
24
24
  navigate(navigation: NavigationModeControllerNavigationEntry): void;
25
+ destroy(): void;
25
26
  isActive: () => boolean;
26
27
  getNavigationVisibleArea: () => AbsoluteViewport;
27
28
  get viewportPosition(): SpinePosition;
@@ -32,6 +32,7 @@ export declare class ScrollNavigationController extends ReactiveEntity<{
32
32
  update(value: Partial<{
33
33
  element: HTMLElement | undefined;
34
34
  }>): void;
35
+ destroy(): void;
35
36
  navigate(navigation: NavigationModeControllerNavigationEntry): void;
36
37
  isActive: () => boolean;
37
38
  getNavigationVisibleArea: () => RelativeViewport;
@@ -1,7 +1,4 @@
1
- import { SpineItem, Viewport } from '../..';
2
- import { Context } from '../../context/Context';
3
- import { HookManager } from '../../hooks/HookManager';
4
- import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
1
  import { Spine } from '../../spine/Spine';
6
2
  import { SpineItemsManager } from '../../spine/SpineItemsManager';
7
- export declare const generateItems: (size: number, number: number, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, spine: Spine, spineItemsManager: SpineItemsManager, viewport: Viewport) => SpineItem[];
3
+ import { SpineItem } from '../..';
4
+ export declare const mockSpineItemsLayout: (size: number, spine: Spine, spineItemsManager: SpineItemsManager) => readonly SpineItem[];
@@ -1,3 +1,3 @@
1
1
  export * from './Pagination';
2
- export * from './types';
3
2
  export * from './PaginationController';
3
+ export * from './types';
package/dist/reader.d.ts CHANGED
@@ -1,6 +1,7 @@
1
+ import { Manifest } from '@prose-reader/shared';
1
2
  import { Observable, ObservedValueOf, Subject } from 'rxjs';
2
3
  import { CfiManager } from './cfi';
3
- import { Context, ContextState } from './context/Context';
4
+ import { Context } from './context/Context';
4
5
  import { Features } from './features/Features';
5
6
  import { HookManager } from './hooks/HookManager';
6
7
  import { Pagination } from './pagination/Pagination';
@@ -14,14 +15,17 @@ import { CoreHook } from './hooks';
14
15
  import { InternalNavigationEntry, InternalNavigator, ScrollNavigationController, ControlledNavigationController, UserNavigationEntry, SpinePosition, SpineItemPosition, SpineItem, UnboundSpinePosition, NavigationVisibleArea, SpineBoundary, SpineItemsObserver, CoreOutputSettings } from '.';
15
16
  import { getNavigationForSpineItemPage } from './navigation/resolvers/getNavigationForSpineItemPage';
16
17
  import { PaginationInfo } from './pagination';
17
- export type CreateReaderOptions = Partial<CoreInputSettings>;
18
+ export type CreateReaderOptions = Partial<CoreInputSettings> & {
19
+ manifest: Manifest;
20
+ cfi?: string;
21
+ };
18
22
  export type CreateReaderParameters = CreateReaderOptions;
19
23
  export type ContextSettings = Partial<CoreInputSettings>;
20
24
  export type ReaderInternal = ReturnType<typeof createReader>;
21
25
  type ReaderLayoutOptions = {
22
26
  immediate?: boolean;
23
27
  };
24
- export declare const createReader: (inputSettings: CreateReaderOptions) => {
28
+ export declare const createReader: ({ manifest, cfi: _cfi, ...inputSettings }: CreateReaderOptions) => {
25
29
  id: `${string}-${string}-${string}-${string}-${string}`;
26
30
  context: Context;
27
31
  spine: Spine;
@@ -77,9 +81,7 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
77
81
  spineItemsObserver: SpineItemsObserver;
78
82
  spineItemsManager: SpineItemsManager;
79
83
  layout: (options?: ReaderLayoutOptions) => void;
80
- load: (options: Required<Pick<ContextState, "manifest"> & {
81
- containerElement: HTMLElement;
82
- }>) => void;
84
+ mount: (containerElement: HTMLElement) => void;
83
85
  destroy: () => void;
84
86
  pagination: {
85
87
  readonly state: PaginationInfo;
@@ -93,7 +95,7 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
93
95
  viewport: Viewport;
94
96
  viewportState$: Observable<"free" | "busy">;
95
97
  viewportFree$: Observable<"free">;
96
- state$: Observable<"idle" | "ready">;
98
+ mounted$: Observable<boolean>;
97
99
  features: Features;
98
100
  $: {
99
101
  destroy$: Subject<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,5 @@
1
1
  import { Manifest } from '@prose-reader/shared';
2
2
  export declare const computeSpreadMode: ({ manifest, spreadMode, }: {
3
3
  spreadMode: boolean;
4
- manifest?: Manifest;
4
+ manifest: Manifest;
5
5
  }) => boolean;
@@ -1,6 +1,5 @@
1
1
  import { BehaviorSubject, Observable } from 'rxjs';
2
2
  import { Context } from '../context/Context';
3
- import { HookManager } from '../hooks/HookManager';
4
3
  import { Pagination } from '../pagination/Pagination';
5
4
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
6
5
  import { createSpineItemLocator as createSpineItemLocationResolver } from '../spineItem/locationResolver';
@@ -20,7 +19,6 @@ export declare class Spine extends DestroyableClass {
20
19
  spineItemsManager: SpineItemsManager;
21
20
  spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>;
22
21
  protected settings: ReaderSettingsManager;
23
- protected hookManager: HookManager;
24
22
  protected viewport: Viewport;
25
23
  protected elementSubject: BehaviorSubject<HTMLElement | undefined>;
26
24
  protected spineLayout: SpineLayout;
@@ -29,7 +27,7 @@ export declare class Spine extends DestroyableClass {
29
27
  spineItemsObserver: SpineItemsObserver;
30
28
  pages: Pages;
31
29
  element$: Observable<HTMLElement | undefined>;
32
- constructor(context: Context, pagination: Pagination, spineItemsManager: SpineItemsManager, spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>, settings: ReaderSettingsManager, hookManager: HookManager, viewport: Viewport);
30
+ constructor(context: Context, pagination: Pagination, spineItemsManager: SpineItemsManager, spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>, settings: ReaderSettingsManager, viewport: Viewport);
33
31
  get element(): HTMLElement | undefined;
34
32
  layout(options?: SpineLayoutOptions): void;
35
33
  getSpineItemSpineLayoutInfo(spineItemOrIndex: SpineItem | number | string | undefined): SpineItemSpineLayout;
@@ -1,18 +1,18 @@
1
- import { BehaviorSubject, Observable } from 'rxjs';
2
1
  import { Context } from '../context/Context';
2
+ import { HookManager } from '../hooks/HookManager';
3
3
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
4
4
  import { SpineItem, SpineItemReference } from '../spineItem/SpineItem';
5
5
  import { DestroyableClass } from '../utils/DestroyableClass';
6
+ import { Viewport } from '../viewport/Viewport';
6
7
  export declare class SpineItemsManager extends DestroyableClass {
7
8
  protected context: Context;
8
9
  protected settings: ReaderSettingsManager;
9
- constructor(context: Context, settings: ReaderSettingsManager);
10
- protected orderedSpineItemsSubject: BehaviorSubject<SpineItem[]>;
11
- items$: Observable<SpineItem[]>;
10
+ protected hookManager: HookManager;
11
+ protected viewport: Viewport;
12
+ readonly items: readonly SpineItem[];
13
+ constructor(context: Context, settings: ReaderSettingsManager, hookManager: HookManager, viewport: Viewport);
12
14
  get(indexOrId: SpineItemReference | undefined): SpineItem | undefined;
13
15
  comparePositionOf(toCompare: SpineItem, withItem: SpineItem): "before" | "after" | "same";
14
16
  getSpineItemIndex(spineItemOrId: SpineItem | string | number | undefined): number | undefined;
15
- addMany(spineItems: SpineItem[]): void;
16
- get items(): SpineItem[];
17
- destroyItems(): void;
17
+ destroy(): void;
18
18
  }
@@ -4,7 +4,7 @@ import { DestroyableClass } from '../utils/DestroyableClass';
4
4
  import { SpineItemsManager } from './SpineItemsManager';
5
5
  export declare class SpineItemsObserver extends DestroyableClass {
6
6
  protected spineItemsManager: SpineItemsManager;
7
- states$: Observable<{
7
+ itemStateChange$: Observable<{
8
8
  item: SpineItem;
9
9
  } & SpineItemState>;
10
10
  itemResize$: Observable<{
@@ -0,0 +1 @@
1
+ export {};
@@ -18,7 +18,6 @@ export type SpineItemState = {
18
18
  };
19
19
  export declare class SpineItem extends ReactiveEntity<SpineItemState> {
20
20
  item: Manifest[`spineItems`][number];
21
- parentElement: HTMLElement;
22
21
  context: Context;
23
22
  settings: ReaderSettingsManager;
24
23
  hookManager: HookManager;
@@ -29,7 +28,8 @@ export declare class SpineItem extends ReactiveEntity<SpineItemState> {
29
28
  readonly resourcesHandler: ResourceHandler;
30
29
  readonly didLayout$: SpineItemLayout["didLayout$"];
31
30
  private readonly _layout;
32
- constructor(item: Manifest[`spineItems`][number], parentElement: HTMLElement, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, index: number, viewport: Viewport);
31
+ constructor(item: Manifest[`spineItems`][number], context: Context, settings: ReaderSettingsManager, hookManager: HookManager, index: number, viewport: Viewport);
32
+ attach: (parentElement: HTMLElement) => void;
33
33
  load: () => void;
34
34
  unload: () => void;
35
35
  markDirty: () => void;
@@ -1,7 +1,7 @@
1
1
  import { DocumentRenderer } from './DocumentRenderer';
2
2
  import { Observable } from 'rxjs';
3
3
  export declare class DefaultRenderer extends DocumentRenderer {
4
- onUnload(): Observable<never>;
4
+ onUnload(): void;
5
5
  onCreateDocument(): Observable<HTMLDivElement>;
6
6
  onLoadDocument(): Observable<never>;
7
7
  onLayout(): Observable<undefined>;
@@ -65,7 +65,7 @@ export declare abstract class DocumentRenderer extends ReactiveEntity<DocumentRe
65
65
  abstract onRenderHeadless(params: {
66
66
  release: Observable<void>;
67
67
  }): Observable<Document | undefined>;
68
- abstract onUnload(): Observable<unknown>;
68
+ abstract onUnload(): void;
69
69
  abstract onCreateDocument(): Observable<HTMLElement>;
70
70
  abstract onLoadDocument(): Observable<unknown>;
71
71
  abstract onLayout(params: LayoutParams): Observable<{
@@ -1 +1,4 @@
1
+ import { Manifest } from '@prose-reader/shared';
1
2
  export declare const waitFor: (timeout: number) => Promise<unknown>;
3
+ export declare const createTestManifestSpineItems: (items: number | Array<Partial<Manifest["spineItems"][number]> | undefined>) => Manifest["spineItems"];
4
+ export declare const createTestManifest: (manifest?: Partial<Manifest>) => Manifest;
@@ -2,6 +2,7 @@ import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
2
  export declare class ReactiveEntity<T extends Record<string, unknown>> extends Observable<T> {
3
3
  protected stateSubject: BehaviorSubject<T>;
4
4
  protected _destroy$: Subject<void>;
5
+ protected isDestroyed: boolean;
5
6
  state$: Observable<T>;
6
7
  constructor(initialState: T);
7
8
  protected next(value: T): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/core",
3
- "version": "1.324.0",
3
+ "version": "1.326.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -23,8 +23,8 @@
23
23
  "tsc": "tsc"
24
24
  },
25
25
  "dependencies": {
26
- "@prose-reader/cfi": "^1.324.0",
27
- "@prose-reader/shared": "^1.324.0"
26
+ "@prose-reader/cfi": "^1.326.0",
27
+ "@prose-reader/shared": "^1.326.0"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "rxjs": "*"
@@ -40,5 +40,5 @@
40
40
  }
41
41
  }
42
42
  },
43
- "gitHead": "70a490808c1db75819d239ccc6ef7933a1156a4f"
43
+ "gitHead": "abf0d33ae33aa1e008536f5c674e57a7e7ab84da"
44
44
  }
@@ -1,2 +0,0 @@
1
- import { EnhancerOutput, RootEnhancer } from '../types/enhancer';
2
- export declare const resourcesEnhancer: <InheritOptions, InheritOutput extends EnhancerOutput<RootEnhancer>>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => InheritOutput;
@@ -1,6 +0,0 @@
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
- }>;
@@ -1,6 +0,0 @@
1
- import { Manifest } from '../..';
2
- import { Context } from '../../context/Context';
3
- export declare const createResourcesManager: (context: Context) => {
4
- get: (itemIndexOrId: number | Pick<Manifest[`spineItems`][number], `id`>, fetchResource?: (item: Manifest[`spineItems`][number]) => Promise<Response>) => Promise<Response>;
5
- destroy: () => void;
6
- };