@prose-reader/core 1.270.0 → 1.272.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/reader.d.ts CHANGED
@@ -8,12 +8,12 @@ import { SettingsInterface } from './settings/SettingsInterface';
8
8
  import { CoreInputSettings } from './settings/types';
9
9
  import { Spine } from './spine/Spine';
10
10
  import { SpineItemsManager } from './spine/SpineItemsManager';
11
- import { SpineItem, SpineItemReference } from './spineItem/SpineItem';
11
+ import { SpineItemReference } from './spineItem/SpineItem';
12
12
  import { Viewport } from './viewport/Viewport';
13
13
  import { CoreHook } from './hooks';
14
14
  import { Manifest } from '@prose-reader/shared';
15
15
  import { ProseParsedCfi } from './cfi';
16
- import { InternalNavigationEntry, InternalNavigator, ScrollNavigationController, ControlledNavigationController, Locker, UserNavigationEntry, SpinePosition, SpineItemPosition, UnboundSpinePosition, SpineItemsObserver, CoreOutputSettings } from '.';
16
+ import { PageEntry, SpineItem, InternalNavigationEntry, InternalNavigator, ScrollNavigationController, ControlledNavigationController, Locker, UserNavigationEntry, SpinePosition, SpineItemPosition, UnboundSpinePosition, SpineItemsObserver, CoreOutputSettings } from '.';
17
17
  import { getNavigationForSpineItemPage } from './navigation/resolvers/getNavigationForSpineItemPage';
18
18
  import { PaginationInfo } from './pagination';
19
19
  export type CreateReaderOptions = Partial<CoreInputSettings>;
@@ -30,9 +30,9 @@ export declare const createReader: (inputSettings: CreateReaderOptions) => {
30
30
  parseCfi: (cfi: string) => ProseParsedCfi & {
31
31
  offset: number;
32
32
  };
33
- generateCfiForSpineItemPage: (params: {
34
- pageIndex: number;
35
- spineItem: SpineItem;
33
+ generateCfiForSpineItemPage: ({ spineItem, pageNode, }: {
34
+ spineItem: Manifest["spineItems"][number];
35
+ pageNode: NonNullable< PageEntry["firstVisibleNode"]>;
36
36
  }) => string;
37
37
  resolveCfi: (params: Omit<Parameters<typeof resolveCfi>[0], "spineItemsManager">) => Omit< ProseParsedCfi & {
38
38
  offset: number;
@@ -16,7 +16,7 @@ export declare const spinePositionToSpineItemSpineLayout: ({ position, pageSize,
16
16
  width: number;
17
17
  };
18
18
  }) => SpineItemPageSpineLayout;
19
- type PageEntry = {
19
+ export type PageEntry = {
20
20
  absoluteLayout: SpineItemPageSpineLayout;
21
21
  layout: SpineItemPageLayout;
22
22
  itemIndex: number;
@@ -9,12 +9,11 @@ import { DestroyableClass } from '../utils/DestroyableClass';
9
9
  import { Viewport } from '../viewport/Viewport';
10
10
  import { SpineItemsLoader } from './loader/SpineItemsLoader';
11
11
  import { SpineLocator } from './locator/SpineLocator';
12
- import { Pages } from './Pages';
12
+ import { Pages, PageEntry } from './Pages';
13
13
  import { SpineItemsManager } from './SpineItemsManager';
14
14
  import { SpineItemsObserver } from './SpineItemsObserver';
15
15
  import { SpineLayout } from './SpineLayout';
16
- import { SpineItemSpineLayout, SpineItemPageSpineLayout } from './types';
17
- import { SpineItemPageLayout } from '..';
16
+ import { SpineItemSpineLayout } from './types';
18
17
  export declare class Spine extends DestroyableClass {
19
18
  protected context: Context;
20
19
  protected pagination: Pagination;
@@ -35,17 +34,7 @@ export declare class Spine extends DestroyableClass {
35
34
  layout(): void;
36
35
  getSpineItemSpineLayoutInfo(spineItemOrIndex: SpineItem | number | string | undefined): SpineItemSpineLayout;
37
36
  get layout$(): Observable<{
38
- pages: {
39
- absoluteLayout: SpineItemPageSpineLayout;
40
- layout: SpineItemPageLayout;
41
- itemIndex: number;
42
- absolutePageIndex: number;
43
- pageIndex: number;
44
- firstVisibleNode: {
45
- node: Node;
46
- offset: number;
47
- } | undefined;
48
- }[];
37
+ pages: PageEntry[];
49
38
  }>;
50
39
  destroy(): void;
51
40
  }
@@ -1,18 +1,17 @@
1
1
  import { Observable } from 'rxjs';
2
- import { SpineItem } from '../spineItem/SpineItem';
2
+ import { SpineItem, SpineItemState } from '../spineItem/SpineItem';
3
3
  import { DestroyableClass } from '../utils/DestroyableClass';
4
- import { SpineLocator } from './locator/SpineLocator';
5
4
  import { SpineItemsManager } from './SpineItemsManager';
6
5
  export declare class SpineItemsObserver extends DestroyableClass {
7
6
  protected spineItemsManager: SpineItemsManager;
8
- protected spineLocator: SpineLocator;
9
- itemIsReady$: Observable<{
7
+ states$: Observable<{
10
8
  item: SpineItem;
11
- isReady: boolean;
12
- }>;
9
+ } & SpineItemState>;
13
10
  itemResize$: Observable<{
14
11
  item: SpineItem;
15
12
  entries: ResizeObserverEntry[];
16
13
  }>;
17
- constructor(spineItemsManager: SpineItemsManager, spineLocator: SpineLocator);
14
+ itemLoad$: Observable<SpineItem>;
15
+ itemUnload$: Observable<SpineItem>;
16
+ constructor(spineItemsManager: SpineItemsManager);
18
17
  }
@@ -5,6 +5,7 @@ import { SpineItem } from '../spineItem/SpineItem';
5
5
  import { DestroyableClass } from '../utils/DestroyableClass';
6
6
  import { Viewport } from '../viewport/Viewport';
7
7
  import { SpineItemsManager } from './SpineItemsManager';
8
+ import { SpineItemsObserver } from './SpineItemsObserver';
8
9
  import { SpineItemSpineLayout } from './types';
9
10
  export type PageLayoutInformation = {
10
11
  absolutePageIndex: number;
@@ -16,15 +17,20 @@ export type LayoutInfo = {
16
17
  };
17
18
  export declare class SpineLayout extends DestroyableClass {
18
19
  protected spineItemsManager: SpineItemsManager;
20
+ protected spineItemsObserver: SpineItemsObserver;
19
21
  protected context: Context;
20
22
  protected settings: ReaderSettingsManager;
21
23
  protected viewport: Viewport;
22
- protected layoutSubject: Subject<unknown>;
24
+ protected externalLayoutTrigger: Subject<unknown>;
23
25
  protected spineItemsRelativeLayouts: SpineItemSpineLayout[];
24
26
  readonly layout$: Observable<unknown>;
25
- constructor(spineItemsManager: SpineItemsManager, context: Context, settings: ReaderSettingsManager, viewport: Viewport);
27
+ constructor(spineItemsManager: SpineItemsManager, spineItemsObserver: SpineItemsObserver, context: Context, settings: ReaderSettingsManager, viewport: Viewport);
28
+ private watchForVerticalWritingUpdate;
26
29
  layout(): void;
27
30
  getSpineItemSpineLayoutInfo(spineItemOrIndex: SpineItem | number | string | undefined): SpineItemSpineLayout;
28
31
  get numberOfPages(): number;
29
32
  destroy(): void;
33
+ private getSpreadPosition;
34
+ private getStartEdges;
35
+ private createSpineItemLayout;
30
36
  }
@@ -1,4 +1,3 @@
1
- import { Observable } from 'rxjs';
2
1
  import { Manifest } from '..';
3
2
  import { Context } from '../context/Context';
4
3
  import { HookManager } from '../hooks/HookManager';
@@ -8,13 +7,14 @@ import { Viewport } from '../viewport/Viewport';
8
7
  import { DocumentRenderer } from './renderer/DocumentRenderer';
9
8
  import { ResourceHandler } from './resources/ResourceHandler';
10
9
  import { SpineItemLayout } from './SpineItemLayout';
10
+ import { Observable } from 'rxjs';
11
11
  export type SpineItemReference = string | SpineItem | number;
12
- type SpineItemState = {
12
+ export type SpineItemState = {
13
13
  isLoaded: boolean;
14
14
  isReady: boolean;
15
15
  isError: boolean;
16
16
  error: unknown | undefined;
17
- iDirty: boolean;
17
+ isDirty: boolean;
18
18
  };
19
19
  export declare class SpineItem extends ReactiveEntity<SpineItemState> {
20
20
  item: Manifest[`spineItems`][number];
@@ -25,10 +25,10 @@ export declare class SpineItem extends ReactiveEntity<SpineItemState> {
25
25
  index: number;
26
26
  viewport: Viewport;
27
27
  readonly containerElement: HTMLElement;
28
- readonly needsLayout$: Observable<unknown>;
29
28
  readonly renderer: DocumentRenderer;
30
29
  readonly resourcesHandler: ResourceHandler;
31
- readonly layout: SpineItemLayout;
30
+ readonly didLayout$: SpineItemLayout["didLayout$"];
31
+ private readonly _layout;
32
32
  constructor(item: Manifest[`spineItems`][number], parentElement: HTMLElement, context: Context, settings: ReaderSettingsManager, hookManager: HookManager, index: number, viewport: Viewport);
33
33
  load: () => void;
34
34
  unload: () => void;
@@ -39,14 +39,12 @@ export declare class SpineItem extends ReactiveEntity<SpineItemState> {
39
39
  get readingDirection(): "ltr" | "rtl" | undefined;
40
40
  isUsingVerticalWriting: () => boolean;
41
41
  get loaded$(): Observable<void>;
42
- get unloaded$(): Observable<{
43
- state: `error`;
44
- error: unknown;
45
- } | {
46
- state: `idle` | `loading` | `loaded` | `unloading`;
47
- error: undefined;
48
- }>;
42
+ get unloaded$(): Observable<void>;
49
43
  get renditionLayout(): "reflowable" | "pre-paginated";
44
+ get layoutInfo(): {
45
+ width: number;
46
+ height: number;
47
+ };
50
48
  get numberOfPages(): number;
49
+ layout: SpineItemLayout["layout"];
51
50
  }
52
- export {};
@@ -16,31 +16,19 @@ export declare class SpineItemLayout extends DestroyableClass {
16
16
  viewport: Viewport;
17
17
  private layoutTriggerSubject;
18
18
  private lastLayout;
19
- readonly layout$: Observable<{
19
+ readonly didLayout$: Observable<{
20
20
  width: number;
21
21
  height: number;
22
22
  }>;
23
- readonly layoutProcess$: Observable<{
24
- readonly type: "start";
25
- } | {
26
- readonly type: "end";
27
- readonly data: {
28
- width: number;
29
- height: number;
30
- };
31
- }>;
32
23
  constructor(item: Manifest[`spineItems`][number], containerElement: HTMLElement, context: Context, hookManager: HookManager, renderer: DocumentRenderer, settings: ReaderSettingsManager, viewport: Viewport);
33
24
  private validateDimension;
34
- private applyDimsAfterLayout;
25
+ private computeLayoutInformation;
26
+ private adjustPositionOfElement;
27
+ private updateContainerLayout;
35
28
  layout: (params: ObservedValueOf<typeof this.layoutTriggerSubject>) => Observable<{
36
29
  width: number;
37
30
  height: number;
38
31
  }>;
39
- adjustPositionOfElement: ({ right, left, top, }: {
40
- right?: number;
41
- left?: number;
42
- top?: number;
43
- }) => void;
44
32
  get layoutInfo(): {
45
33
  width: number;
46
34
  height: number;
@@ -39,6 +39,7 @@ export declare abstract class DocumentRenderer extends ReactiveEntity<DocumentRe
39
39
  protected containerElement: HTMLElement;
40
40
  protected resourcesHandler: ResourceHandler;
41
41
  loaded$: Observable<void>;
42
+ unloaded$: Observable<void>;
42
43
  private _documentContainer;
43
44
  constructor(params: {
44
45
  context: Context;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/core",
3
- "version": "1.270.0",
3
+ "version": "1.272.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.270.0",
27
- "@prose-reader/shared": "^1.270.0"
26
+ "@prose-reader/cfi": "^1.272.0",
27
+ "@prose-reader/shared": "^1.272.0"
28
28
  },
29
29
  "peerDependencies": {
30
30
  "rxjs": "*"
@@ -40,5 +40,5 @@
40
40
  }
41
41
  }
42
42
  },
43
- "gitHead": "846e0d9f7783840e6801d0bb0e2e69633d487a99"
43
+ "gitHead": "15e071db18742b2ac15c61513ce847ceadc7a2a0"
44
44
  }
@@ -1,22 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- import { SpineItem } from '../..';
3
- import { Context } from '../../context/Context';
4
- import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager';
5
- import { Viewport } from '../../viewport/Viewport';
6
- import { SpineItemsManager } from '../SpineItemsManager';
7
- import { SpineItemSpineLayout } from '../types';
8
- export declare const layoutItem: ({ horizontalOffset, verticalOffset, context, spineItemsManager, isGloballyPrePaginated, settings, index, item, viewport, }: {
9
- horizontalOffset: number;
10
- verticalOffset: number;
11
- context: Context;
12
- spineItemsManager: SpineItemsManager;
13
- isGloballyPrePaginated: boolean;
14
- settings: ReaderSettingsManager;
15
- item: SpineItem;
16
- index: number;
17
- viewport: Viewport;
18
- }) => Observable<{
19
- horizontalOffset: number;
20
- verticalOffset: number;
21
- layoutPosition: SpineItemSpineLayout;
22
- }>;