@prose-reader/core 1.60.0 → 1.61.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/enhancers/fonts/SettingsManager.d.ts +1 -1
- package/dist/enhancers/layoutEnhancer/SettingsManager.d.ts +1 -1
- package/dist/enhancers/pagination/spine.d.ts +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +995 -361
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +996 -362
- package/dist/index.umd.cjs.map +1 -1
- package/dist/pagination/pagination.d.ts +1 -1
- package/dist/settings/ReaderSettingsManager.d.ts +4 -16
- package/dist/settings/SettingsInterface.d.ts +1 -1
- package/dist/settings/SettingsManager.d.ts +20 -0
- package/dist/settings/SettingsManagerOverload.d.ts +2 -2
- package/dist/spine/cfiLocator.d.ts +3 -3
- package/dist/spine/locationResolver.d.ts +4 -4
- package/dist/spineItem/commonSpineItem.d.ts +1 -1
- package/dist/spineItem/createSpineItem.d.ts +1 -1
- package/dist/spineItem/frameItem/frameItem.d.ts +1 -2
- package/dist/spineItem/frameItem/loader.d.ts +1 -2
- package/dist/spineItem/navigationResolver.d.ts +1 -1
- package/dist/spineItem/prePaginatedSpineItem.d.ts +1 -1
- package/dist/spineItem/reflowableSpineItem.d.ts +1 -1
- package/dist/spineItemManager.d.ts +4 -4
- package/dist/viewportNavigator/manualViewportNavigator.d.ts +2 -2
- package/dist/viewportNavigator/viewportNavigator.d.ts +2 -2
- package/package.json +3 -3
package/dist/index.umd.cjs
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
(function(global, factory) {
|
|
2
2
|
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("rxjs"), require("rxjs/operators"), require("@prose-reader/shared")) : typeof define === "function" && define.amd ? define(["exports", "rxjs", "rxjs/operators", "@prose-reader/shared"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.prose = {}, global.rxjs, global.operators, global.shared));
|
|
3
3
|
})(this, function(exports2, rxjs, operators, shared) {
|
|
4
|
-
"use strict";
|
|
5
|
-
throw TypeError(msg);
|
|
6
|
-
};
|
|
7
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
8
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
9
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
10
|
-
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
11
|
-
|
|
12
|
-
var _context;
|
|
4
|
+
"use strict";
|
|
13
5
|
const chromeEnhancer = (next) => (options) => {
|
|
14
6
|
const reader = next(options);
|
|
15
7
|
reader.context.state$.pipe(rxjs.takeUntil(reader.$.destroy$)).subscribe(({ containerElement }) => {
|
|
@@ -96,8 +88,15 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
96
88
|
class SettingsManagerOverload {
|
|
97
89
|
constructor(initialSettings, settingsManager) {
|
|
98
90
|
this.settingsManager = settingsManager;
|
|
99
|
-
|
|
100
|
-
|
|
91
|
+
const inputSettings = shallowMergeIfDefined(
|
|
92
|
+
this.getDefaultSettings(),
|
|
93
|
+
initialSettings
|
|
94
|
+
);
|
|
95
|
+
this.outputSettings = this.computeOutputSettings(inputSettings);
|
|
96
|
+
this.inputSettings = shallowMergeIfDefined(
|
|
97
|
+
this.getDefaultSettings(),
|
|
98
|
+
initialSettings
|
|
99
|
+
);
|
|
101
100
|
this.outputSettingsUpdateSubject = new rxjs.Subject();
|
|
102
101
|
this.settings$ = rxjs.combineLatest([
|
|
103
102
|
this.settingsManager.settings$,
|
|
@@ -111,18 +110,22 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
111
110
|
_prepareUpdate(settings) {
|
|
112
111
|
const parentInputSettings = this.getCleanedParentInputSettings(settings);
|
|
113
112
|
const parentManagerPreparedUpdate = this.settingsManager._prepareUpdate(parentInputSettings);
|
|
114
|
-
|
|
115
|
-
const outputSettings = this.computeOutputSettings();
|
|
113
|
+
const inputSettings = shallowMergeIfDefined(this.inputSettings, settings);
|
|
114
|
+
const outputSettings = this.computeOutputSettings(inputSettings);
|
|
116
115
|
const hasChanged = this.hasSettingsChanged(outputSettings);
|
|
117
|
-
console.log({ outputSettings, hasChanged, parentManagerPreparedUpdate });
|
|
118
116
|
return {
|
|
119
117
|
hasChanged: hasChanged || parentManagerPreparedUpdate.hasChanged,
|
|
120
118
|
commit: () => {
|
|
119
|
+
this.inputSettings = inputSettings;
|
|
121
120
|
this.outputSettings = outputSettings;
|
|
122
121
|
if (!parentManagerPreparedUpdate.hasChanged && hasChanged) {
|
|
123
122
|
this.outputSettingsUpdateSubject.next(outputSettings);
|
|
124
123
|
}
|
|
125
|
-
parentManagerPreparedUpdate.commit();
|
|
124
|
+
const parentOutputSettings = parentManagerPreparedUpdate.commit();
|
|
125
|
+
return {
|
|
126
|
+
...parentOutputSettings,
|
|
127
|
+
...outputSettings
|
|
128
|
+
};
|
|
126
129
|
}
|
|
127
130
|
};
|
|
128
131
|
}
|
|
@@ -140,9 +143,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
140
143
|
this.outputSettingsUpdateSubject.complete();
|
|
141
144
|
}
|
|
142
145
|
}
|
|
143
|
-
let SettingsManager$
|
|
144
|
-
computeOutputSettings() {
|
|
145
|
-
return
|
|
146
|
+
let SettingsManager$2 = class SettingsManager extends SettingsManagerOverload {
|
|
147
|
+
computeOutputSettings(settings) {
|
|
148
|
+
return settings;
|
|
146
149
|
}
|
|
147
150
|
hasSettingsChanged(newOutputSettings) {
|
|
148
151
|
return !isShallowEqual(this.outputSettings, newOutputSettings);
|
|
@@ -164,7 +167,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
164
167
|
const { fontScale, lineHeight, fontWeight, fontJustification } = options;
|
|
165
168
|
const changes$ = new rxjs.Subject();
|
|
166
169
|
const reader = next(options);
|
|
167
|
-
const settingsManager = new SettingsManager$
|
|
170
|
+
const settingsManager = new SettingsManager$2(
|
|
168
171
|
{
|
|
169
172
|
fontScale,
|
|
170
173
|
lineHeight,
|
|
@@ -217,7 +220,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
217
220
|
return false;
|
|
218
221
|
})
|
|
219
222
|
);
|
|
220
|
-
settingsManager.settings$.pipe(
|
|
223
|
+
settingsManager.settings$.pipe(
|
|
224
|
+
shouldRequireLayout,
|
|
225
|
+
operators.tap(applyChangeToSpineItem),
|
|
226
|
+
rxjs.takeUntil(reader.$.destroy$)
|
|
227
|
+
).subscribe();
|
|
221
228
|
return {
|
|
222
229
|
...reader,
|
|
223
230
|
destroy: () => {
|
|
@@ -258,7 +265,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
258
265
|
(spineItems) => rxjs.merge(
|
|
259
266
|
...spineItems.map(
|
|
260
267
|
(item) => item.$.loaded$.pipe(
|
|
261
|
-
rxjs.switchMap(
|
|
268
|
+
rxjs.switchMap(
|
|
269
|
+
(iframe) => (iframe == null ? void 0 : iframe.contentDocument) ? navigateOnKey(iframe.contentDocument) : rxjs.EMPTY
|
|
270
|
+
)
|
|
262
271
|
)
|
|
263
272
|
)
|
|
264
273
|
)
|
|
@@ -292,14 +301,24 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
292
301
|
);
|
|
293
302
|
const createResetLock$ = (source) => rxjs.scheduled(source, rxjs.animationFrameScheduler).pipe(
|
|
294
303
|
operators.tap(() => {
|
|
295
|
-
iframeOverlayForAnimationsElement == null ? void 0 : iframeOverlayForAnimationsElement.style.setProperty(
|
|
304
|
+
iframeOverlayForAnimationsElement == null ? void 0 : iframeOverlayForAnimationsElement.style.setProperty(
|
|
305
|
+
`visibility`,
|
|
306
|
+
`hidden`
|
|
307
|
+
);
|
|
296
308
|
})
|
|
297
309
|
);
|
|
298
|
-
const viewportFree$ = reader.viewportNavigator.$.state$.pipe(
|
|
299
|
-
|
|
310
|
+
const viewportFree$ = reader.viewportNavigator.$.state$.pipe(
|
|
311
|
+
operators.filter((data) => data === `free`)
|
|
312
|
+
);
|
|
313
|
+
const viewportBusy$ = reader.viewportNavigator.$.state$.pipe(
|
|
314
|
+
operators.filter((data) => data === `busy`)
|
|
315
|
+
);
|
|
300
316
|
const lockAfterViewportBusy$ = viewportBusy$.pipe(
|
|
301
317
|
operators.tap(() => {
|
|
302
|
-
iframeOverlayForAnimationsElement == null ? void 0 : iframeOverlayForAnimationsElement.style.setProperty(
|
|
318
|
+
iframeOverlayForAnimationsElement == null ? void 0 : iframeOverlayForAnimationsElement.style.setProperty(
|
|
319
|
+
`visibility`,
|
|
320
|
+
`visible`
|
|
321
|
+
);
|
|
303
322
|
})
|
|
304
323
|
);
|
|
305
324
|
const resetLockViewportFree$ = createResetLock$(viewportFree$).pipe(operators.take(1));
|
|
@@ -332,34 +351,48 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
332
351
|
});
|
|
333
352
|
};
|
|
334
353
|
const fixReflowable = (reader) => {
|
|
335
|
-
reader.hookManager.register(
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
const
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
354
|
+
reader.hookManager.register(
|
|
355
|
+
`item.onAfterLayout`,
|
|
356
|
+
({ item, blankPagePosition, minimumWidth }) => {
|
|
357
|
+
var _a;
|
|
358
|
+
const spineItem = reader.spineItemManager.get(item.id);
|
|
359
|
+
if (!((spineItem == null ? void 0 : spineItem.item.renditionLayout) === `reflowable`)) return;
|
|
360
|
+
const { viewportDimensions } = (spineItem == null ? void 0 : spineItem.getViewPortInformation()) ?? {};
|
|
361
|
+
const { width: pageWidth } = reader.context.getPageSize();
|
|
362
|
+
const frameElement = (_a = spineItem == null ? void 0 : spineItem.spineItemFrame.getManipulableFrame()) == null ? void 0 : _a.frame;
|
|
363
|
+
if (viewportDimensions) {
|
|
364
|
+
const spineManagerWantAFullWidthItem = pageWidth < minimumWidth;
|
|
365
|
+
const noBlankPageAsked = blankPagePosition === `none`;
|
|
366
|
+
if (noBlankPageAsked && spineManagerWantAFullWidthItem) {
|
|
367
|
+
frameElement == null ? void 0 : frameElement.style.setProperty(
|
|
368
|
+
`left`,
|
|
369
|
+
reader.context.isRTL() ? `75%` : `25%`
|
|
370
|
+
);
|
|
371
|
+
}
|
|
347
372
|
}
|
|
348
373
|
}
|
|
349
|
-
|
|
374
|
+
);
|
|
350
375
|
};
|
|
351
376
|
function isDefined(arg) {
|
|
352
377
|
return arg !== null && arg !== void 0;
|
|
353
378
|
}
|
|
354
|
-
class SettingsManager extends SettingsManagerOverload {
|
|
355
|
-
computeOutputSettings() {
|
|
356
|
-
return
|
|
379
|
+
let SettingsManager$1 = class SettingsManager extends SettingsManagerOverload {
|
|
380
|
+
computeOutputSettings(inputSettings) {
|
|
381
|
+
return inputSettings;
|
|
357
382
|
}
|
|
358
383
|
hasSettingsChanged(newOutputSettings) {
|
|
359
384
|
return !isShallowEqual(this.outputSettings, newOutputSettings);
|
|
360
385
|
}
|
|
361
386
|
getCleanedParentInputSettings(settings) {
|
|
362
|
-
const {
|
|
387
|
+
const {
|
|
388
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
389
|
+
layoutAutoResize,
|
|
390
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
391
|
+
pageHorizontalMargin,
|
|
392
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
393
|
+
pageVerticalMargin,
|
|
394
|
+
...rest
|
|
395
|
+
} = settings;
|
|
363
396
|
return rest;
|
|
364
397
|
}
|
|
365
398
|
getDefaultSettings() {
|
|
@@ -369,12 +402,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
369
402
|
pageVerticalMargin: 24
|
|
370
403
|
};
|
|
371
404
|
}
|
|
372
|
-
}
|
|
405
|
+
};
|
|
373
406
|
const SHOULD_NOT_LAYOUT = false;
|
|
374
407
|
const layoutEnhancer = (next) => (options) => {
|
|
375
408
|
const { pageHorizontalMargin, pageVerticalMargin, layoutAutoResize } = options;
|
|
376
409
|
const reader = next(options);
|
|
377
|
-
const settingsManager = new SettingsManager(
|
|
410
|
+
const settingsManager = new SettingsManager$1(
|
|
378
411
|
{
|
|
379
412
|
pageHorizontalMargin,
|
|
380
413
|
pageVerticalMargin,
|
|
@@ -392,24 +425,26 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
392
425
|
return SHOULD_NOT_LAYOUT;
|
|
393
426
|
});
|
|
394
427
|
});
|
|
395
|
-
reader.hookManager.register(
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
`prose-layout-enhancer-css
|
|
412
|
-
|
|
428
|
+
reader.hookManager.register(
|
|
429
|
+
`item.onLayoutBeforeMeasurement`,
|
|
430
|
+
({ frame, minimumWidth, item, isImageType }) => {
|
|
431
|
+
var _a, _b;
|
|
432
|
+
const { pageHorizontalMargin: pageHorizontalMargin2 = 0, pageVerticalMargin: pageVerticalMargin2 = 0 } = settingsManager.settings;
|
|
433
|
+
const pageSize = reader.context.getPageSize();
|
|
434
|
+
if (item.renditionLayout === `reflowable` && frame.getIsReady() && !isImageType() && !frame.getViewportDimensions()) {
|
|
435
|
+
let columnWidth = pageSize.width - pageHorizontalMargin2 * 2;
|
|
436
|
+
const columnHeight = pageSize.height - pageVerticalMargin2 * 2;
|
|
437
|
+
let width = pageSize.width - pageHorizontalMargin2 * 2;
|
|
438
|
+
let columnGap = pageHorizontalMargin2 * 2;
|
|
439
|
+
if (frame.isUsingVerticalWriting()) {
|
|
440
|
+
width = minimumWidth - pageHorizontalMargin2 * 2;
|
|
441
|
+
columnWidth = columnHeight;
|
|
442
|
+
columnGap = pageVerticalMargin2 * 2;
|
|
443
|
+
}
|
|
444
|
+
(_a = frame.getManipulableFrame()) == null ? void 0 : _a.removeStyle(`prose-layout-enhancer-css`);
|
|
445
|
+
(_b = frame.getManipulableFrame()) == null ? void 0 : _b.addStyle(
|
|
446
|
+
`prose-layout-enhancer-css`,
|
|
447
|
+
`
|
|
413
448
|
body {
|
|
414
449
|
width: ${width}px !important;
|
|
415
450
|
margin: ${pageVerticalMargin2}px ${pageHorizontalMargin2}px !important;
|
|
@@ -428,9 +463,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
428
463
|
max-width: ${columnWidth}px;
|
|
429
464
|
}
|
|
430
465
|
`
|
|
431
|
-
|
|
466
|
+
);
|
|
467
|
+
}
|
|
432
468
|
}
|
|
433
|
-
|
|
469
|
+
);
|
|
434
470
|
fixReflowable(reader);
|
|
435
471
|
let observer;
|
|
436
472
|
if (options.layoutAutoResize === `container`) {
|
|
@@ -481,7 +517,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
481
517
|
return () => {
|
|
482
518
|
tick++;
|
|
483
519
|
const t1 = performance.now();
|
|
484
|
-
Report.logMetric(
|
|
520
|
+
Report.logMetric(
|
|
521
|
+
{ name: `${name} - tick ${tick}`, duration: t1 - t0 },
|
|
522
|
+
targetDuration
|
|
523
|
+
);
|
|
485
524
|
};
|
|
486
525
|
};
|
|
487
526
|
const createReport = (namespace) => ({
|
|
@@ -497,7 +536,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
497
536
|
warn: (...data) => {
|
|
498
537
|
var _a;
|
|
499
538
|
if ((_a = getWindow()) == null ? void 0 : _a.__PROSE_READER_DEBUG) {
|
|
500
|
-
if (namespace)
|
|
539
|
+
if (namespace)
|
|
540
|
+
console.warn(wrap(ROOT_NAMESPACE), wrap(namespace), ...data);
|
|
501
541
|
else console.warn(wrap(ROOT_NAMESPACE), ...data);
|
|
502
542
|
}
|
|
503
543
|
},
|
|
@@ -562,7 +602,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
562
602
|
if (!element.href) return false;
|
|
563
603
|
const hrefUrl = new URL(element.href);
|
|
564
604
|
const hrefWithoutAnchor = `${hrefUrl.origin}${hrefUrl.pathname}`;
|
|
565
|
-
const hasExistingSpineItem = (_a = reader.context.manifest) == null ? void 0 : _a.spineItems.some(
|
|
605
|
+
const hasExistingSpineItem = (_a = reader.context.manifest) == null ? void 0 : _a.spineItems.some(
|
|
606
|
+
(item) => item.href === hrefWithoutAnchor
|
|
607
|
+
);
|
|
566
608
|
if (hasExistingSpineItem) {
|
|
567
609
|
reader.viewportNavigator.goToUrl(hrefUrl);
|
|
568
610
|
return true;
|
|
@@ -577,7 +619,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
577
619
|
Report.warn(`prevented click on`, element, e);
|
|
578
620
|
e.preventDefault();
|
|
579
621
|
const isNavigable = handleNavigationForClick(element);
|
|
580
|
-
subject.next({
|
|
622
|
+
subject.next({
|
|
623
|
+
event: `linkClicked`,
|
|
624
|
+
data: element,
|
|
625
|
+
isNavigable
|
|
626
|
+
});
|
|
581
627
|
}
|
|
582
628
|
})
|
|
583
629
|
);
|
|
@@ -618,14 +664,16 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
618
664
|
goToNextSpineItem,
|
|
619
665
|
goToPreviousSpineItem,
|
|
620
666
|
goToLeftSpineItem: () => {
|
|
621
|
-
if (reader.settings.settings.computedPageTurnDirection === "vertical")
|
|
667
|
+
if (reader.settings.settings.computedPageTurnDirection === "vertical")
|
|
668
|
+
return;
|
|
622
669
|
if (reader.context.isRTL()) {
|
|
623
670
|
return goToNextSpineItem();
|
|
624
671
|
}
|
|
625
672
|
return goToPreviousSpineItem();
|
|
626
673
|
},
|
|
627
674
|
goToRightSpineItem: () => {
|
|
628
|
-
if (reader.settings.settings.computedPageTurnDirection === "vertical")
|
|
675
|
+
if (reader.settings.settings.computedPageTurnDirection === "vertical")
|
|
676
|
+
return;
|
|
629
677
|
if (reader.context.isRTL()) {
|
|
630
678
|
return goToPreviousSpineItem();
|
|
631
679
|
}
|
|
@@ -663,17 +711,24 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
663
711
|
};
|
|
664
712
|
};
|
|
665
713
|
const buildChaptersInfo = (href, tocItem, manifest) => {
|
|
666
|
-
const spineItemIndex = manifest.spineItems.findIndex(
|
|
714
|
+
const spineItemIndex = manifest.spineItems.findIndex(
|
|
715
|
+
(item) => item.href === href
|
|
716
|
+
);
|
|
667
717
|
return tocItem.reduce((acc, tocItem2) => {
|
|
668
718
|
const indexOfHash = tocItem2.href.indexOf(`#`);
|
|
669
719
|
const tocItemPathWithoutAnchor = indexOfHash > 0 ? tocItem2.href.substr(0, indexOfHash) : tocItem2.href;
|
|
670
|
-
const tocItemHrefWithoutFilename = tocItemPathWithoutAnchor.substring(
|
|
720
|
+
const tocItemHrefWithoutFilename = tocItemPathWithoutAnchor.substring(
|
|
721
|
+
0,
|
|
722
|
+
tocItemPathWithoutAnchor.lastIndexOf("/")
|
|
723
|
+
);
|
|
671
724
|
const hrefWithoutFilename = href.substring(0, href.lastIndexOf("/"));
|
|
672
725
|
const hrefIsChapterHref = href.endsWith(tocItemPathWithoutAnchor);
|
|
673
726
|
const hrefIsWithinChapter = hrefWithoutFilename !== "" && hrefWithoutFilename.endsWith(tocItemHrefWithoutFilename);
|
|
674
727
|
const isPossibleTocItemCandidate = hrefIsChapterHref || hrefIsWithinChapter;
|
|
675
728
|
if (isPossibleTocItemCandidate) {
|
|
676
|
-
const spineItemIndexOfPossibleCandidate = manifest.spineItems.findIndex(
|
|
729
|
+
const spineItemIndexOfPossibleCandidate = manifest.spineItems.findIndex(
|
|
730
|
+
(item) => item.href === tocItem2.href
|
|
731
|
+
);
|
|
677
732
|
const spineItemIsBeforeThisTocItem = spineItemIndex < spineItemIndexOfPossibleCandidate;
|
|
678
733
|
if (spineItemIsBeforeThisTocItem) return acc;
|
|
679
734
|
const info = {
|
|
@@ -718,7 +773,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
718
773
|
);
|
|
719
774
|
};
|
|
720
775
|
const NAMESPACE$6 = `pagination`;
|
|
721
|
-
const createPagination = ({
|
|
776
|
+
const createPagination = ({
|
|
777
|
+
context
|
|
778
|
+
}) => {
|
|
722
779
|
const paginationSubject$ = new rxjs.BehaviorSubject({
|
|
723
780
|
beginPageIndexInSpineItem: void 0,
|
|
724
781
|
beginNumberOfPagesInSpineItem: 0,
|
|
@@ -771,7 +828,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
771
828
|
const getPaginationInfo = () => paginationSubject$.value;
|
|
772
829
|
const paginationInfo$ = paginationSubject$.pipe(
|
|
773
830
|
rxjs.distinctUntilChanged(isShallowEqual),
|
|
774
|
-
rxjs.filter(
|
|
831
|
+
rxjs.filter(
|
|
832
|
+
({ beginPageIndexInSpineItem }) => beginPageIndexInSpineItem !== void 0
|
|
833
|
+
)
|
|
775
834
|
);
|
|
776
835
|
const destroy = () => {
|
|
777
836
|
paginationSubject$.complete();
|
|
@@ -795,10 +854,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
795
854
|
const getClosestValidOffsetFromApproximateOffsetInPages = (offset, pageWidth, itemWidth) => {
|
|
796
855
|
const numberOfPages = calculateNumberOfPagesForItem(itemWidth, pageWidth);
|
|
797
856
|
const offsetValues = [...Array(numberOfPages)].map((_, i) => i * pageWidth);
|
|
798
|
-
if (offset >= numberOfPages * pageWidth)
|
|
857
|
+
if (offset >= numberOfPages * pageWidth)
|
|
858
|
+
return offsetValues[offsetValues.length - 1] || 0;
|
|
799
859
|
return offsetValues.find((offsetRange) => offset < offsetRange + pageWidth) || 0;
|
|
800
860
|
};
|
|
801
|
-
const getSpineItemNumberOfPages = ({
|
|
861
|
+
const getSpineItemNumberOfPages = ({
|
|
862
|
+
spineItem,
|
|
863
|
+
reader
|
|
864
|
+
}) => {
|
|
802
865
|
const writingMode = spineItem.spineItemFrame.getWritingMode();
|
|
803
866
|
const { width, height } = spineItem.getElementDimensions();
|
|
804
867
|
const settings = reader.settings.settings;
|
|
@@ -806,9 +869,15 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
806
869
|
return 1;
|
|
807
870
|
}
|
|
808
871
|
if (writingMode === `vertical-rl`) {
|
|
809
|
-
return calculateNumberOfPagesForItem(
|
|
872
|
+
return calculateNumberOfPagesForItem(
|
|
873
|
+
height,
|
|
874
|
+
reader.context.getPageSize().height
|
|
875
|
+
);
|
|
810
876
|
}
|
|
811
|
-
return calculateNumberOfPagesForItem(
|
|
877
|
+
return calculateNumberOfPagesForItem(
|
|
878
|
+
width,
|
|
879
|
+
reader.context.getPageSize().width
|
|
880
|
+
);
|
|
812
881
|
};
|
|
813
882
|
const getNumberOfPagesForAllSpineItems = (reader) => reader.spineItemManager.getAll().map((item) => {
|
|
814
883
|
return getSpineItemNumberOfPages({ spineItem: item, reader });
|
|
@@ -824,7 +893,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
824
893
|
/**
|
|
825
894
|
* This may be not accurate for reflowable due to dynamic load / unload.
|
|
826
895
|
*/
|
|
827
|
-
numberOfTotalPages: numberOfPagesPerItems.reduce(
|
|
896
|
+
numberOfTotalPages: numberOfPagesPerItems.reduce(
|
|
897
|
+
(acc, numberOfPagesForItem) => acc + numberOfPagesForItem,
|
|
898
|
+
0
|
|
899
|
+
)
|
|
828
900
|
};
|
|
829
901
|
}),
|
|
830
902
|
rxjs.distinctUntilChanged(isShallowEqual),
|
|
@@ -881,7 +953,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
881
953
|
const totalPages$ = trackTotalPages(reader);
|
|
882
954
|
const currentValue = new rxjs.BehaviorSubject({
|
|
883
955
|
...reader.pagination.getPaginationInfo(),
|
|
884
|
-
...mapPaginationInfoToExtendedInfo(reader)(
|
|
956
|
+
...mapPaginationInfoToExtendedInfo(reader)(
|
|
957
|
+
reader.pagination.getPaginationInfo(),
|
|
958
|
+
getChaptersInfo(reader)
|
|
959
|
+
),
|
|
885
960
|
beginAbsolutePageIndex: 0,
|
|
886
961
|
endAbsolutePageIndex: 0,
|
|
887
962
|
numberOfTotalPages: 0
|
|
@@ -901,8 +976,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
901
976
|
rxjs.map(([pageInfo, totalPageInfo]) => ({
|
|
902
977
|
...pageInfo,
|
|
903
978
|
...totalPageInfo,
|
|
904
|
-
beginAbsolutePageIndex: totalPageInfo.numberOfPagesPerItems.slice(0, pageInfo.beginSpineItemIndex).reduce(
|
|
905
|
-
|
|
979
|
+
beginAbsolutePageIndex: totalPageInfo.numberOfPagesPerItems.slice(0, pageInfo.beginSpineItemIndex).reduce(
|
|
980
|
+
(acc, numberOfPagesForItem) => acc + numberOfPagesForItem,
|
|
981
|
+
pageInfo.beginPageIndexInSpineItem ?? 0
|
|
982
|
+
),
|
|
983
|
+
endAbsolutePageIndex: totalPageInfo.numberOfPagesPerItems.slice(0, pageInfo.endSpineItemIndex).reduce(
|
|
984
|
+
(acc, numberOfPagesForItem) => acc + numberOfPagesForItem,
|
|
985
|
+
pageInfo.endPageIndexInSpineItem ?? 0
|
|
986
|
+
)
|
|
906
987
|
})),
|
|
907
988
|
rxjs.tap((value) => {
|
|
908
989
|
currentValue.next(value);
|
|
@@ -944,9 +1025,13 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
944
1025
|
];
|
|
945
1026
|
const themeEnhancer = (next) => (options) => {
|
|
946
1027
|
const reader = next(options);
|
|
947
|
-
const currentThemeSubject$ = new rxjs.BehaviorSubject(
|
|
1028
|
+
const currentThemeSubject$ = new rxjs.BehaviorSubject(
|
|
1029
|
+
options.theme ?? `bright`
|
|
1030
|
+
);
|
|
948
1031
|
const getStyle = () => {
|
|
949
|
-
const foundTheme = defaultThemes.find(
|
|
1032
|
+
const foundTheme = defaultThemes.find(
|
|
1033
|
+
(entry) => entry.name === currentThemeSubject$.value
|
|
1034
|
+
);
|
|
950
1035
|
return `
|
|
951
1036
|
body {
|
|
952
1037
|
${foundTheme !== void 0 ? `background-color: ${foundTheme.backgroundColor} !important;` : ``}
|
|
@@ -963,21 +1048,30 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
963
1048
|
` : ``}
|
|
964
1049
|
`;
|
|
965
1050
|
};
|
|
966
|
-
const applyChangeToSpineItemElement = ({
|
|
967
|
-
|
|
1051
|
+
const applyChangeToSpineItemElement = ({
|
|
1052
|
+
container
|
|
1053
|
+
}) => {
|
|
1054
|
+
const foundTheme = defaultThemes.find(
|
|
1055
|
+
(entry) => entry.name === currentThemeSubject$.value
|
|
1056
|
+
);
|
|
968
1057
|
if (foundTheme) {
|
|
969
|
-
container.style.setProperty(
|
|
1058
|
+
container.style.setProperty(
|
|
1059
|
+
`background-color`,
|
|
1060
|
+
foundTheme.backgroundColor
|
|
1061
|
+
);
|
|
970
1062
|
}
|
|
971
1063
|
return () => {
|
|
972
1064
|
};
|
|
973
1065
|
};
|
|
974
1066
|
const applyChangeToSpineItem = () => {
|
|
975
|
-
reader.spine.manipulateSpineItems(
|
|
976
|
-
removeStyle
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
1067
|
+
reader.spine.manipulateSpineItems(
|
|
1068
|
+
({ removeStyle, addStyle, container }) => {
|
|
1069
|
+
removeStyle(`prose-reader-theme`);
|
|
1070
|
+
addStyle(`prose-reader-theme`, getStyle());
|
|
1071
|
+
applyChangeToSpineItemElement({ container });
|
|
1072
|
+
return false;
|
|
1073
|
+
}
|
|
1074
|
+
);
|
|
981
1075
|
};
|
|
982
1076
|
reader.hookManager.register(`item.onLoad`, ({ itemId }) => {
|
|
983
1077
|
const item = reader.spineItemManager.get(itemId);
|
|
@@ -988,7 +1082,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
988
1082
|
});
|
|
989
1083
|
});
|
|
990
1084
|
reader.spine.$.spineItems$.pipe(
|
|
991
|
-
operators.tap(
|
|
1085
|
+
operators.tap(
|
|
1086
|
+
(items) => items.map(
|
|
1087
|
+
({ element }) => applyChangeToSpineItemElement({ container: element })
|
|
1088
|
+
)
|
|
1089
|
+
),
|
|
992
1090
|
operators.takeUntil(reader.$.destroy$)
|
|
993
1091
|
).subscribe();
|
|
994
1092
|
currentThemeSubject$.pipe(
|
|
@@ -1055,7 +1153,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1055
1153
|
};
|
|
1056
1154
|
const scale = (userScale) => {
|
|
1057
1155
|
const imgElement = imageMagnifierContainer == null ? void 0 : imageMagnifierContainer.querySelector(`img`);
|
|
1058
|
-
const roundedScale = Math.ceil(
|
|
1156
|
+
const roundedScale = Math.ceil(
|
|
1157
|
+
(userScale < 1 ? baseScale - (1 - userScale) : baseScale + (userScale - 1)) * 100
|
|
1158
|
+
) / 100;
|
|
1059
1159
|
const newScale = Math.max(roundedScale, 1);
|
|
1060
1160
|
if (roundedScale < 1) {
|
|
1061
1161
|
imgLastPosition = { x: 0, y: 0 };
|
|
@@ -1151,7 +1251,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1151
1251
|
const spineElement = reader.spine.getElement();
|
|
1152
1252
|
const viewportElement = reader.viewportNavigator.getElement();
|
|
1153
1253
|
if (!spineElement || !viewportElement) return;
|
|
1154
|
-
const roundedScale = Math.ceil(
|
|
1254
|
+
const roundedScale = Math.ceil(
|
|
1255
|
+
(userScale < 1 ? baseScale - (1 - userScale) : baseScale + (userScale - 1)) * 100
|
|
1256
|
+
) / 100;
|
|
1155
1257
|
const newScale = Math.max(roundedScale, 1);
|
|
1156
1258
|
const currentScale = spineElement.getBoundingClientRect().width / spineElement.offsetWidth;
|
|
1157
1259
|
const currentScrollTop = viewportElement.scrollTop;
|
|
@@ -1260,7 +1362,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1260
1362
|
isUsingScrollableZoom: isUsingScrollableViewport,
|
|
1261
1363
|
setCurrentScaleAsBase,
|
|
1262
1364
|
$: {
|
|
1263
|
-
isZooming$: currentZoomerSubject$.pipe(
|
|
1365
|
+
isZooming$: currentZoomerSubject$.pipe(
|
|
1366
|
+
rxjs.switchMap((zoomer) => (zoomer == null ? void 0 : zoomer.isZooming$) || rxjs.of(false))
|
|
1367
|
+
)
|
|
1264
1368
|
}
|
|
1265
1369
|
}
|
|
1266
1370
|
};
|
|
@@ -1407,15 +1511,21 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1407
1511
|
return event[__UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY];
|
|
1408
1512
|
};
|
|
1409
1513
|
const attachOriginalFrameEventToDocumentEvent = (event, frameEvent) => {
|
|
1410
|
-
Object.defineProperty(event, __UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY, {
|
|
1514
|
+
Object.defineProperty(event, __UNSAFE_REFERENCE_ORIGINAL_IFRAME_EVENT_KEY, {
|
|
1515
|
+
value: frameEvent,
|
|
1516
|
+
enumerable: true
|
|
1517
|
+
});
|
|
1411
1518
|
};
|
|
1412
|
-
const createFrame$ = Report.measurePerformance(
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1519
|
+
const createFrame$ = Report.measurePerformance(
|
|
1520
|
+
`SpineItemFrame createFrame`,
|
|
1521
|
+
Infinity,
|
|
1522
|
+
() => {
|
|
1523
|
+
const frame = document.createElement(`iframe`);
|
|
1524
|
+
frame.frameBorder = `no`;
|
|
1525
|
+
frame.tabIndex = 0;
|
|
1526
|
+
frame.setAttribute(`sandbox`, `allow-same-origin allow-scripts`);
|
|
1527
|
+
frame.scrolling = `no`;
|
|
1528
|
+
frame.style.cssText = `
|
|
1419
1529
|
visibility: hidden;
|
|
1420
1530
|
overflow: hidden;
|
|
1421
1531
|
background-color: transparent;
|
|
@@ -1424,8 +1534,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1424
1534
|
transition: opacity 300ms;
|
|
1425
1535
|
opacity: 0;
|
|
1426
1536
|
`;
|
|
1427
|
-
|
|
1428
|
-
|
|
1537
|
+
return rxjs.of(frame);
|
|
1538
|
+
}
|
|
1539
|
+
);
|
|
1429
1540
|
const getIntrinsicDimensionsFromBase64Img = (data) => new Promise((resolve, reject) => {
|
|
1430
1541
|
const image = new Image();
|
|
1431
1542
|
image.src = data;
|
|
@@ -1437,7 +1548,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1437
1548
|
const createHtmlPageFromResource = async (resourceResponse, item) => {
|
|
1438
1549
|
if (typeof resourceResponse === `string`) return resourceResponse;
|
|
1439
1550
|
const contentType = shared.parseContentType(resourceResponse.headers.get(`Content-Type`) || ``) || shared.detectMimeTypeFromName(item.href);
|
|
1440
|
-
if ([`image/jpg`, `image/jpeg`, `image/png`, `image/webp`].some(
|
|
1551
|
+
if ([`image/jpg`, `image/jpeg`, `image/png`, `image/webp`].some(
|
|
1552
|
+
(mime) => mime === contentType
|
|
1553
|
+
)) {
|
|
1441
1554
|
const data = await getBase64FromBlob(await resourceResponse.blob());
|
|
1442
1555
|
const { height, width } = await getIntrinsicDimensionsFromBase64Img(data);
|
|
1443
1556
|
return `
|
|
@@ -1480,7 +1593,6 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1480
1593
|
const createLoader = ({
|
|
1481
1594
|
item,
|
|
1482
1595
|
parent,
|
|
1483
|
-
fetchResource,
|
|
1484
1596
|
context,
|
|
1485
1597
|
viewportState$,
|
|
1486
1598
|
settings,
|
|
@@ -1525,9 +1637,17 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1525
1637
|
operators.mergeMap((frame) => {
|
|
1526
1638
|
parent.appendChild(frame);
|
|
1527
1639
|
frameElementSubject$.next(frame);
|
|
1640
|
+
const { fetchResource } = settings.settings;
|
|
1528
1641
|
if (!fetchResource && item.href.startsWith(window.location.origin) && // we have an encoding and it's a valid html
|
|
1529
|
-
(item.mediaType && [
|
|
1530
|
-
|
|
1642
|
+
(item.mediaType && [
|
|
1643
|
+
`application/xhtml+xml`,
|
|
1644
|
+
`application/xml`,
|
|
1645
|
+
`text/html`,
|
|
1646
|
+
`text/xml`
|
|
1647
|
+
].includes(item.mediaType) || // no encoding ? then try to detect html
|
|
1648
|
+
!item.mediaType && ITEM_EXTENSION_VALID_FOR_FRAME_SRC.some(
|
|
1649
|
+
(extension) => item.href.endsWith(extension)
|
|
1650
|
+
))) {
|
|
1531
1651
|
frame == null ? void 0 : frame.setAttribute(`src`, item.href);
|
|
1532
1652
|
return rxjs.of(frame);
|
|
1533
1653
|
} else {
|
|
@@ -1541,7 +1661,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1541
1661
|
}),
|
|
1542
1662
|
operators.map(() => frame),
|
|
1543
1663
|
operators.catchError((e) => {
|
|
1544
|
-
Report.error(
|
|
1664
|
+
Report.error(
|
|
1665
|
+
`Error while trying to fetch or load resource for item ${item.id}`
|
|
1666
|
+
);
|
|
1545
1667
|
console.error(e);
|
|
1546
1668
|
return rxjs.of(frame);
|
|
1547
1669
|
})
|
|
@@ -1569,8 +1691,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1569
1691
|
const hookResults = hookManager.execute(`item.onLoad`, item.id, {
|
|
1570
1692
|
itemId: item.id,
|
|
1571
1693
|
frame
|
|
1572
|
-
}).filter(
|
|
1573
|
-
|
|
1694
|
+
}).filter(
|
|
1695
|
+
(result) => result instanceof rxjs.Observable
|
|
1696
|
+
);
|
|
1697
|
+
return rxjs.combineLatest([rxjs.of(null), ...hookResults]).pipe(
|
|
1698
|
+
operators.map(() => frame)
|
|
1699
|
+
);
|
|
1574
1700
|
})
|
|
1575
1701
|
);
|
|
1576
1702
|
}),
|
|
@@ -1583,10 +1709,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1583
1709
|
operators.takeUntil(destroySubject$)
|
|
1584
1710
|
);
|
|
1585
1711
|
const ready$ = load$.pipe(
|
|
1586
|
-
operators.switchMap(
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1712
|
+
operators.switchMap(
|
|
1713
|
+
(frame) => {
|
|
1714
|
+
var _a;
|
|
1715
|
+
return rxjs.from(((_a = frame == null ? void 0 : frame.contentDocument) == null ? void 0 : _a.fonts.ready) || rxjs.of(void 0)).pipe(
|
|
1716
|
+
operators.takeUntil(unloadSubject$)
|
|
1717
|
+
);
|
|
1718
|
+
}
|
|
1719
|
+
),
|
|
1590
1720
|
operators.share(),
|
|
1591
1721
|
makeItHot,
|
|
1592
1722
|
operators.takeUntil(destroySubject$)
|
|
@@ -1627,7 +1757,6 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1627
1757
|
const createFrameItem = ({
|
|
1628
1758
|
item,
|
|
1629
1759
|
parent,
|
|
1630
|
-
fetchResource,
|
|
1631
1760
|
context,
|
|
1632
1761
|
viewportState$,
|
|
1633
1762
|
settings,
|
|
@@ -1635,12 +1764,27 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1635
1764
|
}) => {
|
|
1636
1765
|
const destroySubject$ = new rxjs.Subject();
|
|
1637
1766
|
const {
|
|
1638
|
-
$: {
|
|
1767
|
+
$: {
|
|
1768
|
+
unload$,
|
|
1769
|
+
loaded$,
|
|
1770
|
+
isLoaded$,
|
|
1771
|
+
isReady$,
|
|
1772
|
+
unloaded$,
|
|
1773
|
+
frameElement$,
|
|
1774
|
+
ready$
|
|
1775
|
+
},
|
|
1639
1776
|
load,
|
|
1640
1777
|
unload,
|
|
1641
1778
|
destroy: loaderDestroy,
|
|
1642
1779
|
getComputedStyleAfterLoad
|
|
1643
|
-
} = createLoader({
|
|
1780
|
+
} = createLoader({
|
|
1781
|
+
context,
|
|
1782
|
+
hookManager,
|
|
1783
|
+
item,
|
|
1784
|
+
parent,
|
|
1785
|
+
viewportState$,
|
|
1786
|
+
settings
|
|
1787
|
+
});
|
|
1644
1788
|
let isLoadedSync = false;
|
|
1645
1789
|
let isReadySync = false;
|
|
1646
1790
|
isLoaded$.subscribe({
|
|
@@ -1668,7 +1812,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1668
1812
|
const viewPortMetaInfos = viewPortMeta.getAttribute(`content`);
|
|
1669
1813
|
if (viewPortMetaInfos) {
|
|
1670
1814
|
const width = getAttributeValueFromString(viewPortMetaInfos, `width`);
|
|
1671
|
-
const height = getAttributeValueFromString(
|
|
1815
|
+
const height = getAttributeValueFromString(
|
|
1816
|
+
viewPortMetaInfos,
|
|
1817
|
+
`height`
|
|
1818
|
+
);
|
|
1672
1819
|
if (width > 0 && height > 0) {
|
|
1673
1820
|
return {
|
|
1674
1821
|
width,
|
|
@@ -1743,7 +1890,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1743
1890
|
return `rtl`;
|
|
1744
1891
|
}
|
|
1745
1892
|
const direction = (_a = getComputedStyleAfterLoad()) == null ? void 0 : _a.direction;
|
|
1746
|
-
if ([`ltr`, `rtl`].includes(direction || ``))
|
|
1893
|
+
if ([`ltr`, `rtl`].includes(direction || ``))
|
|
1894
|
+
return direction;
|
|
1747
1895
|
return void 0;
|
|
1748
1896
|
},
|
|
1749
1897
|
isUsingVerticalWriting,
|
|
@@ -1815,7 +1963,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1815
1963
|
});
|
|
1816
1964
|
(_a = frameToTrack.contentDocument) == null ? void 0 : _a.addEventListener(`selectionchange`, () => {
|
|
1817
1965
|
var _a2;
|
|
1818
|
-
subject.next({
|
|
1966
|
+
subject.next({
|
|
1967
|
+
event: `selectionchange`,
|
|
1968
|
+
data: ((_a2 = frame == null ? void 0 : frame.contentWindow) == null ? void 0 : _a2.getSelection()) || null
|
|
1969
|
+
});
|
|
1819
1970
|
});
|
|
1820
1971
|
(_b = frameToTrack.contentWindow) == null ? void 0 : _b.addEventListener(`selectstart`, () => {
|
|
1821
1972
|
isSelecting = true;
|
|
@@ -1830,7 +1981,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1830
1981
|
getSelection: () => {
|
|
1831
1982
|
var _a;
|
|
1832
1983
|
const selection = (_a = frame == null ? void 0 : frame.contentWindow) == null ? void 0 : _a.getSelection();
|
|
1833
|
-
if (!(selection == null ? void 0 : selection.anchorNode) || selection.type === `None` || selection.type === `Caret`)
|
|
1984
|
+
if (!(selection == null ? void 0 : selection.anchorNode) || selection.type === `None` || selection.type === `Caret`)
|
|
1985
|
+
return void 0;
|
|
1834
1986
|
return selection;
|
|
1835
1987
|
},
|
|
1836
1988
|
$: subject.asObservable()
|
|
@@ -1845,7 +1997,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1845
1997
|
hookManager
|
|
1846
1998
|
}) => {
|
|
1847
1999
|
const destroySubject$ = new rxjs.Subject();
|
|
1848
|
-
const containerElement = createContainerElement$1(
|
|
2000
|
+
const containerElement = createContainerElement$1(
|
|
2001
|
+
parentElement,
|
|
2002
|
+
item,
|
|
2003
|
+
hookManager
|
|
2004
|
+
);
|
|
1849
2005
|
const overlayElement = createOverlayElement(parentElement, item);
|
|
1850
2006
|
const fingerTracker = createFingerTracker();
|
|
1851
2007
|
const selectionTracker = createSelectionTracker();
|
|
@@ -1884,7 +2040,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1884
2040
|
(_a = spineItemFrame.getManipulableFrame()) == null ? void 0 : _a.removeStyle(`prose-reader-css`);
|
|
1885
2041
|
(_b = spineItemFrame.getManipulableFrame()) == null ? void 0 : _b.addStyle(`prose-reader-css`, cssText);
|
|
1886
2042
|
};
|
|
1887
|
-
const adjustPositionOfElement = ({
|
|
2043
|
+
const adjustPositionOfElement = ({
|
|
2044
|
+
right,
|
|
2045
|
+
left,
|
|
2046
|
+
top
|
|
2047
|
+
}) => {
|
|
1888
2048
|
if (right !== void 0) {
|
|
1889
2049
|
containerElement.style.right = `${right}px`;
|
|
1890
2050
|
} else {
|
|
@@ -1908,7 +2068,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1908
2068
|
const frameElement = (_a = spineItemFrame.getManipulableFrame()) == null ? void 0 : _a.frame;
|
|
1909
2069
|
if (containerElement && (frameElement == null ? void 0 : frameElement.contentDocument) && (frameElement == null ? void 0 : frameElement.contentWindow) && viewportDimensions) {
|
|
1910
2070
|
const computedWidthScale = pageWidth / viewportDimensions.width;
|
|
1911
|
-
const computedScale = Math.min(
|
|
2071
|
+
const computedScale = Math.min(
|
|
2072
|
+
computedWidthScale,
|
|
2073
|
+
pageHeight / viewportDimensions.height
|
|
2074
|
+
);
|
|
1912
2075
|
return { computedScale, computedWidthScale, viewportDimensions };
|
|
1913
2076
|
}
|
|
1914
2077
|
};
|
|
@@ -1961,7 +2124,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
1961
2124
|
}) => {
|
|
1962
2125
|
containerElement.style.width = `${width}px`;
|
|
1963
2126
|
containerElement.style.height = `${height}px`;
|
|
1964
|
-
hookManager.execute(`item.onAfterLayout`, void 0, {
|
|
2127
|
+
hookManager.execute(`item.onAfterLayout`, void 0, {
|
|
2128
|
+
blankPagePosition,
|
|
2129
|
+
item,
|
|
2130
|
+
minimumWidth
|
|
2131
|
+
});
|
|
1965
2132
|
setLayoutDirty();
|
|
1966
2133
|
};
|
|
1967
2134
|
const translateFramePositionIntoPage = (position) => {
|
|
@@ -2175,8 +2342,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2175
2342
|
}
|
|
2176
2343
|
const transformTranslateX = spreadPosition !== `none` ? `0` : `-50%`;
|
|
2177
2344
|
const transformOriginX = spreadPosition === `right` && blankPagePosition !== `before` ? `left` : spreadPosition === `left` || blankPagePosition === `before` && context.isRTL() ? `right` : `center`;
|
|
2178
|
-
frameElement == null ? void 0 : frameElement.style.setProperty(
|
|
2179
|
-
|
|
2345
|
+
frameElement == null ? void 0 : frameElement.style.setProperty(
|
|
2346
|
+
`transform`,
|
|
2347
|
+
`translate(${transformTranslateX}, -50%) scale(${computedScale})`
|
|
2348
|
+
);
|
|
2349
|
+
frameElement == null ? void 0 : frameElement.style.setProperty(
|
|
2350
|
+
`transform-origin`,
|
|
2351
|
+
`${transformOriginX} center`
|
|
2352
|
+
);
|
|
2180
2353
|
commonSpineItem.executeOnLayoutBeforeMeasurementHook({ minimumWidth });
|
|
2181
2354
|
} else {
|
|
2182
2355
|
commonSpineItem.injectStyle(cssLink);
|
|
@@ -2196,11 +2369,21 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2196
2369
|
}
|
|
2197
2370
|
}
|
|
2198
2371
|
commonSpineItem.executeOnLayoutBeforeMeasurementHook({ minimumWidth });
|
|
2199
|
-
commonSpineItem.layout({
|
|
2372
|
+
commonSpineItem.layout({
|
|
2373
|
+
width: minimumWidth,
|
|
2374
|
+
height: contentHeight,
|
|
2375
|
+
blankPagePosition,
|
|
2376
|
+
minimumWidth
|
|
2377
|
+
});
|
|
2200
2378
|
return { width: minimumWidth, height: contentHeight };
|
|
2201
2379
|
} else {
|
|
2202
2380
|
commonSpineItem.executeOnLayoutBeforeMeasurementHook({ minimumWidth });
|
|
2203
|
-
commonSpineItem.layout({
|
|
2381
|
+
commonSpineItem.layout({
|
|
2382
|
+
width: minimumWidth,
|
|
2383
|
+
height: pageHeight,
|
|
2384
|
+
blankPagePosition,
|
|
2385
|
+
minimumWidth
|
|
2386
|
+
});
|
|
2204
2387
|
}
|
|
2205
2388
|
return { width: minimumWidth, height: pageHeight };
|
|
2206
2389
|
};
|
|
@@ -2329,19 +2512,27 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2329
2512
|
`left`,
|
|
2330
2513
|
blankPagePosition === `before` ? context.isRTL() ? `25%` : `75%` : blankPagePosition === `after` ? context.isRTL() ? `75%` : `25%` : `50%`
|
|
2331
2514
|
);
|
|
2332
|
-
frameElement == null ? void 0 : frameElement.style.setProperty(
|
|
2515
|
+
frameElement == null ? void 0 : frameElement.style.setProperty(
|
|
2516
|
+
`transform`,
|
|
2517
|
+
`translate(-50%, -50%) scale(${computedScale})`
|
|
2518
|
+
);
|
|
2333
2519
|
frameElement == null ? void 0 : frameElement.style.setProperty(`transform-origin`, `center center`);
|
|
2334
2520
|
} else {
|
|
2335
2521
|
const frameStyle = commonSpineItem.isImageType() ? buildStyleForReflowableImageOnly({
|
|
2336
2522
|
isScrollable: ((_g = context.manifest) == null ? void 0 : _g.renditionFlow) === `scrolled-continuous`,
|
|
2337
2523
|
enableTouch: settings.settings.computedPageTurnMode !== `scrollable`
|
|
2338
2524
|
}) : buildStyleWithMultiColumn(
|
|
2339
|
-
commonSpineItem.getDimensionsForReflowableContent(
|
|
2525
|
+
commonSpineItem.getDimensionsForReflowableContent(
|
|
2526
|
+
spineItemFrame.isUsingVerticalWriting(),
|
|
2527
|
+
minimumWidth
|
|
2528
|
+
)
|
|
2340
2529
|
);
|
|
2341
2530
|
commonSpineItem.injectStyle(frameStyle);
|
|
2342
2531
|
commonSpineItem.executeOnLayoutBeforeMeasurementHook({ minimumWidth });
|
|
2343
2532
|
if (spineItemFrame.isUsingVerticalWriting()) {
|
|
2344
|
-
const pages = Math.ceil(
|
|
2533
|
+
const pages = Math.ceil(
|
|
2534
|
+
frameElement.contentDocument.documentElement.scrollHeight / pageHeight
|
|
2535
|
+
);
|
|
2345
2536
|
contentHeight = pages * pageHeight;
|
|
2346
2537
|
spineItemFrame.staticLayout({
|
|
2347
2538
|
width: minimumWidth,
|
|
@@ -2355,7 +2546,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2355
2546
|
height: contentHeight
|
|
2356
2547
|
});
|
|
2357
2548
|
} else {
|
|
2358
|
-
const pages = Math.ceil(
|
|
2549
|
+
const pages = Math.ceil(
|
|
2550
|
+
frameElement.contentDocument.documentElement.scrollWidth / pageWidth
|
|
2551
|
+
);
|
|
2359
2552
|
if (isGloballyPrePaginated) {
|
|
2360
2553
|
contentWidth = pageWidth;
|
|
2361
2554
|
} else {
|
|
@@ -2376,13 +2569,23 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2376
2569
|
} else {
|
|
2377
2570
|
frameElement == null ? void 0 : frameElement.style.setProperty(`margin-left`, `0px`);
|
|
2378
2571
|
}
|
|
2379
|
-
commonSpineItem.layout({
|
|
2572
|
+
commonSpineItem.layout({
|
|
2573
|
+
width: contentWidth,
|
|
2574
|
+
height: contentHeight,
|
|
2575
|
+
blankPagePosition,
|
|
2576
|
+
minimumWidth
|
|
2577
|
+
});
|
|
2380
2578
|
return { width: contentWidth, height: contentHeight };
|
|
2381
2579
|
} else {
|
|
2382
2580
|
commonSpineItem.executeOnLayoutBeforeMeasurementHook({ minimumWidth });
|
|
2383
2581
|
}
|
|
2384
2582
|
const height = latestContentHeightWhenLoaded || pageHeight;
|
|
2385
|
-
commonSpineItem.layout({
|
|
2583
|
+
commonSpineItem.layout({
|
|
2584
|
+
width: minimumWidth,
|
|
2585
|
+
height,
|
|
2586
|
+
blankPagePosition,
|
|
2587
|
+
minimumWidth
|
|
2588
|
+
});
|
|
2386
2589
|
return { width: minimumWidth, height };
|
|
2387
2590
|
};
|
|
2388
2591
|
return {
|
|
@@ -2702,7 +2905,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2702
2905
|
while (str.length) {
|
|
2703
2906
|
({ parsed, offset, newDoc } = this.parse(str));
|
|
2704
2907
|
if (!parsed || offset === null) throw new Error(`Parsing failed`);
|
|
2705
|
-
if (sawComma && newDoc)
|
|
2908
|
+
if (sawComma && newDoc)
|
|
2909
|
+
throw new Error(
|
|
2910
|
+
`CFI is a range that spans multiple documents. This is not allowed`
|
|
2911
|
+
);
|
|
2706
2912
|
subParts.push(parsed);
|
|
2707
2913
|
if (newDoc || str.length - offset <= 0) {
|
|
2708
2914
|
if (sawComma === 2) {
|
|
@@ -2770,7 +2976,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2770
2976
|
while (node.parentNode) {
|
|
2771
2977
|
o = calcSiblingCount(node.parentNode.childNodes, node, offset);
|
|
2772
2978
|
if (!cfi && o.offset) cfi = `:` + o.offset;
|
|
2773
|
-
cfi =
|
|
2979
|
+
cfi = // @ts-ignore
|
|
2980
|
+
`/` + o.count + (node.id ? `[` + cfiEscape(node.id) + `]` : ``) + cfi;
|
|
2774
2981
|
node = node.parentNode;
|
|
2775
2982
|
}
|
|
2776
2983
|
return cfi;
|
|
@@ -2873,7 +3080,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
2873
3080
|
return this.decodeEntities(dom, str).length;
|
|
2874
3081
|
}
|
|
2875
3082
|
getFrom() {
|
|
2876
|
-
if (!this.isRange)
|
|
3083
|
+
if (!this.isRange)
|
|
3084
|
+
throw new Error(`Trying to get beginning of non-range CFI`);
|
|
2877
3085
|
if (!this.from) {
|
|
2878
3086
|
return this.deepClone(this.parts);
|
|
2879
3087
|
}
|
|
@@ -3058,10 +3266,13 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3058
3266
|
}
|
|
3059
3267
|
if (cur === `:` || cur === `~` || cur === `@`) {
|
|
3060
3268
|
if (this.opts.stricter) {
|
|
3061
|
-
if (cur === `:` &&
|
|
3269
|
+
if (cur === `:` && // @ts-ignore
|
|
3270
|
+
(typeof o.temporal !== `undefined` || // @ts-ignore
|
|
3271
|
+
typeof o.spatial !== `undefined`)) {
|
|
3062
3272
|
break;
|
|
3063
3273
|
}
|
|
3064
|
-
if ((cur === `~` || cur === `@`) &&
|
|
3274
|
+
if ((cur === `~` || cur === `@`) && // @ts-ignore
|
|
3275
|
+
typeof o.offset !== `undefined`) {
|
|
3065
3276
|
break;
|
|
3066
3277
|
}
|
|
3067
3278
|
}
|
|
@@ -3124,7 +3335,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3124
3335
|
}
|
|
3125
3336
|
escape = false;
|
|
3126
3337
|
}
|
|
3127
|
-
if (!o.nodeIndex && o.nodeIndex !== 0)
|
|
3338
|
+
if (!o.nodeIndex && o.nodeIndex !== 0)
|
|
3339
|
+
throw new Error(`Missing child node index in CFI`);
|
|
3128
3340
|
return { parsed: o, offset: i, newDoc: state === `!` };
|
|
3129
3341
|
}
|
|
3130
3342
|
// The CFI counts child nodes differently from the DOM
|
|
@@ -3162,7 +3374,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3162
3374
|
if (!lastChild) {
|
|
3163
3375
|
return { node: parentNode, offset: 0 };
|
|
3164
3376
|
}
|
|
3165
|
-
return {
|
|
3377
|
+
return {
|
|
3378
|
+
node: lastChild,
|
|
3379
|
+
// @ts-ignore
|
|
3380
|
+
offset: this.trueLength(dom, lastChild.textContent)
|
|
3381
|
+
};
|
|
3166
3382
|
}
|
|
3167
3383
|
}
|
|
3168
3384
|
lastChild = child;
|
|
@@ -3249,7 +3465,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3249
3465
|
newOffset -= nodeLengths[i];
|
|
3250
3466
|
if (newOffset < 0) return { node, offset };
|
|
3251
3467
|
const nodeOffsets = [];
|
|
3252
|
-
if (!curNode.nextSibling || i + 1 >= nodeOffsets.length)
|
|
3468
|
+
if (!curNode.nextSibling || i + 1 >= nodeOffsets.length)
|
|
3469
|
+
return { node, offset };
|
|
3253
3470
|
i++;
|
|
3254
3471
|
curNode = curNode.nextSibling;
|
|
3255
3472
|
}
|
|
@@ -3278,7 +3495,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3278
3495
|
let subpart;
|
|
3279
3496
|
for (i = subparts.length - 1; i >= 0; i--) {
|
|
3280
3497
|
subpart = subparts[i];
|
|
3281
|
-
if (
|
|
3498
|
+
if (
|
|
3499
|
+
// @ts-ignore
|
|
3500
|
+
!opts.ignoreIDs && // @ts-ignore
|
|
3501
|
+
subpart.nodeID && // @ts-ignore
|
|
3502
|
+
(node = dom.getElementById(subpart.nodeID))
|
|
3503
|
+
) {
|
|
3282
3504
|
startFrom = i + 1;
|
|
3283
3505
|
break;
|
|
3284
3506
|
}
|
|
@@ -3290,9 +3512,22 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3290
3512
|
for (i = startFrom; i < subparts.length; i++) {
|
|
3291
3513
|
subpart = subparts[i];
|
|
3292
3514
|
if (subpart) {
|
|
3293
|
-
o = this.getChildNodeByCFIIndex(
|
|
3515
|
+
o = this.getChildNodeByCFIIndex(
|
|
3516
|
+
dom,
|
|
3517
|
+
// @ts-ignore
|
|
3518
|
+
o.node,
|
|
3519
|
+
subpart.nodeIndex,
|
|
3520
|
+
subpart.offset
|
|
3521
|
+
);
|
|
3294
3522
|
if (subpart.textLocationAssertion) {
|
|
3295
|
-
o = this.correctOffset(
|
|
3523
|
+
o = this.correctOffset(
|
|
3524
|
+
dom,
|
|
3525
|
+
// @ts-ignore
|
|
3526
|
+
o.node,
|
|
3527
|
+
subpart.offset,
|
|
3528
|
+
// @ts-ignore
|
|
3529
|
+
subpart.textLocationAssertion
|
|
3530
|
+
);
|
|
3296
3531
|
}
|
|
3297
3532
|
}
|
|
3298
3533
|
}
|
|
@@ -3334,12 +3569,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3334
3569
|
}
|
|
3335
3570
|
if (tagName === `object`) {
|
|
3336
3571
|
const data = node.getAttribute(`data`);
|
|
3337
|
-
if (!data)
|
|
3572
|
+
if (!data)
|
|
3573
|
+
throw new Error(tagName + ` element is missing 'data' attribute`);
|
|
3338
3574
|
return data;
|
|
3339
3575
|
}
|
|
3340
3576
|
if (tagName === `image` || tagName === `use`) {
|
|
3341
3577
|
const href = node.getAttribute(`xlink:href`);
|
|
3342
|
-
if (!href)
|
|
3578
|
+
if (!href)
|
|
3579
|
+
throw new Error(tagName + ` element is missing 'xlink:href' attribute`);
|
|
3343
3580
|
return href;
|
|
3344
3581
|
}
|
|
3345
3582
|
throw new Error(`No URI found`);
|
|
@@ -3511,17 +3748,26 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3511
3748
|
spineItemsFromPosition.beginPosition,
|
|
3512
3749
|
beginSpineItem
|
|
3513
3750
|
);
|
|
3514
|
-
const beginPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3751
|
+
const beginPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3752
|
+
beginPosition,
|
|
3753
|
+
beginSpineItem
|
|
3754
|
+
);
|
|
3515
3755
|
const endPosition = spineLocator.getSpineItemPositionFromSpinePosition(
|
|
3516
3756
|
spineItemsFromPosition.endPosition,
|
|
3517
3757
|
endSpineItem
|
|
3518
3758
|
);
|
|
3519
|
-
const endPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3759
|
+
const endPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3760
|
+
endPosition,
|
|
3761
|
+
endSpineItem
|
|
3762
|
+
);
|
|
3520
3763
|
pagination.updateBeginAndEnd(
|
|
3521
3764
|
{
|
|
3522
3765
|
spineItem: beginSpineItem,
|
|
3523
3766
|
spineItemIndex: spineItemManager.getSpineItemIndex(beginSpineItem) ?? 0,
|
|
3524
|
-
pageIndex: spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3767
|
+
pageIndex: spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3768
|
+
beginPosition,
|
|
3769
|
+
beginSpineItem
|
|
3770
|
+
),
|
|
3525
3771
|
cfi: shouldUpdateBeginCfi ? cfiLocator.getCfi(beginPageIndex, beginSpineItem) : beginLastCfi,
|
|
3526
3772
|
options: {
|
|
3527
3773
|
isAtEndOfChapter: false
|
|
@@ -3530,7 +3776,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3530
3776
|
{
|
|
3531
3777
|
spineItem: endSpineItem,
|
|
3532
3778
|
spineItemIndex: spineItemManager.getSpineItemIndex(endSpineItem) ?? 0,
|
|
3533
|
-
pageIndex: spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3779
|
+
pageIndex: spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3780
|
+
endPosition,
|
|
3781
|
+
endSpineItem
|
|
3782
|
+
),
|
|
3534
3783
|
cfi: shouldUpdateEndCfi ? cfiLocator.getCfi(endPageIndex, endSpineItem) : endLastCfi,
|
|
3535
3784
|
options: {
|
|
3536
3785
|
isAtEndOfChapter: false
|
|
@@ -3567,7 +3816,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3567
3816
|
() => fingerTracker$.pipe(
|
|
3568
3817
|
operators.filter(({ event: event2 }) => event2 === `fingermove`),
|
|
3569
3818
|
operators.debounce(() => rxjs.interval(1e3)),
|
|
3570
|
-
operators.takeUntil(
|
|
3819
|
+
operators.takeUntil(
|
|
3820
|
+
fingerTracker$.pipe(
|
|
3821
|
+
operators.filter(({ event: event2 }) => event2 === `fingerout`)
|
|
3822
|
+
)
|
|
3823
|
+
),
|
|
3571
3824
|
operators.tap(({ data }) => {
|
|
3572
3825
|
})
|
|
3573
3826
|
)
|
|
@@ -3604,12 +3857,18 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3604
3857
|
spineItemsFromPosition.beginPosition,
|
|
3605
3858
|
beginSpineItem
|
|
3606
3859
|
);
|
|
3607
|
-
const beginPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3860
|
+
const beginPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3861
|
+
beginPosition,
|
|
3862
|
+
beginSpineItem
|
|
3863
|
+
);
|
|
3608
3864
|
const endPosition = spineLocator.getSpineItemPositionFromSpinePosition(
|
|
3609
3865
|
spineItemsFromPosition.endPosition,
|
|
3610
3866
|
endSpineItem
|
|
3611
3867
|
);
|
|
3612
|
-
const endPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3868
|
+
const endPageIndex = spineItemLocator.getSpineItemPageIndexFromPosition(
|
|
3869
|
+
endPosition,
|
|
3870
|
+
endSpineItem
|
|
3871
|
+
);
|
|
3613
3872
|
const endItemIndex = spineItemManager.getSpineItemIndex(endSpineItem) ?? 0;
|
|
3614
3873
|
pagination.updateBeginAndEnd(
|
|
3615
3874
|
{
|
|
@@ -3668,7 +3927,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3668
3927
|
);
|
|
3669
3928
|
itemUpdateOnNavigation$.pipe(
|
|
3670
3929
|
operators.switchMap((data) => {
|
|
3671
|
-
return adjustPagination(data.position).pipe(
|
|
3930
|
+
return adjustPagination(data.position).pipe(
|
|
3931
|
+
operators.takeUntil(spineItemManager.$.layout$)
|
|
3932
|
+
);
|
|
3672
3933
|
}),
|
|
3673
3934
|
operators.takeUntil(context.destroy$)
|
|
3674
3935
|
).subscribe();
|
|
@@ -3692,10 +3953,20 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3692
3953
|
const focusedSpineItemIndex = spineItemManager.getFocusedSpineItemIndex();
|
|
3693
3954
|
report.log(`update contents`, { focusedSpineItemIndex });
|
|
3694
3955
|
if (focusedSpineItemIndex === void 0) return;
|
|
3695
|
-
const {
|
|
3956
|
+
const {
|
|
3957
|
+
begin = focusedSpineItemIndex,
|
|
3958
|
+
end = focusedSpineItemIndex
|
|
3959
|
+
} = spineLocator.getSpineItemsFromReadingOrderPosition(
|
|
3960
|
+
currentNavigationPosition
|
|
3961
|
+
) || {};
|
|
3696
3962
|
if (begin !== focusedSpineItemIndex && end !== focusedSpineItemIndex) {
|
|
3697
|
-
Report.warn(
|
|
3698
|
-
|
|
3963
|
+
Report.warn(
|
|
3964
|
+
`Current viewport is not in sync with focus item, load from focus item rather than viewport`
|
|
3965
|
+
);
|
|
3966
|
+
spineItemManager.loadContents([
|
|
3967
|
+
focusedSpineItemIndex,
|
|
3968
|
+
focusedSpineItemIndex
|
|
3969
|
+
]);
|
|
3699
3970
|
} else {
|
|
3700
3971
|
spineItemManager.loadContents([begin, end]);
|
|
3701
3972
|
}
|
|
@@ -3754,7 +4025,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3754
4025
|
return element;
|
|
3755
4026
|
};
|
|
3756
4027
|
const NAMESPACE$4 = `spineItemManager`;
|
|
3757
|
-
const createSpineItemManager = ({
|
|
4028
|
+
const createSpineItemManager = ({
|
|
4029
|
+
context,
|
|
4030
|
+
settings
|
|
4031
|
+
}) => {
|
|
3758
4032
|
const focus$ = new rxjs.Subject();
|
|
3759
4033
|
const layout$ = new rxjs.Subject();
|
|
3760
4034
|
let itemLayoutInformation = [];
|
|
@@ -3865,30 +4139,36 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3865
4139
|
focusedSpineItemIndex = newActiveSpineItemIndex;
|
|
3866
4140
|
focus$.next({ data: spineItemToFocus });
|
|
3867
4141
|
};
|
|
3868
|
-
const loadContents = Report.measurePerformance(
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
const
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
4142
|
+
const loadContents = Report.measurePerformance(
|
|
4143
|
+
`loadContents`,
|
|
4144
|
+
10,
|
|
4145
|
+
(rangeOfIndex) => {
|
|
4146
|
+
var _a;
|
|
4147
|
+
const [leftIndex, rightIndex] = rangeOfIndex;
|
|
4148
|
+
const numberOfAdjacentSpineItemToPreLoad = settings.settings.numberOfAdjacentSpineItemToPreLoad;
|
|
4149
|
+
const isPrePaginated = ((_a = context.manifest) == null ? void 0 : _a.renditionLayout) === `pre-paginated`;
|
|
4150
|
+
const isUsingFreeScroll = settings.settings.computedPageTurnMode === `scrollable`;
|
|
4151
|
+
orderedSpineItemsSubject$.value.forEach((orderedSpineItem, index) => {
|
|
4152
|
+
const isBeforeFocusedWithPreload = (
|
|
4153
|
+
// we never want to preload anything before on free scroll on flow because it could offset the cursor
|
|
4154
|
+
index < leftIndex && !isPrePaginated && isUsingFreeScroll ? true : index < leftIndex - numberOfAdjacentSpineItemToPreLoad
|
|
4155
|
+
);
|
|
4156
|
+
const isAfterTailWithPreload = index > rightIndex + numberOfAdjacentSpineItemToPreLoad;
|
|
4157
|
+
if (!isBeforeFocusedWithPreload && !isAfterTailWithPreload) {
|
|
4158
|
+
orderedSpineItem.loadContent();
|
|
4159
|
+
} else {
|
|
4160
|
+
orderedSpineItem.unloadContent();
|
|
4161
|
+
}
|
|
4162
|
+
});
|
|
4163
|
+
}
|
|
4164
|
+
);
|
|
3887
4165
|
const get = (indexOrId) => {
|
|
3888
4166
|
if (typeof indexOrId === `number`) {
|
|
3889
4167
|
return orderedSpineItemsSubject$.value[indexOrId];
|
|
3890
4168
|
}
|
|
3891
|
-
return orderedSpineItemsSubject$.value.find(
|
|
4169
|
+
return orderedSpineItemsSubject$.value.find(
|
|
4170
|
+
({ item }) => item.id === indexOrId
|
|
4171
|
+
);
|
|
3892
4172
|
};
|
|
3893
4173
|
const getAbsolutePositionOf = (spineItemOrIndex) => {
|
|
3894
4174
|
const indexOfItem = typeof spineItemOrIndex === `number` ? spineItemOrIndex : orderedSpineItemsSubject$.value.indexOf(spineItemOrIndex);
|
|
@@ -3973,7 +4253,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
3973
4253
|
itemIsReady$: orderedSpineItemsSubject$.asObservable().pipe(
|
|
3974
4254
|
operators.switchMap((items) => {
|
|
3975
4255
|
const itemsIsReady$ = items.map(
|
|
3976
|
-
(item) => item.$.isReady$.pipe(
|
|
4256
|
+
(item) => item.$.isReady$.pipe(
|
|
4257
|
+
operators.map((isReady) => ({ item: item.item, isReady }))
|
|
4258
|
+
)
|
|
3977
4259
|
);
|
|
3978
4260
|
return rxjs.merge(...itemsIsReady$);
|
|
3979
4261
|
})
|
|
@@ -4044,7 +4326,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4044
4326
|
);
|
|
4045
4327
|
const getFirstVisibleElementForViewport = (element, viewport) => {
|
|
4046
4328
|
let lastValidElement;
|
|
4047
|
-
const positionFromViewport = getElementOrNodePositionFromViewPort(
|
|
4329
|
+
const positionFromViewport = getElementOrNodePositionFromViewPort(
|
|
4330
|
+
element.getBoundingClientRect(),
|
|
4331
|
+
viewport
|
|
4332
|
+
);
|
|
4048
4333
|
if (positionFromViewport !== `before` && positionFromViewport !== `after`) {
|
|
4049
4334
|
lastValidElement = element;
|
|
4050
4335
|
}
|
|
@@ -4060,7 +4345,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4060
4345
|
};
|
|
4061
4346
|
function getElementOrNodePositionFromViewPort(domRect, { left, right }) {
|
|
4062
4347
|
if (domRect.left <= left && domRect.right <= left) return `before`;
|
|
4063
|
-
if (domRect.left <= left && domRect.right > left && domRect.right <= right)
|
|
4348
|
+
if (domRect.left <= left && domRect.right > left && domRect.right <= right)
|
|
4349
|
+
return `partially-before`;
|
|
4064
4350
|
if (domRect.left <= right && domRect.right > right) return `partially-after`;
|
|
4065
4351
|
if (domRect.left > right) return `after`;
|
|
4066
4352
|
return `within`;
|
|
@@ -4144,19 +4430,33 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4144
4430
|
};
|
|
4145
4431
|
const createLocationResolver$1 = ({ context }) => {
|
|
4146
4432
|
const getSafePosition = (unsafeSpineItemPosition, spineItem) => ({
|
|
4147
|
-
x: Math.min(
|
|
4148
|
-
|
|
4433
|
+
x: Math.min(
|
|
4434
|
+
spineItem.getElementDimensions().width,
|
|
4435
|
+
Math.max(0, unsafeSpineItemPosition.x)
|
|
4436
|
+
),
|
|
4437
|
+
y: Math.min(
|
|
4438
|
+
spineItem.getElementDimensions().height,
|
|
4439
|
+
Math.max(0, unsafeSpineItemPosition.y)
|
|
4440
|
+
)
|
|
4149
4441
|
});
|
|
4150
4442
|
const getSpineItemPositionFromPageIndex = (pageIndex, spineItem) => {
|
|
4151
4443
|
const { width: itemWidth, height: itemHeight } = spineItem.getElementDimensions();
|
|
4152
4444
|
if (spineItem.isUsingVerticalWriting()) {
|
|
4153
|
-
const ltrRelativeOffset2 = getItemOffsetFromPageIndex(
|
|
4445
|
+
const ltrRelativeOffset2 = getItemOffsetFromPageIndex(
|
|
4446
|
+
context.getPageSize().height,
|
|
4447
|
+
pageIndex,
|
|
4448
|
+
itemHeight
|
|
4449
|
+
);
|
|
4154
4450
|
return {
|
|
4155
4451
|
x: 0,
|
|
4156
4452
|
y: ltrRelativeOffset2
|
|
4157
4453
|
};
|
|
4158
4454
|
}
|
|
4159
|
-
const ltrRelativeOffset = getItemOffsetFromPageIndex(
|
|
4455
|
+
const ltrRelativeOffset = getItemOffsetFromPageIndex(
|
|
4456
|
+
context.getPageSize().width,
|
|
4457
|
+
pageIndex,
|
|
4458
|
+
itemWidth
|
|
4459
|
+
);
|
|
4160
4460
|
if (context.isRTL()) {
|
|
4161
4461
|
return {
|
|
4162
4462
|
x: itemWidth - ltrRelativeOffset - context.getPageSize().width,
|
|
@@ -4175,7 +4475,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4175
4475
|
const safePosition = getSafePosition(position, spineItem);
|
|
4176
4476
|
const offset = context.isRTL() ? itemWidth - safePosition.x - context.getPageSize().width : safePosition.x;
|
|
4177
4477
|
if (spineItem.isUsingVerticalWriting()) {
|
|
4178
|
-
const numberOfPages = calculateNumberOfPagesForItem(
|
|
4478
|
+
const numberOfPages = calculateNumberOfPagesForItem(
|
|
4479
|
+
itemHeight,
|
|
4480
|
+
pageHeight
|
|
4481
|
+
);
|
|
4179
4482
|
return getPageFromOffset(position.y, pageHeight, numberOfPages);
|
|
4180
4483
|
} else {
|
|
4181
4484
|
const numberOfPages = calculateNumberOfPagesForItem(itemWidth, pageWidth);
|
|
@@ -4189,7 +4492,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4189
4492
|
const pageWidth = context.getPageSize().width;
|
|
4190
4493
|
const anchorElementBoundingRect = spineItem.getBoundingRectOfElementFromSelector(anchor);
|
|
4191
4494
|
const offsetOfAnchor = (anchorElementBoundingRect == null ? void 0 : anchorElementBoundingRect.x) || 0;
|
|
4192
|
-
return getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4495
|
+
return getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4496
|
+
offsetOfAnchor,
|
|
4497
|
+
pageWidth,
|
|
4498
|
+
itemWidth
|
|
4499
|
+
);
|
|
4193
4500
|
};
|
|
4194
4501
|
const getSpineItemPositionFromNode = (node, offset, spineItem) => {
|
|
4195
4502
|
var _a;
|
|
@@ -4203,7 +4510,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4203
4510
|
const spineItemWidth = ((_a = spineItem.getElementDimensions()) == null ? void 0 : _a.width) || 0;
|
|
4204
4511
|
const pageWidth = context.getPageSize().width;
|
|
4205
4512
|
if (offsetOfNodeInSpineItem) {
|
|
4206
|
-
const val = getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4513
|
+
const val = getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4514
|
+
offsetOfNodeInSpineItem,
|
|
4515
|
+
pageWidth,
|
|
4516
|
+
spineItemWidth
|
|
4517
|
+
);
|
|
4207
4518
|
return { x: val, y: 0 };
|
|
4208
4519
|
}
|
|
4209
4520
|
return void 0;
|
|
@@ -4214,14 +4525,20 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4214
4525
|
const frame = (_b = (_a = spineItem.spineItemFrame) == null ? void 0 : _a.getManipulableFrame()) == null ? void 0 : _b.frame;
|
|
4215
4526
|
if (((_c = frame == null ? void 0 : frame.contentWindow) == null ? void 0 : _c.document) && // very important because it is being used by next functions
|
|
4216
4527
|
frame.contentWindow.document.body !== null) {
|
|
4217
|
-
const { x: left, y: top } = getSpineItemPositionFromPageIndex(
|
|
4528
|
+
const { x: left, y: top } = getSpineItemPositionFromPageIndex(
|
|
4529
|
+
pageIndex,
|
|
4530
|
+
spineItem
|
|
4531
|
+
);
|
|
4218
4532
|
const viewport = {
|
|
4219
4533
|
left,
|
|
4220
4534
|
right: left + pageSize.width,
|
|
4221
4535
|
top,
|
|
4222
4536
|
bottom: top + pageSize.height
|
|
4223
4537
|
};
|
|
4224
|
-
const res = getFirstVisibleNodeForViewport(
|
|
4538
|
+
const res = getFirstVisibleNodeForViewport(
|
|
4539
|
+
frame.contentWindow.document,
|
|
4540
|
+
viewport
|
|
4541
|
+
);
|
|
4225
4542
|
return res;
|
|
4226
4543
|
}
|
|
4227
4544
|
return void 0;
|
|
@@ -4229,8 +4546,16 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4229
4546
|
const getSpineItemClosestPositionFromUnsafePosition = (unsafePosition, spineItem) => {
|
|
4230
4547
|
const { width, height } = spineItem.getElementDimensions();
|
|
4231
4548
|
const adjustedPosition = {
|
|
4232
|
-
x: getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4233
|
-
|
|
4549
|
+
x: getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4550
|
+
unsafePosition.x,
|
|
4551
|
+
context.getPageSize().width,
|
|
4552
|
+
width
|
|
4553
|
+
),
|
|
4554
|
+
y: getClosestValidOffsetFromApproximateOffsetInPages(
|
|
4555
|
+
unsafePosition.y,
|
|
4556
|
+
context.getPageSize().height,
|
|
4557
|
+
height
|
|
4558
|
+
)
|
|
4234
4559
|
};
|
|
4235
4560
|
return adjustedPosition;
|
|
4236
4561
|
};
|
|
@@ -4264,7 +4589,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4264
4589
|
this.y = position.y;
|
|
4265
4590
|
}
|
|
4266
4591
|
}
|
|
4267
|
-
const createNavigationResolver$1 = ({
|
|
4592
|
+
const createNavigationResolver$1 = ({
|
|
4593
|
+
context
|
|
4594
|
+
}) => {
|
|
4268
4595
|
const spineItemLocator = createLocationResolver$1({ context });
|
|
4269
4596
|
const getNavigationForLeftPage = (position, spineItem) => {
|
|
4270
4597
|
let nextPotentialPosition = {
|
|
@@ -4303,20 +4630,33 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4303
4630
|
const getNavigationForLastPage = (spineItem) => {
|
|
4304
4631
|
if (spineItem.isUsingVerticalWriting()) {
|
|
4305
4632
|
const pageHeight = context.getPageSize().height;
|
|
4306
|
-
const numberOfPages = calculateNumberOfPagesForItem(
|
|
4633
|
+
const numberOfPages = calculateNumberOfPagesForItem(
|
|
4634
|
+
spineItem.getElementDimensions().height,
|
|
4635
|
+
pageHeight
|
|
4636
|
+
);
|
|
4307
4637
|
return getNavigationForPage(numberOfPages - 1, spineItem);
|
|
4308
4638
|
} else {
|
|
4309
4639
|
const pageWidth = context.getPageSize().width;
|
|
4310
|
-
const numberOfPages = calculateNumberOfPagesForItem(
|
|
4640
|
+
const numberOfPages = calculateNumberOfPagesForItem(
|
|
4641
|
+
spineItem.getElementDimensions().width,
|
|
4642
|
+
pageWidth
|
|
4643
|
+
);
|
|
4311
4644
|
return getNavigationForPage(numberOfPages - 1, spineItem);
|
|
4312
4645
|
}
|
|
4313
4646
|
};
|
|
4314
4647
|
const getNavigationForPage = (pageIndex, spineItem) => {
|
|
4315
|
-
const { x, y } = spineItemLocator.getSpineItemPositionFromPageIndex(
|
|
4648
|
+
const { x, y } = spineItemLocator.getSpineItemPositionFromPageIndex(
|
|
4649
|
+
pageIndex,
|
|
4650
|
+
spineItem
|
|
4651
|
+
);
|
|
4316
4652
|
return new SpineItemNavigationPosition({ x, y });
|
|
4317
4653
|
};
|
|
4318
4654
|
const getNavigationFromNode = (spineItem, node, offset) => {
|
|
4319
|
-
const position = spineItemLocator.getSpineItemPositionFromNode(
|
|
4655
|
+
const position = spineItemLocator.getSpineItemPositionFromNode(
|
|
4656
|
+
node,
|
|
4657
|
+
offset,
|
|
4658
|
+
spineItem
|
|
4659
|
+
);
|
|
4320
4660
|
return new SpineItemNavigationPosition(position || { x: 0, y: 0 });
|
|
4321
4661
|
};
|
|
4322
4662
|
const getNavigationForPosition = (spineItem, position) => {
|
|
@@ -4350,8 +4690,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4350
4690
|
`${NAMESPACE$3} wrapPositionWithSafeEdge`,
|
|
4351
4691
|
1,
|
|
4352
4692
|
(position) => {
|
|
4353
|
-
const lastSpineItem = spineItemManager.get(
|
|
4354
|
-
|
|
4693
|
+
const lastSpineItem = spineItemManager.get(
|
|
4694
|
+
spineItemManager.getLength() - 1
|
|
4695
|
+
);
|
|
4696
|
+
const distanceOfLastSpineItem = spineItemManager.getAbsolutePositionOf(
|
|
4697
|
+
lastSpineItem || 0
|
|
4698
|
+
);
|
|
4355
4699
|
const maximumYOffset = distanceOfLastSpineItem.bottom - context.getPageSize().height;
|
|
4356
4700
|
const y = Math.min(Math.max(0, position.y), maximumYOffset);
|
|
4357
4701
|
if (context.isRTL()) {
|
|
@@ -4368,7 +4712,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4368
4712
|
},
|
|
4369
4713
|
{ disable: true }
|
|
4370
4714
|
);
|
|
4371
|
-
const getAdjustedPositionForSpread = ({
|
|
4715
|
+
const getAdjustedPositionForSpread = ({
|
|
4716
|
+
x,
|
|
4717
|
+
y
|
|
4718
|
+
}) => {
|
|
4372
4719
|
const isOffsetNotAtEdge = x % context.state.visibleAreaRect.width !== 0;
|
|
4373
4720
|
const correctedX = isOffsetNotAtEdge ? x - context.getPageSize().width : x;
|
|
4374
4721
|
return { x: correctedX, y };
|
|
@@ -4380,7 +4727,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4380
4727
|
Report.warn(NAMESPACE$3, `unable to detect item id from cfi ${cfi}`);
|
|
4381
4728
|
} else {
|
|
4382
4729
|
const spineItemNavigation = node ? spineItemNavigator.getNavigationFromNode(spineItem, node, offset) : new SpineItemNavigationPosition({ x: 0, y: 0 });
|
|
4383
|
-
const readingPosition = locator.getSpinePositionFromSpineItemPosition(
|
|
4730
|
+
const readingPosition = locator.getSpinePositionFromSpineItemPosition(
|
|
4731
|
+
spineItemNavigation,
|
|
4732
|
+
spineItem
|
|
4733
|
+
);
|
|
4384
4734
|
return { ...getAdjustedPositionForSpread(readingPosition), spineItem };
|
|
4385
4735
|
}
|
|
4386
4736
|
return { x: 0, y: 0 };
|
|
@@ -4390,13 +4740,22 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4390
4740
|
const xPositionForPageIndex = pageIndex * context.getPageSize().width;
|
|
4391
4741
|
return getNavigationForPosition({ x: xPositionForPageIndex, y: 0 });
|
|
4392
4742
|
}
|
|
4393
|
-
const spineItemNavigation = spineItemNavigator.getNavigationForPage(
|
|
4394
|
-
|
|
4743
|
+
const spineItemNavigation = spineItemNavigator.getNavigationForPage(
|
|
4744
|
+
pageIndex,
|
|
4745
|
+
spineItem
|
|
4746
|
+
);
|
|
4747
|
+
const readingOffset = locator.getSpinePositionFromSpineItemPosition(
|
|
4748
|
+
spineItemNavigation,
|
|
4749
|
+
spineItem
|
|
4750
|
+
);
|
|
4395
4751
|
return getAdjustedPositionForSpread(readingOffset);
|
|
4396
4752
|
};
|
|
4397
4753
|
const getNavigationForLastPage = (spineItem) => {
|
|
4398
4754
|
const spineItemNavigation = spineItemNavigator.getNavigationForLastPage(spineItem);
|
|
4399
|
-
const position = locator.getSpinePositionFromSpineItemPosition(
|
|
4755
|
+
const position = locator.getSpinePositionFromSpineItemPosition(
|
|
4756
|
+
spineItemNavigation,
|
|
4757
|
+
spineItem
|
|
4758
|
+
);
|
|
4400
4759
|
return getAdjustedPositionForSpread(position);
|
|
4401
4760
|
};
|
|
4402
4761
|
const getNavigationForSpineIndexOrId = (indexOrId) => {
|
|
@@ -4414,9 +4773,15 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4414
4773
|
if (!spineItem) {
|
|
4415
4774
|
return defaultNavigation;
|
|
4416
4775
|
}
|
|
4417
|
-
const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(
|
|
4776
|
+
const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(
|
|
4777
|
+
position,
|
|
4778
|
+
spineItem
|
|
4779
|
+
);
|
|
4418
4780
|
const spineItemNavigationForRightPage = spineItemNavigator.getNavigationForRightPage(spineItemPosition, spineItem);
|
|
4419
|
-
const isNewNavigationInCurrentItem = arePositionsDifferent(
|
|
4781
|
+
const isNewNavigationInCurrentItem = arePositionsDifferent(
|
|
4782
|
+
spineItemNavigationForRightPage,
|
|
4783
|
+
spineItemPosition
|
|
4784
|
+
);
|
|
4420
4785
|
if (!isNewNavigationInCurrentItem) {
|
|
4421
4786
|
return wrapPositionWithSafeEdge(
|
|
4422
4787
|
pageTurnDirection === `horizontal` ? { x: position.x + context.getPageSize().width, y: 0 } : { y: position.y + context.getPageSize().height, x: 0 }
|
|
@@ -4436,15 +4801,27 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4436
4801
|
if (!spineItem) {
|
|
4437
4802
|
return defaultNavigation;
|
|
4438
4803
|
}
|
|
4439
|
-
const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(
|
|
4440
|
-
|
|
4441
|
-
|
|
4804
|
+
const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(
|
|
4805
|
+
position,
|
|
4806
|
+
spineItem
|
|
4807
|
+
);
|
|
4808
|
+
const spineItemNavigation = spineItemNavigator.getNavigationForLeftPage(
|
|
4809
|
+
spineItemPosition,
|
|
4810
|
+
spineItem
|
|
4811
|
+
);
|
|
4812
|
+
const isNewNavigationInCurrentItem = arePositionsDifferent(
|
|
4813
|
+
spineItemNavigation,
|
|
4814
|
+
spineItemPosition
|
|
4815
|
+
);
|
|
4442
4816
|
if (!isNewNavigationInCurrentItem) {
|
|
4443
4817
|
return wrapPositionWithSafeEdge(
|
|
4444
4818
|
pageTurnDirection === `horizontal` ? { x: position.x - context.getPageSize().width, y: 0 } : { y: position.y - context.getPageSize().height, x: 0 }
|
|
4445
4819
|
);
|
|
4446
4820
|
} else {
|
|
4447
|
-
const readingOrderPosition = locator.getSpinePositionFromSpineItemPosition(
|
|
4821
|
+
const readingOrderPosition = locator.getSpinePositionFromSpineItemPosition(
|
|
4822
|
+
spineItemNavigation,
|
|
4823
|
+
spineItem
|
|
4824
|
+
);
|
|
4448
4825
|
return readingOrderPosition;
|
|
4449
4826
|
}
|
|
4450
4827
|
};
|
|
@@ -4486,7 +4863,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4486
4863
|
if ((spineItemOnPosition == null ? void 0 : spineItemOnPosition.isUsingVerticalWriting()) && position.x !== navigation.x) {
|
|
4487
4864
|
return getAdjustedPositionForSpread(
|
|
4488
4865
|
wrapPositionWithSafeEdge(
|
|
4489
|
-
context.isRTL() ? { ...navigation, x: navigation.x + context.getPageSize().width } : {
|
|
4866
|
+
context.isRTL() ? { ...navigation, x: navigation.x + context.getPageSize().width } : {
|
|
4867
|
+
...navigation,
|
|
4868
|
+
x: navigation.x - context.getPageSize().width
|
|
4869
|
+
}
|
|
4490
4870
|
)
|
|
4491
4871
|
);
|
|
4492
4872
|
}
|
|
@@ -4503,7 +4883,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4503
4883
|
try {
|
|
4504
4884
|
const validUrl = url instanceof URL ? url : new URL(url);
|
|
4505
4885
|
const urlWithoutAnchor = `${validUrl.origin}${validUrl.pathname}`;
|
|
4506
|
-
const existingSpineItem = (_a = context.manifest) == null ? void 0 : _a.spineItems.find(
|
|
4886
|
+
const existingSpineItem = (_a = context.manifest) == null ? void 0 : _a.spineItems.find(
|
|
4887
|
+
(item) => item.href === urlWithoutAnchor
|
|
4888
|
+
);
|
|
4507
4889
|
if (existingSpineItem) {
|
|
4508
4890
|
const spineItem = spineItemManager.get(existingSpineItem.id);
|
|
4509
4891
|
if (spineItem) {
|
|
@@ -4518,15 +4900,27 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4518
4900
|
}
|
|
4519
4901
|
};
|
|
4520
4902
|
const getNavigationForAnchor = (anchor, spineItem) => {
|
|
4521
|
-
const position = locator.getSpinePositionFromSpineItemAnchor(
|
|
4903
|
+
const position = locator.getSpinePositionFromSpineItemAnchor(
|
|
4904
|
+
anchor,
|
|
4905
|
+
spineItem
|
|
4906
|
+
);
|
|
4522
4907
|
return getAdjustedPositionForSpread(position);
|
|
4523
4908
|
};
|
|
4524
4909
|
const getNavigationForPosition = (viewportPosition) => {
|
|
4525
4910
|
const spineItem = locator.getSpineItemFromPosition(viewportPosition);
|
|
4526
4911
|
if (spineItem) {
|
|
4527
|
-
const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(
|
|
4528
|
-
|
|
4529
|
-
|
|
4912
|
+
const spineItemPosition = locator.getSpineItemPositionFromSpinePosition(
|
|
4913
|
+
viewportPosition,
|
|
4914
|
+
spineItem
|
|
4915
|
+
);
|
|
4916
|
+
const spineItemValidPosition = spineItemNavigator.getNavigationForPosition(
|
|
4917
|
+
spineItem,
|
|
4918
|
+
spineItemPosition
|
|
4919
|
+
);
|
|
4920
|
+
const viewportNavigation = locator.getSpinePositionFromSpineItemPosition(
|
|
4921
|
+
spineItemValidPosition,
|
|
4922
|
+
spineItem
|
|
4923
|
+
);
|
|
4530
4924
|
return getAdjustedPositionForSpread(viewportNavigation);
|
|
4531
4925
|
}
|
|
4532
4926
|
return { x: 0, y: 0 };
|
|
@@ -4536,7 +4930,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4536
4930
|
const triggerPercentage = 0.5;
|
|
4537
4931
|
const triggerXPosition = pageTurnDirection === `horizontal` ? viewportPosition.x + context.state.visibleAreaRect.width * triggerPercentage : 0;
|
|
4538
4932
|
const triggerYPosition = pageTurnDirection === `horizontal` ? 0 : viewportPosition.y + context.state.visibleAreaRect.height * triggerPercentage;
|
|
4539
|
-
const midScreenPositionSafePosition = wrapPositionWithSafeEdge({
|
|
4933
|
+
const midScreenPositionSafePosition = wrapPositionWithSafeEdge({
|
|
4934
|
+
x: triggerXPosition,
|
|
4935
|
+
y: triggerYPosition
|
|
4936
|
+
});
|
|
4540
4937
|
return getNavigationForPosition(midScreenPositionSafePosition);
|
|
4541
4938
|
};
|
|
4542
4939
|
const isNavigationGoingForwardFrom = (to, from) => {
|
|
@@ -4631,7 +5028,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4631
5028
|
};
|
|
4632
5029
|
const getCurrentViewportPosition = () => {
|
|
4633
5030
|
var _a, _b;
|
|
4634
|
-
return getScaledDownPosition({
|
|
5031
|
+
return getScaledDownPosition({
|
|
5032
|
+
x: ((_a = element$.getValue()) == null ? void 0 : _a.scrollLeft) ?? 0,
|
|
5033
|
+
y: ((_b = element$.getValue()) == null ? void 0 : _b.scrollTop) ?? 0
|
|
5034
|
+
});
|
|
4635
5035
|
};
|
|
4636
5036
|
const navigationOnScroll$ = userScroll$.pipe(
|
|
4637
5037
|
operators.debounceTime(SCROLL_FINISHED_DEBOUNCE_TIMEOUT, rxjs.animationFrameScheduler),
|
|
@@ -4639,9 +5039,16 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4639
5039
|
operators.switchMap(() => {
|
|
4640
5040
|
var _a, _b;
|
|
4641
5041
|
const navigation = getNavigationForPosition(
|
|
4642
|
-
getScaledDownPosition({
|
|
5042
|
+
getScaledDownPosition({
|
|
5043
|
+
x: ((_a = element$.getValue()) == null ? void 0 : _a.scrollLeft) ?? 0,
|
|
5044
|
+
y: ((_b = element$.getValue()) == null ? void 0 : _b.scrollTop) ?? 0
|
|
5045
|
+
})
|
|
4643
5046
|
);
|
|
4644
|
-
return rxjs.of({
|
|
5047
|
+
return rxjs.of({
|
|
5048
|
+
position: navigation,
|
|
5049
|
+
animate: false,
|
|
5050
|
+
lastUserExpectedNavigation: void 0
|
|
5051
|
+
});
|
|
4645
5052
|
}),
|
|
4646
5053
|
operators.share()
|
|
4647
5054
|
);
|
|
@@ -4679,16 +5086,29 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4679
5086
|
}) => {
|
|
4680
5087
|
const stateSubject$ = new rxjs.BehaviorSubject(`end`);
|
|
4681
5088
|
const navigationTriggerSubject$ = new rxjs.Subject();
|
|
4682
|
-
const turnLeft = ({
|
|
4683
|
-
|
|
4684
|
-
|
|
5089
|
+
const turnLeft = ({
|
|
5090
|
+
allowSpineItemChange = true
|
|
5091
|
+
} = {}) => navigationTriggerSubject$.next({
|
|
5092
|
+
type: `leftPage`,
|
|
5093
|
+
data: { allowSpineItemChange }
|
|
5094
|
+
});
|
|
5095
|
+
const turnRight = ({
|
|
5096
|
+
allowSpineItemChange = true
|
|
5097
|
+
} = {}) => {
|
|
5098
|
+
navigationTriggerSubject$.next({
|
|
5099
|
+
type: `rightPage`,
|
|
5100
|
+
data: { allowSpineItemChange }
|
|
5101
|
+
});
|
|
4685
5102
|
};
|
|
4686
5103
|
const goToPageOfCurrentChapter = (pageIndex) => navigationTriggerSubject$.next({ type: `chapterPage`, data: { pageIndex } });
|
|
4687
5104
|
const goToPage = (pageIndex) => navigationTriggerSubject$.next({ type: `pageIndex`, data: { pageIndex } });
|
|
4688
5105
|
const goToCfi = (cfi, options = { animate: true }) => navigationTriggerSubject$.next({ type: `cfi`, data: { cfi, ...options } });
|
|
4689
5106
|
const goToUrl = (url) => navigationTriggerSubject$.next({ type: `url`, data: url });
|
|
4690
5107
|
const goToSpineItem = (indexOrId, options = { animate: true }) => {
|
|
4691
|
-
navigationTriggerSubject$.next({
|
|
5108
|
+
navigationTriggerSubject$.next({
|
|
5109
|
+
type: `spineItem`,
|
|
5110
|
+
data: { indexOrId, ...options }
|
|
5111
|
+
});
|
|
4692
5112
|
};
|
|
4693
5113
|
const urlNavigation$ = navigationTriggerSubject$.pipe(
|
|
4694
5114
|
operators.filter((e) => e.type === `url`),
|
|
@@ -4699,7 +5119,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4699
5119
|
return rxjs.of({
|
|
4700
5120
|
...navigation,
|
|
4701
5121
|
animate: true,
|
|
4702
|
-
lastUserExpectedNavigation: {
|
|
5122
|
+
lastUserExpectedNavigation: {
|
|
5123
|
+
type: `navigate-from-anchor`,
|
|
5124
|
+
data: navigation.url.hash
|
|
5125
|
+
}
|
|
4703
5126
|
});
|
|
4704
5127
|
}
|
|
4705
5128
|
return rxjs.EMPTY;
|
|
@@ -4709,7 +5132,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4709
5132
|
operators.filter((e) => e.type === `spineItem`),
|
|
4710
5133
|
operators.switchMap(({ data: { animate, indexOrId } }) => {
|
|
4711
5134
|
const navigation = navigator2.getNavigationForSpineIndexOrId(indexOrId);
|
|
4712
|
-
const lastUserExpectedNavigation = {
|
|
5135
|
+
const lastUserExpectedNavigation = {
|
|
5136
|
+
type: `navigate-from-previous-item`
|
|
5137
|
+
};
|
|
4713
5138
|
Report.log(NAMESPACE$2, `goToSpineItem`, { indexOrId, animate, navigation });
|
|
4714
5139
|
return rxjs.of({ ...navigation, animate, lastUserExpectedNavigation });
|
|
4715
5140
|
})
|
|
@@ -4722,7 +5147,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4722
5147
|
return {
|
|
4723
5148
|
...navigation,
|
|
4724
5149
|
animate,
|
|
4725
|
-
lastUserExpectedNavigation: {
|
|
5150
|
+
lastUserExpectedNavigation: {
|
|
5151
|
+
type: `navigate-from-cfi`,
|
|
5152
|
+
data: cfi
|
|
5153
|
+
}
|
|
4726
5154
|
};
|
|
4727
5155
|
})
|
|
4728
5156
|
);
|
|
@@ -4732,7 +5160,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4732
5160
|
const spineItem = spineItemManager.getFocusedSpineItem();
|
|
4733
5161
|
if (spineItem) {
|
|
4734
5162
|
const navigation = navigator2.getNavigationForPage(pageIndex, spineItem);
|
|
4735
|
-
return rxjs.of({
|
|
5163
|
+
return rxjs.of({
|
|
5164
|
+
...navigation,
|
|
5165
|
+
lastUserExpectedNavigation: void 0,
|
|
5166
|
+
animate: true
|
|
5167
|
+
});
|
|
4736
5168
|
}
|
|
4737
5169
|
return rxjs.EMPTY;
|
|
4738
5170
|
})
|
|
@@ -4765,26 +5197,31 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4765
5197
|
const spineItemHasChanged = newSpineItem !== currentSpineItem;
|
|
4766
5198
|
if (spineItemHasChanged) {
|
|
4767
5199
|
if (allowSpineItemChange) {
|
|
4768
|
-
const positionOfNewSpineItemComparedToCurrentOne = spineItemManager.comparePositionOf(
|
|
4769
|
-
newSpineItem,
|
|
4770
|
-
currentSpineItem
|
|
4771
|
-
);
|
|
5200
|
+
const positionOfNewSpineItemComparedToCurrentOne = spineItemManager.comparePositionOf(newSpineItem, currentSpineItem);
|
|
4772
5201
|
if (positionOfNewSpineItemComparedToCurrentOne === `before`) {
|
|
4773
5202
|
return rxjs.of({
|
|
4774
5203
|
...navigation,
|
|
4775
|
-
lastUserExpectedNavigation: {
|
|
5204
|
+
lastUserExpectedNavigation: {
|
|
5205
|
+
type: `navigate-from-next-item`
|
|
5206
|
+
},
|
|
4776
5207
|
animate: true
|
|
4777
5208
|
});
|
|
4778
5209
|
} else {
|
|
4779
5210
|
return rxjs.of({
|
|
4780
5211
|
...navigation,
|
|
4781
|
-
lastUserExpectedNavigation: {
|
|
5212
|
+
lastUserExpectedNavigation: {
|
|
5213
|
+
type: `navigate-from-previous-item`
|
|
5214
|
+
},
|
|
4782
5215
|
animate: true
|
|
4783
5216
|
});
|
|
4784
5217
|
}
|
|
4785
5218
|
}
|
|
4786
5219
|
} else {
|
|
4787
|
-
return rxjs.of({
|
|
5220
|
+
return rxjs.of({
|
|
5221
|
+
...navigation,
|
|
5222
|
+
lastUserExpectedNavigation: void 0,
|
|
5223
|
+
animate: true
|
|
5224
|
+
});
|
|
4788
5225
|
}
|
|
4789
5226
|
return rxjs.EMPTY;
|
|
4790
5227
|
}
|
|
@@ -4800,7 +5237,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4800
5237
|
currentNavigation
|
|
4801
5238
|
]) => {
|
|
4802
5239
|
const navigation = navigator2.getNavigationForLeftPage(currentNavigation);
|
|
4803
|
-
Report.log(NAMESPACE$2, `turnLeft`, {
|
|
5240
|
+
Report.log(NAMESPACE$2, `turnLeft`, {
|
|
5241
|
+
currentNavigation,
|
|
5242
|
+
navigation,
|
|
5243
|
+
allowSpineItemChange
|
|
5244
|
+
});
|
|
4804
5245
|
return turnPageTo$(navigation, { allowSpineItemChange });
|
|
4805
5246
|
}
|
|
4806
5247
|
)
|
|
@@ -4816,7 +5257,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4816
5257
|
currentNavigation
|
|
4817
5258
|
]) => {
|
|
4818
5259
|
const navigation = navigator2.getNavigationForRightPage(currentNavigation);
|
|
4819
|
-
Report.log(NAMESPACE$2, `turnRight`, {
|
|
5260
|
+
Report.log(NAMESPACE$2, `turnRight`, {
|
|
5261
|
+
currentNavigation,
|
|
5262
|
+
navigation,
|
|
5263
|
+
allowSpineItemChange
|
|
5264
|
+
});
|
|
4820
5265
|
return turnPageTo$(navigation, { allowSpineItemChange });
|
|
4821
5266
|
}
|
|
4822
5267
|
)
|
|
@@ -4836,7 +5281,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4836
5281
|
* navigation would theoretically always move to different items.
|
|
4837
5282
|
*/
|
|
4838
5283
|
operators.withLatestFrom(currentNavigationSubject$),
|
|
4839
|
-
operators.filter(
|
|
5284
|
+
operators.filter(
|
|
5285
|
+
([navigation, currentNavigation]) => navigator2.areNavigationDifferent(navigation, currentNavigation)
|
|
5286
|
+
),
|
|
4840
5287
|
operators.map(([navigation]) => navigation)
|
|
4841
5288
|
);
|
|
4842
5289
|
return {
|
|
@@ -4927,7 +5374,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4927
5374
|
const spineItemHasChanged = newSpineItem !== currentSpineItem;
|
|
4928
5375
|
if (spineItemHasChanged) {
|
|
4929
5376
|
if (allowSpineItemChange) {
|
|
4930
|
-
if (spineItemManager.comparePositionOf(
|
|
5377
|
+
if (spineItemManager.comparePositionOf(
|
|
5378
|
+
newSpineItem,
|
|
5379
|
+
currentSpineItem
|
|
5380
|
+
) === `before`) {
|
|
4931
5381
|
return { type: `navigate-from-next-item` };
|
|
4932
5382
|
} else {
|
|
4933
5383
|
return { type: `navigate-from-previous-item` };
|
|
@@ -4957,7 +5407,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
4957
5407
|
x: triggerXPosition,
|
|
4958
5408
|
y: triggerYPosition
|
|
4959
5409
|
});
|
|
4960
|
-
const finalNavigation = navigator2.getNavigationForPosition(
|
|
5410
|
+
const finalNavigation = navigator2.getNavigationForPosition(
|
|
5411
|
+
midScreenPositionSafePosition
|
|
5412
|
+
);
|
|
4961
5413
|
const lastUserExpectedNavigation = getLastUserExpectedNavigation(finalNavigation);
|
|
4962
5414
|
return rxjs.of({ ...finalNavigation, lastUserExpectedNavigation });
|
|
4963
5415
|
}
|
|
@@ -5009,23 +5461,30 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5009
5461
|
locator: spineLocator
|
|
5010
5462
|
});
|
|
5011
5463
|
const adjustNavigationSubject$ = new rxjs.Subject();
|
|
5012
|
-
const getCurrentViewportPosition = Report.measurePerformance(
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5464
|
+
const getCurrentViewportPosition = Report.measurePerformance(
|
|
5465
|
+
`${NAMESPACE} getCurrentViewportPosition`,
|
|
5466
|
+
1,
|
|
5467
|
+
() => {
|
|
5468
|
+
var _a;
|
|
5469
|
+
if (settings.settings.computedPageTurnMode === `scrollable`) {
|
|
5470
|
+
return scrollViewportNavigator.getCurrentViewportPosition();
|
|
5471
|
+
}
|
|
5472
|
+
const { x, y } = ((_a = element$.getValue()) == null ? void 0 : _a.getBoundingClientRect()) ?? {
|
|
5473
|
+
x: 0,
|
|
5474
|
+
y: 0
|
|
5475
|
+
};
|
|
5476
|
+
const newValue = {
|
|
5477
|
+
// we want to round to first decimal because it's possible to have half pixel
|
|
5478
|
+
// however browser engine can also gives back x.yyyy based on their precision
|
|
5479
|
+
// @see https://stackoverflow.com/questions/13847053/difference-between-and-math-floor for ~~
|
|
5480
|
+
x: ~~(x * -1 * 10) / 10,
|
|
5481
|
+
// x: ~~(x * 10) / 10,
|
|
5482
|
+
y: ~~(Math.abs(y) * 10) / 10
|
|
5483
|
+
};
|
|
5484
|
+
currentViewportPositionMemoUnused = newValue;
|
|
5485
|
+
return currentViewportPositionMemoUnused;
|
|
5016
5486
|
}
|
|
5017
|
-
|
|
5018
|
-
const newValue = {
|
|
5019
|
-
// we want to round to first decimal because it's possible to have half pixel
|
|
5020
|
-
// however browser engine can also gives back x.yyyy based on their precision
|
|
5021
|
-
// @see https://stackoverflow.com/questions/13847053/difference-between-and-math-floor for ~~
|
|
5022
|
-
x: ~~(x * -1 * 10) / 10,
|
|
5023
|
-
// x: ~~(x * 10) / 10,
|
|
5024
|
-
y: ~~(Math.abs(y) * 10) / 10
|
|
5025
|
-
};
|
|
5026
|
-
currentViewportPositionMemoUnused = newValue;
|
|
5027
|
-
return currentViewportPositionMemoUnused;
|
|
5028
|
-
});
|
|
5487
|
+
);
|
|
5029
5488
|
const panViewportNavigator = createPanViewportNavigator({
|
|
5030
5489
|
context,
|
|
5031
5490
|
settings,
|
|
@@ -5051,8 +5510,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5051
5510
|
spineItemManager,
|
|
5052
5511
|
locator: spineLocator
|
|
5053
5512
|
});
|
|
5054
|
-
const viewportNavigators = [
|
|
5055
|
-
|
|
5513
|
+
const viewportNavigators = [
|
|
5514
|
+
scrollViewportNavigator,
|
|
5515
|
+
panViewportNavigator,
|
|
5516
|
+
manualViewportNavigator
|
|
5517
|
+
];
|
|
5518
|
+
const viewportNavigatorsSharedState$ = rxjs.merge(
|
|
5519
|
+
...viewportNavigators.map(({ $: { state$: state$2 } }) => state$2)
|
|
5520
|
+
);
|
|
5056
5521
|
let lastUserExpectedNavigation;
|
|
5057
5522
|
const makeItHot = (source$) => {
|
|
5058
5523
|
source$.pipe(operators.takeUntil(context.destroy$)).subscribe();
|
|
@@ -5080,28 +5545,51 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5080
5545
|
let adjustedSpinePosition = currentNavigationPositionSubject$.value;
|
|
5081
5546
|
const offsetInSpineItem = 0;
|
|
5082
5547
|
if (settings.settings.computedPageTurnMode === `scrollable`) {
|
|
5083
|
-
adjustedSpinePosition = scrollViewportNavigator.getNavigationForPosition(
|
|
5548
|
+
adjustedSpinePosition = scrollViewportNavigator.getNavigationForPosition(
|
|
5549
|
+
getCurrentViewportPosition()
|
|
5550
|
+
);
|
|
5084
5551
|
} else if ((lastUserExpectedNavigation == null ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-cfi`) {
|
|
5085
|
-
adjustedSpinePosition = navigator2.getNavigationForCfi(
|
|
5086
|
-
|
|
5552
|
+
adjustedSpinePosition = navigator2.getNavigationForCfi(
|
|
5553
|
+
lastUserExpectedNavigation.data
|
|
5554
|
+
);
|
|
5555
|
+
Report.log(
|
|
5556
|
+
NAMESPACE,
|
|
5557
|
+
`adjustNavigation`,
|
|
5558
|
+
`navigate-from-cfi`,
|
|
5559
|
+
`use last cfi`
|
|
5560
|
+
);
|
|
5087
5561
|
} else if ((lastUserExpectedNavigation == null ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-next-item`) {
|
|
5088
5562
|
adjustedSpinePosition = navigator2.getNavigationForLastPage(spineItem);
|
|
5089
5563
|
Report.log(NAMESPACE, `adjustNavigation`, `navigate-from-next-item`, {});
|
|
5090
5564
|
} else if ((lastUserExpectedNavigation == null ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-previous-item`) {
|
|
5091
5565
|
adjustedSpinePosition = navigator2.getNavigationForPage(0, spineItem);
|
|
5092
|
-
Report.log(
|
|
5566
|
+
Report.log(
|
|
5567
|
+
NAMESPACE,
|
|
5568
|
+
`adjustNavigation`,
|
|
5569
|
+
`navigate-from-previous-item`,
|
|
5570
|
+
{}
|
|
5571
|
+
);
|
|
5093
5572
|
} else if ((lastUserExpectedNavigation == null ? void 0 : lastUserExpectedNavigation.type) === `navigate-from-anchor`) {
|
|
5094
5573
|
const anchor = lastUserExpectedNavigation.data;
|
|
5095
|
-
adjustedSpinePosition = navigator2.getNavigationForAnchor(
|
|
5574
|
+
adjustedSpinePosition = navigator2.getNavigationForAnchor(
|
|
5575
|
+
anchor,
|
|
5576
|
+
spineItem
|
|
5577
|
+
);
|
|
5096
5578
|
} else if (lastCfi) {
|
|
5097
5579
|
adjustedSpinePosition = navigator2.getNavigationForCfi(lastCfi);
|
|
5098
5580
|
Report.log(NAMESPACE, `adjustNavigation`, `use last cfi`);
|
|
5099
5581
|
} else {
|
|
5100
5582
|
const currentPageIndex = pagination.getPaginationInfo().beginPageIndexInSpineItem || 0;
|
|
5101
|
-
adjustedSpinePosition = navigator2.getNavigationForPage(
|
|
5583
|
+
adjustedSpinePosition = navigator2.getNavigationForPage(
|
|
5584
|
+
currentPageIndex,
|
|
5585
|
+
spineItem
|
|
5586
|
+
);
|
|
5102
5587
|
Report.log(NAMESPACE, `adjustNavigation`, `use guess strategy`, {});
|
|
5103
5588
|
}
|
|
5104
|
-
const areDifferent = navigator2.arePositionsDifferent(
|
|
5589
|
+
const areDifferent = navigator2.arePositionsDifferent(
|
|
5590
|
+
adjustedSpinePosition,
|
|
5591
|
+
currentNavigationPositionSubject$.value
|
|
5592
|
+
);
|
|
5105
5593
|
Report.log(NAMESPACE, `adjustNavigation`, {
|
|
5106
5594
|
areDifferent,
|
|
5107
5595
|
offsetInSpineItem,
|
|
@@ -5125,7 +5613,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5125
5613
|
currentViewportPositionMemoUnused = void 0;
|
|
5126
5614
|
});
|
|
5127
5615
|
const layoutChangeSettings$ = settings.settings$.pipe(
|
|
5128
|
-
mapKeysTo([
|
|
5616
|
+
mapKeysTo([
|
|
5617
|
+
`computedPageTurnDirection`,
|
|
5618
|
+
`computedPageTurnMode`,
|
|
5619
|
+
`numberOfAdjacentSpineItemToPreLoad`
|
|
5620
|
+
]),
|
|
5129
5621
|
operators.distinctUntilChanged(isShallowEqual),
|
|
5130
5622
|
operators.skip(1)
|
|
5131
5623
|
);
|
|
@@ -5237,10 +5729,16 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5237
5729
|
const noAdjustmentNeeded = false;
|
|
5238
5730
|
if (data.shouldAnimate && !noAdjustmentNeeded) {
|
|
5239
5731
|
if (pageTurnAnimation === `fade`) {
|
|
5240
|
-
element$.getValue().style.setProperty(
|
|
5732
|
+
element$.getValue().style.setProperty(
|
|
5733
|
+
`transition`,
|
|
5734
|
+
`opacity ${animationDuration / 2}ms`
|
|
5735
|
+
);
|
|
5241
5736
|
element$.getValue().style.setProperty(`opacity`, `0`);
|
|
5242
5737
|
} else if (currentEvent.animation === `snap` || pageTurnAnimation === `slide`) {
|
|
5243
|
-
element$.getValue().style.setProperty(
|
|
5738
|
+
element$.getValue().style.setProperty(
|
|
5739
|
+
`transition`,
|
|
5740
|
+
`transform ${animationDuration}ms`
|
|
5741
|
+
);
|
|
5244
5742
|
element$.getValue().style.setProperty(`opacity`, `1`);
|
|
5245
5743
|
}
|
|
5246
5744
|
} else {
|
|
@@ -5289,8 +5787,13 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5289
5787
|
rxjs.merge(manualAdjust$).pipe(operators.map(() => `start`)),
|
|
5290
5788
|
rxjs.merge(processManualAdjust$).pipe(operators.map(() => `end`))
|
|
5291
5789
|
);
|
|
5292
|
-
const state$ = rxjs.combineLatest([
|
|
5293
|
-
|
|
5790
|
+
const state$ = rxjs.combineLatest([
|
|
5791
|
+
...viewportNavigators.map(({ $: { state$: state$2 } }) => state$2),
|
|
5792
|
+
adjustmentState$
|
|
5793
|
+
]).pipe(
|
|
5794
|
+
operators.map(
|
|
5795
|
+
(states) => states.every((state) => state === `end`) ? `free` : `busy`
|
|
5796
|
+
),
|
|
5294
5797
|
operators.distinctUntilChanged(),
|
|
5295
5798
|
operators.shareReplay(1),
|
|
5296
5799
|
/**
|
|
@@ -5380,7 +5883,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5380
5883
|
position: relative;
|
|
5381
5884
|
`;
|
|
5382
5885
|
element.className = `${HTML_PREFIX$1}-viewport-navigator`;
|
|
5383
|
-
hookManager.execute("viewportNavigator.onBeforeContainerCreated", void 0, {
|
|
5886
|
+
hookManager.execute("viewportNavigator.onBeforeContainerCreated", void 0, {
|
|
5887
|
+
element
|
|
5888
|
+
});
|
|
5384
5889
|
return element;
|
|
5385
5890
|
};
|
|
5386
5891
|
const createLocationResolver = ({
|
|
@@ -5439,8 +5944,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5439
5944
|
return getSpinePositionFromSpineItemPosition({ x: 0, y: 0 }, spineItem);
|
|
5440
5945
|
};
|
|
5441
5946
|
const getSpinePositionFromSpineItemAnchor = (anchor, spineItem) => {
|
|
5442
|
-
const spineItemOffset = spineItemLocator.getSpineItemOffsetFromAnchor(
|
|
5443
|
-
|
|
5947
|
+
const spineItemOffset = spineItemLocator.getSpineItemOffsetFromAnchor(
|
|
5948
|
+
anchor,
|
|
5949
|
+
spineItem
|
|
5950
|
+
);
|
|
5951
|
+
const position = getSpinePositionFromSpineItemPosition(
|
|
5952
|
+
{ x: spineItemOffset, y: 0 },
|
|
5953
|
+
spineItem
|
|
5954
|
+
);
|
|
5444
5955
|
return position;
|
|
5445
5956
|
};
|
|
5446
5957
|
const getSpineItemsFromReadingOrderPosition = (position) => {
|
|
@@ -5449,7 +5960,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5449
5960
|
if (itemAtPositionIndex === void 0) return void 0;
|
|
5450
5961
|
let endPosition = position;
|
|
5451
5962
|
if (context.state.isUsingSpreadMode) {
|
|
5452
|
-
endPosition = {
|
|
5963
|
+
endPosition = {
|
|
5964
|
+
x: position.x + context.getPageSize().width,
|
|
5965
|
+
y: position.y
|
|
5966
|
+
};
|
|
5453
5967
|
}
|
|
5454
5968
|
const endItemIndex = spineItemManager.getSpineItemIndex(
|
|
5455
5969
|
getSpineItemFromPosition(endPosition) || spineItemManager.getFocusedSpineItem()
|
|
@@ -5477,9 +5991,17 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5477
5991
|
const getSpineItemPageIndexFromNode = (node, offset, spineItemOrIndex) => {
|
|
5478
5992
|
if (typeof spineItemOrIndex === `number`) {
|
|
5479
5993
|
const spineItem = spineItemManager.get(spineItemOrIndex);
|
|
5480
|
-
return spineItem ? spineItemLocator.getSpineItemPageIndexFromNode(
|
|
5994
|
+
return spineItem ? spineItemLocator.getSpineItemPageIndexFromNode(
|
|
5995
|
+
node,
|
|
5996
|
+
offset || 0,
|
|
5997
|
+
spineItem
|
|
5998
|
+
) : void 0;
|
|
5481
5999
|
}
|
|
5482
|
-
return spineItemLocator.getSpineItemPageIndexFromNode(
|
|
6000
|
+
return spineItemLocator.getSpineItemPageIndexFromNode(
|
|
6001
|
+
node,
|
|
6002
|
+
offset || 0,
|
|
6003
|
+
spineItemOrIndex
|
|
6004
|
+
);
|
|
5483
6005
|
};
|
|
5484
6006
|
return {
|
|
5485
6007
|
getSpinePositionFromSpineItemPosition,
|
|
@@ -5497,18 +6019,29 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5497
6019
|
spineItemLocator
|
|
5498
6020
|
}) => {
|
|
5499
6021
|
const getItemAnchor = (spineItem) => `|[prose~anchor~${encodeURIComponent(spineItem.item.id)}]`;
|
|
5500
|
-
const getCfi = Report.measurePerformance(
|
|
5501
|
-
|
|
5502
|
-
|
|
5503
|
-
|
|
5504
|
-
|
|
5505
|
-
|
|
5506
|
-
|
|
5507
|
-
|
|
5508
|
-
|
|
6022
|
+
const getCfi = Report.measurePerformance(
|
|
6023
|
+
`getCfi`,
|
|
6024
|
+
10,
|
|
6025
|
+
(pageIndex, spineItem) => {
|
|
6026
|
+
var _a, _b, _c;
|
|
6027
|
+
const nodeOrRange = spineItemLocator.getFirstNodeOrRangeAtPage(
|
|
6028
|
+
pageIndex,
|
|
6029
|
+
spineItem
|
|
6030
|
+
);
|
|
6031
|
+
const doc = (_c = (_b = (_a = spineItem.spineItemFrame.getManipulableFrame()) == null ? void 0 : _a.frame) == null ? void 0 : _b.contentWindow) == null ? void 0 : _c.document;
|
|
6032
|
+
const itemAnchor = getItemAnchor(spineItem);
|
|
6033
|
+
const offset = `|[prose~offset~${(nodeOrRange == null ? void 0 : nodeOrRange.offset) || 0}]`;
|
|
6034
|
+
if (nodeOrRange && doc) {
|
|
6035
|
+
const cfiString = CFI.generate(
|
|
6036
|
+
nodeOrRange.node,
|
|
6037
|
+
0,
|
|
6038
|
+
`${itemAnchor}${offset}`
|
|
6039
|
+
);
|
|
6040
|
+
return cfiString;
|
|
6041
|
+
}
|
|
6042
|
+
return getRootCfi(spineItem);
|
|
5509
6043
|
}
|
|
5510
|
-
|
|
5511
|
-
});
|
|
6044
|
+
);
|
|
5512
6045
|
const getRootCfi = (spineItem) => {
|
|
5513
6046
|
const itemAnchor = getItemAnchor(spineItem);
|
|
5514
6047
|
return `epubcfi(/0${itemAnchor}) `;
|
|
@@ -5555,9 +6088,22 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5555
6088
|
spineItemIndex
|
|
5556
6089
|
};
|
|
5557
6090
|
};
|
|
5558
|
-
const generateFromRange = ({
|
|
5559
|
-
|
|
5560
|
-
|
|
6091
|
+
const generateFromRange = ({
|
|
6092
|
+
startNode,
|
|
6093
|
+
start,
|
|
6094
|
+
end,
|
|
6095
|
+
endNode
|
|
6096
|
+
}, item) => {
|
|
6097
|
+
const startCFI = CFI.generate(
|
|
6098
|
+
startNode,
|
|
6099
|
+
start,
|
|
6100
|
+
`|[prose~anchor~${encodeURIComponent(item.id)}]`
|
|
6101
|
+
);
|
|
6102
|
+
const endCFI = CFI.generate(
|
|
6103
|
+
endNode,
|
|
6104
|
+
end,
|
|
6105
|
+
`|[prose~anchor~${encodeURIComponent(item.id)}]`
|
|
6106
|
+
);
|
|
5561
6107
|
return { start: startCFI, end: endCFI };
|
|
5562
6108
|
};
|
|
5563
6109
|
return {
|
|
@@ -5569,19 +6115,57 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5569
6115
|
generateFromRange
|
|
5570
6116
|
};
|
|
5571
6117
|
};
|
|
5572
|
-
class
|
|
5573
|
-
constructor(initialSettings
|
|
5574
|
-
__privateAdd(this, _context);
|
|
5575
|
-
__privateSet(this, _context, context);
|
|
6118
|
+
class SettingsManager {
|
|
6119
|
+
constructor(initialSettings) {
|
|
5576
6120
|
const settingsWithDefaults = {
|
|
5577
6121
|
...this.getDefaultSettings(),
|
|
5578
6122
|
...initialSettings
|
|
5579
6123
|
};
|
|
5580
|
-
|
|
5581
|
-
this.outputSettings = outputSettings;
|
|
6124
|
+
this.inputSettings = settingsWithDefaults;
|
|
5582
6125
|
this.outputSettingsUpdateSubject = new rxjs.Subject();
|
|
5583
|
-
this.settings$ = this.outputSettingsUpdateSubject.asObservable().pipe(operators.
|
|
5584
|
-
|
|
6126
|
+
this.settings$ = this.outputSettingsUpdateSubject.asObservable().pipe(operators.shareReplay(1));
|
|
6127
|
+
this.settings$.subscribe();
|
|
6128
|
+
}
|
|
6129
|
+
_prepareUpdate(settings) {
|
|
6130
|
+
const newInputSettings = shallowMergeIfDefined(this.inputSettings, settings);
|
|
6131
|
+
const state = this.getOutputSettings(newInputSettings);
|
|
6132
|
+
const hasChanged = !isShallowEqual(this.outputSettings, state);
|
|
6133
|
+
return {
|
|
6134
|
+
hasChanged,
|
|
6135
|
+
state,
|
|
6136
|
+
commit: () => {
|
|
6137
|
+
this.inputSettings = newInputSettings;
|
|
6138
|
+
this.outputSettings = state;
|
|
6139
|
+
if (hasChanged) {
|
|
6140
|
+
this.outputSettingsUpdateSubject.next(state);
|
|
6141
|
+
}
|
|
6142
|
+
return state;
|
|
6143
|
+
}
|
|
6144
|
+
};
|
|
6145
|
+
}
|
|
6146
|
+
update(settings) {
|
|
6147
|
+
const { commit } = this._prepareUpdate(settings);
|
|
6148
|
+
commit();
|
|
6149
|
+
}
|
|
6150
|
+
get settings() {
|
|
6151
|
+
if (!this.outputSettings) {
|
|
6152
|
+
const { commit } = this._prepareUpdate(this.inputSettings);
|
|
6153
|
+
return commit();
|
|
6154
|
+
}
|
|
6155
|
+
return this.outputSettings;
|
|
6156
|
+
}
|
|
6157
|
+
destroy() {
|
|
6158
|
+
this.outputSettingsUpdateSubject.complete();
|
|
6159
|
+
}
|
|
6160
|
+
}
|
|
6161
|
+
class ReaderSettingsManager extends SettingsManager {
|
|
6162
|
+
constructor(initialSettings, context) {
|
|
6163
|
+
super(initialSettings);
|
|
6164
|
+
this.context = context;
|
|
6165
|
+
const recomputeSettingsOnContextChange$ = rxjs.combineLatest([
|
|
6166
|
+
context.hasVerticalWriting$,
|
|
6167
|
+
context.manifest$
|
|
6168
|
+
]).pipe(
|
|
5585
6169
|
operators.tap(() => {
|
|
5586
6170
|
this.update(this.settings);
|
|
5587
6171
|
})
|
|
@@ -5595,8 +6179,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5595
6179
|
this.settings$.subscribe();
|
|
5596
6180
|
}
|
|
5597
6181
|
getComputedSettings(settings) {
|
|
5598
|
-
const manifest =
|
|
5599
|
-
const hasVerticalWriting =
|
|
6182
|
+
const manifest = this.context.manifest;
|
|
6183
|
+
const hasVerticalWriting = this.context.state.hasVerticalWriting ?? false;
|
|
5600
6184
|
const computedSettings = {
|
|
5601
6185
|
computedPageTurnDirection: settings.pageTurnDirection,
|
|
5602
6186
|
computedPageTurnAnimation: settings.pageTurnAnimation,
|
|
@@ -5607,7 +6191,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5607
6191
|
computedSettings.computedPageTurnMode = `scrollable`;
|
|
5608
6192
|
computedSettings.computedPageTurnDirection = `vertical`;
|
|
5609
6193
|
} else if (manifest && settings.pageTurnMode === `scrollable` && (manifest.renditionLayout !== `pre-paginated` || !areAllItemsPrePaginated(manifest))) {
|
|
5610
|
-
Report.warn(
|
|
6194
|
+
Report.warn(
|
|
6195
|
+
`pageTurnMode ${settings.pageTurnMode} incompatible with current book, switching back to default`
|
|
6196
|
+
);
|
|
5611
6197
|
computedSettings.computedPageTurnAnimation = `none`;
|
|
5612
6198
|
computedSettings.computedPageTurnMode = `controlled`;
|
|
5613
6199
|
} else if (settings.pageTurnMode === `scrollable`) {
|
|
@@ -5628,22 +6214,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5628
6214
|
}
|
|
5629
6215
|
return computedSettings;
|
|
5630
6216
|
}
|
|
5631
|
-
_prepareUpdate(settings) {
|
|
5632
|
-
const state = this.getOutputSettings(settings);
|
|
5633
|
-
const hasChanged = !isShallowEqual(this.outputSettings, state);
|
|
5634
|
-
return {
|
|
5635
|
-
hasChanged,
|
|
5636
|
-
state,
|
|
5637
|
-
commit: () => {
|
|
5638
|
-
this.outputSettings = state;
|
|
5639
|
-
if (hasChanged) {
|
|
5640
|
-
this.outputSettingsUpdateSubject.next(state);
|
|
5641
|
-
}
|
|
5642
|
-
}
|
|
5643
|
-
};
|
|
5644
|
-
}
|
|
5645
6217
|
getOutputSettings(inputSettings) {
|
|
5646
|
-
const computedSettings = this.getComputedSettings(
|
|
6218
|
+
const computedSettings = this.getComputedSettings(inputSettings);
|
|
5647
6219
|
return { ...this.outputSettings, ...inputSettings, ...computedSettings };
|
|
5648
6220
|
}
|
|
5649
6221
|
getDefaultSettings() {
|
|
@@ -5662,18 +6234,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5662
6234
|
numberOfAdjacentSpineItemToPreLoad: 0
|
|
5663
6235
|
};
|
|
5664
6236
|
}
|
|
5665
|
-
update(settings) {
|
|
5666
|
-
const { commit } = this._prepareUpdate(settings);
|
|
5667
|
-
commit();
|
|
5668
|
-
}
|
|
5669
|
-
get settings() {
|
|
5670
|
-
return this.outputSettings;
|
|
5671
|
-
}
|
|
5672
|
-
destroy() {
|
|
5673
|
-
this.outputSettingsUpdateSubject.complete();
|
|
5674
|
-
}
|
|
5675
6237
|
}
|
|
5676
|
-
_context = new WeakMap();
|
|
5677
6238
|
class HookManager {
|
|
5678
6239
|
constructor() {
|
|
5679
6240
|
this._hooks = [];
|
|
@@ -5704,7 +6265,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5704
6265
|
};
|
|
5705
6266
|
}
|
|
5706
6267
|
execute(name, id, params) {
|
|
5707
|
-
const hooks = this._hooks.filter(
|
|
6268
|
+
const hooks = this._hooks.filter(
|
|
6269
|
+
(hook) => name === hook.name
|
|
6270
|
+
);
|
|
5708
6271
|
const fnResults = hooks.map((hook) => {
|
|
5709
6272
|
let userDestroyFn = () => rxjs.of(void 0);
|
|
5710
6273
|
const destroySubject = new rxjs.Subject();
|
|
@@ -5717,7 +6280,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5717
6280
|
const result = userDestroyFn();
|
|
5718
6281
|
return result ?? rxjs.of(void 0);
|
|
5719
6282
|
};
|
|
5720
|
-
const fnResult = hook.runFn({
|
|
6283
|
+
const fnResult = hook.runFn({
|
|
6284
|
+
...params,
|
|
6285
|
+
destroy$: destroySubject.asObservable(),
|
|
6286
|
+
destroy
|
|
6287
|
+
});
|
|
5721
6288
|
this._hookExecutions.push({
|
|
5722
6289
|
name,
|
|
5723
6290
|
id,
|
|
@@ -5736,7 +6303,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5736
6303
|
name === hookInstance.name && (!id || id && id === hookInstance.id)
|
|
5737
6304
|
)
|
|
5738
6305
|
);
|
|
5739
|
-
this._hookExecutions = this._hookExecutions.filter(
|
|
6306
|
+
this._hookExecutions = this._hookExecutions.filter(
|
|
6307
|
+
(instance) => !instances.includes(instance)
|
|
6308
|
+
);
|
|
5740
6309
|
const destroyFns = instances.map(({ destroyFn }) => destroyFn());
|
|
5741
6310
|
return rxjs.combineLatest(destroyFns);
|
|
5742
6311
|
}
|
|
@@ -5757,9 +6326,14 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5757
6326
|
const hookManager = new HookManager();
|
|
5758
6327
|
const context = new Context();
|
|
5759
6328
|
const settingsManager = new ReaderSettingsManager(inputSettings, context);
|
|
5760
|
-
const spineItemManager = createSpineItemManager({
|
|
6329
|
+
const spineItemManager = createSpineItemManager({
|
|
6330
|
+
context,
|
|
6331
|
+
settings: settingsManager
|
|
6332
|
+
});
|
|
5761
6333
|
const pagination = createPagination({ context, spineItemManager });
|
|
5762
|
-
const elementSubject$ = new rxjs.BehaviorSubject(
|
|
6334
|
+
const elementSubject$ = new rxjs.BehaviorSubject(
|
|
6335
|
+
void 0
|
|
6336
|
+
);
|
|
5763
6337
|
const element$ = elementSubject$.pipe(operators.filter(isDefined));
|
|
5764
6338
|
const spineItemLocator = createLocationResolver$1({ context });
|
|
5765
6339
|
const spineLocator = createLocationResolver({
|
|
@@ -5802,8 +6376,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5802
6376
|
});
|
|
5803
6377
|
viewportNavigator.$.state$.subscribe(viewportStateSubject);
|
|
5804
6378
|
viewportNavigator.$.navigation$.subscribe(navigationSubject);
|
|
5805
|
-
viewportNavigator.$.navigationAdjustedAfterLayout$.subscribe(
|
|
5806
|
-
|
|
6379
|
+
viewportNavigator.$.navigationAdjustedAfterLayout$.subscribe(
|
|
6380
|
+
navigationAdjustedSubject
|
|
6381
|
+
);
|
|
6382
|
+
viewportNavigator.$.currentNavigationPosition$.subscribe(
|
|
6383
|
+
currentNavigationPositionSubject$
|
|
6384
|
+
);
|
|
5807
6385
|
const layout = () => {
|
|
5808
6386
|
var _a;
|
|
5809
6387
|
const containerElement = (_a = elementSubject$.getValue()) == null ? void 0 : _a.parentElement;
|
|
@@ -5845,7 +6423,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5845
6423
|
elementSubject$.next(element);
|
|
5846
6424
|
loadOptions.containerElement.appendChild(element);
|
|
5847
6425
|
}
|
|
5848
|
-
context.update({
|
|
6426
|
+
context.update({
|
|
6427
|
+
manifest,
|
|
6428
|
+
...loadOptions,
|
|
6429
|
+
forceSinglePageMode: settingsManager.settings.forceSinglePageMode
|
|
6430
|
+
});
|
|
5849
6431
|
layout();
|
|
5850
6432
|
if (!loadOptions.cfi) {
|
|
5851
6433
|
viewportNavigator.goToSpineItem(0, { animate: false });
|
|
@@ -5930,7 +6512,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
5930
6512
|
* have an effect.
|
|
5931
6513
|
* It can typically be used to hide a loading indicator.
|
|
5932
6514
|
*/
|
|
5933
|
-
loadStatus$: context.manifest$.pipe(
|
|
6515
|
+
loadStatus$: context.manifest$.pipe(
|
|
6516
|
+
operators.map((manifest) => manifest ? "ready" : "idle")
|
|
6517
|
+
),
|
|
5934
6518
|
/**
|
|
5935
6519
|
* Dispatched when a change in selection happens
|
|
5936
6520
|
*/
|
|
@@ -6097,7 +6681,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6097
6681
|
operators.mergeMap(({ id, data }) => {
|
|
6098
6682
|
const item = retrieveItem(id);
|
|
6099
6683
|
if (!item) return rxjs.EMPTY;
|
|
6100
|
-
return rxjs.from(
|
|
6684
|
+
return rxjs.from(
|
|
6685
|
+
rxjs.forkJoin([openDatabase(`prose-reader`), rxjs.from(data.blob())])
|
|
6686
|
+
).pipe(
|
|
6101
6687
|
operators.switchMap(([db, blob]) => {
|
|
6102
6688
|
return rxjs.from(db.put(`${uniqueID}_${item.id}`, blob));
|
|
6103
6689
|
}),
|
|
@@ -6120,7 +6706,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6120
6706
|
return rxjs.from(openDatabase(`prose-reader`)).pipe(
|
|
6121
6707
|
operators.switchMap(
|
|
6122
6708
|
(db) => rxjs.from(db.keys()).pipe(
|
|
6123
|
-
operators.map(
|
|
6709
|
+
operators.map(
|
|
6710
|
+
(keys) => keys.filter((key) => !key.toString().startsWith(uniqueID))
|
|
6711
|
+
),
|
|
6124
6712
|
operators.switchMap((keysToRemove) => {
|
|
6125
6713
|
const promises = keysToRemove.map((key) => db.remove(key));
|
|
6126
6714
|
return rxjs.from(Promise.all(promises));
|
|
@@ -6167,7 +6755,9 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6167
6755
|
entries.forEach((entry) => {
|
|
6168
6756
|
var _a;
|
|
6169
6757
|
const frame = entry.target;
|
|
6170
|
-
const audios = Array.from(
|
|
6758
|
+
const audios = Array.from(
|
|
6759
|
+
((_a = frame.contentDocument) == null ? void 0 : _a.body.getElementsByTagName(`audio`)) || []
|
|
6760
|
+
);
|
|
6171
6761
|
if (!entry.isIntersecting) {
|
|
6172
6762
|
audios.forEach((audioElement) => {
|
|
6173
6763
|
audioElement.pause();
|
|
@@ -6246,7 +6836,11 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6246
6836
|
let totalProgress = estimateBeforeThisItem + progressWithinThisItem;
|
|
6247
6837
|
if (((_f = context.manifest) == null ? void 0 : _f.renditionFlow) === `scrolled-continuous`) {
|
|
6248
6838
|
if (currentItem.isReady()) {
|
|
6249
|
-
progressWithinThisItem = getScrollPercentageWithinItem(
|
|
6839
|
+
progressWithinThisItem = getScrollPercentageWithinItem(
|
|
6840
|
+
context,
|
|
6841
|
+
currentPosition,
|
|
6842
|
+
currentItem
|
|
6843
|
+
);
|
|
6250
6844
|
} else {
|
|
6251
6845
|
progressWithinThisItem = 0;
|
|
6252
6846
|
}
|
|
@@ -6268,9 +6862,21 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6268
6862
|
const { height, width } = currentItem.getElementDimensions();
|
|
6269
6863
|
const { top, left } = reader.spineItemManager.getAbsolutePositionOf(currentItem);
|
|
6270
6864
|
if (reader.settings.settings.computedPageTurnDirection === `vertical`) {
|
|
6271
|
-
return Math.max(
|
|
6865
|
+
return Math.max(
|
|
6866
|
+
0,
|
|
6867
|
+
Math.min(
|
|
6868
|
+
1,
|
|
6869
|
+
(currentPosition.y - top + context.state.visibleAreaRect.height) / height
|
|
6870
|
+
)
|
|
6871
|
+
);
|
|
6272
6872
|
} else {
|
|
6273
|
-
return Math.max(
|
|
6873
|
+
return Math.max(
|
|
6874
|
+
0,
|
|
6875
|
+
Math.min(
|
|
6876
|
+
1,
|
|
6877
|
+
(currentPosition.x - left + context.state.visibleAreaRect.width) / width
|
|
6878
|
+
)
|
|
6879
|
+
);
|
|
6274
6880
|
}
|
|
6275
6881
|
};
|
|
6276
6882
|
return {
|
|
@@ -6330,19 +6936,25 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6330
6936
|
const webkitEnhancer = (createReader2) => (options) => {
|
|
6331
6937
|
const reader = createReader2(options);
|
|
6332
6938
|
if (IS_SAFARI) {
|
|
6333
|
-
reader.hookManager.register(
|
|
6334
|
-
|
|
6939
|
+
reader.hookManager.register(
|
|
6940
|
+
"viewportNavigator.onBeforeContainerCreated",
|
|
6941
|
+
({ element }) => {
|
|
6942
|
+
element.style.cssText = `
|
|
6335
6943
|
${element.style.cssText}
|
|
6336
6944
|
-webkit-transform-style: preserve-3d;
|
|
6337
6945
|
`;
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6946
|
+
}
|
|
6947
|
+
);
|
|
6948
|
+
reader.hookManager.register(
|
|
6949
|
+
"item.onBeforeContainerCreated",
|
|
6950
|
+
({ element }) => {
|
|
6951
|
+
element.style.cssText = `
|
|
6341
6952
|
${element.style.cssText}
|
|
6342
6953
|
-webkit-transform-style: preserve-3d;
|
|
6343
6954
|
-webkit-backface-visibility: hidden;
|
|
6344
6955
|
`;
|
|
6345
|
-
|
|
6956
|
+
}
|
|
6957
|
+
);
|
|
6346
6958
|
}
|
|
6347
6959
|
return reader;
|
|
6348
6960
|
};
|
|
@@ -6373,14 +6985,20 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6373
6985
|
operators.tap(({ width, theme }) => {
|
|
6374
6986
|
Object.values(entries).forEach((element) => {
|
|
6375
6987
|
element.style.setProperty(`max-width`, `${width}px`);
|
|
6376
|
-
element.style.setProperty(
|
|
6988
|
+
element.style.setProperty(
|
|
6989
|
+
`color`,
|
|
6990
|
+
theme === `sepia` ? `#939393` : `rgb(202, 202, 202)`
|
|
6991
|
+
);
|
|
6377
6992
|
});
|
|
6378
6993
|
})
|
|
6379
6994
|
);
|
|
6380
6995
|
const updateEntriesVisibility$ = (entries) => reader.spineItemManager.$.itemIsReady$.pipe(
|
|
6381
6996
|
operators.tap(({ item, isReady }) => {
|
|
6382
6997
|
var _a;
|
|
6383
|
-
(_a = entries[item.id]) == null ? void 0 : _a.style.setProperty(
|
|
6998
|
+
(_a = entries[item.id]) == null ? void 0 : _a.style.setProperty(
|
|
6999
|
+
`visibility`,
|
|
7000
|
+
isReady ? `hidden` : `visible`
|
|
7001
|
+
);
|
|
6384
7002
|
})
|
|
6385
7003
|
);
|
|
6386
7004
|
const destroyEntries$ = (entries) => reader.spine.$.itemsBeforeDestroy$.pipe(
|
|
@@ -6396,7 +7014,12 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6396
7014
|
);
|
|
6397
7015
|
items$.pipe(
|
|
6398
7016
|
operators.switchMap((entries) => rxjs.merge(rxjs.of(entries), destroyEntries$(entries))),
|
|
6399
|
-
operators.switchMap(
|
|
7017
|
+
operators.switchMap(
|
|
7018
|
+
(entries) => rxjs.merge(
|
|
7019
|
+
updateEntriesLayout$(entries),
|
|
7020
|
+
updateEntriesVisibility$(entries)
|
|
7021
|
+
)
|
|
7022
|
+
),
|
|
6400
7023
|
operators.takeUntil(reader.$.destroy$)
|
|
6401
7024
|
).subscribe();
|
|
6402
7025
|
return {
|
|
@@ -6466,7 +7089,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6466
7089
|
const eventIsComingFromBridge = event.target === iframeEventBridgeElement$.getValue();
|
|
6467
7090
|
const iframeOriginalEvent = getOriginalFrameEventFromDocumentEvent(event);
|
|
6468
7091
|
const originalFrame = (_a = iframeOriginalEvent == null ? void 0 : iframeOriginalEvent.view) == null ? void 0 : _a.frameElement;
|
|
6469
|
-
if (!eventIsComingFromBridge || !iframeOriginalEvent || !originalFrame)
|
|
7092
|
+
if (!eventIsComingFromBridge || !iframeOriginalEvent || !originalFrame)
|
|
7093
|
+
return event;
|
|
6470
7094
|
const spineItem = locator.getSpineItemFromIframe(originalFrame);
|
|
6471
7095
|
if (!spineItem) return event;
|
|
6472
7096
|
if (isPointerEvent(event)) {
|
|
@@ -6477,7 +7101,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6477
7101
|
clientX,
|
|
6478
7102
|
clientY
|
|
6479
7103
|
});
|
|
6480
|
-
Object.defineProperty(newEvent, `target`, {
|
|
7104
|
+
Object.defineProperty(newEvent, `target`, {
|
|
7105
|
+
value: iframeOriginalEvent.target,
|
|
7106
|
+
enumerable: true
|
|
7107
|
+
});
|
|
6481
7108
|
return newEvent;
|
|
6482
7109
|
}
|
|
6483
7110
|
if (isMouseEvent(event)) {
|
|
@@ -6487,7 +7114,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6487
7114
|
clientX,
|
|
6488
7115
|
clientY
|
|
6489
7116
|
});
|
|
6490
|
-
Object.defineProperty(newEvent, `target`, {
|
|
7117
|
+
Object.defineProperty(newEvent, `target`, {
|
|
7118
|
+
value: iframeOriginalEvent.target,
|
|
7119
|
+
enumerable: true
|
|
7120
|
+
});
|
|
6491
7121
|
return newEvent;
|
|
6492
7122
|
}
|
|
6493
7123
|
if (isTouchEvent(event)) {
|
|
@@ -6505,7 +7135,10 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6505
7135
|
changedTouches: touches,
|
|
6506
7136
|
targetTouches: touches
|
|
6507
7137
|
});
|
|
6508
|
-
Object.defineProperty(newEvent, `target`, {
|
|
7138
|
+
Object.defineProperty(newEvent, `target`, {
|
|
7139
|
+
value: iframeOriginalEvent.target,
|
|
7140
|
+
enumerable: true
|
|
7141
|
+
});
|
|
6509
7142
|
return newEvent;
|
|
6510
7143
|
}
|
|
6511
7144
|
return event;
|
|
@@ -6646,6 +7279,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
6646
7279
|
);
|
|
6647
7280
|
exports2.HookManager = HookManager;
|
|
6648
7281
|
exports2.Report = Report;
|
|
7282
|
+
exports2.SettingsManager = SettingsManager;
|
|
6649
7283
|
exports2.createReader = createReaderWithEnhancers;
|
|
6650
7284
|
exports2.groupBy = groupBy;
|
|
6651
7285
|
exports2.isShallowEqual = isShallowEqual;
|