@prose-reader/core 0.0.43 → 0.0.44

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.
@@ -1,15 +1,29 @@
1
- import { BehaviorSubject } from "rxjs";
1
+ import { BehaviorSubject, Observable } from "rxjs";
2
2
  import { Context } from "../context";
3
3
  import { Pagination } from "../pagination";
4
4
  import { SpineItemManager } from "../spineItemManager";
5
+ import { createLocationResolver as createSpineLocationResolver } from "./locationResolver";
6
+ import { createLocationResolver as createSpineItemLocationResolver } from "../spineItem/locationResolver";
7
+ import { createCfiLocator } from "./cfiLocator";
5
8
  import { Hook } from "../types/Hook";
6
9
  import { Spine } from "../types/Spine";
7
- export declare const createSpine: ({ parentElement, context, pagination, iframeEventBridgeElement, spineItemManager, hooks$ }: {
8
- parentElement: HTMLElement;
10
+ import { AdjustedNavigation, Navigation } from "../viewportNavigator/types";
11
+ export declare const createSpine: ({ ownerDocument, context, pagination, iframeEventBridgeElement, spineItemManager, hooks$, spineItemLocator, spineLocator, cfiLocator, navigation$, navigationAdjusted$, currentNavigationPosition$, viewportState$ }: {
12
+ ownerDocument: Document;
9
13
  iframeEventBridgeElement: HTMLElement;
10
14
  context: Context;
11
15
  pagination: Pagination;
12
16
  spineItemManager: SpineItemManager;
13
17
  hooks$: BehaviorSubject<Hook[]>;
18
+ spineItemLocator: ReturnType<typeof createSpineItemLocationResolver>;
19
+ spineLocator: ReturnType<typeof createSpineLocationResolver>;
20
+ cfiLocator: ReturnType<typeof createCfiLocator>;
21
+ navigation$: Observable<Navigation>;
22
+ navigationAdjusted$: Observable<AdjustedNavigation>;
23
+ currentNavigationPosition$: Observable<{
24
+ x: number;
25
+ y: number;
26
+ }>;
27
+ viewportState$: Observable<`free` | `busy`>;
14
28
  }) => Spine;
15
29
  export { Spine };
@@ -37,6 +37,9 @@ export declare type Hook = {
37
37
  } | {
38
38
  name: `spine.onBeforeContainerCreated`;
39
39
  fn: (payload: HTMLElement) => HTMLElement;
40
+ } | {
41
+ name: `viewportNavigator.onBeforeContainerCreated`;
42
+ fn: (payload: HTMLElement) => HTMLElement;
40
43
  } | {
41
44
  name: `onViewportOffsetAdjust`;
42
45
  fn: () => void;
@@ -6,7 +6,9 @@ import { Manifest } from "@prose-reader/shared";
6
6
  import { Pagination } from "../pagination";
7
7
  import { Observable } from "rxjs";
8
8
  import { createSelection } from "../selection";
9
+ import { createViewportNavigator } from "../viewportNavigator/viewportNavigator";
9
10
  declare type ContextSettings = Parameters<Context[`setSettings`]>[0];
11
+ declare type ViewportNavigator = ReturnType<typeof createViewportNavigator>;
10
12
  export declare type LoadOptions = {
11
13
  cfi?: string;
12
14
  fetchResource?: ((item: Manifest[`spineItems`][number]) => Promise<Response>);
@@ -16,17 +18,18 @@ export declare type Reader = {
16
18
  context: Context;
17
19
  registerHook: RegisterHook;
18
20
  spine: Spine;
21
+ viewportNavigator: ViewportNavigator;
19
22
  manipulateSpineItems: Spine[`manipulateSpineItems`];
20
23
  manipulateSpineItem: Spine[`manipulateSpineItem`];
21
24
  manipulateContainer: (cb: (container: HTMLElement) => boolean) => void;
22
- moveTo: Spine[`viewportNavigator`][`moveTo`];
23
- turnLeft: Spine[`viewportNavigator`][`turnLeft`];
24
- turnRight: Spine[`viewportNavigator`][`turnRight`];
25
- goToPageOfCurrentChapter: Spine[`viewportNavigator`][`goToPageOfCurrentChapter`];
26
- goToPage: Spine[`viewportNavigator`][`goToPage`];
27
- goToUrl: Spine[`viewportNavigator`][`goToUrl`];
28
- goToCfi: Spine[`viewportNavigator`][`goToCfi`];
29
- goToSpineItem: Spine[`viewportNavigator`][`goToSpineItem`];
25
+ moveTo: ViewportNavigator[`moveTo`];
26
+ turnLeft: ViewportNavigator[`turnLeft`];
27
+ turnRight: ViewportNavigator[`turnRight`];
28
+ goToPageOfCurrentChapter: ViewportNavigator[`goToPageOfCurrentChapter`];
29
+ goToPage: ViewportNavigator[`goToPage`];
30
+ goToUrl: ViewportNavigator[`goToUrl`];
31
+ goToCfi: ViewportNavigator[`goToCfi`];
32
+ goToSpineItem: ViewportNavigator[`goToSpineItem`];
30
33
  getFocusedSpineItemIndex: SpineItemManager[`getFocusedSpineItemIndex`];
31
34
  getSpineItem: SpineItemManager[`get`];
32
35
  getSpineItems: SpineItemManager[`getAll`];
@@ -38,8 +41,8 @@ export declare type Reader = {
38
41
  resolveCfi: Spine[`cfiLocator`][`resolveCfi`];
39
42
  generateCfi: Spine[`cfiLocator`][`generateFromRange`];
40
43
  locator: Spine[`locator`];
41
- getCurrentNavigationPosition: Spine[`viewportNavigator`][`getCurrentNavigationPosition`];
42
- getCurrentViewportPosition: Spine[`viewportNavigator`][`getCurrentViewportPosition`];
44
+ getCurrentNavigationPosition: ViewportNavigator[`getCurrentNavigationPosition`];
45
+ getCurrentViewportPosition: ViewportNavigator[`getCurrentViewportPosition`];
43
46
  layout: () => void;
44
47
  load: (manifest: Manifest, loadOptions?: LoadOptions) => void;
45
48
  destroy: () => void;
@@ -55,7 +58,7 @@ export declare type Reader = {
55
58
  }>;
56
59
  ready$: Observable<void>;
57
60
  selection$: Observable<ReturnType<typeof createSelection> | null>;
58
- viewportState$: Spine[`$`][`viewportState$`];
61
+ viewportState$: ViewportNavigator[`$`][`state$`];
59
62
  layout$: Spine[`$`][`layout$`];
60
63
  itemsCreated$: Spine[`$`][`itemsCreated$`];
61
64
  itemsBeforeDestroy$: Spine[`$`][`itemsBeforeDestroy$`];
@@ -1,15 +1,14 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { Manifest } from "@prose-reader/shared";
3
- import { createViewportNavigator } from "../spine/viewportNavigator/viewportNavigator";
4
3
  import { SpineItem } from "../spineItem/createSpineItem";
5
4
  import { createSelection } from "../selection";
6
5
  import { createCfiLocator } from "../spine/cfiLocator";
7
6
  import { createLocationResolver } from "../spine/locationResolver";
8
7
  import { createLocationResolver as createSpineItemLocator } from "../spineItem/locationResolver";
8
+ import { ViewportNavigationEntry } from "../spine/navigationResolver";
9
9
  declare type RequireLayout = boolean;
10
10
  declare type ManipulableSpineItemCallback = Parameters<SpineItem[`manipulateSpineItem`]>[0];
11
11
  declare type ManipulableSpineItemCallbackPayload = Parameters<ManipulableSpineItemCallback>[0];
12
- declare type ViewportNavigator = ReturnType<typeof createViewportNavigator>;
13
12
  declare type CfiLocator = ReturnType<typeof createCfiLocator>;
14
13
  declare type SpineItemLocator = ReturnType<typeof createSpineItemLocator>;
15
14
  declare type Locator = ReturnType<typeof createLocationResolver>;
@@ -18,7 +17,6 @@ declare type Event = {
18
17
  data: ReturnType<typeof createSelection> | null;
19
18
  };
20
19
  export declare type Spine = {
21
- viewportNavigator: ViewportNavigator;
22
20
  element: HTMLElement;
23
21
  locator: Locator;
24
22
  spineItemLocator: SpineItemLocator;
@@ -32,9 +30,9 @@ export declare type Spine = {
32
30
  destroy: () => void;
33
31
  isSelecting: () => boolean | undefined;
34
32
  getSelection: () => Selection | undefined;
33
+ adjustPagination: (position: ViewportNavigationEntry) => Observable<`free` | `busy`>;
35
34
  $: {
36
35
  $: Observable<Event>;
37
- viewportState$: Observable<`free` | `busy`>;
38
36
  layout$: Observable<boolean>;
39
37
  itemsCreated$: Observable<{
40
38
  item: Manifest[`spineItems`][number];
@@ -0,0 +1,7 @@
1
+ export declare const getNewScaledOffset: ({ newScale, oldScale, screenSize, scrollOffset }: {
2
+ screenSize: number;
3
+ pageSize: number;
4
+ scrollOffset: number;
5
+ newScale: number;
6
+ oldScale: number;
7
+ }) => number;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { BehaviorSubject } from "rxjs";
2
- import { Context } from "../../context";
3
- import { SpineItemManager } from "../../spineItemManager";
4
- import { createNavigationResolver, ViewportNavigationEntry } from "../navigationResolver";
5
- import { createLocationResolver } from "../locationResolver";
2
+ import { Context } from "../context";
3
+ import { SpineItemManager } from "../spineItemManager";
4
+ import { createNavigationResolver, ViewportNavigationEntry } from "../spine/navigationResolver";
5
+ import { createLocationResolver } from "../spine/locationResolver";
6
6
  export declare const createManualViewportNavigator: ({ navigator, spineItemManager, currentNavigationSubject$, locator, context }: {
7
7
  context: Context;
8
8
  element: HTMLElement;
@@ -41,7 +41,7 @@ export declare const createManualViewportNavigator: ({ navigator, spineItemManag
41
41
  };
42
42
  x: number;
43
43
  y: number;
44
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
44
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
45
45
  url: URL;
46
46
  } | {
47
47
  animate: boolean;
@@ -50,13 +50,13 @@ export declare const createManualViewportNavigator: ({ navigator, spineItemManag
50
50
  };
51
51
  x: number;
52
52
  y: number;
53
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
53
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
54
54
  } | {
55
55
  lastUserExpectedNavigation: undefined;
56
56
  animate: boolean;
57
57
  x: number;
58
58
  y: number;
59
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
59
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
60
60
  } | {
61
61
  lastUserExpectedNavigation: {
62
62
  type: "navigate-from-next-item";
@@ -64,7 +64,7 @@ export declare const createManualViewportNavigator: ({ navigator, spineItemManag
64
64
  animate: boolean;
65
65
  x: number;
66
66
  y: number;
67
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
67
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
68
68
  } | {
69
69
  lastUserExpectedNavigation: {
70
70
  type: "navigate-from-previous-item";
@@ -72,13 +72,13 @@ export declare const createManualViewportNavigator: ({ navigator, spineItemManag
72
72
  animate: boolean;
73
73
  x: number;
74
74
  y: number;
75
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
75
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
76
76
  } | {
77
77
  lastUserExpectedNavigation: undefined;
78
78
  animate: boolean;
79
79
  x: number;
80
80
  y: number;
81
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
81
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
82
82
  } | {
83
83
  animate: boolean;
84
84
  lastUserExpectedNavigation: {
@@ -87,13 +87,13 @@ export declare const createManualViewportNavigator: ({ navigator, spineItemManag
87
87
  };
88
88
  x: number;
89
89
  y: number;
90
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
90
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
91
91
  } | {
92
92
  lastUserExpectedNavigation: undefined;
93
93
  animate: boolean;
94
94
  x: number;
95
95
  y: number;
96
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
96
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
97
97
  }>;
98
98
  };
99
99
  };
@@ -1,9 +1,9 @@
1
1
  import { BehaviorSubject, Subject } from "rxjs";
2
- import { Context } from "../../context";
3
- import { SpineItemManager } from "../../spineItemManager";
4
- import { createNavigationResolver, ViewportNavigationEntry } from "../navigationResolver";
5
- import { createLocationResolver } from "../locationResolver";
6
- import { ViewportPosition } from "../../types";
2
+ import { Context } from "../context";
3
+ import { SpineItemManager } from "../spineItemManager";
4
+ import { createNavigationResolver, ViewportNavigationEntry } from "../spine/navigationResolver";
5
+ import { createLocationResolver } from "../spine/locationResolver";
6
+ import { ViewportPosition } from "../types";
7
7
  export declare const createPanViewportNavigator: ({ getCurrentViewportPosition, navigator, spineItemManager, locator, context, currentNavigationSubject$ }: {
8
8
  context: Context;
9
9
  element: HTMLElement;
@@ -44,7 +44,7 @@ export declare const createPanViewportNavigator: ({ getCurrentViewportPosition,
44
44
  } | undefined;
45
45
  x: number;
46
46
  y: number;
47
- spineItem?: import("../../spineItem/createSpineItem").SpineItem | undefined;
47
+ spineItem?: import("../spineItem/createSpineItem").SpineItem | undefined;
48
48
  }>;
49
49
  };
50
50
  };
@@ -1,19 +1,30 @@
1
1
  import { BehaviorSubject, Observable } from "rxjs";
2
- import { Context } from "../../context";
3
- import { createNavigationResolver, ViewportNavigationEntry } from "../navigationResolver";
4
- export declare const createScrollViewportNavigator: ({ context, element, navigator, currentNavigationSubject$ }: {
2
+ import { Context } from "../context";
3
+ import { Spine } from "../spine/createSpine";
4
+ import { createNavigationResolver, ViewportNavigationEntry } from "../spine/navigationResolver";
5
+ import { SpineItemManager } from "../spineItemManager";
6
+ import { ViewportPosition } from "../types";
7
+ declare type ScaledDownPosition = ViewportPosition;
8
+ export declare const createScrollViewportNavigator: ({ context, element, navigator, currentNavigationSubject$, spine }: {
5
9
  context: Context;
6
10
  element: HTMLElement;
7
11
  navigator: ReturnType<typeof createNavigationResolver>;
8
12
  currentNavigationSubject$: BehaviorSubject<ViewportNavigationEntry>;
13
+ spine: Spine;
14
+ spineItemManager: SpineItemManager;
9
15
  }) => {
10
16
  destroy: () => void;
11
17
  adjustReadingOffset: ({ x, y }: {
12
18
  x: number;
13
19
  y: number;
14
20
  }) => boolean;
21
+ getNavigationForPosition: (position: ScaledDownPosition) => ViewportNavigationEntry;
22
+ getCurrentViewportPosition: () => {
23
+ x: number;
24
+ y: number;
25
+ };
15
26
  $: {
16
- state$: Observable<string>;
27
+ state$: Observable<"start" | "end">;
17
28
  navigation$: Observable<{
18
29
  position: ViewportNavigationEntry;
19
30
  animate: boolean;
@@ -21,3 +32,4 @@ export declare const createScrollViewportNavigator: ({ context, element, navigat
21
32
  }>;
22
33
  };
23
34
  };
35
+ export {};
@@ -0,0 +1,33 @@
1
+ import { SpineItem } from "../spineItem/createSpineItem";
2
+ export declare type LastUserExpectedNavigation = undefined | {
3
+ type: `navigate-from-previous-item`;
4
+ } | {
5
+ type: `navigate-from-next-item`;
6
+ } | {
7
+ type: `navigate-from-cfi`;
8
+ data: string;
9
+ } | {
10
+ type: `navigate-from-anchor`;
11
+ data: string;
12
+ };
13
+ export declare type Navigation = {
14
+ position: {
15
+ x: number;
16
+ y: number;
17
+ spineItem?: SpineItem | undefined;
18
+ };
19
+ triggeredBy: `scroll` | `manual` | `adjust`;
20
+ animation: false | `turn` | `snap`;
21
+ lastUserExpectedNavigation: LastUserExpectedNavigation;
22
+ };
23
+ export declare type AdjustedNavigation = {
24
+ previousNavigationPosition: {
25
+ x: number;
26
+ y: number;
27
+ };
28
+ adjustedSpinePosition: {
29
+ x: number;
30
+ y: number;
31
+ };
32
+ areDifferent: boolean;
33
+ };
@@ -1,24 +1,29 @@
1
- import { Context } from "../../context";
2
- import { Pagination } from "../../pagination";
3
- import { SpineItemManager } from "../../spineItemManager";
4
- import { createLocationResolver } from "../locationResolver";
5
- import { ViewportNavigationEntry } from "../navigationResolver";
6
- import { Observable } from "rxjs";
7
- import { SpineItem } from "../../spineItem/createSpineItem";
8
- import { createCfiLocator } from "../cfiLocator";
9
- import { Hook } from "../../types/Hook";
10
- export declare const createViewportNavigator: ({ spineItemManager, context, pagination, element, cfiLocator, locator, hooks$ }: {
1
+ import { Context } from "../context";
2
+ import { Pagination } from "../pagination";
3
+ import { SpineItemManager } from "../spineItemManager";
4
+ import { createLocationResolver } from "../spine/locationResolver";
5
+ import { BehaviorSubject, Observable } from "rxjs";
6
+ import { SpineItem } from "../spineItem/createSpineItem";
7
+ import { createCfiLocator } from "../spine/cfiLocator";
8
+ import { Hook } from "../types/Hook";
9
+ import { LastUserExpectedNavigation, Navigation } from "./types";
10
+ import { Spine } from "../spine/createSpine";
11
+ export declare const createViewportNavigator: ({ spineItemManager, context, pagination, parentElement, cfiLocator, spineLocator, hooks$, spine }: {
11
12
  spineItemManager: SpineItemManager;
12
13
  pagination: Pagination;
13
14
  context: Context;
14
- element: HTMLElement;
15
+ parentElement: HTMLElement;
15
16
  cfiLocator: ReturnType<typeof createCfiLocator>;
16
- locator: ReturnType<typeof createLocationResolver>;
17
- hooks$: Observable<Hook[]>;
17
+ spineLocator: ReturnType<typeof createLocationResolver>;
18
+ hooks$: BehaviorSubject<Hook[]>;
19
+ spine: Spine;
18
20
  }) => {
19
21
  destroy: () => void;
20
22
  layout: () => void;
21
- getCurrentNavigationPosition: () => ViewportNavigationEntry;
23
+ getCurrentNavigationPosition: () => {
24
+ x: number;
25
+ y: number;
26
+ };
22
27
  getCurrentViewportPosition: (() => {
23
28
  x: number;
24
29
  y: number;
@@ -42,8 +47,14 @@ export declare const createViewportNavigator: ({ spineItemManager, context, pagi
42
47
  }) => void;
43
48
  goToPageOfCurrentChapter: (pageIndex: number) => void;
44
49
  adjustNavigation: (spineItem: SpineItem) => Observable<{
45
- previousNavigationPosition: ViewportNavigationEntry;
46
- adjustedSpinePosition: ViewportNavigationEntry;
50
+ previousNavigationPosition: {
51
+ x: number;
52
+ y: number;
53
+ };
54
+ adjustedSpinePosition: {
55
+ x: number;
56
+ y: number;
57
+ };
47
58
  areDifferent: boolean;
48
59
  }>;
49
60
  moveTo: ((delta: {
@@ -59,27 +70,25 @@ export declare const createViewportNavigator: ({ spineItemManager, context, pagi
59
70
  start?: boolean | undefined;
60
71
  final?: boolean | undefined;
61
72
  } | undefined) => void);
62
- getLastUserExpectedNavigation: () => {
63
- type: `navigate-from-previous-item`;
64
- } | {
65
- type: `navigate-from-next-item`;
66
- } | {
67
- type: `navigate-from-cfi`;
68
- data: string;
69
- } | {
70
- type: `navigate-from-anchor`;
71
- data: string;
72
- } | undefined;
73
+ getLastUserExpectedNavigation: () => LastUserExpectedNavigation;
74
+ element: HTMLElement;
73
75
  $: {
74
76
  state$: Observable<"free" | "busy">;
75
- navigation$: Observable<{
76
- position: {
77
+ navigation$: Observable<Navigation>;
78
+ navigationAdjustedAfterLayout$: Observable<{
79
+ previousNavigationPosition: {
77
80
  x: number;
78
81
  y: number;
79
- spineItem?: SpineItem;
80
82
  };
81
- triggeredBy: `manual` | `adjust` | `scroll`;
82
- animation: false | `turn` | `snap`;
83
+ adjustedSpinePosition: {
84
+ x: number;
85
+ y: number;
86
+ };
87
+ areDifferent: boolean;
88
+ }>;
89
+ currentNavigationPosition$: Observable<{
90
+ x: number;
91
+ y: number;
83
92
  }>;
84
93
  };
85
94
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prose-reader/core",
3
- "version": "0.0.43",
3
+ "version": "0.0.44",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -39,5 +39,5 @@
39
39
  "webpack-bundle-analyzer": "^4.5.0",
40
40
  "webpack-cli": "^4.9.1"
41
41
  },
42
- "gitHead": "21ca4ff1a57ca4959bf81d65541294fc425873c1"
42
+ "gitHead": "693da1fcbc70bc97f2574db4803a25d8b3df0823"
43
43
  }
@@ -1,16 +0,0 @@
1
- import { Enhancer } from "./types";
2
- export declare const zoomEnhancer: Enhancer<{}, {
3
- zoom: {
4
- enter: (imgElement: HTMLImageElement) => void;
5
- exit: () => void;
6
- move: (position: {
7
- x: number;
8
- y: number;
9
- } | undefined, details: {
10
- isFirst: boolean;
11
- isLast: boolean;
12
- }) => void;
13
- isEnabled: () => boolean;
14
- scale: (scale: number) => void;
15
- };
16
- }>;