@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.
Files changed (45) hide show
  1. package/dist/createReaderWithEnhancer.d.ts +12 -14
  2. package/dist/enhancers/layoutEnhancer/layoutEnhancer.d.ts +7 -1
  3. package/dist/enhancers/layoutEnhancer/layoutInfo.d.ts +25 -0
  4. package/dist/enhancers/loading/loadingEnhancer.d.ts +1 -1
  5. package/dist/enhancers/navigation/resolvers/getNavigationForLeftOrTopPage.d.ts +3 -2
  6. package/dist/enhancers/navigation/resolvers/getNavigationForLeftSinglePage.d.ts +4 -3
  7. package/dist/enhancers/navigation/resolvers/getNavigationForRightOrBottomPage.d.ts +3 -2
  8. package/dist/enhancers/navigation/resolvers/getNavigationForRightSinglePage.d.ts +4 -3
  9. package/dist/enhancers/navigation/resolvers/getSpineItemPositionForLeftPage.d.ts +4 -4
  10. package/dist/enhancers/navigation/resolvers/getSpineItemPositionForRightPage.d.ts +4 -4
  11. package/dist/enhancers/pagination/enhancer.d.ts +2 -1
  12. package/dist/enhancers/pagination/pagination.d.ts +2 -1
  13. package/dist/enhancers/pagination/progression.d.ts +2 -1
  14. package/dist/index.js +253 -212
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.umd.cjs +252 -211
  17. package/dist/index.umd.cjs.map +1 -1
  18. package/dist/navigation/InternalNavigator.d.ts +6 -5
  19. package/dist/navigation/Navigator.d.ts +8 -8
  20. package/dist/navigation/consolidation/consolidateWithPagination.d.ts +2 -2
  21. package/dist/navigation/resolvers/NavigationResolver.d.ts +12 -11
  22. package/dist/navigation/resolvers/getAdjustedPositionForSpread.d.ts +2 -1
  23. package/dist/navigation/resolvers/getAdjustedPositionWithSafeEdge.d.ts +2 -1
  24. package/dist/navigation/resolvers/getNavigationForPosition.d.ts +2 -1
  25. package/dist/navigation/resolvers/getNavigationFromSpineItemPosition.d.ts +2 -2
  26. package/dist/navigation/restoration/restorePosition.d.ts +2 -1
  27. package/dist/navigation/tests/SpineItemsManagerMock.d.ts +1 -1
  28. package/dist/navigation/viewport/ViewportNavigator.d.ts +6 -5
  29. package/dist/reader.d.ts +7 -9
  30. package/dist/spine/SpineLayout.d.ts +5 -6
  31. package/dist/spine/layout/layoutItem.d.ts +2 -2
  32. package/dist/spine/locator/SpineLocator.d.ts +17 -26
  33. package/dist/spine/locator/getItemVisibilityForPosition.d.ts +2 -1
  34. package/dist/spine/locator/getSpineItemFromPosition.d.ts +2 -1
  35. package/dist/spine/locator/getSpinePositionFromSpineItemPageIndex.d.ts +1 -1
  36. package/dist/spine/locator/getSpinePositionFromSpineItemPosition.d.ts +4 -4
  37. package/dist/spine/locator/getVisibleSpineItemsFromPosition.d.ts +2 -1
  38. package/dist/spine/types.d.ts +35 -16
  39. package/dist/spineItem/layout/getSpineItemPagesPosition.d.ts +1 -1
  40. package/dist/spineItem/layout/getSpineItemPositionFromPageIndex.d.ts +2 -2
  41. package/dist/spineItem/locationResolver.d.ts +8 -18
  42. package/dist/spineItem/navigationResolver.d.ts +4 -4
  43. package/dist/spineItem/types.d.ts +9 -10
  44. package/package.json +3 -3
  45. package/dist/spine/layout/convertViewportPositionToLayoutPosition.d.ts +0 -9
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { switchMap, of, fromEvent, take, map, from, takeUntil, Observable, defer, Subject, combineLatest, merge, EMPTY, withLatestFrom, NEVER, tap as tap$1, share, BehaviorSubject, filter, first as first$1, mergeMap, endWith, finalize, catchError, lastValueFrom, scheduled, animationFrameScheduler, distinctUntilChanged as distinctUntilChanged$1, throttleTime, debounceTime as debounceTime$1, startWith as startWith$1, switchScan, forkJoin, shareReplay as shareReplay$1, delay, ReplaySubject, identity, timer, skip as skip$1, exhaustMap, reduce, concatMap } from "rxjs";
1
+ import { switchMap, of, fromEvent, take, map, from, takeUntil, Observable, defer, Subject, combineLatest, merge, EMPTY, withLatestFrom, NEVER, tap as tap$1, share, BehaviorSubject, filter, first as first$1, mergeMap, endWith, finalize, catchError, lastValueFrom, scheduled, animationFrameScheduler, shareReplay as shareReplay$1, distinctUntilChanged as distinctUntilChanged$1, throttleTime, debounceTime as debounceTime$1, startWith as startWith$1, switchScan, forkJoin, delay, ReplaySubject, identity, timer, skip as skip$1, exhaustMap, reduce, concatMap } from "rxjs";
2
2
  import { switchMap as switchMap$1, first, map as map$1, startWith, shareReplay, distinctUntilChanged, tap, pairwise, take as take$1, takeUntil as takeUntil$1, filter as filter$1, debounceTime, skip, mergeMap as mergeMap$1, catchError as catchError$1, withLatestFrom as withLatestFrom$1 } from "rxjs/operators";
3
3
  import { shallowMergeIfDefined, isShallowEqual, getParentPath, parseContentType, detectMimeTypeFromName, arrayEqual } from "@prose-reader/shared";
4
4
  import { isShallowEqual as isShallowEqual2 } from "@prose-reader/shared";
@@ -2141,6 +2141,92 @@ const fixReflowable = (reader) => {
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
+ 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
+ tap$1((layout) => {
2222
+ Report.log(`layout:info`, layout);
2223
+ }),
2224
+ share()
2225
+ );
2226
+ const info$ = layout$.pipe(shareReplay$1({ refCount: true, bufferSize: 1 }));
2227
+ info$.pipe(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 @@ const layoutEnhancer = (next) => (options) => {
2275
2361
  }
2276
2362
  })
2277
2363
  );
2364
+ const { layout$, info$ } = createLayoutInfo(reader);
2278
2365
  merge(
2279
2366
  updateSpineItemClassName$,
2280
2367
  revealItemOnReady$,
@@ -2287,7 +2374,9 @@ const layoutEnhancer = (next) => (options) => {
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 @@ const loadingEnhancer = (next) => (options) => {
2358
2447
  return acc;
2359
2448
  }, {})
2360
2449
  );
2361
- const updateEntriesLayout$ = (entries) => combineLatest([reader.layout$, reader.theme.$.theme$]).pipe(
2450
+ const updateEntriesLayout$ = (entries) => combineLatest([
2451
+ reader.spine.spineLayout.layout$,
2452
+ reader.theme.$.theme$
2453
+ ]).pipe(
2362
2454
  map$1(([, theme]) => ({
2363
2455
  width: reader.context.state.visibleAreaRect.width,
2364
2456
  theme
@@ -2594,6 +2686,13 @@ const handleLinksNavigation = (reader, manualNavigator) => {
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 @@ const getSpineItemPositionForLeftPage = ({
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 @@ const getSpineItemPositionForRightPage = ({
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 @@ const navigationEnhancer = (next) => (options) => {
3158
3257
  }
3159
3258
  };
3160
3259
  };
3161
- const NAMESPACE$6 = `paginationEnhancer`;
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 @@ const consolidate = (item, reader) => {
3214
3313
  const createLocator = (reader) => (resources) => {
3215
3314
  return deferIdle(() => {
3216
3315
  if (!resources.length) return of(resources);
3217
- const consolidate$ = reader.layout$.pipe(
3316
+ const consolidate$ = reader.spine.spineLayout.layout$.pipe(
3218
3317
  debounceTime$1(10),
3219
3318
  startWith$1(null),
3220
3319
  switchScan((acc$) => {
@@ -3309,7 +3408,7 @@ const getTotalProgressFromPercentages = (estimateBeforeThisItem, currentItemWeig
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.getSpineItemRelativeLayoutInfo(currentItem);
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 @@ const getPercentageEstimate = (reader, currentSpineIndex, pageIndex, currentPosi
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
  debounceTime$1(10, animationFrameScheduler),
3377
3476
  withLatestFrom(reader.pagination.state$),
3378
3477
  map(() => {
@@ -3513,7 +3612,7 @@ const trackPaginationInfo = (reader) => {
3513
3612
  );
3514
3613
  return { paginationInfo$, getPaginationInfo: () => currentValue.value };
3515
3614
  };
3516
- Report.namespace(NAMESPACE$6);
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 @@ const getSpineItemPositionFromPageIndex = ({
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 @@ const getSpineItemPositionFromPageIndex = ({
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 @@ const createSpineItemLocator = ({
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 @@ const createSpineItemLocator = ({
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 @@ const createSpineItemLocator = ({
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 @@ const createSpineItemLocator = ({
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 @@ const createSpineItemLocator = ({
5642
5741
  getSpineItemPositionFromNode,
5643
5742
  getSpineItemPositionFromPageIndex: ({
5644
5743
  pageIndex,
5645
- itemLayout,
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 @@ const createNavigationResolver$1 = ({
5673
5771
  const numberOfPages = spineItem.numberOfPages;
5674
5772
  return spineItemLocator.getSpineItemPositionFromPageIndex({
5675
5773
  pageIndex: numberOfPages - 1,
5676
- isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
5677
- itemLayout: spineItem.layout.layoutInfo
5774
+ spineItem
5678
5775
  });
5679
5776
  };
5680
5777
  const getNavigationFromNode = (spineItem, node, offset) => {
@@ -5683,7 +5780,7 @@ const createNavigationResolver$1 = ({
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 @@ const getAdjustedPositionWithSafeEdge = ({
5718
5815
  const lastSpineItem = spineItemsManager.get(
5719
5816
  spineItemsManager.items.length - 1
5720
5817
  );
5721
- const distanceOfLastSpineItem = spineLayout.getSpineItemRelativeLayoutInfo(
5818
+ const distanceOfLastSpineItem = spineLayout.getSpineItemSpineLayoutInfo(
5722
5819
  lastSpineItem || 0
5723
5820
  );
5724
5821
  const maximumYOffset = distanceOfLastSpineItem.bottom - pageSizeHeight;
@@ -5735,6 +5832,66 @@ const getAdjustedPositionWithSafeEdge = ({
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 @@ const getSpinePositionFromSpineItemAnchor = ({
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 @@ const getNavigationFromSpineItemPosition = ({
5851
6008
  visibleAreaRectWidth: context.state.visibleAreaRect.width
5852
6009
  });
5853
6010
  };
5854
- const getNavigationForPosition = ({
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 @@ const createNavigationResolver = ({
5930
6026
  spineItemsManager
5931
6027
  }) || {};
5932
6028
  if (!spineItem) {
5933
- Report.warn(NAMESPACE$5, `unable to detect item id from cfi ${cfi}`);
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 @@ const getScaledDownPosition = ({
6074
6170
  };
6075
6171
  return scaledDownPosition;
6076
6172
  };
6077
- const NAMESPACE$4 = `navigation/ViewportNavigator`;
6078
- const report$3 = Report.namespace(NAMESPACE$4);
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 @@ class Locker {
6281
6377
  }
6282
6378
  }
6283
6379
  const SCROLL_FINISHED_DEBOUNCE_TIMEOUT = 500;
6284
- const NAMESPACE$3 = `navigation/UserNavigator`;
6285
- const report$2 = Report.namespace(NAMESPACE$3);
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 @@ const withSpineItem = ({
6611
6707
  const withSpineItemLayoutInfo = ({ spine }) => (stream) => {
6612
6708
  return stream.pipe(
6613
6709
  switchMap(({ navigation, ...rest }) => {
6614
- const spineItemDimensions = spine.spineLayout.getSpineItemRelativeLayoutInfo(navigation.spineItem);
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$) ?? of(false)).pipe(
6617
6713
  first$1(),
@@ -6664,8 +6760,7 @@ const withSpineItemPosition = ({
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
- isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
6668
- itemLayout: spineItem.layout.layoutInfo
6763
+ spineItem
6669
6764
  });
6670
6765
  return positionInSpineItem;
6671
6766
  }
@@ -6726,7 +6821,7 @@ const restoreNavigationForControlledPageTurnMode = ({
6726
6821
  first$1(),
6727
6822
  map((isReady) => {
6728
6823
  var _a, _b;
6729
- const spineItemAbsolutePosition = spineLayout.getSpineItemRelativeLayoutInfo(spineItem);
6824
+ const spineItemAbsolutePosition = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
6730
6825
  const isPositionWithinSpineItem = spineLocator.isPositionWithinSpineItem(
6731
6826
  navigation.position,
6732
6827
  spineItem
@@ -6758,10 +6853,10 @@ const restoreNavigationForControlledPageTurnMode = ({
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 @@ const restoreNavigationForScrollingPageTurnMode = ({
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.getSpineItemRelativeLayoutInfo(foundSpineItem);
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 @@ const restoreNavigationForScrollingPageTurnMode = ({
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 @@ const restoreNavigationForScrollingPageTurnMode = ({
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 @@ const restoreNavigationForScrollingPageTurnMode = ({
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 @@ const withRestoredPosition = ({
6916
7012
  );
6917
7013
  })
6918
7014
  );
6919
- const NAMESPACE$2 = `navigation/InternalNavigator`;
6920
- const report$1 = Report.namespace(NAMESPACE$2);
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 @@ class InternalNavigator extends DestroyableClass {
6931
7027
  this.isUserLocked$ = isUserLocked$;
6932
7028
  this.navigationSubject = new 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 @@ const createNavigator = ({
7273
7369
  getElement: () => element$.getValue()
7274
7370
  };
7275
7371
  };
7276
- const NAMESPACE$1 = `pagination`;
7277
- const report = Report.namespace(NAMESPACE$1);
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 @@ const getSpineItemFromPosition = ({
7680
7776
  settings
7681
7777
  }) => {
7682
7778
  const spineItem = spineItemsManager.items.find((item) => {
7683
- const { left, right, bottom, top } = spineLayout.getSpineItemRelativeLayoutInfo(item);
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 @@ const getSpinePositionFromSpineItemPosition = ({
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 @@ const getVisibleSpineItemsFromPosition = ({
7718
7814
  }) || spineItemsManager.get(0);
7719
7815
  const spineItemsVisible = spineItemsManager.items.reduce(
7720
7816
  (acc, spineItem) => {
7721
- const itemPosition = spineLayout.getSpineItemRelativeLayoutInfo(spineItem);
7817
+ const itemPosition = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
7722
7818
  const { visible } = getItemVisibilityForPosition({
7723
7819
  itemPosition,
7724
7820
  threshold,
@@ -7754,8 +7850,8 @@ const createSpineLocator = ({
7754
7850
  `getSpineItemPositionFromSpinePosition`,
7755
7851
  10,
7756
7852
  (position, spineItem) => {
7757
- const { left, top } = spineLayout.getSpineItemRelativeLayoutInfo(spineItem);
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 @@ const createSpineLocator = ({
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.getSpineItemRelativeLayoutInfo(spineItem)
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 @@ const createSpineLocator = ({
7806
7902
  const pages = Array.from(Array(numberOfPages)).map((_, index) => {
7807
7903
  const spineItemPosition = spineItemLocator.getSpineItemPositionFromPageIndex({
7808
7904
  pageIndex: index,
7809
- isUsingVerticalWriting: !!spineItem.isUsingVerticalWriting(),
7810
- itemLayout: spineItem.layout.layoutInfo
7905
+ spineItem
7811
7906
  });
7812
7907
  const spinePosition = getSpinePositionFromSpineItemPosition({
7813
7908
  spineItemPosition,
7814
- itemLayout: spineLayout.getSpineItemRelativeLayoutInfo(spineItem)
7909
+ itemLayout: spineLayout.getSpineItemSpineLayoutInfo(spineItem)
7815
7910
  });
7816
7911
  return {
7817
7912
  index,
@@ -7851,22 +7946,22 @@ const createSpineLocator = ({
7851
7946
  };
7852
7947
  };
7853
7948
  const isPositionWithinSpineItem = (position, spineItem) => {
7854
- const { bottom, left, right, top } = spineLayout.getSpineItemRelativeLayoutInfo(spineItem);
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.getSpineItemRelativeLayoutInfo(spineItem);
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.getSpineItemRelativeLayoutInfo(spineItem);
7964
+ const itemLayout = spineLayout.getSpineItemSpineLayoutInfo(spineItem);
7870
7965
  return getSpinePositionFromSpineItemPosition({
7871
7966
  itemLayout,
7872
7967
  spineItemPosition
@@ -8003,21 +8098,6 @@ class SpineItemsObserver extends DestroyableClass {
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 @@ const layoutItem = ({
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 @@ const layoutItem = ({
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 @@ const layoutItem = ({
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 @@ const layoutItem = ({
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 @@ const layoutItem = ({
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 @@ class SpineLayout extends DestroyableClass {
8209
8288
  })
8210
8289
  );
8211
8290
  }),
8212
- 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
  share()
8243
8292
  );
8244
- this.info$ = this.layout$.pipe(
8245
- tap$1((layout) => {
8246
- Report.log(NAMESPACE, `layout:info`, layout);
8247
- }),
8248
- shareReplay$1({ refCount: true, bufferSize: 1 })
8249
- );
8250
- merge(this.layout$, this.info$).pipe(takeUntil(this.destroy$)).subscribe();
8293
+ merge(this.layout$).pipe(takeUntil(this.destroy$)).subscribe();
8251
8294
  }
8252
8295
  layout() {
8253
8296
  this.layoutSubject.next(void 0);
8254
8297
  }
8255
- getSpineItemRelativeLayoutInfo(spineItemOrIndex) {
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 @@ class SpineLayout extends DestroyableClass {
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 @@ const createReader = (inputSettings) => {
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 @@ const createReaderWithEnhancers = (
8901
8942
  accessibilityEnhancer(
8902
8943
  resourcesEnhancer(
8903
8944
  utilsEnhancer(
8904
- layoutEnhancer(
8905
- zoomEnhancer(
8906
- navigationEnhancer(
8907
- htmlEnhancer(
8908
- mediaEnhancer(
8909
- chromeEnhancer(
8910
- themeEnhancer(
8911
- paginationEnhancer(
8945
+ zoomEnhancer(
8946
+ navigationEnhancer(
8947
+ htmlEnhancer(
8948
+ mediaEnhancer(
8949
+ chromeEnhancer(
8950
+ themeEnhancer(
8951
+ paginationEnhancer(
8952
+ layoutEnhancer(
8912
8953
  eventsEnhancer(
8913
8954
  // __
8914
8955
  createReader