@prose-reader/core 1.239.0 → 1.240.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 (42) hide show
  1. package/dist/context/Context.d.ts +1 -21
  2. package/dist/createReaderWithEnhancer.d.ts +1 -2
  3. package/dist/enhancers/events/normalizeEventForViewport.d.ts +2 -2
  4. package/dist/enhancers/hotkeys.d.ts +1 -1
  5. package/dist/enhancers/layout/updateSpreadMode.d.ts +12 -0
  6. package/dist/enhancers/loading/createLoadingElement.d.ts +2 -2
  7. package/dist/enhancers/navigation/navigators/UserScrollNavigation.d.ts +12 -0
  8. package/dist/enhancers/navigation/resolvers/getNavigationForLeftOrTopPage.d.ts +7 -2
  9. package/dist/enhancers/navigation/resolvers/getNavigationForLeftSinglePage.d.ts +4 -4
  10. package/dist/enhancers/navigation/resolvers/getNavigationForRightOrBottomPage.d.ts +7 -2
  11. package/dist/enhancers/navigation/resolvers/getNavigationForRightSinglePage.d.ts +4 -4
  12. package/dist/index.js +1926 -1942
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.umd.cjs +38 -39
  15. package/dist/index.umd.cjs.map +1 -1
  16. package/dist/navigation/Navigator.d.ts +3 -3
  17. package/dist/navigation/controllers/ScrollNavigationController.d.ts +6 -1
  18. package/dist/navigation/resolvers/NavigationResolver.d.ts +4 -2
  19. package/dist/navigation/resolvers/getNavigationForPosition.d.ts +3 -3
  20. package/dist/navigation/resolvers/getNavigationForSpineItemPage.d.ts +5 -5
  21. package/dist/navigation/resolvers/getNavigationFromSpineItemPosition.d.ts +4 -4
  22. package/dist/navigation/tests/utils.d.ts +2 -2
  23. package/dist/reader.d.ts +1 -2
  24. package/dist/settings/ReaderSettingsManager.d.ts +1 -1
  25. package/dist/settings/computeSpreadMode.d.ts +5 -0
  26. package/dist/settings/types.d.ts +2 -1
  27. package/dist/spine/Spine.d.ts +1 -2
  28. package/dist/spine/SpineItemsObserver.d.ts +2 -3
  29. package/dist/spine/locator/SpineLocator.d.ts +2 -2
  30. package/dist/spineItem/SpineItem.d.ts +3 -1
  31. package/dist/spineItem/SpineItemLayout.d.ts +3 -1
  32. package/dist/spineItem/layout/getSpineItemPositionFromPageIndex.d.ts +3 -1
  33. package/dist/spineItem/locationResolver.d.ts +3 -1
  34. package/dist/spineItem/navigationResolver.d.ts +3 -1
  35. package/dist/spineItem/renderer/DocumentRenderer.d.ts +4 -0
  36. package/dist/types/index.d.ts +10 -0
  37. package/dist/utils/ReactiveEntity.d.ts +2 -1
  38. package/dist/viewport/Viewport.d.ts +14 -2
  39. package/package.json +4 -4
  40. package/dist/context/isUsingSpreadMode.d.ts +0 -9
  41. package/dist/navigation/UserScrollNavigation.d.ts +0 -19
  42. package/dist/spine/locator/getSpinePositionFromSpineItemPageIndex.d.ts +0 -13
@@ -4,10 +4,10 @@ import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
4
4
  import { Spine } from '../spine/Spine';
5
5
  import { SpineItemsManager } from '../spine/SpineItemsManager';
6
6
  import { Viewport } from '../viewport/Viewport';
7
- import { InternalNavigator } from './InternalNavigator';
8
- import { Locker } from './Locker';
9
7
  import { ControlledNavigationController } from './controllers/ControlledNavigationController';
10
8
  import { ScrollNavigationController } from './controllers/ScrollNavigationController';
9
+ import { InternalNavigator } from './InternalNavigator';
10
+ import { Locker } from './Locker';
11
11
  import { UserNavigationEntry, InternalNavigationEntry, DeprecatedViewportPosition } from './types';
12
12
  import { Observable } from 'rxjs';
13
13
  import { SpinePosition, SpineItemPosition, SpineItem } from '..';
@@ -34,7 +34,7 @@ export declare const createNavigator: ({ spineItemsManager, context, hookManager
34
34
  position: SpinePosition;
35
35
  spineItemId: string;
36
36
  } | undefined;
37
- getNavigationForSpineItemPage: (params: Omit<Parameters< getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => SpinePosition;
37
+ getNavigationForSpineItemPage: (params: Omit<Parameters< getNavigationForSpineItemPage>[0], "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator" | "viewport">) => SpinePosition;
38
38
  getNavigationFromSpineItemPosition: (params: {
39
39
  spineItemPosition: SpineItemPosition;
40
40
  spineItem: SpineItem;
@@ -4,9 +4,12 @@ import { HookManager } from '../../hooks/HookManager';
4
4
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
5
  import { Spine } from '../../spine/Spine';
6
6
  import { SpinePosition } from '../../spine/types';
7
+ import { AbstractPosition } from '../../types';
7
8
  import { ReactiveEntity } from '../../utils/ReactiveEntity';
8
9
  import { Viewport } from '../../viewport/Viewport';
9
10
  import { ViewportNavigationEntry } from './ControlledNavigationController';
11
+ export declare class ScrollPosition extends AbstractPosition {
12
+ }
10
13
  export declare class ScrollNavigationController extends ReactiveEntity<{
11
14
  element: HTMLElement | undefined;
12
15
  }> {
@@ -26,5 +29,7 @@ export declare class ScrollNavigationController extends ReactiveEntity<{
26
29
  element: HTMLElement | undefined;
27
30
  }>): void;
28
31
  navigate(navigation: ViewportNavigationEntry): void;
29
- get viewportPosition(): SpinePosition;
32
+ fromScrollPosition(position: ScrollPosition): SpinePosition;
33
+ fromSpinePosition(position: SpinePosition): ScrollPosition;
34
+ get scrollPosition(): ScrollPosition;
30
35
  }
@@ -6,22 +6,24 @@ import { SpineItemsManager } from '../../spine/SpineItemsManager';
6
6
  import { SpinePosition } from '../../spine/types';
7
7
  import { SpineItem } from '../../spineItem/SpineItem';
8
8
  import { SpineItemPosition } from '../../spineItem/types';
9
+ import { Viewport } from '../../viewport/Viewport';
9
10
  import { DeprecatedViewportPosition } from '../types';
10
11
  import { getNavigationForSpineItemPage } from './getNavigationForSpineItemPage';
11
12
  export declare const NAMESPACE = "spineNavigator";
12
13
  export type NavigationResolver = ReturnType<typeof createNavigationResolver>;
13
- export declare const createNavigationResolver: ({ context, spineItemsManager, locator, settings, spine, }: {
14
+ export declare const createNavigationResolver: ({ context, spineItemsManager, locator, settings, spine, viewport, }: {
14
15
  context: Context;
15
16
  spineItemsManager: SpineItemsManager;
16
17
  locator: SpineLocator;
17
18
  settings: ReaderSettingsManager;
18
19
  spine: Spine;
20
+ viewport: Viewport;
19
21
  }) => {
20
22
  getNavigationForUrl: (url: string | URL) => {
21
23
  position: SpinePosition;
22
24
  spineItemId: string;
23
25
  } | undefined;
24
- getNavigationForSpineItemPage: (params: Omit<Parameters<typeof getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => SpinePosition;
26
+ getNavigationForSpineItemPage: (params: Omit<Parameters<typeof getNavigationForSpineItemPage>[0], "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator" | "viewport">) => SpinePosition;
25
27
  getNavigationFromSpineItemPosition: (params: {
26
28
  spineItemPosition: SpineItemPosition;
27
29
  spineItem: SpineItem;
@@ -1,11 +1,11 @@
1
- import { Context } from '../../context/Context';
2
1
  import { SpineLocator } from '../../spine/locator/SpineLocator';
3
2
  import { SpinePosition } from '../../spine/types';
4
3
  import { SpineItemNavigationResolver } from '../../spineItem/navigationResolver';
4
+ import { Viewport } from '../../viewport/Viewport';
5
5
  import { DeprecatedViewportPosition } from '../types';
6
- export declare const getNavigationForPosition: ({ viewportPosition, spineLocator, context, spineItemNavigationResolver, }: {
6
+ export declare const getNavigationForPosition: ({ viewportPosition, spineLocator, spineItemNavigationResolver, viewport, }: {
7
7
  viewportPosition: DeprecatedViewportPosition | SpinePosition;
8
8
  spineLocator: SpineLocator;
9
- context: Context;
10
9
  spineItemNavigationResolver: SpineItemNavigationResolver;
10
+ viewport: Viewport;
11
11
  }) => SpinePosition;
@@ -1,14 +1,14 @@
1
- import { Context } from '../../context/Context';
2
- import { SpineItemsManager } from '../../spine/SpineItemsManager';
3
1
  import { SpineLocator } from '../../spine/locator/SpineLocator';
4
- import { SpineItem } from '../../spineItem/SpineItem';
2
+ import { SpineItemsManager } from '../../spine/SpineItemsManager';
5
3
  import { SpineItemNavigationResolver } from '../../spineItem/navigationResolver';
4
+ import { SpineItem } from '../../spineItem/SpineItem';
5
+ import { Viewport } from '../../viewport/Viewport';
6
6
  import { DeprecatedViewportPosition } from '../types';
7
- export declare const getNavigationForSpineItemPage: ({ pageIndex, spineItemsManager, spineItemId, context, spineLocator, spineItemNavigationResolver, }: {
7
+ export declare const getNavigationForSpineItemPage: ({ pageIndex, spineItemsManager, spineItemId, spineLocator, spineItemNavigationResolver, viewport, }: {
8
8
  pageIndex: number;
9
9
  spineItemId: SpineItem | number | string;
10
10
  spineItemsManager: SpineItemsManager;
11
11
  spineItemNavigationResolver: SpineItemNavigationResolver;
12
12
  spineLocator: SpineLocator;
13
- context: Context;
13
+ viewport: Viewport;
14
14
  }) => DeprecatedViewportPosition;
@@ -1,13 +1,13 @@
1
- import { Context } from '../../context/Context';
2
1
  import { SpineLocator } from '../../spine/locator/SpineLocator';
3
- import { SpineItem } from '../../spineItem/SpineItem';
4
2
  import { SpineItemLocator } from '../../spineItem/locationResolver';
3
+ import { SpineItem } from '../../spineItem/SpineItem';
5
4
  import { SpineItemPosition } from '../../spineItem/types';
5
+ import { Viewport } from '../../viewport/Viewport';
6
6
  import { SpinePosition } from '../..';
7
- export declare const getNavigationFromSpineItemPosition: ({ spineItem, spineItemPosition, spineLocator, spineItemLocator, context, }: {
7
+ export declare const getNavigationFromSpineItemPosition: ({ spineItem, spineItemPosition, spineLocator, spineItemLocator, viewport, }: {
8
8
  spineItemPosition: SpineItemPosition;
9
9
  spineItem: SpineItem;
10
10
  spineLocator: SpineLocator;
11
11
  spineItemLocator: SpineItemLocator;
12
- context: Context;
12
+ viewport: Viewport;
13
13
  }) => SpinePosition;
@@ -1,7 +1,7 @@
1
- import { SpineItem } from '../..';
1
+ import { SpineItem, Viewport } from '../..';
2
2
  import { Context } from '../../context/Context';
3
3
  import { HookManager } from '../../hooks/HookManager';
4
4
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
5
  import { Spine } from '../../spine/Spine';
6
6
  import { SpineItemsManager } from '../../spine/SpineItemsManager';
7
- export declare const generateItems: (size: number, number: number, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, spine: Spine, spineItemsManager: SpineItemsManager) => SpineItem[];
7
+ export declare const generateItems: (size: number, number: number, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, spine: Spine, spineItemsManager: SpineItemsManager, viewport: Viewport) => SpineItem[];
package/dist/reader.d.ts CHANGED
@@ -62,7 +62,7 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
62
62
  position: SpinePosition;
63
63
  spineItemId: string;
64
64
  } | undefined;
65
- getNavigationForSpineItemPage: (params: Omit<Parameters< getNavigationForSpineItemPage>[0], "context" | "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator">) => SpinePosition;
65
+ getNavigationForSpineItemPage: (params: Omit<Parameters< getNavigationForSpineItemPage>[0], "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator" | "viewport">) => SpinePosition;
66
66
  getNavigationFromSpineItemPosition: (params: {
67
67
  spineItemPosition: SpineItemPosition;
68
68
  spineItem: SpineItem;
@@ -110,7 +110,6 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
110
110
  release: () => void;
111
111
  } | undefined>;
112
112
  viewport: Viewport;
113
- element$: Observable<HTMLElement | undefined>;
114
113
  viewportState$: Observable<"free" | "busy">;
115
114
  viewportFree$: Observable<"free">;
116
115
  state$: Observable<"idle" | "ready">;
@@ -8,7 +8,7 @@ export declare class ReaderSettingsManager extends SettingsManager<CoreInputSett
8
8
  private getComputedSettings;
9
9
  getOutputSettings(inputSettings: CoreInputSettings): CoreInputSettings & ComputedCoreSettings;
10
10
  getDefaultSettings(): {
11
- forceSinglePageMode: false;
11
+ spreadMode: false;
12
12
  pageTurnAnimation: "slide";
13
13
  pageTurnDirection: "horizontal";
14
14
  pageTurnAnimationDuration: undefined;
@@ -0,0 +1,5 @@
1
+ import { Manifest } from '@prose-reader/shared';
2
+ export declare const computeSpreadMode: ({ manifest, spreadMode, }: {
3
+ spreadMode: boolean;
4
+ manifest?: Manifest;
5
+ }) => boolean;
@@ -2,7 +2,7 @@ import { Manifest } from '@prose-reader/shared';
2
2
  import { Observable } from 'rxjs';
3
3
  import { DocumentRenderer, DocumentRendererParams } from '../spineItem/renderer/DocumentRenderer';
4
4
  export type CoreInputSettings = {
5
- forceSinglePageMode: boolean;
5
+ spreadMode: boolean;
6
6
  pageTurnAnimation: `none` | `fade` | `slide`;
7
7
  pageTurnAnimationDuration: undefined | number;
8
8
  pageTurnDirection: `vertical` | `horizontal`;
@@ -23,6 +23,7 @@ export type CoreInputSettings = {
23
23
  getRenderer?: (item: Manifest["spineItems"][number]) => undefined | ((props: DocumentRendererParams) => DocumentRenderer);
24
24
  };
25
25
  export type ComputedCoreSettings = {
26
+ computedSpreadMode: boolean;
26
27
  computedPageTurnMode: CoreInputSettings[`pageTurnMode`];
27
28
  computedPageTurnDirection: CoreInputSettings[`pageTurnDirection`];
28
29
  computedPageTurnAnimation: CoreInputSettings[`pageTurnAnimation`];
@@ -16,7 +16,6 @@ import { SpineLayout } from './SpineLayout';
16
16
  import { SpineItemSpineLayout, SpineItemPageSpineLayout } from './types';
17
17
  import { SpineItemPageLayout } from '..';
18
18
  export declare class Spine extends DestroyableClass {
19
- protected parentElement$: Observable<HTMLElement | undefined>;
20
19
  protected context: Context;
21
20
  protected pagination: Pagination;
22
21
  spineItemsManager: SpineItemsManager;
@@ -31,7 +30,7 @@ export declare class Spine extends DestroyableClass {
31
30
  spineItemsObserver: SpineItemsObserver;
32
31
  pages: Pages;
33
32
  element$: Observable<HTMLElement | undefined>;
34
- constructor(parentElement$: Observable<HTMLElement | undefined>, context: Context, pagination: Pagination, spineItemsManager: SpineItemsManager, spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>, settings: ReaderSettingsManager, hookManager: HookManager, viewport: Viewport);
33
+ constructor(context: Context, pagination: Pagination, spineItemsManager: SpineItemsManager, spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>, settings: ReaderSettingsManager, hookManager: HookManager, viewport: Viewport);
35
34
  get element(): HTMLElement | undefined;
36
35
  layout(): void;
37
36
  getSpineItemSpineLayoutInfo(spineItemOrIndex: SpineItem | number | string | undefined): SpineItemSpineLayout;
@@ -1,8 +1,8 @@
1
1
  import { Observable } from 'rxjs';
2
- import { SpineItemsManager } from './SpineItemsManager';
2
+ import { SpineItem } from '../spineItem/SpineItem';
3
3
  import { DestroyableClass } from '../utils/DestroyableClass';
4
4
  import { SpineLocator } from './locator/SpineLocator';
5
- import { SpineItem } from '../spineItem/SpineItem';
5
+ import { SpineItemsManager } from './SpineItemsManager';
6
6
  export declare class SpineItemsObserver extends DestroyableClass {
7
7
  protected spineItemsManager: SpineItemsManager;
8
8
  protected spineLocator: SpineLocator;
@@ -10,7 +10,6 @@ export declare class SpineItemsObserver extends DestroyableClass {
10
10
  item: SpineItem;
11
11
  isReady: boolean;
12
12
  }>;
13
- itemLoaded$: Observable<SpineItem>;
14
13
  itemResize$: Observable<{
15
14
  item: SpineItem;
16
15
  entries: ResizeObserverEntry[];
@@ -1,10 +1,10 @@
1
1
  import { Context } from '../../context/Context';
2
2
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
3
- import { SpineItem } from '../../spineItem/SpineItem';
4
3
  import { createSpineItemLocator } from '../../spineItem/locationResolver';
4
+ import { SpineItem } from '../../spineItem/SpineItem';
5
5
  import { SpineItemPosition } from '../../spineItem/types';
6
- import { Viewport } from '../../viewport/Viewport';
7
6
  import { ViewportSlicePosition } from '../../viewport/types';
7
+ import { Viewport } from '../../viewport/Viewport';
8
8
  import { SpineItemsManager } from '../SpineItemsManager';
9
9
  import { SpineLayout } from '../SpineLayout';
10
10
  import { SpinePosition, UnsafeSpinePosition } from '../types';
@@ -4,6 +4,7 @@ import { Context } from '../context/Context';
4
4
  import { HookManager } from '../hooks/HookManager';
5
5
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
6
6
  import { ReactiveEntity } from '../utils/ReactiveEntity';
7
+ import { Viewport } from '../viewport/Viewport';
7
8
  import { DocumentRenderer } from './renderer/DocumentRenderer';
8
9
  import { ResourceHandler } from './resources/ResourceHandler';
9
10
  import { SpineItemLayout } from './SpineItemLayout';
@@ -20,12 +21,13 @@ export declare class SpineItem extends ReactiveEntity<SpineItemState> {
20
21
  settings: ReaderSettingsManager;
21
22
  hookManager: HookManager;
22
23
  index: number;
24
+ viewport: Viewport;
23
25
  readonly containerElement: HTMLElement;
24
26
  readonly needsLayout$: Observable<unknown>;
25
27
  readonly renderer: DocumentRenderer;
26
28
  readonly resourcesHandler: ResourceHandler;
27
29
  readonly layout: SpineItemLayout;
28
- constructor(item: Manifest[`spineItems`][number], parentElement: HTMLElement, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, index: number);
30
+ constructor(item: Manifest[`spineItems`][number], parentElement: HTMLElement, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, index: number, viewport: Viewport);
29
31
  load: () => void;
30
32
  unload: () => void;
31
33
  markDirty: () => void;
@@ -4,6 +4,7 @@ import { Context } from '../context/Context';
4
4
  import { HookManager } from '../hooks/HookManager';
5
5
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
6
6
  import { DestroyableClass } from '../utils/DestroyableClass';
7
+ import { Viewport } from '../viewport/Viewport';
7
8
  import { DocumentRenderer } from './renderer/DocumentRenderer';
8
9
  export declare class SpineItemLayout extends DestroyableClass {
9
10
  item: Manifest[`spineItems`][number];
@@ -12,6 +13,7 @@ export declare class SpineItemLayout extends DestroyableClass {
12
13
  hookManager: HookManager;
13
14
  renderer: DocumentRenderer;
14
15
  settings: ReaderSettingsManager;
16
+ viewport: Viewport;
15
17
  private layoutTriggerSubject;
16
18
  private lastLayout;
17
19
  readonly layout$: Observable<{
@@ -27,7 +29,7 @@ export declare class SpineItemLayout extends DestroyableClass {
27
29
  height: number;
28
30
  };
29
31
  }>;
30
- constructor(item: Manifest[`spineItems`][number], containerElement: HTMLElement, context: Context, hookManager: HookManager, renderer: DocumentRenderer, settings: ReaderSettingsManager);
32
+ constructor(item: Manifest[`spineItems`][number], containerElement: HTMLElement, context: Context, hookManager: HookManager, renderer: DocumentRenderer, settings: ReaderSettingsManager, viewport: Viewport);
31
33
  private validateDimension;
32
34
  private applyDimsAfterLayout;
33
35
  layout: (params: ObservedValueOf<typeof this.layoutTriggerSubject>) => Observable<{
@@ -1,6 +1,7 @@
1
1
  import { Context } from '../../context/Context';
2
+ import { Viewport } from '../../viewport/Viewport';
2
3
  import { SpineItemPosition } from '../types';
3
- export declare const getSpineItemPositionFromPageIndex: ({ pageIndex, itemLayout, context, isUsingVerticalWriting, }: {
4
+ export declare const getSpineItemPositionFromPageIndex: ({ pageIndex, itemLayout, context, isUsingVerticalWriting, viewport, }: {
4
5
  pageIndex: number;
5
6
  itemLayout: {
6
7
  width: number;
@@ -8,4 +9,5 @@ export declare const getSpineItemPositionFromPageIndex: ({ pageIndex, itemLayout
8
9
  };
9
10
  context: Context;
10
11
  isUsingVerticalWriting: boolean;
12
+ viewport: Viewport;
11
13
  }) => SpineItemPosition;
@@ -1,11 +1,13 @@
1
1
  import { Context } from '../context/Context';
2
2
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
3
+ import { Viewport } from '../viewport/Viewport';
3
4
  import { SpineItem } from './SpineItem';
4
5
  import { SpineItemPosition, UnsafeSpineItemPagePosition } from './types';
5
6
  export type SpineItemLocator = ReturnType<typeof createSpineItemLocator>;
6
- export declare const createSpineItemLocator: ({ context, settings, }: {
7
+ export declare const createSpineItemLocator: ({ context, settings, viewport, }: {
7
8
  context: Context;
8
9
  settings: ReaderSettingsManager;
10
+ viewport: Viewport;
9
11
  }) => {
10
12
  getSpineItemPositionFromNode: (node: Node, offset: number, spineItem: SpineItem) => SpineItemPosition | undefined;
11
13
  getSpineItemPositionFromPageIndex: ({ pageIndex, spineItem, }: {
@@ -1,11 +1,13 @@
1
1
  import { Context } from '../context/Context';
2
2
  import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
3
+ import { Viewport } from '../viewport/Viewport';
3
4
  import { SpineItem } from './SpineItem';
4
5
  import { SpineItemPosition } from './types';
5
6
  export type SpineItemNavigationResolver = ReturnType<typeof createNavigationResolver>;
6
- export declare const createNavigationResolver: ({ context, settings, }: {
7
+ export declare const createNavigationResolver: ({ context, settings, viewport, }: {
7
8
  context: Context;
8
9
  settings: ReaderSettingsManager;
10
+ viewport: Viewport;
9
11
  }) => {
10
12
  getNavigationForLastPage: (spineItem: SpineItem) => SpineItemPosition;
11
13
  getNavigationForPosition: (spineItem: SpineItem, position: SpineItemPosition) => SpineItemPosition;
@@ -4,6 +4,7 @@ import { Context } from '../../context/Context';
4
4
  import { HookManager } from '../../hooks/HookManager';
5
5
  import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
6
6
  import { DestroyableClass } from '../../utils/DestroyableClass';
7
+ import { Viewport } from '../../viewport/Viewport';
7
8
  import { ResourceHandler } from '../resources/ResourceHandler';
8
9
  export type DocumentRendererParams = {
9
10
  context: Context;
@@ -12,6 +13,7 @@ export type DocumentRendererParams = {
12
13
  item: Manifest[`spineItems`][number];
13
14
  containerElement: HTMLElement;
14
15
  resourcesHandler: ResourceHandler;
16
+ viewport: Viewport;
15
17
  };
16
18
  type LayoutParams = {
17
19
  minPageSpread: number;
@@ -22,6 +24,7 @@ type LayoutParams = {
22
24
  export declare abstract class DocumentRenderer extends DestroyableClass {
23
25
  static readonly DOCUMENT_CONTAINER_CLASS_NAME = "prose-reader-document-container";
24
26
  private triggerSubject;
27
+ protected viewport: Viewport;
25
28
  protected context: Context;
26
29
  protected settings: ReaderSettingsManager;
27
30
  protected hookManager: HookManager;
@@ -40,6 +43,7 @@ export declare abstract class DocumentRenderer extends DestroyableClass {
40
43
  item: Manifest[`spineItems`][number];
41
44
  containerElement: HTMLElement;
42
45
  resourcesHandler: ResourceHandler;
46
+ viewport: Viewport;
43
47
  });
44
48
  protected setDocumentContainer(element: HTMLElement): void;
45
49
  protected attach(): void;
@@ -0,0 +1,10 @@
1
+ import { Manifest } from '@prose-reader/shared';
2
+ export type { Manifest };
3
+ export declare abstract class AbstractPosition {
4
+ readonly x: number;
5
+ readonly y: number;
6
+ constructor(position: {
7
+ x: number;
8
+ y: number;
9
+ });
10
+ }
@@ -1,12 +1,13 @@
1
1
  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
- protected destroy$: Subject<void>;
4
+ protected _destroy$: Subject<void>;
5
5
  constructor(initialState: T);
6
6
  protected next(value: T): void;
7
7
  protected mergeCompare(pagination: Partial<T>): void;
8
8
  watch<K extends keyof T>(key: K): Observable<T[K]>;
9
9
  watch<K extends keyof T>(keys: K[]): Observable<Pick<T, K>>;
10
10
  get value(): T;
11
+ destroy$: Observable<void>;
11
12
  destroy(): void;
12
13
  }
@@ -1,4 +1,5 @@
1
1
  import { Context } from '../context/Context';
2
+ import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
2
3
  import { ReactiveEntity } from '../utils/ReactiveEntity';
3
4
  import { AbsoluteViewport, RelativeViewport } from './types';
4
5
  type State = {
@@ -7,15 +8,26 @@ type State = {
7
8
  width: number;
8
9
  height: number;
9
10
  };
11
+ width: number;
12
+ height: number;
10
13
  };
11
14
  export declare class Viewport extends ReactiveEntity<State> {
12
15
  protected context: Context;
13
- constructor(context: Context);
14
- protected calculatePageSize(): {
16
+ protected settingsManager: ReaderSettingsManager;
17
+ constructor(context: Context, settingsManager: ReaderSettingsManager);
18
+ protected calculatePageSize(layout: {
19
+ width: number;
20
+ height: number;
21
+ }): {
15
22
  width: number;
16
23
  height: number;
17
24
  };
25
+ layout(): void;
18
26
  get absoluteViewport(): AbsoluteViewport;
27
+ get pageSize(): {
28
+ width: number;
29
+ height: number;
30
+ };
19
31
  get scaleFactor(): number;
20
32
  get relativeViewport(): RelativeViewport;
21
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/core",
3
- "version": "1.239.0",
3
+ "version": "1.240.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.umd.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.239.0",
27
- "@prose-reader/shared": "^1.239.0"
26
+ "@prose-reader/cfi": "^1.240.0",
27
+ "@prose-reader/shared": "^1.240.0"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "rxjs": "*"
@@ -39,5 +39,5 @@
39
39
  }
40
40
  }
41
41
  },
42
- "gitHead": "1014fc88c110c343adcf7328e5c6d20b8f130e94"
42
+ "gitHead": "6657007e6525e86c6b9b35a176c17af304f31d53"
43
43
  }
@@ -1,9 +0,0 @@
1
- import { Manifest } from '@prose-reader/shared';
2
- export declare const isUsingSpreadMode: ({ manifest, visibleAreaRect, forceSinglePageMode, }: {
3
- manifest?: Manifest;
4
- visibleAreaRect: {
5
- height: number;
6
- width: number;
7
- };
8
- forceSinglePageMode?: boolean;
9
- }) => boolean;
@@ -1,19 +0,0 @@
1
- import { Subject, Observable } from 'rxjs';
2
- import { Context } from '../context/Context';
3
- import { ReaderSettingsManager } from '../settings/ReaderSettingsManager';
4
- import { Spine } from '../spine/Spine';
5
- import { DestroyableClass } from '../utils/DestroyableClass';
6
- import { Viewport } from '../viewport/Viewport';
7
- import { Locker } from './Locker';
8
- import { ScrollNavigationController } from './controllers/ScrollNavigationController';
9
- import { UserNavigationEntry } from './types';
10
- export declare class UserScrollNavigation extends DestroyableClass {
11
- protected settings: ReaderSettingsManager;
12
- protected context: Context;
13
- protected spine: Spine;
14
- protected scrollNavigationController: ScrollNavigationController;
15
- protected locker: Locker;
16
- protected navigationSubject: Subject<UserNavigationEntry>;
17
- navigation$: Observable<UserNavigationEntry>;
18
- constructor(settings: ReaderSettingsManager, context: Context, spine: Spine, scrollNavigationController: ScrollNavigationController, locker: Locker, viewport: Viewport);
19
- }
@@ -1,13 +0,0 @@
1
- import { Context } from '../../context/Context';
2
- import { SpinePosition } from '../types';
3
- export declare const getSpinePositionFromSpineItemPageIndex: ({ pageIndex, context, isUsingVerticalWriting, itemLayout, }: {
4
- pageIndex: number;
5
- isUsingVerticalWriting: boolean;
6
- context: Context;
7
- itemLayout: {
8
- left: number;
9
- top: number;
10
- width: number;
11
- height: number;
12
- };
13
- }) => SpinePosition;