@prose-reader/core 1.196.0 → 1.198.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 +12 -14
- package/dist/enhancers/layoutEnhancer/layoutEnhancer.d.ts +7 -1
- package/dist/enhancers/layoutEnhancer/layoutInfo.d.ts +25 -0
- package/dist/enhancers/loading/loadingEnhancer.d.ts +1 -1
- package/dist/enhancers/navigation/resolvers/getNavigationForLeftOrTopPage.d.ts +3 -2
- package/dist/enhancers/navigation/resolvers/getNavigationForLeftSinglePage.d.ts +4 -3
- package/dist/enhancers/navigation/resolvers/getNavigationForRightOrBottomPage.d.ts +3 -2
- package/dist/enhancers/navigation/resolvers/getNavigationForRightSinglePage.d.ts +4 -3
- package/dist/enhancers/navigation/resolvers/getSpineItemPositionForLeftPage.d.ts +4 -4
- package/dist/enhancers/navigation/resolvers/getSpineItemPositionForRightPage.d.ts +4 -4
- package/dist/enhancers/pagination/enhancer.d.ts +2 -1
- package/dist/enhancers/pagination/pagination.d.ts +2 -1
- package/dist/enhancers/pagination/progression.d.ts +2 -1
- package/dist/enhancers/pagination/spine.d.ts +0 -1
- package/dist/index.js +285 -303
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +284 -302
- package/dist/index.umd.cjs.map +1 -1
- package/dist/navigation/InternalNavigator.d.ts +6 -5
- package/dist/navigation/Navigator.d.ts +8 -8
- package/dist/navigation/consolidation/consolidateWithPagination.d.ts +2 -2
- package/dist/navigation/resolvers/NavigationResolver.d.ts +12 -11
- package/dist/navigation/resolvers/getAdjustedPositionForSpread.d.ts +2 -1
- package/dist/navigation/resolvers/getAdjustedPositionWithSafeEdge.d.ts +2 -1
- package/dist/navigation/resolvers/getNavigationForPosition.d.ts +2 -1
- package/dist/navigation/resolvers/getNavigationFromSpineItemPosition.d.ts +2 -2
- package/dist/navigation/restoration/restorePosition.d.ts +2 -1
- package/dist/navigation/tests/SpineItemsManagerMock.d.ts +1 -1
- package/dist/navigation/viewport/ViewportNavigator.d.ts +6 -5
- package/dist/reader.d.ts +7 -9
- package/dist/spine/SpineLayout.d.ts +6 -7
- package/dist/spine/layout/layoutItem.d.ts +2 -2
- package/dist/spine/locator/SpineLocator.d.ts +17 -31
- package/dist/spine/locator/getAbsolutePageIndexFromPageIndex.d.ts +1 -1
- package/dist/spine/locator/getItemVisibilityForPosition.d.ts +2 -1
- package/dist/spine/locator/getSpineInfoFromAbsolutePageIndex.d.ts +1 -1
- package/dist/spine/locator/getSpineItemFromPosition.d.ts +2 -1
- package/dist/spine/locator/getSpinePositionFromSpineItemPageIndex.d.ts +1 -1
- package/dist/spine/locator/getSpinePositionFromSpineItemPosition.d.ts +4 -4
- package/dist/spine/locator/getVisibleSpineItemsFromPosition.d.ts +2 -1
- package/dist/spine/types.d.ts +35 -0
- package/dist/spineItem/SpineItem.d.ts +1 -0
- package/dist/spineItem/{locator → layout}/getSpineItemPagesPosition.d.ts +1 -1
- package/dist/spineItem/{locator → layout}/getSpineItemPositionFromPageIndex.d.ts +2 -2
- package/dist/spineItem/locationResolver.d.ts +8 -23
- package/dist/spineItem/navigationResolver.d.ts +4 -4
- package/dist/spineItem/types.d.ts +9 -10
- package/package.json +3 -3
- package/dist/spine/layout/convertViewportPositionToLayoutPosition.d.ts +0 -9
- package/dist/spine/layout/types.d.ts +0 -11
- /package/dist/spineItem/{locator → layout}/getSpineItemNumberOfPages.d.ts +0 -0
package/dist/index.umd.cjs
CHANGED
|
@@ -2141,6 +2141,92 @@
|
|
|
2141
2141
|
}
|
|
2142
2142
|
);
|
|
2143
2143
|
};
|
|
2144
|
+
class SpineElementLayout {
|
|
2145
|
+
constructor(layout) {
|
|
2146
|
+
this.left = layout.left;
|
|
2147
|
+
this.right = layout.right;
|
|
2148
|
+
this.top = layout.top;
|
|
2149
|
+
this.bottom = layout.bottom;
|
|
2150
|
+
this.width = layout.width;
|
|
2151
|
+
this.height = layout.height;
|
|
2152
|
+
this.x = layout.x;
|
|
2153
|
+
this.y = layout.y;
|
|
2154
|
+
}
|
|
2155
|
+
}
|
|
2156
|
+
class SpineItemSpineLayout extends SpineElementLayout {
|
|
2157
|
+
constructor() {
|
|
2158
|
+
super(...arguments);
|
|
2159
|
+
this.__symbol = Symbol(`SpineItemSpineLayout`);
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
class SpineItemPageSpineLayout extends SpineElementLayout {
|
|
2163
|
+
constructor() {
|
|
2164
|
+
super(...arguments);
|
|
2165
|
+
this.__symbol = Symbol(`SpineItemPageSpineLayout`);
|
|
2166
|
+
}
|
|
2167
|
+
}
|
|
2168
|
+
class SpinePosition {
|
|
2169
|
+
constructor(position) {
|
|
2170
|
+
this.__symbol = Symbol(`SpinePosition`);
|
|
2171
|
+
this.x = position.x;
|
|
2172
|
+
this.y = position.y;
|
|
2173
|
+
}
|
|
2174
|
+
}
|
|
2175
|
+
const spinePositionToSpineItemSpineLayout = ({
|
|
2176
|
+
position,
|
|
2177
|
+
pageSize
|
|
2178
|
+
}) => {
|
|
2179
|
+
return new SpineItemPageSpineLayout({
|
|
2180
|
+
x: position.x,
|
|
2181
|
+
y: position.y,
|
|
2182
|
+
left: position.x,
|
|
2183
|
+
top: position.y,
|
|
2184
|
+
width: pageSize.width,
|
|
2185
|
+
height: pageSize.height,
|
|
2186
|
+
bottom: position.y + pageSize.height,
|
|
2187
|
+
right: position.x + pageSize.width
|
|
2188
|
+
});
|
|
2189
|
+
};
|
|
2190
|
+
const createLayoutInfo = (reader) => {
|
|
2191
|
+
const layout$ = reader.spine.spineLayout.layout$.pipe(
|
|
2192
|
+
rxjs.map(() => {
|
|
2193
|
+
const items = reader.spine.spineItemsManager.items;
|
|
2194
|
+
const pages = items.reduce((acc, spineItem, itemIndex) => {
|
|
2195
|
+
const pages2 = new Array(spineItem.numberOfPages).fill(void 0);
|
|
2196
|
+
const pagesAbsolutePositions = pages2.map((_, pageIndex) => {
|
|
2197
|
+
const pageSpineItemPosition = reader.spine.spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
2198
|
+
spineItem,
|
|
2199
|
+
pageIndex
|
|
2200
|
+
});
|
|
2201
|
+
const pageSpinePosition = reader.spine.locator.getSpinePositionFromSpineItemPosition({
|
|
2202
|
+
spineItem,
|
|
2203
|
+
spineItemPosition: pageSpineItemPosition
|
|
2204
|
+
});
|
|
2205
|
+
return spinePositionToSpineItemSpineLayout({
|
|
2206
|
+
pageSize: reader.context.getPageSize(),
|
|
2207
|
+
position: pageSpinePosition
|
|
2208
|
+
});
|
|
2209
|
+
});
|
|
2210
|
+
const itemPagesInfo = pagesAbsolutePositions.map((absolutePosition, pageIndex) => ({
|
|
2211
|
+
itemIndex,
|
|
2212
|
+
absolutePageIndex: itemIndex + pageIndex,
|
|
2213
|
+
absolutePosition
|
|
2214
|
+
}));
|
|
2215
|
+
return [...acc, ...itemPagesInfo];
|
|
2216
|
+
}, []);
|
|
2217
|
+
return {
|
|
2218
|
+
pages
|
|
2219
|
+
};
|
|
2220
|
+
}),
|
|
2221
|
+
rxjs.tap((layout) => {
|
|
2222
|
+
Report.log(`layout:info`, layout);
|
|
2223
|
+
}),
|
|
2224
|
+
rxjs.share()
|
|
2225
|
+
);
|
|
2226
|
+
const info$ = layout$.pipe(rxjs.shareReplay({ refCount: true, bufferSize: 1 }));
|
|
2227
|
+
info$.pipe(rxjs.takeUntil(reader.$.destroy$)).subscribe();
|
|
2228
|
+
return { layout$, info$ };
|
|
2229
|
+
};
|
|
2144
2230
|
const layoutEnhancer = (next) => (options) => {
|
|
2145
2231
|
const {
|
|
2146
2232
|
pageHorizontalMargin,
|
|
@@ -2275,6 +2361,7 @@
|
|
|
2275
2361
|
}
|
|
2276
2362
|
})
|
|
2277
2363
|
);
|
|
2364
|
+
const { layout$, info$ } = createLayoutInfo(reader);
|
|
2278
2365
|
rxjs.merge(
|
|
2279
2366
|
updateSpineItemClassName$,
|
|
2280
2367
|
revealItemOnReady$,
|
|
@@ -2287,7 +2374,9 @@
|
|
|
2287
2374
|
settingsManager.destroy();
|
|
2288
2375
|
reader.destroy();
|
|
2289
2376
|
},
|
|
2290
|
-
settings: settingsManager
|
|
2377
|
+
settings: settingsManager,
|
|
2378
|
+
layout$,
|
|
2379
|
+
layoutInfo$: info$
|
|
2291
2380
|
};
|
|
2292
2381
|
};
|
|
2293
2382
|
const HTML_PREFIX = `${HTML_PREFIX$1}-enhancer-loading`;
|
|
@@ -2358,7 +2447,10 @@
|
|
|
2358
2447
|
return acc;
|
|
2359
2448
|
}, {})
|
|
2360
2449
|
);
|
|
2361
|
-
const updateEntriesLayout$ = (entries) => rxjs.combineLatest([
|
|
2450
|
+
const updateEntriesLayout$ = (entries) => rxjs.combineLatest([
|
|
2451
|
+
reader.spine.spineLayout.layout$,
|
|
2452
|
+
reader.theme.$.theme$
|
|
2453
|
+
]).pipe(
|
|
2362
2454
|
operators.map(([, theme]) => ({
|
|
2363
2455
|
width: reader.context.state.visibleAreaRect.width,
|
|
2364
2456
|
theme
|
|
@@ -2594,6 +2686,13 @@
|
|
|
2594
2686
|
);
|
|
2595
2687
|
};
|
|
2596
2688
|
const report$4 = Report.namespace(`navigation`);
|
|
2689
|
+
class SpineItemPosition {
|
|
2690
|
+
constructor(position) {
|
|
2691
|
+
this.__symbol = Symbol(`SpineItemPosition`);
|
|
2692
|
+
this.x = position.x;
|
|
2693
|
+
this.y = position.y;
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2597
2696
|
const getSpineItemPositionForLeftPage = ({
|
|
2598
2697
|
position,
|
|
2599
2698
|
spineItem,
|
|
@@ -2601,15 +2700,15 @@
|
|
|
2601
2700
|
pageWidth,
|
|
2602
2701
|
spineItemLocator
|
|
2603
2702
|
}) => {
|
|
2604
|
-
let nextPotentialPosition = {
|
|
2703
|
+
let nextPotentialPosition = new SpineItemPosition({
|
|
2605
2704
|
x: position.x - pageWidth,
|
|
2606
2705
|
y: position.y
|
|
2607
|
-
};
|
|
2706
|
+
});
|
|
2608
2707
|
if (spineItem.isUsingVerticalWriting()) {
|
|
2609
|
-
nextPotentialPosition = {
|
|
2708
|
+
nextPotentialPosition = new SpineItemPosition({
|
|
2610
2709
|
x: position.x,
|
|
2611
2710
|
y: position.y + pageHeight
|
|
2612
|
-
};
|
|
2711
|
+
});
|
|
2613
2712
|
}
|
|
2614
2713
|
const navigationPosition = spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(
|
|
2615
2714
|
nextPotentialPosition,
|
|
@@ -2710,15 +2809,15 @@
|
|
|
2710
2809
|
pageWidth,
|
|
2711
2810
|
spineItemLocator
|
|
2712
2811
|
}) => {
|
|
2713
|
-
let nextPotentialPosition = {
|
|
2812
|
+
let nextPotentialPosition = new SpineItemPosition({
|
|
2714
2813
|
x: position.x + pageWidth,
|
|
2715
2814
|
y: position.y
|
|
2716
|
-
};
|
|
2815
|
+
});
|
|
2717
2816
|
if (spineItem.isUsingVerticalWriting()) {
|
|
2718
|
-
nextPotentialPosition = {
|
|
2817
|
+
nextPotentialPosition = new SpineItemPosition({
|
|
2719
2818
|
x: position.x,
|
|
2720
2819
|
y: position.y - pageHeight
|
|
2721
|
-
};
|
|
2820
|
+
});
|
|
2722
2821
|
}
|
|
2723
2822
|
const navigationPosition = spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(
|
|
2724
2823
|
nextPotentialPosition,
|
|
@@ -3158,7 +3257,7 @@
|
|
|
3158
3257
|
}
|
|
3159
3258
|
};
|
|
3160
3259
|
};
|
|
3161
|
-
const NAMESPACE$
|
|
3260
|
+
const NAMESPACE$5 = `paginationEnhancer`;
|
|
3162
3261
|
const consolidate = (item, reader) => {
|
|
3163
3262
|
var _a;
|
|
3164
3263
|
let itemPageIndex = (_a = item.meta) == null ? void 0 : _a.itemPageIndex;
|
|
@@ -3214,7 +3313,7 @@
|
|
|
3214
3313
|
const createLocator = (reader) => (resources) => {
|
|
3215
3314
|
return deferIdle(() => {
|
|
3216
3315
|
if (!resources.length) return rxjs.of(resources);
|
|
3217
|
-
const consolidate$ = reader.layout$.pipe(
|
|
3316
|
+
const consolidate$ = reader.spine.spineLayout.layout$.pipe(
|
|
3218
3317
|
rxjs.debounceTime(10),
|
|
3219
3318
|
rxjs.startWith(null),
|
|
3220
3319
|
rxjs.switchScan((acc$) => {
|
|
@@ -3309,7 +3408,7 @@
|
|
|
3309
3408
|
const getScrollPercentageWithinItem = (reader, currentPosition, currentItem) => {
|
|
3310
3409
|
const context = reader.context;
|
|
3311
3410
|
const { height, width } = currentItem.layout.layoutInfo;
|
|
3312
|
-
const { top, left } = reader.spine.spineLayout.
|
|
3411
|
+
const { top, left } = reader.spine.spineLayout.getSpineItemSpineLayoutInfo(currentItem);
|
|
3313
3412
|
if (reader.settings.values.computedPageTurnDirection === `vertical`) {
|
|
3314
3413
|
return Math.max(
|
|
3315
3414
|
0,
|
|
@@ -3371,29 +3470,22 @@
|
|
|
3371
3470
|
})
|
|
3372
3471
|
);
|
|
3373
3472
|
};
|
|
3374
|
-
const getNumberOfPagesForAllSpineItems = (reader) => reader.spineItemsManager.items.map((item) => {
|
|
3375
|
-
const { height, width } = item.layout.layoutInfo;
|
|
3376
|
-
return reader.spine.spineItemLocator.getSpineItemNumberOfPages({
|
|
3377
|
-
isUsingVerticalWriting: !!item.isUsingVerticalWriting(),
|
|
3378
|
-
itemHeight: height,
|
|
3379
|
-
itemWidth: width
|
|
3380
|
-
});
|
|
3381
|
-
}, 0);
|
|
3382
3473
|
const trackTotalPages = (reader) => {
|
|
3383
|
-
const totalPages$ = reader.layout$.pipe(
|
|
3474
|
+
const totalPages$ = reader.spine.spineLayout.layout$.pipe(
|
|
3384
3475
|
rxjs.debounceTime(10, rxjs.animationFrameScheduler),
|
|
3385
3476
|
rxjs.withLatestFrom(reader.pagination.state$),
|
|
3386
3477
|
rxjs.map(() => {
|
|
3387
|
-
const numberOfPagesPerItems = getNumberOfPagesForAllSpineItems(reader);
|
|
3388
3478
|
return {
|
|
3389
|
-
numberOfPagesPerItems
|
|
3479
|
+
numberOfPagesPerItems: reader.spineItemsManager.items.reduce(
|
|
3480
|
+
(acc, item) => {
|
|
3481
|
+
return [...acc, item.numberOfPages];
|
|
3482
|
+
},
|
|
3483
|
+
[]
|
|
3484
|
+
),
|
|
3390
3485
|
/**
|
|
3391
3486
|
* This may be not accurate for reflowable due to dynamic load / unload.
|
|
3392
3487
|
*/
|
|
3393
|
-
numberOfTotalPages:
|
|
3394
|
-
(acc, numberOfPagesForItem) => acc + numberOfPagesForItem,
|
|
3395
|
-
0
|
|
3396
|
-
)
|
|
3488
|
+
numberOfTotalPages: reader.spine.spineLayout.numberOfPages
|
|
3397
3489
|
};
|
|
3398
3490
|
}),
|
|
3399
3491
|
rxjs.distinctUntilChanged(shared.isShallowEqual),
|
|
@@ -3520,7 +3612,7 @@
|
|
|
3520
3612
|
);
|
|
3521
3613
|
return { paginationInfo$, getPaginationInfo: () => currentValue.value };
|
|
3522
3614
|
};
|
|
3523
|
-
Report.namespace(NAMESPACE$
|
|
3615
|
+
Report.namespace(NAMESPACE$5);
|
|
3524
3616
|
const paginationEnhancer = (next) => (options) => {
|
|
3525
3617
|
const reader = next(options);
|
|
3526
3618
|
const { paginationInfo$, getPaginationInfo } = trackPaginationInfo(reader);
|
|
@@ -5481,10 +5573,10 @@
|
|
|
5481
5573
|
pageIndex,
|
|
5482
5574
|
itemLayout.height
|
|
5483
5575
|
);
|
|
5484
|
-
return {
|
|
5576
|
+
return new SpineItemPosition({
|
|
5485
5577
|
x: 0,
|
|
5486
5578
|
y: ltrRelativeOffset2
|
|
5487
|
-
};
|
|
5579
|
+
});
|
|
5488
5580
|
}
|
|
5489
5581
|
const ltrRelativeOffset = getItemOffsetFromPageIndex(
|
|
5490
5582
|
context.getPageSize().width,
|
|
@@ -5492,15 +5584,15 @@
|
|
|
5492
5584
|
itemLayout.width
|
|
5493
5585
|
);
|
|
5494
5586
|
if (context.isRTL()) {
|
|
5495
|
-
return {
|
|
5587
|
+
return new SpineItemPosition({
|
|
5496
5588
|
x: itemLayout.width - ltrRelativeOffset - context.getPageSize().width,
|
|
5497
5589
|
y: 0
|
|
5498
|
-
};
|
|
5590
|
+
});
|
|
5499
5591
|
}
|
|
5500
|
-
return {
|
|
5592
|
+
return new SpineItemPosition({
|
|
5501
5593
|
x: ltrRelativeOffset,
|
|
5502
5594
|
y: 0
|
|
5503
|
-
};
|
|
5595
|
+
});
|
|
5504
5596
|
};
|
|
5505
5597
|
const getSpineItemPagesPosition = ({
|
|
5506
5598
|
context,
|
|
@@ -5532,7 +5624,7 @@
|
|
|
5532
5624
|
itemWidth,
|
|
5533
5625
|
itemHeight,
|
|
5534
5626
|
spineItemPosition
|
|
5535
|
-
}) => ({
|
|
5627
|
+
}) => new SpineItemPosition({
|
|
5536
5628
|
x: Math.min(itemWidth, Math.max(0, spineItemPosition.x)),
|
|
5537
5629
|
y: Math.min(itemHeight, Math.max(0, spineItemPosition.y))
|
|
5538
5630
|
});
|
|
@@ -5580,7 +5672,7 @@
|
|
|
5580
5672
|
pageWidth,
|
|
5581
5673
|
spineItemWidth
|
|
5582
5674
|
);
|
|
5583
|
-
return { x: val, y: 0 };
|
|
5675
|
+
return new SpineItemPosition({ x: val, y: 0 });
|
|
5584
5676
|
}
|
|
5585
5677
|
return void 0;
|
|
5586
5678
|
};
|
|
@@ -5612,7 +5704,7 @@
|
|
|
5612
5704
|
};
|
|
5613
5705
|
const getSpineItemClosestPositionFromUnsafePosition = (unsafePosition, spineItem) => {
|
|
5614
5706
|
const { width, height } = spineItem.layout.layoutInfo;
|
|
5615
|
-
const adjustedPosition = {
|
|
5707
|
+
const adjustedPosition = new SpineItemPosition({
|
|
5616
5708
|
x: getClosestValidOffsetFromApproximateOffsetInPages(
|
|
5617
5709
|
unsafePosition.x,
|
|
5618
5710
|
context.getPageSize().width,
|
|
@@ -5623,7 +5715,7 @@
|
|
|
5623
5715
|
context.getPageSize().height,
|
|
5624
5716
|
height
|
|
5625
5717
|
)
|
|
5626
|
-
};
|
|
5718
|
+
});
|
|
5627
5719
|
return adjustedPosition;
|
|
5628
5720
|
};
|
|
5629
5721
|
const getSpineItemPageIndexFromNode = (node, offset, spineItem) => {
|
|
@@ -5649,12 +5741,11 @@
|
|
|
5649
5741
|
getSpineItemPositionFromNode,
|
|
5650
5742
|
getSpineItemPositionFromPageIndex: ({
|
|
5651
5743
|
pageIndex,
|
|
5652
|
-
|
|
5653
|
-
isUsingVerticalWriting
|
|
5744
|
+
spineItem
|
|
5654
5745
|
}) => getSpineItemPositionFromPageIndex({
|
|
5655
5746
|
context,
|
|
5656
|
-
isUsingVerticalWriting,
|
|
5657
|
-
itemLayout,
|
|
5747
|
+
isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
|
|
5748
|
+
itemLayout: spineItem.layout.layoutInfo,
|
|
5658
5749
|
pageIndex
|
|
5659
5750
|
}),
|
|
5660
5751
|
getSpineItemPageIndexFromPosition,
|
|
@@ -5668,12 +5759,7 @@
|
|
|
5668
5759
|
settings,
|
|
5669
5760
|
itemLayout: item.layout.layoutInfo
|
|
5670
5761
|
});
|
|
5671
|
-
}
|
|
5672
|
-
getSpineItemNumberOfPages: (params) => getSpineItemNumberOfPages({
|
|
5673
|
-
context,
|
|
5674
|
-
settings,
|
|
5675
|
-
...params
|
|
5676
|
-
})
|
|
5762
|
+
}
|
|
5677
5763
|
};
|
|
5678
5764
|
};
|
|
5679
5765
|
const createNavigationResolver$1 = ({
|
|
@@ -5682,16 +5768,10 @@
|
|
|
5682
5768
|
}) => {
|
|
5683
5769
|
const spineItemLocator = createSpineItemLocator({ context, settings });
|
|
5684
5770
|
const getNavigationForLastPage = (spineItem) => {
|
|
5685
|
-
const
|
|
5686
|
-
const numberOfPages = spineItemLocator.getSpineItemNumberOfPages({
|
|
5687
|
-
isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
|
|
5688
|
-
itemHeight: height,
|
|
5689
|
-
itemWidth: width
|
|
5690
|
-
});
|
|
5771
|
+
const numberOfPages = spineItem.numberOfPages;
|
|
5691
5772
|
return spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
5692
5773
|
pageIndex: numberOfPages - 1,
|
|
5693
|
-
|
|
5694
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
5774
|
+
spineItem
|
|
5695
5775
|
});
|
|
5696
5776
|
};
|
|
5697
5777
|
const getNavigationFromNode = (spineItem, node, offset) => {
|
|
@@ -5700,7 +5780,7 @@
|
|
|
5700
5780
|
offset,
|
|
5701
5781
|
spineItem
|
|
5702
5782
|
);
|
|
5703
|
-
return position || { x: 0, y: 0 };
|
|
5783
|
+
return position || new SpineItemPosition({ x: 0, y: 0 });
|
|
5704
5784
|
};
|
|
5705
5785
|
const getNavigationForPosition2 = (spineItem, position) => {
|
|
5706
5786
|
const potentiallyCorrectedPosition = spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(
|
|
@@ -5735,7 +5815,7 @@
|
|
|
5735
5815
|
const lastSpineItem = spineItemsManager.get(
|
|
5736
5816
|
spineItemsManager.items.length - 1
|
|
5737
5817
|
);
|
|
5738
|
-
const distanceOfLastSpineItem = spineLayout.
|
|
5818
|
+
const distanceOfLastSpineItem = spineLayout.getSpineItemSpineLayoutInfo(
|
|
5739
5819
|
lastSpineItem || 0
|
|
5740
5820
|
);
|
|
5741
5821
|
const maximumYOffset = distanceOfLastSpineItem.bottom - pageSizeHeight;
|
|
@@ -5752,6 +5832,66 @@
|
|
|
5752
5832
|
y
|
|
5753
5833
|
};
|
|
5754
5834
|
};
|
|
5835
|
+
const getNavigationForPosition = ({
|
|
5836
|
+
viewportPosition,
|
|
5837
|
+
spineLocator,
|
|
5838
|
+
context,
|
|
5839
|
+
spineItemNavigationResolver
|
|
5840
|
+
}) => {
|
|
5841
|
+
const spineItem = spineLocator.getSpineItemFromPosition(viewportPosition);
|
|
5842
|
+
if (spineItem) {
|
|
5843
|
+
const spineItemPosition = spineLocator.getSpineItemPositionFromSpinePosition(
|
|
5844
|
+
viewportPosition,
|
|
5845
|
+
spineItem
|
|
5846
|
+
);
|
|
5847
|
+
const spineItemValidPosition = spineItemNavigationResolver.getNavigationForPosition(
|
|
5848
|
+
spineItem,
|
|
5849
|
+
spineItemPosition
|
|
5850
|
+
);
|
|
5851
|
+
const viewportNavigation = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5852
|
+
spineItemPosition: spineItemValidPosition,
|
|
5853
|
+
spineItem
|
|
5854
|
+
});
|
|
5855
|
+
return getAdjustedPositionForSpread({
|
|
5856
|
+
position: viewportNavigation,
|
|
5857
|
+
pageSizeWidth: context.getPageSize().width,
|
|
5858
|
+
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5859
|
+
});
|
|
5860
|
+
}
|
|
5861
|
+
return { x: 0, y: 0 };
|
|
5862
|
+
};
|
|
5863
|
+
const getNavigationForSpineItemPage = ({
|
|
5864
|
+
pageIndex,
|
|
5865
|
+
spineItemsManager,
|
|
5866
|
+
spineItemId,
|
|
5867
|
+
context,
|
|
5868
|
+
spineLocator,
|
|
5869
|
+
spineItemNavigationResolver
|
|
5870
|
+
}) => {
|
|
5871
|
+
const spineItem = spineItemsManager.get(spineItemId);
|
|
5872
|
+
if (!spineItem) {
|
|
5873
|
+
const xPositionForPageIndex = pageIndex * context.getPageSize().width;
|
|
5874
|
+
return getNavigationForPosition({
|
|
5875
|
+
viewportPosition: { x: xPositionForPageIndex, y: 0 },
|
|
5876
|
+
context,
|
|
5877
|
+
spineItemNavigationResolver,
|
|
5878
|
+
spineLocator
|
|
5879
|
+
});
|
|
5880
|
+
}
|
|
5881
|
+
const spineItemNavigation = spineLocator.spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
5882
|
+
pageIndex,
|
|
5883
|
+
spineItem
|
|
5884
|
+
});
|
|
5885
|
+
const readingOffset = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5886
|
+
spineItemPosition: spineItemNavigation,
|
|
5887
|
+
spineItem
|
|
5888
|
+
});
|
|
5889
|
+
return getAdjustedPositionForSpread({
|
|
5890
|
+
position: readingOffset,
|
|
5891
|
+
pageSizeWidth: context.getPageSize().width,
|
|
5892
|
+
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5893
|
+
});
|
|
5894
|
+
};
|
|
5755
5895
|
const getSpineItemOffsetFromAnchor = ({
|
|
5756
5896
|
anchor,
|
|
5757
5897
|
spineItem,
|
|
@@ -5780,7 +5920,7 @@
|
|
|
5780
5920
|
context
|
|
5781
5921
|
});
|
|
5782
5922
|
const position = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5783
|
-
spineItemPosition: { x: spineItemOffset, y: 0 },
|
|
5923
|
+
spineItemPosition: new SpineItemPosition({ x: spineItemOffset, y: 0 }),
|
|
5784
5924
|
spineItem
|
|
5785
5925
|
});
|
|
5786
5926
|
return position;
|
|
@@ -5868,68 +6008,7 @@
|
|
|
5868
6008
|
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5869
6009
|
});
|
|
5870
6010
|
};
|
|
5871
|
-
const
|
|
5872
|
-
viewportPosition,
|
|
5873
|
-
spineLocator,
|
|
5874
|
-
context,
|
|
5875
|
-
spineItemNavigationResolver
|
|
5876
|
-
}) => {
|
|
5877
|
-
const spineItem = spineLocator.getSpineItemFromPosition(viewportPosition);
|
|
5878
|
-
if (spineItem) {
|
|
5879
|
-
const spineItemPosition = spineLocator.getSpineItemPositionFromSpinePosition(
|
|
5880
|
-
viewportPosition,
|
|
5881
|
-
spineItem
|
|
5882
|
-
);
|
|
5883
|
-
const spineItemValidPosition = spineItemNavigationResolver.getNavigationForPosition(
|
|
5884
|
-
spineItem,
|
|
5885
|
-
spineItemPosition
|
|
5886
|
-
);
|
|
5887
|
-
const viewportNavigation = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5888
|
-
spineItemPosition: spineItemValidPosition,
|
|
5889
|
-
spineItem
|
|
5890
|
-
});
|
|
5891
|
-
return getAdjustedPositionForSpread({
|
|
5892
|
-
position: viewportNavigation,
|
|
5893
|
-
pageSizeWidth: context.getPageSize().width,
|
|
5894
|
-
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5895
|
-
});
|
|
5896
|
-
}
|
|
5897
|
-
return { x: 0, y: 0 };
|
|
5898
|
-
};
|
|
5899
|
-
const getNavigationForSpineItemPage = ({
|
|
5900
|
-
pageIndex,
|
|
5901
|
-
spineItemsManager,
|
|
5902
|
-
spineItemId,
|
|
5903
|
-
context,
|
|
5904
|
-
spineLocator,
|
|
5905
|
-
spineItemNavigationResolver
|
|
5906
|
-
}) => {
|
|
5907
|
-
const spineItem = spineItemsManager.get(spineItemId);
|
|
5908
|
-
if (!spineItem) {
|
|
5909
|
-
const xPositionForPageIndex = pageIndex * context.getPageSize().width;
|
|
5910
|
-
return getNavigationForPosition({
|
|
5911
|
-
viewportPosition: { x: xPositionForPageIndex, y: 0 },
|
|
5912
|
-
context,
|
|
5913
|
-
spineItemNavigationResolver,
|
|
5914
|
-
spineLocator
|
|
5915
|
-
});
|
|
5916
|
-
}
|
|
5917
|
-
const spineItemNavigation = spineLocator.spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
5918
|
-
pageIndex,
|
|
5919
|
-
isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
|
|
5920
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
5921
|
-
});
|
|
5922
|
-
const readingOffset = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5923
|
-
spineItemPosition: spineItemNavigation,
|
|
5924
|
-
spineItem
|
|
5925
|
-
});
|
|
5926
|
-
return getAdjustedPositionForSpread({
|
|
5927
|
-
position: readingOffset,
|
|
5928
|
-
pageSizeWidth: context.getPageSize().width,
|
|
5929
|
-
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5930
|
-
});
|
|
5931
|
-
};
|
|
5932
|
-
const NAMESPACE$5 = `spineNavigator`;
|
|
6011
|
+
const NAMESPACE$4 = `spineNavigator`;
|
|
5933
6012
|
const createNavigationResolver = ({
|
|
5934
6013
|
context,
|
|
5935
6014
|
spineItemsManager,
|
|
@@ -5947,10 +6026,10 @@
|
|
|
5947
6026
|
spineItemsManager
|
|
5948
6027
|
}) || {};
|
|
5949
6028
|
if (!spineItem) {
|
|
5950
|
-
Report.warn(NAMESPACE$
|
|
6029
|
+
Report.warn(NAMESPACE$4, `unable to detect item id from cfi ${cfi}`);
|
|
5951
6030
|
return void 0;
|
|
5952
6031
|
}
|
|
5953
|
-
const spineItemNavigation = node ? spineItemNavigator.getNavigationFromNode(spineItem, node, offset) : { x: 0, y: 0 };
|
|
6032
|
+
const spineItemNavigation = node ? spineItemNavigator.getNavigationFromNode(spineItem, node, offset) : new SpineItemPosition({ x: 0, y: 0 });
|
|
5954
6033
|
const readingPosition = locator.getSpinePositionFromSpineItemPosition({
|
|
5955
6034
|
spineItemPosition: spineItemNavigation,
|
|
5956
6035
|
spineItem
|
|
@@ -6091,8 +6170,8 @@
|
|
|
6091
6170
|
};
|
|
6092
6171
|
return scaledDownPosition;
|
|
6093
6172
|
};
|
|
6094
|
-
const NAMESPACE$
|
|
6095
|
-
const report$3 = Report.namespace(NAMESPACE$
|
|
6173
|
+
const NAMESPACE$3 = `navigation/ViewportNavigator`;
|
|
6174
|
+
const report$3 = Report.namespace(NAMESPACE$3);
|
|
6096
6175
|
class ViewportNavigator extends DestroyableClass {
|
|
6097
6176
|
constructor(settings, viewportElement$, hookManager, context, spine) {
|
|
6098
6177
|
super();
|
|
@@ -6298,8 +6377,8 @@
|
|
|
6298
6377
|
}
|
|
6299
6378
|
}
|
|
6300
6379
|
const SCROLL_FINISHED_DEBOUNCE_TIMEOUT = 500;
|
|
6301
|
-
const NAMESPACE$
|
|
6302
|
-
const report$2 = Report.namespace(NAMESPACE$
|
|
6380
|
+
const NAMESPACE$2 = `navigation/UserNavigator`;
|
|
6381
|
+
const report$2 = Report.namespace(NAMESPACE$2);
|
|
6303
6382
|
class UserNavigator extends DestroyableClass {
|
|
6304
6383
|
constructor(settings, element$, context, scrollHappeningFromBrowser$, spine) {
|
|
6305
6384
|
super();
|
|
@@ -6628,7 +6707,7 @@
|
|
|
6628
6707
|
const withSpineItemLayoutInfo = ({ spine }) => (stream) => {
|
|
6629
6708
|
return stream.pipe(
|
|
6630
6709
|
rxjs.switchMap(({ navigation, ...rest }) => {
|
|
6631
|
-
const spineItemDimensions = spine.spineLayout.
|
|
6710
|
+
const spineItemDimensions = spine.spineLayout.getSpineItemSpineLayoutInfo(navigation.spineItem);
|
|
6632
6711
|
const spineItem = spine.spineItemsManager.get(navigation.spineItem);
|
|
6633
6712
|
return ((spineItem == null ? void 0 : spineItem.isReady$) ?? rxjs.of(false)).pipe(
|
|
6634
6713
|
rxjs.first(),
|
|
@@ -6681,8 +6760,7 @@
|
|
|
6681
6760
|
const beginPageIndexForDirection = (navigation.directionFromLastNavigation === "forward" || navigation.directionFromLastNavigation === "anchor" ? visiblePagesAtNavigablePosition == null ? void 0 : visiblePagesAtNavigablePosition.beginPageIndex : visiblePagesAtNavigablePosition == null ? void 0 : visiblePagesAtNavigablePosition.endPageIndex) ?? 0;
|
|
6682
6761
|
const positionInSpineItem = spineLocator.spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
6683
6762
|
pageIndex: beginPageIndexForDirection,
|
|
6684
|
-
|
|
6685
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
6763
|
+
spineItem
|
|
6686
6764
|
});
|
|
6687
6765
|
return positionInSpineItem;
|
|
6688
6766
|
}
|
|
@@ -6743,7 +6821,7 @@
|
|
|
6743
6821
|
rxjs.first(),
|
|
6744
6822
|
rxjs.map((isReady) => {
|
|
6745
6823
|
var _a, _b;
|
|
6746
|
-
const spineItemAbsolutePosition = spineLayout.
|
|
6824
|
+
const spineItemAbsolutePosition = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
6747
6825
|
const isPositionWithinSpineItem = spineLocator.isPositionWithinSpineItem(
|
|
6748
6826
|
navigation.position,
|
|
6749
6827
|
spineItem
|
|
@@ -6775,10 +6853,10 @@
|
|
|
6775
6853
|
}
|
|
6776
6854
|
}
|
|
6777
6855
|
if (isPositionWithinSpineItem && hasSpineItemGrewOrShrink && navigation.directionFromLastNavigation === "backward") {
|
|
6778
|
-
const positionInSpineItemWithDifference = {
|
|
6856
|
+
const positionInSpineItemWithDifference = new SpineItemPosition({
|
|
6779
6857
|
x: (((_a = navigation.positionInSpineItem) == null ? void 0 : _a.x) ?? 0) + spineItemWidthDifference,
|
|
6780
6858
|
y: (((_b = navigation.positionInSpineItem) == null ? void 0 : _b.y) ?? 0) + spineItemHeighDifference
|
|
6781
|
-
};
|
|
6859
|
+
});
|
|
6782
6860
|
return navigationResolver.getNavigationFromSpineItemPosition({
|
|
6783
6861
|
spineItem,
|
|
6784
6862
|
spineItemPosition: positionInSpineItemWithDifference
|
|
@@ -6813,15 +6891,16 @@
|
|
|
6813
6891
|
}) => {
|
|
6814
6892
|
const { spineItem } = navigation;
|
|
6815
6893
|
const foundSpineItem = spineItemsManager.get(spineItem);
|
|
6816
|
-
if (!foundSpineItem) return { x: 0, y: 0 };
|
|
6817
|
-
const { height, top } = spineLayout.
|
|
6894
|
+
if (!foundSpineItem) return new SpinePosition({ x: 0, y: 0 });
|
|
6895
|
+
const { height, top } = spineLayout.getSpineItemSpineLayoutInfo(foundSpineItem);
|
|
6818
6896
|
const isPositionWithinSpineItem = spineLocator.isPositionWithinSpineItem(
|
|
6819
6897
|
navigation.position,
|
|
6820
6898
|
foundSpineItem
|
|
6821
6899
|
);
|
|
6822
|
-
const positionInSpineItem = navigation.positionInSpineItem ?? {
|
|
6823
|
-
y: 0
|
|
6824
|
-
|
|
6900
|
+
const positionInSpineItem = navigation.positionInSpineItem ?? new SpineItemPosition({
|
|
6901
|
+
y: 0,
|
|
6902
|
+
x: 0
|
|
6903
|
+
});
|
|
6825
6904
|
if (settings.values.computedPageTurnDirection === "vertical") {
|
|
6826
6905
|
if (top === navigation.spineItemTop && height === navigation.spineItemHeight && isPositionWithinSpineItem) {
|
|
6827
6906
|
return navigation.position;
|
|
@@ -6831,10 +6910,10 @@
|
|
|
6831
6910
|
}
|
|
6832
6911
|
if (top !== navigation.spineItemTop) {
|
|
6833
6912
|
const positionInSpineItem2 = spineLocator.getSafeSpineItemPositionFromUnsafeSpineItemPosition(
|
|
6834
|
-
navigation.positionInSpineItem ?? {
|
|
6913
|
+
navigation.positionInSpineItem ?? new SpineItemPosition({
|
|
6835
6914
|
x: 0,
|
|
6836
6915
|
y: 0
|
|
6837
|
-
},
|
|
6916
|
+
}),
|
|
6838
6917
|
foundSpineItem
|
|
6839
6918
|
);
|
|
6840
6919
|
return spineLocator.getSpinePositionFromSpineItemPosition({
|
|
@@ -6844,10 +6923,10 @@
|
|
|
6844
6923
|
}
|
|
6845
6924
|
if (top === navigation.spineItemTop && height !== navigation.spineItemHeight) {
|
|
6846
6925
|
const positionYfromBottomPreviousNavigation = (navigation.spineItemHeight ?? positionInSpineItem.y) - positionInSpineItem.y;
|
|
6847
|
-
const positionInspineItem = {
|
|
6926
|
+
const positionInspineItem = new SpineItemPosition({
|
|
6848
6927
|
y: navigation.directionFromLastNavigation === "backward" ? height - positionYfromBottomPreviousNavigation : positionInSpineItem.y,
|
|
6849
6928
|
x: navigation.position.x
|
|
6850
|
-
};
|
|
6929
|
+
});
|
|
6851
6930
|
if (isPositionWithinSpineItem) {
|
|
6852
6931
|
const positionInSpineItem2 = spineLocator.getSafeSpineItemPositionFromUnsafeSpineItemPosition(
|
|
6853
6932
|
positionInspineItem,
|
|
@@ -6861,10 +6940,10 @@
|
|
|
6861
6940
|
if (!isPositionWithinSpineItem) {
|
|
6862
6941
|
const positionIsBeforeItem = navigation.position.y < top;
|
|
6863
6942
|
if (!positionIsBeforeItem) {
|
|
6864
|
-
const positionInItem = {
|
|
6943
|
+
const positionInItem = new SpineItemPosition({
|
|
6865
6944
|
y: height - positionYfromBottomPreviousNavigation,
|
|
6866
6945
|
x: navigation.position.x
|
|
6867
|
-
};
|
|
6946
|
+
});
|
|
6868
6947
|
return spineLocator.getSpinePositionFromSpineItemPosition({
|
|
6869
6948
|
spineItemPosition: spineLocator.getSafeSpineItemPositionFromUnsafeSpineItemPosition(
|
|
6870
6949
|
positionInItem,
|
|
@@ -6933,8 +7012,8 @@
|
|
|
6933
7012
|
);
|
|
6934
7013
|
})
|
|
6935
7014
|
);
|
|
6936
|
-
const NAMESPACE$
|
|
6937
|
-
const report$1 = Report.namespace(NAMESPACE$
|
|
7015
|
+
const NAMESPACE$1 = `navigation/InternalNavigator`;
|
|
7016
|
+
const report$1 = Report.namespace(NAMESPACE$1);
|
|
6938
7017
|
class InternalNavigator extends DestroyableClass {
|
|
6939
7018
|
constructor(settings, context, userNavigation$, viewportController, navigationResolver, spine, element$, isUserLocked$) {
|
|
6940
7019
|
super();
|
|
@@ -6948,7 +7027,7 @@
|
|
|
6948
7027
|
this.isUserLocked$ = isUserLocked$;
|
|
6949
7028
|
this.navigationSubject = new rxjs.BehaviorSubject({
|
|
6950
7029
|
animation: false,
|
|
6951
|
-
position: { x: 0, y: 0 },
|
|
7030
|
+
position: new SpinePosition({ x: 0, y: 0 }),
|
|
6952
7031
|
meta: {
|
|
6953
7032
|
triggeredBy: "user"
|
|
6954
7033
|
},
|
|
@@ -7290,8 +7369,8 @@
|
|
|
7290
7369
|
getElement: () => element$.getValue()
|
|
7291
7370
|
};
|
|
7292
7371
|
};
|
|
7293
|
-
const NAMESPACE
|
|
7294
|
-
const report = Report.namespace(NAMESPACE
|
|
7372
|
+
const NAMESPACE = `pagination`;
|
|
7373
|
+
const report = Report.namespace(NAMESPACE);
|
|
7295
7374
|
class Pagination extends DestroyableClass {
|
|
7296
7375
|
constructor(context, spineItemsManager) {
|
|
7297
7376
|
super();
|
|
@@ -7381,18 +7460,8 @@
|
|
|
7381
7460
|
const shouldUpdateEndCfi = previousPagination.endSpineItemIndex !== endSpineItemIndex || endLastCfi === void 0 || isRootCfi(endLastCfi);
|
|
7382
7461
|
const beginCfi = shouldUpdateBeginCfi ? getRootCfi(beginSpineItem) : beginLastCfi;
|
|
7383
7462
|
const endCfi = shouldUpdateEndCfi ? getRootCfi(endSpineItem) : endLastCfi;
|
|
7384
|
-
const
|
|
7385
|
-
const
|
|
7386
|
-
itemHeight: beginSpineItemDimensions.height,
|
|
7387
|
-
itemWidth: beginSpineItemDimensions.width,
|
|
7388
|
-
isUsingVerticalWriting: !!beginSpineItem.isUsingVerticalWriting()
|
|
7389
|
-
});
|
|
7390
|
-
const endSpineItemDimensions = endSpineItem.layout.layoutInfo;
|
|
7391
|
-
const endNumberOfPagesInSpineItem = this.spineItemLocator.getSpineItemNumberOfPages({
|
|
7392
|
-
itemHeight: endSpineItemDimensions.height,
|
|
7393
|
-
itemWidth: endSpineItemDimensions.width,
|
|
7394
|
-
isUsingVerticalWriting: !!endSpineItem.isUsingVerticalWriting()
|
|
7395
|
-
});
|
|
7463
|
+
const beginNumberOfPagesInSpineItem = beginSpineItem.numberOfPages;
|
|
7464
|
+
const endNumberOfPagesInSpineItem = endSpineItem.numberOfPages;
|
|
7396
7465
|
this.pagination.update({
|
|
7397
7466
|
beginCfi,
|
|
7398
7467
|
beginNumberOfPagesInSpineItem,
|
|
@@ -7565,10 +7634,7 @@
|
|
|
7565
7634
|
const getAbsolutePageIndexFromPageIndex = ({
|
|
7566
7635
|
pageIndex,
|
|
7567
7636
|
spineItemOrId,
|
|
7568
|
-
|
|
7569
|
-
spineItemsManager,
|
|
7570
|
-
context,
|
|
7571
|
-
settings
|
|
7637
|
+
spineItemsManager
|
|
7572
7638
|
}) => {
|
|
7573
7639
|
const items = spineItemsManager.items;
|
|
7574
7640
|
const spineItem = spineItemsManager.get(spineItemOrId);
|
|
@@ -7576,14 +7642,7 @@
|
|
|
7576
7642
|
const { currentAbsolutePage } = items.reduce(
|
|
7577
7643
|
(acc, item) => {
|
|
7578
7644
|
if (acc.found) return acc;
|
|
7579
|
-
const
|
|
7580
|
-
const numberOfPages = getSpineItemNumberOfPages({
|
|
7581
|
-
isUsingVerticalWriting: !!item.isUsingVerticalWriting(),
|
|
7582
|
-
itemHeight: itemLayout.height,
|
|
7583
|
-
itemWidth: itemLayout.width,
|
|
7584
|
-
context,
|
|
7585
|
-
settings
|
|
7586
|
-
});
|
|
7645
|
+
const numberOfPages = item.numberOfPages;
|
|
7587
7646
|
if (spineItem === item) {
|
|
7588
7647
|
if (pageIndex <= numberOfPages - 1) {
|
|
7589
7648
|
return {
|
|
@@ -7677,23 +7736,13 @@
|
|
|
7677
7736
|
};
|
|
7678
7737
|
const getSpineInfoFromAbsolutePageIndex = ({
|
|
7679
7738
|
absolutePageIndex,
|
|
7680
|
-
|
|
7681
|
-
spineItemsManager,
|
|
7682
|
-
context,
|
|
7683
|
-
settings
|
|
7739
|
+
spineItemsManager
|
|
7684
7740
|
}) => {
|
|
7685
7741
|
const items = spineItemsManager.items;
|
|
7686
7742
|
const { found, currentAbsolutePage } = items.reduce(
|
|
7687
7743
|
(acc, item) => {
|
|
7688
7744
|
if (acc.found) return acc;
|
|
7689
|
-
const
|
|
7690
|
-
const numberOfPages = getSpineItemNumberOfPages({
|
|
7691
|
-
isUsingVerticalWriting: !!item.isUsingVerticalWriting(),
|
|
7692
|
-
itemHeight: itemLayout.height,
|
|
7693
|
-
itemWidth: itemLayout.width,
|
|
7694
|
-
context,
|
|
7695
|
-
settings
|
|
7696
|
-
});
|
|
7745
|
+
const numberOfPages = item.numberOfPages;
|
|
7697
7746
|
const possiblePageIndex = absolutePageIndex - acc.currentAbsolutePage;
|
|
7698
7747
|
const currentAbsolutePage2 = acc.currentAbsolutePage + numberOfPages;
|
|
7699
7748
|
if (possiblePageIndex <= numberOfPages - 1) {
|
|
@@ -7727,7 +7776,7 @@
|
|
|
7727
7776
|
settings
|
|
7728
7777
|
}) => {
|
|
7729
7778
|
const spineItem = spineItemsManager.items.find((item) => {
|
|
7730
|
-
const { left, right, bottom, top } = spineLayout.
|
|
7779
|
+
const { left, right, bottom, top } = spineLayout.getSpineItemSpineLayoutInfo(item);
|
|
7731
7780
|
const isWithinXAxis = position.x >= left && position.x < right;
|
|
7732
7781
|
if (settings.values.computedPageTurnDirection === `horizontal`) {
|
|
7733
7782
|
return isWithinXAxis;
|
|
@@ -7743,10 +7792,10 @@
|
|
|
7743
7792
|
spineItemPosition,
|
|
7744
7793
|
itemLayout: { left, top }
|
|
7745
7794
|
}) => {
|
|
7746
|
-
return {
|
|
7795
|
+
return new SpinePosition({
|
|
7747
7796
|
x: left + spineItemPosition.x,
|
|
7748
7797
|
y: top + spineItemPosition.y
|
|
7749
|
-
};
|
|
7798
|
+
});
|
|
7750
7799
|
};
|
|
7751
7800
|
const getVisibleSpineItemsFromPosition = ({
|
|
7752
7801
|
position,
|
|
@@ -7765,7 +7814,7 @@
|
|
|
7765
7814
|
}) || spineItemsManager.get(0);
|
|
7766
7815
|
const spineItemsVisible = spineItemsManager.items.reduce(
|
|
7767
7816
|
(acc, spineItem) => {
|
|
7768
|
-
const itemPosition = spineLayout.
|
|
7817
|
+
const itemPosition = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7769
7818
|
const { visible } = getItemVisibilityForPosition({
|
|
7770
7819
|
itemPosition,
|
|
7771
7820
|
threshold,
|
|
@@ -7801,8 +7850,8 @@
|
|
|
7801
7850
|
`getSpineItemPositionFromSpinePosition`,
|
|
7802
7851
|
10,
|
|
7803
7852
|
(position, spineItem) => {
|
|
7804
|
-
const { left, top } = spineLayout.
|
|
7805
|
-
return {
|
|
7853
|
+
const { left, top } = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7854
|
+
return new SpineItemPosition({
|
|
7806
7855
|
/**
|
|
7807
7856
|
* when using spread the item could be on the right and therefore will be negative
|
|
7808
7857
|
* @example
|
|
@@ -7812,14 +7861,14 @@
|
|
|
7812
7861
|
*/
|
|
7813
7862
|
x: Math.max(position.x - left, 0),
|
|
7814
7863
|
y: Math.max(position.y - top, 0)
|
|
7815
|
-
};
|
|
7864
|
+
});
|
|
7816
7865
|
},
|
|
7817
7866
|
{ disable: true }
|
|
7818
7867
|
);
|
|
7819
7868
|
const getSpinePositionFromSpineItem = (spineItem) => {
|
|
7820
7869
|
return getSpinePositionFromSpineItemPosition({
|
|
7821
|
-
spineItemPosition: { x: 0, y: 0 },
|
|
7822
|
-
itemLayout: spineLayout.
|
|
7870
|
+
spineItemPosition: new SpineItemPosition({ x: 0, y: 0 }),
|
|
7871
|
+
itemLayout: spineLayout.getSpineItemSpineLayoutInfo(spineItem)
|
|
7823
7872
|
});
|
|
7824
7873
|
};
|
|
7825
7874
|
const getSpineItemFromIframe = (iframe) => {
|
|
@@ -7849,21 +7898,15 @@
|
|
|
7849
7898
|
spineItem,
|
|
7850
7899
|
restrictToScreen
|
|
7851
7900
|
}) => {
|
|
7852
|
-
const
|
|
7853
|
-
const numberOfPages = spineItemLocator.getSpineItemNumberOfPages({
|
|
7854
|
-
isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
|
|
7855
|
-
itemHeight: height,
|
|
7856
|
-
itemWidth: width
|
|
7857
|
-
});
|
|
7901
|
+
const numberOfPages = spineItem.numberOfPages;
|
|
7858
7902
|
const pages = Array.from(Array(numberOfPages)).map((_, index) => {
|
|
7859
7903
|
const spineItemPosition = spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
7860
7904
|
pageIndex: index,
|
|
7861
|
-
|
|
7862
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
7905
|
+
spineItem
|
|
7863
7906
|
});
|
|
7864
7907
|
const spinePosition = getSpinePositionFromSpineItemPosition({
|
|
7865
7908
|
spineItemPosition,
|
|
7866
|
-
itemLayout: spineLayout.
|
|
7909
|
+
itemLayout: spineLayout.getSpineItemSpineLayoutInfo(spineItem)
|
|
7867
7910
|
});
|
|
7868
7911
|
return {
|
|
7869
7912
|
index,
|
|
@@ -7903,22 +7946,22 @@
|
|
|
7903
7946
|
};
|
|
7904
7947
|
};
|
|
7905
7948
|
const isPositionWithinSpineItem = (position, spineItem) => {
|
|
7906
|
-
const { bottom, left, right, top } = spineLayout.
|
|
7949
|
+
const { bottom, left, right, top } = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7907
7950
|
return position.x >= left && position.x <= right && position.y <= bottom && position.y >= top;
|
|
7908
7951
|
};
|
|
7909
7952
|
const getSafeSpineItemPositionFromUnsafeSpineItemPosition = (unsafePosition, spineItem) => {
|
|
7910
|
-
const { height, width } = spineLayout.
|
|
7911
|
-
return {
|
|
7953
|
+
const { height, width } = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7954
|
+
return new SpineItemPosition({
|
|
7912
7955
|
x: Math.min(Math.max(0, unsafePosition.x), width),
|
|
7913
7956
|
y: Math.min(Math.max(0, unsafePosition.y), height)
|
|
7914
|
-
};
|
|
7957
|
+
});
|
|
7915
7958
|
};
|
|
7916
7959
|
return {
|
|
7917
7960
|
getSpinePositionFromSpineItemPosition: ({
|
|
7918
7961
|
spineItem,
|
|
7919
7962
|
spineItemPosition
|
|
7920
7963
|
}) => {
|
|
7921
|
-
const itemLayout = spineLayout.
|
|
7964
|
+
const itemLayout = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7922
7965
|
return getSpinePositionFromSpineItemPosition({
|
|
7923
7966
|
itemLayout,
|
|
7924
7967
|
spineItemPosition
|
|
@@ -7926,17 +7969,11 @@
|
|
|
7926
7969
|
},
|
|
7927
7970
|
getAbsolutePageIndexFromPageIndex: (params) => getAbsolutePageIndexFromPageIndex({
|
|
7928
7971
|
...params,
|
|
7929
|
-
|
|
7930
|
-
settings,
|
|
7931
|
-
spineItemsManager,
|
|
7932
|
-
spineLayout
|
|
7972
|
+
spineItemsManager
|
|
7933
7973
|
}),
|
|
7934
7974
|
getSpineInfoFromAbsolutePageIndex: (params) => getSpineInfoFromAbsolutePageIndex({
|
|
7935
7975
|
...params,
|
|
7936
|
-
|
|
7937
|
-
settings,
|
|
7938
|
-
spineItemsManager,
|
|
7939
|
-
spineLayout
|
|
7976
|
+
spineItemsManager
|
|
7940
7977
|
}),
|
|
7941
7978
|
getSpinePositionFromSpineItem,
|
|
7942
7979
|
getSpineItemPositionFromSpinePosition,
|
|
@@ -8061,21 +8098,6 @@
|
|
|
8061
8098
|
);
|
|
8062
8099
|
}
|
|
8063
8100
|
}
|
|
8064
|
-
const convertSpinePositionToLayoutPosition = ({
|
|
8065
|
-
position,
|
|
8066
|
-
pageSize
|
|
8067
|
-
}) => {
|
|
8068
|
-
return {
|
|
8069
|
-
x: position.x,
|
|
8070
|
-
y: position.y,
|
|
8071
|
-
left: position.x,
|
|
8072
|
-
top: position.y,
|
|
8073
|
-
width: pageSize.width,
|
|
8074
|
-
height: pageSize.height,
|
|
8075
|
-
bottom: position.y + pageSize.height,
|
|
8076
|
-
right: position.x + pageSize.width
|
|
8077
|
-
};
|
|
8078
|
-
};
|
|
8079
8101
|
const layoutItem = ({
|
|
8080
8102
|
horizontalOffset,
|
|
8081
8103
|
verticalOffset,
|
|
@@ -8136,7 +8158,7 @@
|
|
|
8136
8158
|
}
|
|
8137
8159
|
const newEdgeX = width + currentValidEdgeXForVerticalPositioning;
|
|
8138
8160
|
const newEdgeY = height + currentValidEdgeYForVerticalPositioning;
|
|
8139
|
-
const layoutPosition2 = {
|
|
8161
|
+
const layoutPosition2 = new SpineItemSpineLayout({
|
|
8140
8162
|
left: currentValidEdgeXForVerticalPositioning,
|
|
8141
8163
|
right: newEdgeX,
|
|
8142
8164
|
top: currentValidEdgeYForVerticalPositioning,
|
|
@@ -8145,7 +8167,7 @@
|
|
|
8145
8167
|
width,
|
|
8146
8168
|
x: currentValidEdgeXForVerticalPositioning,
|
|
8147
8169
|
y: currentValidEdgeYForVerticalPositioning
|
|
8148
|
-
};
|
|
8170
|
+
});
|
|
8149
8171
|
return {
|
|
8150
8172
|
horizontalOffset: newEdgeX,
|
|
8151
8173
|
verticalOffset: newEdgeY,
|
|
@@ -8156,7 +8178,7 @@
|
|
|
8156
8178
|
context.isRTL() ? { right: horizontalOffset, top: 0 } : { left: horizontalOffset, top: 0 }
|
|
8157
8179
|
);
|
|
8158
8180
|
const left = context.isRTL() ? context.state.visibleAreaRect.width - horizontalOffset - width : horizontalOffset;
|
|
8159
|
-
const layoutPosition = {
|
|
8181
|
+
const layoutPosition = new SpineItemSpineLayout({
|
|
8160
8182
|
right: context.isRTL() ? context.state.visibleAreaRect.width - horizontalOffset : horizontalOffset + width,
|
|
8161
8183
|
left,
|
|
8162
8184
|
x: left,
|
|
@@ -8165,7 +8187,7 @@
|
|
|
8165
8187
|
height,
|
|
8166
8188
|
width,
|
|
8167
8189
|
y: verticalOffset
|
|
8168
|
-
};
|
|
8190
|
+
});
|
|
8169
8191
|
return {
|
|
8170
8192
|
horizontalOffset: horizontalOffset + width,
|
|
8171
8193
|
verticalOffset: 0,
|
|
@@ -8174,7 +8196,6 @@
|
|
|
8174
8196
|
})
|
|
8175
8197
|
);
|
|
8176
8198
|
};
|
|
8177
|
-
const NAMESPACE = `SpineLayout`;
|
|
8178
8199
|
class SpineLayout extends DestroyableClass {
|
|
8179
8200
|
constructor(spineItemsManager, context, settings) {
|
|
8180
8201
|
super();
|
|
@@ -8267,67 +8288,16 @@
|
|
|
8267
8288
|
})
|
|
8268
8289
|
);
|
|
8269
8290
|
}),
|
|
8270
|
-
rxjs.map(() => {
|
|
8271
|
-
const items = spineItemsManager.items;
|
|
8272
|
-
const spineItemsPagesAbsolutePositions = items.map((item) => {
|
|
8273
|
-
const itemLayout = this.getSpineItemRelativeLayoutInfo(item);
|
|
8274
|
-
const numberOfPages = getSpineItemNumberOfPages({
|
|
8275
|
-
isUsingVerticalWriting: !!item.isUsingVerticalWriting(),
|
|
8276
|
-
itemHeight: itemLayout.height,
|
|
8277
|
-
itemWidth: itemLayout.width,
|
|
8278
|
-
context,
|
|
8279
|
-
settings
|
|
8280
|
-
});
|
|
8281
|
-
const pages2 = new Array(numberOfPages).fill(void 0);
|
|
8282
|
-
return pages2.map(
|
|
8283
|
-
(_, pageIndex) => convertSpinePositionToLayoutPosition({
|
|
8284
|
-
pageSize: this.context.getPageSize(),
|
|
8285
|
-
position: getSpinePositionFromSpineItemPosition({
|
|
8286
|
-
itemLayout,
|
|
8287
|
-
spineItemPosition: getSpineItemPositionFromPageIndex({
|
|
8288
|
-
isUsingVerticalWriting: !!item.isUsingVerticalWriting(),
|
|
8289
|
-
itemLayout,
|
|
8290
|
-
pageIndex,
|
|
8291
|
-
context
|
|
8292
|
-
})
|
|
8293
|
-
})
|
|
8294
|
-
})
|
|
8295
|
-
);
|
|
8296
|
-
});
|
|
8297
|
-
const pages = spineItemsPagesAbsolutePositions.reduce(
|
|
8298
|
-
(acc, itemPages, itemIndex) => {
|
|
8299
|
-
const itemPagesInfo = itemPages.map(
|
|
8300
|
-
(absolutePosition, pageIndex) => ({
|
|
8301
|
-
itemIndex,
|
|
8302
|
-
absolutePageIndex: itemIndex + pageIndex,
|
|
8303
|
-
absolutePosition
|
|
8304
|
-
})
|
|
8305
|
-
);
|
|
8306
|
-
return [...acc, ...itemPagesInfo];
|
|
8307
|
-
},
|
|
8308
|
-
[]
|
|
8309
|
-
);
|
|
8310
|
-
return {
|
|
8311
|
-
spineItemsAbsolutePositions: [...this.spineItemsRelativeLayouts],
|
|
8312
|
-
pages
|
|
8313
|
-
};
|
|
8314
|
-
}),
|
|
8315
8291
|
rxjs.share()
|
|
8316
8292
|
);
|
|
8317
|
-
this.
|
|
8318
|
-
rxjs.tap((layout) => {
|
|
8319
|
-
Report.log(NAMESPACE, `layout:info`, layout);
|
|
8320
|
-
}),
|
|
8321
|
-
rxjs.shareReplay({ refCount: true, bufferSize: 1 })
|
|
8322
|
-
);
|
|
8323
|
-
rxjs.merge(this.layout$, this.info$).pipe(rxjs.takeUntil(this.destroy$)).subscribe();
|
|
8293
|
+
rxjs.merge(this.layout$).pipe(rxjs.takeUntil(this.destroy$)).subscribe();
|
|
8324
8294
|
}
|
|
8325
8295
|
layout() {
|
|
8326
8296
|
this.layoutSubject.next(void 0);
|
|
8327
8297
|
}
|
|
8328
|
-
|
|
8298
|
+
getSpineItemSpineLayoutInfo(spineItemOrIndex) {
|
|
8329
8299
|
const itemIndex = this.spineItemsManager.getSpineItemIndex(spineItemOrIndex) ?? 0;
|
|
8330
|
-
return this.spineItemsRelativeLayouts[itemIndex] || {
|
|
8300
|
+
return this.spineItemsRelativeLayouts[itemIndex] || new SpineItemSpineLayout({
|
|
8331
8301
|
left: 0,
|
|
8332
8302
|
right: 0,
|
|
8333
8303
|
top: 0,
|
|
@@ -8336,7 +8306,12 @@
|
|
|
8336
8306
|
height: 0,
|
|
8337
8307
|
x: 0,
|
|
8338
8308
|
y: 0
|
|
8339
|
-
};
|
|
8309
|
+
});
|
|
8310
|
+
}
|
|
8311
|
+
get numberOfPages() {
|
|
8312
|
+
return this.spineItemsManager.items.reduce((acc, item) => {
|
|
8313
|
+
return acc + item.numberOfPages;
|
|
8314
|
+
}, 0);
|
|
8340
8315
|
}
|
|
8341
8316
|
destroy() {
|
|
8342
8317
|
super.destroy();
|
|
@@ -8607,6 +8582,15 @@
|
|
|
8607
8582
|
get renditionLayout() {
|
|
8608
8583
|
return this.renderer.renditionLayout;
|
|
8609
8584
|
}
|
|
8585
|
+
get numberOfPages() {
|
|
8586
|
+
return getSpineItemNumberOfPages({
|
|
8587
|
+
isUsingVerticalWriting: !!this.isUsingVerticalWriting(),
|
|
8588
|
+
itemHeight: this.layout.layoutInfo.height,
|
|
8589
|
+
itemWidth: this.layout.layoutInfo.width,
|
|
8590
|
+
context: this.context,
|
|
8591
|
+
settings: this.settings
|
|
8592
|
+
});
|
|
8593
|
+
}
|
|
8610
8594
|
}
|
|
8611
8595
|
const createContainerElement = (containerElement, item, hookManager) => {
|
|
8612
8596
|
const element = containerElement.ownerDocument.createElement(`div`);
|
|
@@ -8922,8 +8906,6 @@
|
|
|
8922
8906
|
},
|
|
8923
8907
|
settings: settingsManager,
|
|
8924
8908
|
element$,
|
|
8925
|
-
layout$: spine.spineLayout.layout$,
|
|
8926
|
-
layoutInfo$: spine.spineLayout.info$,
|
|
8927
8909
|
viewportState$: context.bridgeEvent.viewportState$,
|
|
8928
8910
|
viewportFree$: context.bridgeEvent.viewportFree$,
|
|
8929
8911
|
/**
|
|
@@ -8960,14 +8942,14 @@
|
|
|
8960
8942
|
accessibilityEnhancer(
|
|
8961
8943
|
resourcesEnhancer(
|
|
8962
8944
|
utilsEnhancer(
|
|
8963
|
-
|
|
8964
|
-
|
|
8965
|
-
|
|
8966
|
-
|
|
8967
|
-
|
|
8968
|
-
|
|
8969
|
-
|
|
8970
|
-
|
|
8945
|
+
zoomEnhancer(
|
|
8946
|
+
navigationEnhancer(
|
|
8947
|
+
htmlEnhancer(
|
|
8948
|
+
mediaEnhancer(
|
|
8949
|
+
chromeEnhancer(
|
|
8950
|
+
themeEnhancer(
|
|
8951
|
+
paginationEnhancer(
|
|
8952
|
+
layoutEnhancer(
|
|
8971
8953
|
eventsEnhancer(
|
|
8972
8954
|
// __
|
|
8973
8955
|
createReader
|