@prose-reader/core 1.197.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/index.js +253 -212
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +252 -211
- 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 +5 -6
- package/dist/spine/layout/layoutItem.d.ts +2 -2
- package/dist/spine/locator/SpineLocator.d.ts +17 -26
- package/dist/spine/locator/getItemVisibilityForPosition.d.ts +2 -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 -16
- package/dist/spineItem/layout/getSpineItemPagesPosition.d.ts +1 -1
- package/dist/spineItem/layout/getSpineItemPositionFromPageIndex.d.ts +2 -2
- package/dist/spineItem/locationResolver.d.ts +8 -18
- 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/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,
|
|
@@ -3372,7 +3471,7 @@
|
|
|
3372
3471
|
);
|
|
3373
3472
|
};
|
|
3374
3473
|
const trackTotalPages = (reader) => {
|
|
3375
|
-
const totalPages$ = reader.layout$.pipe(
|
|
3474
|
+
const totalPages$ = reader.spine.spineLayout.layout$.pipe(
|
|
3376
3475
|
rxjs.debounceTime(10, rxjs.animationFrameScheduler),
|
|
3377
3476
|
rxjs.withLatestFrom(reader.pagination.state$),
|
|
3378
3477
|
rxjs.map(() => {
|
|
@@ -3513,7 +3612,7 @@
|
|
|
3513
3612
|
);
|
|
3514
3613
|
return { paginationInfo$, getPaginationInfo: () => currentValue.value };
|
|
3515
3614
|
};
|
|
3516
|
-
Report.namespace(NAMESPACE$
|
|
3615
|
+
Report.namespace(NAMESPACE$5);
|
|
3517
3616
|
const paginationEnhancer = (next) => (options) => {
|
|
3518
3617
|
const reader = next(options);
|
|
3519
3618
|
const { paginationInfo$, getPaginationInfo } = trackPaginationInfo(reader);
|
|
@@ -5474,10 +5573,10 @@
|
|
|
5474
5573
|
pageIndex,
|
|
5475
5574
|
itemLayout.height
|
|
5476
5575
|
);
|
|
5477
|
-
return {
|
|
5576
|
+
return new SpineItemPosition({
|
|
5478
5577
|
x: 0,
|
|
5479
5578
|
y: ltrRelativeOffset2
|
|
5480
|
-
};
|
|
5579
|
+
});
|
|
5481
5580
|
}
|
|
5482
5581
|
const ltrRelativeOffset = getItemOffsetFromPageIndex(
|
|
5483
5582
|
context.getPageSize().width,
|
|
@@ -5485,15 +5584,15 @@
|
|
|
5485
5584
|
itemLayout.width
|
|
5486
5585
|
);
|
|
5487
5586
|
if (context.isRTL()) {
|
|
5488
|
-
return {
|
|
5587
|
+
return new SpineItemPosition({
|
|
5489
5588
|
x: itemLayout.width - ltrRelativeOffset - context.getPageSize().width,
|
|
5490
5589
|
y: 0
|
|
5491
|
-
};
|
|
5590
|
+
});
|
|
5492
5591
|
}
|
|
5493
|
-
return {
|
|
5592
|
+
return new SpineItemPosition({
|
|
5494
5593
|
x: ltrRelativeOffset,
|
|
5495
5594
|
y: 0
|
|
5496
|
-
};
|
|
5595
|
+
});
|
|
5497
5596
|
};
|
|
5498
5597
|
const getSpineItemPagesPosition = ({
|
|
5499
5598
|
context,
|
|
@@ -5525,7 +5624,7 @@
|
|
|
5525
5624
|
itemWidth,
|
|
5526
5625
|
itemHeight,
|
|
5527
5626
|
spineItemPosition
|
|
5528
|
-
}) => ({
|
|
5627
|
+
}) => new SpineItemPosition({
|
|
5529
5628
|
x: Math.min(itemWidth, Math.max(0, spineItemPosition.x)),
|
|
5530
5629
|
y: Math.min(itemHeight, Math.max(0, spineItemPosition.y))
|
|
5531
5630
|
});
|
|
@@ -5573,7 +5672,7 @@
|
|
|
5573
5672
|
pageWidth,
|
|
5574
5673
|
spineItemWidth
|
|
5575
5674
|
);
|
|
5576
|
-
return { x: val, y: 0 };
|
|
5675
|
+
return new SpineItemPosition({ x: val, y: 0 });
|
|
5577
5676
|
}
|
|
5578
5677
|
return void 0;
|
|
5579
5678
|
};
|
|
@@ -5605,7 +5704,7 @@
|
|
|
5605
5704
|
};
|
|
5606
5705
|
const getSpineItemClosestPositionFromUnsafePosition = (unsafePosition, spineItem) => {
|
|
5607
5706
|
const { width, height } = spineItem.layout.layoutInfo;
|
|
5608
|
-
const adjustedPosition = {
|
|
5707
|
+
const adjustedPosition = new SpineItemPosition({
|
|
5609
5708
|
x: getClosestValidOffsetFromApproximateOffsetInPages(
|
|
5610
5709
|
unsafePosition.x,
|
|
5611
5710
|
context.getPageSize().width,
|
|
@@ -5616,7 +5715,7 @@
|
|
|
5616
5715
|
context.getPageSize().height,
|
|
5617
5716
|
height
|
|
5618
5717
|
)
|
|
5619
|
-
};
|
|
5718
|
+
});
|
|
5620
5719
|
return adjustedPosition;
|
|
5621
5720
|
};
|
|
5622
5721
|
const getSpineItemPageIndexFromNode = (node, offset, spineItem) => {
|
|
@@ -5642,12 +5741,11 @@
|
|
|
5642
5741
|
getSpineItemPositionFromNode,
|
|
5643
5742
|
getSpineItemPositionFromPageIndex: ({
|
|
5644
5743
|
pageIndex,
|
|
5645
|
-
|
|
5646
|
-
isUsingVerticalWriting
|
|
5744
|
+
spineItem
|
|
5647
5745
|
}) => getSpineItemPositionFromPageIndex({
|
|
5648
5746
|
context,
|
|
5649
|
-
isUsingVerticalWriting,
|
|
5650
|
-
itemLayout,
|
|
5747
|
+
isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
|
|
5748
|
+
itemLayout: spineItem.layout.layoutInfo,
|
|
5651
5749
|
pageIndex
|
|
5652
5750
|
}),
|
|
5653
5751
|
getSpineItemPageIndexFromPosition,
|
|
@@ -5673,8 +5771,7 @@
|
|
|
5673
5771
|
const numberOfPages = spineItem.numberOfPages;
|
|
5674
5772
|
return spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
5675
5773
|
pageIndex: numberOfPages - 1,
|
|
5676
|
-
|
|
5677
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
5774
|
+
spineItem
|
|
5678
5775
|
});
|
|
5679
5776
|
};
|
|
5680
5777
|
const getNavigationFromNode = (spineItem, node, offset) => {
|
|
@@ -5683,7 +5780,7 @@
|
|
|
5683
5780
|
offset,
|
|
5684
5781
|
spineItem
|
|
5685
5782
|
);
|
|
5686
|
-
return position || { x: 0, y: 0 };
|
|
5783
|
+
return position || new SpineItemPosition({ x: 0, y: 0 });
|
|
5687
5784
|
};
|
|
5688
5785
|
const getNavigationForPosition2 = (spineItem, position) => {
|
|
5689
5786
|
const potentiallyCorrectedPosition = spineItemLocator.getSpineItemClosestPositionFromUnsafePosition(
|
|
@@ -5718,7 +5815,7 @@
|
|
|
5718
5815
|
const lastSpineItem = spineItemsManager.get(
|
|
5719
5816
|
spineItemsManager.items.length - 1
|
|
5720
5817
|
);
|
|
5721
|
-
const distanceOfLastSpineItem = spineLayout.
|
|
5818
|
+
const distanceOfLastSpineItem = spineLayout.getSpineItemSpineLayoutInfo(
|
|
5722
5819
|
lastSpineItem || 0
|
|
5723
5820
|
);
|
|
5724
5821
|
const maximumYOffset = distanceOfLastSpineItem.bottom - pageSizeHeight;
|
|
@@ -5735,6 +5832,66 @@
|
|
|
5735
5832
|
y
|
|
5736
5833
|
};
|
|
5737
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
|
+
};
|
|
5738
5895
|
const getSpineItemOffsetFromAnchor = ({
|
|
5739
5896
|
anchor,
|
|
5740
5897
|
spineItem,
|
|
@@ -5763,7 +5920,7 @@
|
|
|
5763
5920
|
context
|
|
5764
5921
|
});
|
|
5765
5922
|
const position = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5766
|
-
spineItemPosition: { x: spineItemOffset, y: 0 },
|
|
5923
|
+
spineItemPosition: new SpineItemPosition({ x: spineItemOffset, y: 0 }),
|
|
5767
5924
|
spineItem
|
|
5768
5925
|
});
|
|
5769
5926
|
return position;
|
|
@@ -5851,68 +6008,7 @@
|
|
|
5851
6008
|
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5852
6009
|
});
|
|
5853
6010
|
};
|
|
5854
|
-
const
|
|
5855
|
-
viewportPosition,
|
|
5856
|
-
spineLocator,
|
|
5857
|
-
context,
|
|
5858
|
-
spineItemNavigationResolver
|
|
5859
|
-
}) => {
|
|
5860
|
-
const spineItem = spineLocator.getSpineItemFromPosition(viewportPosition);
|
|
5861
|
-
if (spineItem) {
|
|
5862
|
-
const spineItemPosition = spineLocator.getSpineItemPositionFromSpinePosition(
|
|
5863
|
-
viewportPosition,
|
|
5864
|
-
spineItem
|
|
5865
|
-
);
|
|
5866
|
-
const spineItemValidPosition = spineItemNavigationResolver.getNavigationForPosition(
|
|
5867
|
-
spineItem,
|
|
5868
|
-
spineItemPosition
|
|
5869
|
-
);
|
|
5870
|
-
const viewportNavigation = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5871
|
-
spineItemPosition: spineItemValidPosition,
|
|
5872
|
-
spineItem
|
|
5873
|
-
});
|
|
5874
|
-
return getAdjustedPositionForSpread({
|
|
5875
|
-
position: viewportNavigation,
|
|
5876
|
-
pageSizeWidth: context.getPageSize().width,
|
|
5877
|
-
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5878
|
-
});
|
|
5879
|
-
}
|
|
5880
|
-
return { x: 0, y: 0 };
|
|
5881
|
-
};
|
|
5882
|
-
const getNavigationForSpineItemPage = ({
|
|
5883
|
-
pageIndex,
|
|
5884
|
-
spineItemsManager,
|
|
5885
|
-
spineItemId,
|
|
5886
|
-
context,
|
|
5887
|
-
spineLocator,
|
|
5888
|
-
spineItemNavigationResolver
|
|
5889
|
-
}) => {
|
|
5890
|
-
const spineItem = spineItemsManager.get(spineItemId);
|
|
5891
|
-
if (!spineItem) {
|
|
5892
|
-
const xPositionForPageIndex = pageIndex * context.getPageSize().width;
|
|
5893
|
-
return getNavigationForPosition({
|
|
5894
|
-
viewportPosition: { x: xPositionForPageIndex, y: 0 },
|
|
5895
|
-
context,
|
|
5896
|
-
spineItemNavigationResolver,
|
|
5897
|
-
spineLocator
|
|
5898
|
-
});
|
|
5899
|
-
}
|
|
5900
|
-
const spineItemNavigation = spineLocator.spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
5901
|
-
pageIndex,
|
|
5902
|
-
isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
|
|
5903
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
5904
|
-
});
|
|
5905
|
-
const readingOffset = spineLocator.getSpinePositionFromSpineItemPosition({
|
|
5906
|
-
spineItemPosition: spineItemNavigation,
|
|
5907
|
-
spineItem
|
|
5908
|
-
});
|
|
5909
|
-
return getAdjustedPositionForSpread({
|
|
5910
|
-
position: readingOffset,
|
|
5911
|
-
pageSizeWidth: context.getPageSize().width,
|
|
5912
|
-
visibleAreaRectWidth: context.state.visibleAreaRect.width
|
|
5913
|
-
});
|
|
5914
|
-
};
|
|
5915
|
-
const NAMESPACE$5 = `spineNavigator`;
|
|
6011
|
+
const NAMESPACE$4 = `spineNavigator`;
|
|
5916
6012
|
const createNavigationResolver = ({
|
|
5917
6013
|
context,
|
|
5918
6014
|
spineItemsManager,
|
|
@@ -5930,10 +6026,10 @@
|
|
|
5930
6026
|
spineItemsManager
|
|
5931
6027
|
}) || {};
|
|
5932
6028
|
if (!spineItem) {
|
|
5933
|
-
Report.warn(NAMESPACE$
|
|
6029
|
+
Report.warn(NAMESPACE$4, `unable to detect item id from cfi ${cfi}`);
|
|
5934
6030
|
return void 0;
|
|
5935
6031
|
}
|
|
5936
|
-
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 });
|
|
5937
6033
|
const readingPosition = locator.getSpinePositionFromSpineItemPosition({
|
|
5938
6034
|
spineItemPosition: spineItemNavigation,
|
|
5939
6035
|
spineItem
|
|
@@ -6074,8 +6170,8 @@
|
|
|
6074
6170
|
};
|
|
6075
6171
|
return scaledDownPosition;
|
|
6076
6172
|
};
|
|
6077
|
-
const NAMESPACE$
|
|
6078
|
-
const report$3 = Report.namespace(NAMESPACE$
|
|
6173
|
+
const NAMESPACE$3 = `navigation/ViewportNavigator`;
|
|
6174
|
+
const report$3 = Report.namespace(NAMESPACE$3);
|
|
6079
6175
|
class ViewportNavigator extends DestroyableClass {
|
|
6080
6176
|
constructor(settings, viewportElement$, hookManager, context, spine) {
|
|
6081
6177
|
super();
|
|
@@ -6281,8 +6377,8 @@
|
|
|
6281
6377
|
}
|
|
6282
6378
|
}
|
|
6283
6379
|
const SCROLL_FINISHED_DEBOUNCE_TIMEOUT = 500;
|
|
6284
|
-
const NAMESPACE$
|
|
6285
|
-
const report$2 = Report.namespace(NAMESPACE$
|
|
6380
|
+
const NAMESPACE$2 = `navigation/UserNavigator`;
|
|
6381
|
+
const report$2 = Report.namespace(NAMESPACE$2);
|
|
6286
6382
|
class UserNavigator extends DestroyableClass {
|
|
6287
6383
|
constructor(settings, element$, context, scrollHappeningFromBrowser$, spine) {
|
|
6288
6384
|
super();
|
|
@@ -6611,7 +6707,7 @@
|
|
|
6611
6707
|
const withSpineItemLayoutInfo = ({ spine }) => (stream) => {
|
|
6612
6708
|
return stream.pipe(
|
|
6613
6709
|
rxjs.switchMap(({ navigation, ...rest }) => {
|
|
6614
|
-
const spineItemDimensions = spine.spineLayout.
|
|
6710
|
+
const spineItemDimensions = spine.spineLayout.getSpineItemSpineLayoutInfo(navigation.spineItem);
|
|
6615
6711
|
const spineItem = spine.spineItemsManager.get(navigation.spineItem);
|
|
6616
6712
|
return ((spineItem == null ? void 0 : spineItem.isReady$) ?? rxjs.of(false)).pipe(
|
|
6617
6713
|
rxjs.first(),
|
|
@@ -6664,8 +6760,7 @@
|
|
|
6664
6760
|
const beginPageIndexForDirection = (navigation.directionFromLastNavigation === "forward" || navigation.directionFromLastNavigation === "anchor" ? visiblePagesAtNavigablePosition == null ? void 0 : visiblePagesAtNavigablePosition.beginPageIndex : visiblePagesAtNavigablePosition == null ? void 0 : visiblePagesAtNavigablePosition.endPageIndex) ?? 0;
|
|
6665
6761
|
const positionInSpineItem = spineLocator.spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
6666
6762
|
pageIndex: beginPageIndexForDirection,
|
|
6667
|
-
|
|
6668
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
6763
|
+
spineItem
|
|
6669
6764
|
});
|
|
6670
6765
|
return positionInSpineItem;
|
|
6671
6766
|
}
|
|
@@ -6726,7 +6821,7 @@
|
|
|
6726
6821
|
rxjs.first(),
|
|
6727
6822
|
rxjs.map((isReady) => {
|
|
6728
6823
|
var _a, _b;
|
|
6729
|
-
const spineItemAbsolutePosition = spineLayout.
|
|
6824
|
+
const spineItemAbsolutePosition = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
6730
6825
|
const isPositionWithinSpineItem = spineLocator.isPositionWithinSpineItem(
|
|
6731
6826
|
navigation.position,
|
|
6732
6827
|
spineItem
|
|
@@ -6758,10 +6853,10 @@
|
|
|
6758
6853
|
}
|
|
6759
6854
|
}
|
|
6760
6855
|
if (isPositionWithinSpineItem && hasSpineItemGrewOrShrink && navigation.directionFromLastNavigation === "backward") {
|
|
6761
|
-
const positionInSpineItemWithDifference = {
|
|
6856
|
+
const positionInSpineItemWithDifference = new SpineItemPosition({
|
|
6762
6857
|
x: (((_a = navigation.positionInSpineItem) == null ? void 0 : _a.x) ?? 0) + spineItemWidthDifference,
|
|
6763
6858
|
y: (((_b = navigation.positionInSpineItem) == null ? void 0 : _b.y) ?? 0) + spineItemHeighDifference
|
|
6764
|
-
};
|
|
6859
|
+
});
|
|
6765
6860
|
return navigationResolver.getNavigationFromSpineItemPosition({
|
|
6766
6861
|
spineItem,
|
|
6767
6862
|
spineItemPosition: positionInSpineItemWithDifference
|
|
@@ -6796,15 +6891,16 @@
|
|
|
6796
6891
|
}) => {
|
|
6797
6892
|
const { spineItem } = navigation;
|
|
6798
6893
|
const foundSpineItem = spineItemsManager.get(spineItem);
|
|
6799
|
-
if (!foundSpineItem) return { x: 0, y: 0 };
|
|
6800
|
-
const { height, top } = spineLayout.
|
|
6894
|
+
if (!foundSpineItem) return new SpinePosition({ x: 0, y: 0 });
|
|
6895
|
+
const { height, top } = spineLayout.getSpineItemSpineLayoutInfo(foundSpineItem);
|
|
6801
6896
|
const isPositionWithinSpineItem = spineLocator.isPositionWithinSpineItem(
|
|
6802
6897
|
navigation.position,
|
|
6803
6898
|
foundSpineItem
|
|
6804
6899
|
);
|
|
6805
|
-
const positionInSpineItem = navigation.positionInSpineItem ?? {
|
|
6806
|
-
y: 0
|
|
6807
|
-
|
|
6900
|
+
const positionInSpineItem = navigation.positionInSpineItem ?? new SpineItemPosition({
|
|
6901
|
+
y: 0,
|
|
6902
|
+
x: 0
|
|
6903
|
+
});
|
|
6808
6904
|
if (settings.values.computedPageTurnDirection === "vertical") {
|
|
6809
6905
|
if (top === navigation.spineItemTop && height === navigation.spineItemHeight && isPositionWithinSpineItem) {
|
|
6810
6906
|
return navigation.position;
|
|
@@ -6814,10 +6910,10 @@
|
|
|
6814
6910
|
}
|
|
6815
6911
|
if (top !== navigation.spineItemTop) {
|
|
6816
6912
|
const positionInSpineItem2 = spineLocator.getSafeSpineItemPositionFromUnsafeSpineItemPosition(
|
|
6817
|
-
navigation.positionInSpineItem ?? {
|
|
6913
|
+
navigation.positionInSpineItem ?? new SpineItemPosition({
|
|
6818
6914
|
x: 0,
|
|
6819
6915
|
y: 0
|
|
6820
|
-
},
|
|
6916
|
+
}),
|
|
6821
6917
|
foundSpineItem
|
|
6822
6918
|
);
|
|
6823
6919
|
return spineLocator.getSpinePositionFromSpineItemPosition({
|
|
@@ -6827,10 +6923,10 @@
|
|
|
6827
6923
|
}
|
|
6828
6924
|
if (top === navigation.spineItemTop && height !== navigation.spineItemHeight) {
|
|
6829
6925
|
const positionYfromBottomPreviousNavigation = (navigation.spineItemHeight ?? positionInSpineItem.y) - positionInSpineItem.y;
|
|
6830
|
-
const positionInspineItem = {
|
|
6926
|
+
const positionInspineItem = new SpineItemPosition({
|
|
6831
6927
|
y: navigation.directionFromLastNavigation === "backward" ? height - positionYfromBottomPreviousNavigation : positionInSpineItem.y,
|
|
6832
6928
|
x: navigation.position.x
|
|
6833
|
-
};
|
|
6929
|
+
});
|
|
6834
6930
|
if (isPositionWithinSpineItem) {
|
|
6835
6931
|
const positionInSpineItem2 = spineLocator.getSafeSpineItemPositionFromUnsafeSpineItemPosition(
|
|
6836
6932
|
positionInspineItem,
|
|
@@ -6844,10 +6940,10 @@
|
|
|
6844
6940
|
if (!isPositionWithinSpineItem) {
|
|
6845
6941
|
const positionIsBeforeItem = navigation.position.y < top;
|
|
6846
6942
|
if (!positionIsBeforeItem) {
|
|
6847
|
-
const positionInItem = {
|
|
6943
|
+
const positionInItem = new SpineItemPosition({
|
|
6848
6944
|
y: height - positionYfromBottomPreviousNavigation,
|
|
6849
6945
|
x: navigation.position.x
|
|
6850
|
-
};
|
|
6946
|
+
});
|
|
6851
6947
|
return spineLocator.getSpinePositionFromSpineItemPosition({
|
|
6852
6948
|
spineItemPosition: spineLocator.getSafeSpineItemPositionFromUnsafeSpineItemPosition(
|
|
6853
6949
|
positionInItem,
|
|
@@ -6916,8 +7012,8 @@
|
|
|
6916
7012
|
);
|
|
6917
7013
|
})
|
|
6918
7014
|
);
|
|
6919
|
-
const NAMESPACE$
|
|
6920
|
-
const report$1 = Report.namespace(NAMESPACE$
|
|
7015
|
+
const NAMESPACE$1 = `navigation/InternalNavigator`;
|
|
7016
|
+
const report$1 = Report.namespace(NAMESPACE$1);
|
|
6921
7017
|
class InternalNavigator extends DestroyableClass {
|
|
6922
7018
|
constructor(settings, context, userNavigation$, viewportController, navigationResolver, spine, element$, isUserLocked$) {
|
|
6923
7019
|
super();
|
|
@@ -6931,7 +7027,7 @@
|
|
|
6931
7027
|
this.isUserLocked$ = isUserLocked$;
|
|
6932
7028
|
this.navigationSubject = new rxjs.BehaviorSubject({
|
|
6933
7029
|
animation: false,
|
|
6934
|
-
position: { x: 0, y: 0 },
|
|
7030
|
+
position: new SpinePosition({ x: 0, y: 0 }),
|
|
6935
7031
|
meta: {
|
|
6936
7032
|
triggeredBy: "user"
|
|
6937
7033
|
},
|
|
@@ -7273,8 +7369,8 @@
|
|
|
7273
7369
|
getElement: () => element$.getValue()
|
|
7274
7370
|
};
|
|
7275
7371
|
};
|
|
7276
|
-
const NAMESPACE
|
|
7277
|
-
const report = Report.namespace(NAMESPACE
|
|
7372
|
+
const NAMESPACE = `pagination`;
|
|
7373
|
+
const report = Report.namespace(NAMESPACE);
|
|
7278
7374
|
class Pagination extends DestroyableClass {
|
|
7279
7375
|
constructor(context, spineItemsManager) {
|
|
7280
7376
|
super();
|
|
@@ -7680,7 +7776,7 @@
|
|
|
7680
7776
|
settings
|
|
7681
7777
|
}) => {
|
|
7682
7778
|
const spineItem = spineItemsManager.items.find((item) => {
|
|
7683
|
-
const { left, right, bottom, top } = spineLayout.
|
|
7779
|
+
const { left, right, bottom, top } = spineLayout.getSpineItemSpineLayoutInfo(item);
|
|
7684
7780
|
const isWithinXAxis = position.x >= left && position.x < right;
|
|
7685
7781
|
if (settings.values.computedPageTurnDirection === `horizontal`) {
|
|
7686
7782
|
return isWithinXAxis;
|
|
@@ -7696,10 +7792,10 @@
|
|
|
7696
7792
|
spineItemPosition,
|
|
7697
7793
|
itemLayout: { left, top }
|
|
7698
7794
|
}) => {
|
|
7699
|
-
return {
|
|
7795
|
+
return new SpinePosition({
|
|
7700
7796
|
x: left + spineItemPosition.x,
|
|
7701
7797
|
y: top + spineItemPosition.y
|
|
7702
|
-
};
|
|
7798
|
+
});
|
|
7703
7799
|
};
|
|
7704
7800
|
const getVisibleSpineItemsFromPosition = ({
|
|
7705
7801
|
position,
|
|
@@ -7718,7 +7814,7 @@
|
|
|
7718
7814
|
}) || spineItemsManager.get(0);
|
|
7719
7815
|
const spineItemsVisible = spineItemsManager.items.reduce(
|
|
7720
7816
|
(acc, spineItem) => {
|
|
7721
|
-
const itemPosition = spineLayout.
|
|
7817
|
+
const itemPosition = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7722
7818
|
const { visible } = getItemVisibilityForPosition({
|
|
7723
7819
|
itemPosition,
|
|
7724
7820
|
threshold,
|
|
@@ -7754,8 +7850,8 @@
|
|
|
7754
7850
|
`getSpineItemPositionFromSpinePosition`,
|
|
7755
7851
|
10,
|
|
7756
7852
|
(position, spineItem) => {
|
|
7757
|
-
const { left, top } = spineLayout.
|
|
7758
|
-
return {
|
|
7853
|
+
const { left, top } = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7854
|
+
return new SpineItemPosition({
|
|
7759
7855
|
/**
|
|
7760
7856
|
* when using spread the item could be on the right and therefore will be negative
|
|
7761
7857
|
* @example
|
|
@@ -7765,14 +7861,14 @@
|
|
|
7765
7861
|
*/
|
|
7766
7862
|
x: Math.max(position.x - left, 0),
|
|
7767
7863
|
y: Math.max(position.y - top, 0)
|
|
7768
|
-
};
|
|
7864
|
+
});
|
|
7769
7865
|
},
|
|
7770
7866
|
{ disable: true }
|
|
7771
7867
|
);
|
|
7772
7868
|
const getSpinePositionFromSpineItem = (spineItem) => {
|
|
7773
7869
|
return getSpinePositionFromSpineItemPosition({
|
|
7774
|
-
spineItemPosition: { x: 0, y: 0 },
|
|
7775
|
-
itemLayout: spineLayout.
|
|
7870
|
+
spineItemPosition: new SpineItemPosition({ x: 0, y: 0 }),
|
|
7871
|
+
itemLayout: spineLayout.getSpineItemSpineLayoutInfo(spineItem)
|
|
7776
7872
|
});
|
|
7777
7873
|
};
|
|
7778
7874
|
const getSpineItemFromIframe = (iframe) => {
|
|
@@ -7806,12 +7902,11 @@
|
|
|
7806
7902
|
const pages = Array.from(Array(numberOfPages)).map((_, index) => {
|
|
7807
7903
|
const spineItemPosition = spineItemLocator.getSpineItemPositionFromPageIndex({
|
|
7808
7904
|
pageIndex: index,
|
|
7809
|
-
|
|
7810
|
-
itemLayout: spineItem.layout.layoutInfo
|
|
7905
|
+
spineItem
|
|
7811
7906
|
});
|
|
7812
7907
|
const spinePosition = getSpinePositionFromSpineItemPosition({
|
|
7813
7908
|
spineItemPosition,
|
|
7814
|
-
itemLayout: spineLayout.
|
|
7909
|
+
itemLayout: spineLayout.getSpineItemSpineLayoutInfo(spineItem)
|
|
7815
7910
|
});
|
|
7816
7911
|
return {
|
|
7817
7912
|
index,
|
|
@@ -7851,22 +7946,22 @@
|
|
|
7851
7946
|
};
|
|
7852
7947
|
};
|
|
7853
7948
|
const isPositionWithinSpineItem = (position, spineItem) => {
|
|
7854
|
-
const { bottom, left, right, top } = spineLayout.
|
|
7949
|
+
const { bottom, left, right, top } = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7855
7950
|
return position.x >= left && position.x <= right && position.y <= bottom && position.y >= top;
|
|
7856
7951
|
};
|
|
7857
7952
|
const getSafeSpineItemPositionFromUnsafeSpineItemPosition = (unsafePosition, spineItem) => {
|
|
7858
|
-
const { height, width } = spineLayout.
|
|
7859
|
-
return {
|
|
7953
|
+
const { height, width } = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7954
|
+
return new SpineItemPosition({
|
|
7860
7955
|
x: Math.min(Math.max(0, unsafePosition.x), width),
|
|
7861
7956
|
y: Math.min(Math.max(0, unsafePosition.y), height)
|
|
7862
|
-
};
|
|
7957
|
+
});
|
|
7863
7958
|
};
|
|
7864
7959
|
return {
|
|
7865
7960
|
getSpinePositionFromSpineItemPosition: ({
|
|
7866
7961
|
spineItem,
|
|
7867
7962
|
spineItemPosition
|
|
7868
7963
|
}) => {
|
|
7869
|
-
const itemLayout = spineLayout.
|
|
7964
|
+
const itemLayout = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
|
|
7870
7965
|
return getSpinePositionFromSpineItemPosition({
|
|
7871
7966
|
itemLayout,
|
|
7872
7967
|
spineItemPosition
|
|
@@ -8003,21 +8098,6 @@
|
|
|
8003
8098
|
);
|
|
8004
8099
|
}
|
|
8005
8100
|
}
|
|
8006
|
-
const convertSpinePositionToLayoutPosition = ({
|
|
8007
|
-
position,
|
|
8008
|
-
pageSize
|
|
8009
|
-
}) => {
|
|
8010
|
-
return {
|
|
8011
|
-
x: position.x,
|
|
8012
|
-
y: position.y,
|
|
8013
|
-
left: position.x,
|
|
8014
|
-
top: position.y,
|
|
8015
|
-
width: pageSize.width,
|
|
8016
|
-
height: pageSize.height,
|
|
8017
|
-
bottom: position.y + pageSize.height,
|
|
8018
|
-
right: position.x + pageSize.width
|
|
8019
|
-
};
|
|
8020
|
-
};
|
|
8021
8101
|
const layoutItem = ({
|
|
8022
8102
|
horizontalOffset,
|
|
8023
8103
|
verticalOffset,
|
|
@@ -8078,7 +8158,7 @@
|
|
|
8078
8158
|
}
|
|
8079
8159
|
const newEdgeX = width + currentValidEdgeXForVerticalPositioning;
|
|
8080
8160
|
const newEdgeY = height + currentValidEdgeYForVerticalPositioning;
|
|
8081
|
-
const layoutPosition2 = {
|
|
8161
|
+
const layoutPosition2 = new SpineItemSpineLayout({
|
|
8082
8162
|
left: currentValidEdgeXForVerticalPositioning,
|
|
8083
8163
|
right: newEdgeX,
|
|
8084
8164
|
top: currentValidEdgeYForVerticalPositioning,
|
|
@@ -8087,7 +8167,7 @@
|
|
|
8087
8167
|
width,
|
|
8088
8168
|
x: currentValidEdgeXForVerticalPositioning,
|
|
8089
8169
|
y: currentValidEdgeYForVerticalPositioning
|
|
8090
|
-
};
|
|
8170
|
+
});
|
|
8091
8171
|
return {
|
|
8092
8172
|
horizontalOffset: newEdgeX,
|
|
8093
8173
|
verticalOffset: newEdgeY,
|
|
@@ -8098,7 +8178,7 @@
|
|
|
8098
8178
|
context.isRTL() ? { right: horizontalOffset, top: 0 } : { left: horizontalOffset, top: 0 }
|
|
8099
8179
|
);
|
|
8100
8180
|
const left = context.isRTL() ? context.state.visibleAreaRect.width - horizontalOffset - width : horizontalOffset;
|
|
8101
|
-
const layoutPosition = {
|
|
8181
|
+
const layoutPosition = new SpineItemSpineLayout({
|
|
8102
8182
|
right: context.isRTL() ? context.state.visibleAreaRect.width - horizontalOffset : horizontalOffset + width,
|
|
8103
8183
|
left,
|
|
8104
8184
|
x: left,
|
|
@@ -8107,7 +8187,7 @@
|
|
|
8107
8187
|
height,
|
|
8108
8188
|
width,
|
|
8109
8189
|
y: verticalOffset
|
|
8110
|
-
};
|
|
8190
|
+
});
|
|
8111
8191
|
return {
|
|
8112
8192
|
horizontalOffset: horizontalOffset + width,
|
|
8113
8193
|
verticalOffset: 0,
|
|
@@ -8116,7 +8196,6 @@
|
|
|
8116
8196
|
})
|
|
8117
8197
|
);
|
|
8118
8198
|
};
|
|
8119
|
-
const NAMESPACE = `SpineLayout`;
|
|
8120
8199
|
class SpineLayout extends DestroyableClass {
|
|
8121
8200
|
constructor(spineItemsManager, context, settings) {
|
|
8122
8201
|
super();
|
|
@@ -8209,52 +8288,16 @@
|
|
|
8209
8288
|
})
|
|
8210
8289
|
);
|
|
8211
8290
|
}),
|
|
8212
|
-
rxjs.map(() => {
|
|
8213
|
-
const items = spineItemsManager.items;
|
|
8214
|
-
const pages = items.reduce((acc, item, itemIndex) => {
|
|
8215
|
-
const itemLayout = this.getSpineItemRelativeLayoutInfo(item);
|
|
8216
|
-
const pages2 = new Array(item.numberOfPages).fill(void 0);
|
|
8217
|
-
const pagesAbsolutePositions = pages2.map((_, pageIndex) => {
|
|
8218
|
-
return convertSpinePositionToLayoutPosition({
|
|
8219
|
-
pageSize: this.context.getPageSize(),
|
|
8220
|
-
position: getSpinePositionFromSpineItemPosition({
|
|
8221
|
-
itemLayout,
|
|
8222
|
-
spineItemPosition: getSpineItemPositionFromPageIndex({
|
|
8223
|
-
isUsingVerticalWriting: !!item.isUsingVerticalWriting(),
|
|
8224
|
-
itemLayout,
|
|
8225
|
-
pageIndex,
|
|
8226
|
-
context
|
|
8227
|
-
})
|
|
8228
|
-
})
|
|
8229
|
-
});
|
|
8230
|
-
});
|
|
8231
|
-
const itemPagesInfo = pagesAbsolutePositions.map((absolutePosition, pageIndex) => ({
|
|
8232
|
-
itemIndex,
|
|
8233
|
-
absolutePageIndex: itemIndex + pageIndex,
|
|
8234
|
-
absolutePosition
|
|
8235
|
-
}));
|
|
8236
|
-
return [...acc, ...itemPagesInfo];
|
|
8237
|
-
}, []);
|
|
8238
|
-
return {
|
|
8239
|
-
pages
|
|
8240
|
-
};
|
|
8241
|
-
}),
|
|
8242
8291
|
rxjs.share()
|
|
8243
8292
|
);
|
|
8244
|
-
this.
|
|
8245
|
-
rxjs.tap((layout) => {
|
|
8246
|
-
Report.log(NAMESPACE, `layout:info`, layout);
|
|
8247
|
-
}),
|
|
8248
|
-
rxjs.shareReplay({ refCount: true, bufferSize: 1 })
|
|
8249
|
-
);
|
|
8250
|
-
rxjs.merge(this.layout$, this.info$).pipe(rxjs.takeUntil(this.destroy$)).subscribe();
|
|
8293
|
+
rxjs.merge(this.layout$).pipe(rxjs.takeUntil(this.destroy$)).subscribe();
|
|
8251
8294
|
}
|
|
8252
8295
|
layout() {
|
|
8253
8296
|
this.layoutSubject.next(void 0);
|
|
8254
8297
|
}
|
|
8255
|
-
|
|
8298
|
+
getSpineItemSpineLayoutInfo(spineItemOrIndex) {
|
|
8256
8299
|
const itemIndex = this.spineItemsManager.getSpineItemIndex(spineItemOrIndex) ?? 0;
|
|
8257
|
-
return this.spineItemsRelativeLayouts[itemIndex] || {
|
|
8300
|
+
return this.spineItemsRelativeLayouts[itemIndex] || new SpineItemSpineLayout({
|
|
8258
8301
|
left: 0,
|
|
8259
8302
|
right: 0,
|
|
8260
8303
|
top: 0,
|
|
@@ -8263,7 +8306,7 @@
|
|
|
8263
8306
|
height: 0,
|
|
8264
8307
|
x: 0,
|
|
8265
8308
|
y: 0
|
|
8266
|
-
};
|
|
8309
|
+
});
|
|
8267
8310
|
}
|
|
8268
8311
|
get numberOfPages() {
|
|
8269
8312
|
return this.spineItemsManager.items.reduce((acc, item) => {
|
|
@@ -8863,8 +8906,6 @@
|
|
|
8863
8906
|
},
|
|
8864
8907
|
settings: settingsManager,
|
|
8865
8908
|
element$,
|
|
8866
|
-
layout$: spine.spineLayout.layout$,
|
|
8867
|
-
layoutInfo$: spine.spineLayout.info$,
|
|
8868
8909
|
viewportState$: context.bridgeEvent.viewportState$,
|
|
8869
8910
|
viewportFree$: context.bridgeEvent.viewportFree$,
|
|
8870
8911
|
/**
|
|
@@ -8901,14 +8942,14 @@
|
|
|
8901
8942
|
accessibilityEnhancer(
|
|
8902
8943
|
resourcesEnhancer(
|
|
8903
8944
|
utilsEnhancer(
|
|
8904
|
-
|
|
8905
|
-
|
|
8906
|
-
|
|
8907
|
-
|
|
8908
|
-
|
|
8909
|
-
|
|
8910
|
-
|
|
8911
|
-
|
|
8945
|
+
zoomEnhancer(
|
|
8946
|
+
navigationEnhancer(
|
|
8947
|
+
htmlEnhancer(
|
|
8948
|
+
mediaEnhancer(
|
|
8949
|
+
chromeEnhancer(
|
|
8950
|
+
themeEnhancer(
|
|
8951
|
+
paginationEnhancer(
|
|
8952
|
+
layoutEnhancer(
|
|
8912
8953
|
eventsEnhancer(
|
|
8913
8954
|
// __
|
|
8914
8955
|
createReader
|