@prose-reader/core 1.70.0 → 1.72.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/createReaderWithEnhancer.d.ts +7 -7
- package/dist/enhancers/navigation/state.d.ts +2 -0
- package/dist/enhancers/pagination/enhancer.d.ts +3 -3
- package/dist/index.js +51 -30
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +51 -30
- package/dist/index.umd.cjs.map +1 -1
- package/dist/pagination/Pagination.d.ts +2 -2
- package/dist/reader.d.ts +2 -2
- package/package.json +3 -3
|
@@ -90,8 +90,8 @@ export declare const createReaderWithEnhancers: (options: Partial<import('./sett
|
|
|
90
90
|
load: (manifest: import('@prose-reader/shared').Manifest, loadOptions: import('./reader').LoadOptions) => void;
|
|
91
91
|
destroy: () => void;
|
|
92
92
|
pagination: {
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
state: import('./pagination/Pagination').PaginationInfo;
|
|
94
|
+
state$: import('rxjs').Observable<import('./pagination/Pagination').PaginationInfo>;
|
|
95
95
|
};
|
|
96
96
|
settings: import('./settings/SettingsInterface').SettingsInterface<NonNullable<import('./settings/types').CoreInputSettings>, NonNullable<import('./settings/types').CoreOutputSettings | undefined>>;
|
|
97
97
|
element$: import('rxjs').Observable<HTMLElement>;
|
|
@@ -122,11 +122,11 @@ export declare const createReaderWithEnhancers: (options: Partial<import('./sett
|
|
|
122
122
|
};
|
|
123
123
|
}, "pagination"> & {
|
|
124
124
|
pagination: Omit<{
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}, "
|
|
128
|
-
|
|
129
|
-
|
|
125
|
+
state: import('./pagination/Pagination').PaginationInfo;
|
|
126
|
+
state$: import('rxjs').Observable<import('./pagination/Pagination').PaginationInfo>;
|
|
127
|
+
}, "state" | "state$"> & {
|
|
128
|
+
state$: import('rxjs').Observable<import('./pagination/Pagination').PaginationInfo & import('./enhancers/pagination/types').ExtraPaginationInfo>;
|
|
129
|
+
state: import('./pagination/Pagination').PaginationInfo & import('./enhancers/pagination/types').ExtraPaginationInfo;
|
|
130
130
|
};
|
|
131
131
|
} & {
|
|
132
132
|
theme: {
|
|
@@ -2,6 +2,8 @@ import { Reader } from '../../reader';
|
|
|
2
2
|
|
|
3
3
|
export type State = ReturnType<typeof observeState>;
|
|
4
4
|
export declare const observeState: (reader: Reader) => import('rxjs').Observable<{
|
|
5
|
+
canTurnLeft: boolean;
|
|
6
|
+
canTurnRight: boolean;
|
|
5
7
|
canGoTopSpineItem: boolean;
|
|
6
8
|
canGoBottomSpineItem: boolean;
|
|
7
9
|
canGoLeftSpineItem: boolean;
|
|
@@ -5,9 +5,9 @@ import { PaginationInfo } from '../../pagination/Pagination';
|
|
|
5
5
|
import { ExtraPaginationInfo } from './types';
|
|
6
6
|
|
|
7
7
|
type ProgressionEnhancer = typeof progressionEnhancer;
|
|
8
|
-
export declare const paginationEnhancer: <InheritOptions, InheritOutput extends EnhancerOutput<ProgressionEnhancer>, PaginationOutput extends Omit<InheritOutput["pagination"], "
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
export declare const paginationEnhancer: <InheritOptions, InheritOutput extends EnhancerOutput<ProgressionEnhancer>, PaginationOutput extends Omit<InheritOutput["pagination"], "state$" | "state"> & {
|
|
9
|
+
state$: Observable<PaginationInfo & ExtraPaginationInfo>;
|
|
10
|
+
state: PaginationInfo & ExtraPaginationInfo;
|
|
11
11
|
}>(next: (options: InheritOptions) => InheritOutput) => (options: InheritOptions) => Omit<InheritOutput, "pagination"> & {
|
|
12
12
|
pagination: PaginationOutput;
|
|
13
13
|
};
|
package/dist/index.js
CHANGED
|
@@ -1060,21 +1060,31 @@ class PanNavigator {
|
|
|
1060
1060
|
}
|
|
1061
1061
|
}
|
|
1062
1062
|
const observeState = (reader) => {
|
|
1063
|
-
return reader.pagination.
|
|
1063
|
+
return reader.pagination.state$.pipe(
|
|
1064
1064
|
withLatestFrom(reader.context.manifest$, reader.settings.settings$),
|
|
1065
|
-
map$1(
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1065
|
+
map$1(
|
|
1066
|
+
([
|
|
1067
|
+
paginationInfo,
|
|
1068
|
+
{ spineItems, readingDirection },
|
|
1069
|
+
{ computedPageTurnDirection }
|
|
1070
|
+
]) => {
|
|
1071
|
+
const numberOfSpineItems = spineItems.length ?? 0;
|
|
1072
|
+
const isAtAbsoluteBeginning = paginationInfo.beginSpineItemIndex === 0;
|
|
1073
|
+
const isAtAbsoluteEnd = paginationInfo.endSpineItemIndex === Math.max(numberOfSpineItems - 1, 0);
|
|
1074
|
+
const isAtEndSpineItem = paginationInfo.endSpineItemIndex === Math.max(numberOfSpineItems - 1, 0);
|
|
1075
|
+
const isAtBeginSpineItem = paginationInfo.beginSpineItemIndex === 0;
|
|
1076
|
+
const isAtBeginFirstPage = paginationInfo.beginPageIndexInSpineItem === 0;
|
|
1077
|
+
const isAtEndLastPage = paginationInfo.endPageIndexInSpineItem === paginationInfo.endNumberOfPagesInSpineItem - 1;
|
|
1078
|
+
return {
|
|
1079
|
+
canTurnLeft: computedPageTurnDirection === "vertical" ? false : !isAtBeginFirstPage,
|
|
1080
|
+
canTurnRight: computedPageTurnDirection === "vertical" ? false : !isAtEndLastPage,
|
|
1081
|
+
canGoTopSpineItem: computedPageTurnDirection === "vertical" && !isAtAbsoluteBeginning,
|
|
1082
|
+
canGoBottomSpineItem: computedPageTurnDirection === "vertical" && !isAtAbsoluteEnd,
|
|
1083
|
+
canGoLeftSpineItem: computedPageTurnDirection !== "vertical" && (readingDirection === "ltr" && !isAtAbsoluteBeginning || readingDirection === "rtl" && !isAtEndSpineItem),
|
|
1084
|
+
canGoRightSpineItem: computedPageTurnDirection !== "vertical" && (readingDirection === "ltr" && !isAtAbsoluteEnd || readingDirection === "rtl" && !isAtBeginSpineItem)
|
|
1085
|
+
};
|
|
1086
|
+
}
|
|
1087
|
+
),
|
|
1078
1088
|
distinctUntilChanged$1(isShallowEqual)
|
|
1079
1089
|
);
|
|
1080
1090
|
};
|
|
@@ -1182,7 +1192,7 @@ const getNumberOfPagesForAllSpineItems = (reader) => reader.spineItemsManager.it
|
|
|
1182
1192
|
const trackTotalPages = (reader) => {
|
|
1183
1193
|
const totalPages$ = reader.spine.layout$.pipe(
|
|
1184
1194
|
debounceTime$1(10, animationFrameScheduler),
|
|
1185
|
-
withLatestFrom(reader.pagination.
|
|
1195
|
+
withLatestFrom(reader.pagination.state$),
|
|
1186
1196
|
map$1(() => {
|
|
1187
1197
|
const numberOfPagesPerItems = getNumberOfPagesForAllSpineItems(reader);
|
|
1188
1198
|
return {
|
|
@@ -1249,16 +1259,16 @@ const trackPaginationInfo = (reader) => {
|
|
|
1249
1259
|
const chaptersInfo$ = trackChapterInfo(reader);
|
|
1250
1260
|
const totalPages$ = trackTotalPages(reader);
|
|
1251
1261
|
const currentValue = new BehaviorSubject({
|
|
1252
|
-
...reader.pagination.
|
|
1262
|
+
...reader.pagination.state,
|
|
1253
1263
|
...mapPaginationInfoToExtendedInfo(reader)(
|
|
1254
|
-
reader.pagination.
|
|
1264
|
+
reader.pagination.state,
|
|
1255
1265
|
getChaptersInfo(reader)
|
|
1256
1266
|
),
|
|
1257
1267
|
beginAbsolutePageIndex: 0,
|
|
1258
1268
|
endAbsolutePageIndex: 0,
|
|
1259
1269
|
numberOfTotalPages: 0
|
|
1260
1270
|
});
|
|
1261
|
-
const extandedBasePagination$ = reader.pagination.
|
|
1271
|
+
const extandedBasePagination$ = reader.pagination.state$.pipe(
|
|
1262
1272
|
combineLatestWith(chaptersInfo$),
|
|
1263
1273
|
map$1(([info, chaptersInfo]) => ({
|
|
1264
1274
|
...info,
|
|
@@ -1299,10 +1309,10 @@ const paginationEnhancer = (next) => (options) => {
|
|
|
1299
1309
|
...reader,
|
|
1300
1310
|
pagination: {
|
|
1301
1311
|
...reader.pagination,
|
|
1302
|
-
get
|
|
1312
|
+
get state() {
|
|
1303
1313
|
return getPaginationInfo();
|
|
1304
1314
|
},
|
|
1305
|
-
|
|
1315
|
+
state$: paginationInfo$
|
|
1306
1316
|
}
|
|
1307
1317
|
};
|
|
1308
1318
|
};
|
|
@@ -1821,7 +1831,7 @@ class Pagination extends DestroyableClass {
|
|
|
1821
1831
|
endSpineItemIndex: void 0,
|
|
1822
1832
|
navigationId: void 0
|
|
1823
1833
|
});
|
|
1824
|
-
this.
|
|
1834
|
+
this.state$ = this.paginationSubject.pipe(
|
|
1825
1835
|
distinctUntilChanged$1(isShallowEqual),
|
|
1826
1836
|
tap$1((value) => {
|
|
1827
1837
|
report$3.info(`update`, value);
|
|
@@ -1835,7 +1845,7 @@ class Pagination extends DestroyableClass {
|
|
|
1835
1845
|
...pagination
|
|
1836
1846
|
});
|
|
1837
1847
|
}
|
|
1838
|
-
get
|
|
1848
|
+
get state() {
|
|
1839
1849
|
return this.paginationSubject.value;
|
|
1840
1850
|
}
|
|
1841
1851
|
destroy() {
|
|
@@ -4438,7 +4448,7 @@ class InternalNavigator extends DestroyableClass {
|
|
|
4438
4448
|
map$1(
|
|
4439
4449
|
() => ({
|
|
4440
4450
|
...navigation,
|
|
4441
|
-
animation: "
|
|
4451
|
+
animation: "snap"
|
|
4442
4452
|
})
|
|
4443
4453
|
),
|
|
4444
4454
|
finalize(() => {
|
|
@@ -4805,7 +4815,7 @@ class ReaderSettingsManager extends SettingsManager3 {
|
|
|
4805
4815
|
pageTurnMode: `controlled`,
|
|
4806
4816
|
snapAnimationDuration: 300,
|
|
4807
4817
|
navigationSnapThreshold: 0.3,
|
|
4808
|
-
numberOfAdjacentSpineItemToPreLoad:
|
|
4818
|
+
numberOfAdjacentSpineItemToPreLoad: 2
|
|
4809
4819
|
};
|
|
4810
4820
|
}
|
|
4811
4821
|
}
|
|
@@ -4942,7 +4952,7 @@ class PaginationController extends DestroyableClass {
|
|
|
4942
4952
|
withLatestFrom(this.context.bridgeEvent.navigation$),
|
|
4943
4953
|
tap$1(([, navigation]) => {
|
|
4944
4954
|
const { position } = navigation;
|
|
4945
|
-
const previousPagination = this.pagination.
|
|
4955
|
+
const previousPagination = this.pagination.state;
|
|
4946
4956
|
const {
|
|
4947
4957
|
beginIndex: beginSpineItemIndex,
|
|
4948
4958
|
endIndex: endSpineItemIndex
|
|
@@ -5004,7 +5014,7 @@ class PaginationController extends DestroyableClass {
|
|
|
5004
5014
|
endSpineItemIndex,
|
|
5005
5015
|
beginPageIndexInSpineItem,
|
|
5006
5016
|
endPageIndexInSpineItem
|
|
5007
|
-
} = this.pagination.
|
|
5017
|
+
} = this.pagination.state;
|
|
5008
5018
|
if (beginPageIndexInSpineItem === void 0 || endPageIndexInSpineItem === void 0 || beginSpineItemIndex === void 0 || endSpineItemIndex === void 0)
|
|
5009
5019
|
return;
|
|
5010
5020
|
const beginSpineItem = this.spineItemsManager.get(beginSpineItemIndex);
|
|
@@ -6914,7 +6924,18 @@ class SpineItemsLoader extends DestroyableClass {
|
|
|
6914
6924
|
const layoutHasChanged$ = spineItemsManager.layout$.pipe(
|
|
6915
6925
|
filter$1((hasChanged) => hasChanged)
|
|
6916
6926
|
);
|
|
6917
|
-
const
|
|
6927
|
+
const numberOfAdjacentSpineItemToPreLoad$ = settings.settings$.pipe(
|
|
6928
|
+
map$1(
|
|
6929
|
+
({ numberOfAdjacentSpineItemToPreLoad }) => numberOfAdjacentSpineItemToPreLoad
|
|
6930
|
+
),
|
|
6931
|
+
skip$1(1),
|
|
6932
|
+
distinctUntilChanged$1()
|
|
6933
|
+
);
|
|
6934
|
+
const loadSpineItems$ = merge(
|
|
6935
|
+
navigationUpdate$,
|
|
6936
|
+
layoutHasChanged$,
|
|
6937
|
+
numberOfAdjacentSpineItemToPreLoad$
|
|
6938
|
+
).pipe(
|
|
6918
6939
|
// this can be changed by whatever we want and SHOULD not break navigation.
|
|
6919
6940
|
// Ideally loading faster is better but loading too close to user navigating can
|
|
6920
6941
|
// be dangerous.
|
|
@@ -7060,7 +7081,7 @@ const createReader = (inputSettings) => {
|
|
|
7060
7081
|
navigator2.viewportState$.subscribe(context.bridgeEvent.viewportStateSubject);
|
|
7061
7082
|
navigator2.navigation$.subscribe(context.bridgeEvent.navigationSubject);
|
|
7062
7083
|
navigator2.isLocked$.subscribe(context.bridgeEvent.navigationIsLockedSubject);
|
|
7063
|
-
pagination.
|
|
7084
|
+
pagination.state$.subscribe(context.bridgeEvent.paginationSubject);
|
|
7064
7085
|
const layout = () => {
|
|
7065
7086
|
var _a;
|
|
7066
7087
|
const containerElement = (_a = elementSubject$.getValue()) == null ? void 0 : _a.parentElement;
|
|
@@ -7180,8 +7201,8 @@ const createReader = (inputSettings) => {
|
|
|
7180
7201
|
load,
|
|
7181
7202
|
destroy,
|
|
7182
7203
|
pagination: {
|
|
7183
|
-
|
|
7184
|
-
|
|
7204
|
+
state: pagination.state,
|
|
7205
|
+
state$: pagination.state$
|
|
7185
7206
|
},
|
|
7186
7207
|
settings: settingsManager,
|
|
7187
7208
|
element$,
|