@readium/navigator 2.10.2 → 2.11.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/audio/AudioNavigator.js +1 -1
- package/dist/audio/AudioPoolManager.js +1 -1
- package/dist/audio/engine/WebAudioEngine.js +1 -1
- package/dist/divina/DivinaNavigator.js +1 -0
- package/dist/divina/DivinaPageManager.js +1 -0
- package/dist/divina/DivinaPagedPresenter.js +1 -0
- package/dist/divina/DivinaPeripherals.js +1 -0
- package/dist/divina/DivinaScrolledPresenter.js +1 -0
- package/dist/divina/DivinaSpreader.js +1 -0
- package/dist/divina/DivinaVariantSelector.js +1 -0
- package/dist/divina/preferences/DivinaDefaults.js +1 -0
- package/dist/divina/preferences/DivinaPreferences.js +1 -0
- package/dist/divina/preferences/DivinaPreferencesEditor.js +1 -0
- package/dist/divina/preferences/DivinaSettings.js +1 -0
- package/dist/divina/protection/DivinaNavigatorProtector.js +1 -0
- package/dist/epub/EpubNavigator.js +1 -1
- package/dist/epub/frame/FrameBlobBuilder.js +3 -1
- package/dist/epub/frame/FrameManager.js +1 -1
- package/dist/epub/frame/FramePoolManager.js +1 -1
- package/dist/epub/fxl/FXLFrameManager.js +1 -1
- package/dist/epub/fxl/FXLFramePoolManager.js +1 -1
- package/dist/epub/fxl/FXLPeripherals.js +2 -2
- package/dist/index.js +1 -1
- package/dist/peripherals/KeyboardConditionBridge.js +1 -1
- package/dist/peripherals/KeyboardPeripherals.js +1 -1
- package/dist/webpub/WebPubFrameManager.js +1 -1
- package/dist/webpub/WebPubFramePoolManager.js +1 -1
- package/dist/webpub/WebPubNavigator.js +1 -1
- package/package.json +5 -5
- package/src/audio/AudioNavigator.ts +107 -5
- package/src/audio/AudioPoolManager.ts +14 -8
- package/src/audio/engine/AudioEngine.ts +34 -1
- package/src/audio/engine/WebAudioEngine.ts +48 -3
- package/src/divina/DivinaNavigator.ts +704 -0
- package/src/divina/DivinaPageManager.ts +322 -0
- package/src/divina/DivinaPagedPresenter.ts +508 -0
- package/src/divina/DivinaPeripherals.ts +630 -0
- package/src/divina/DivinaScrolledPresenter.ts +516 -0
- package/src/divina/DivinaSpreader.ts +202 -0
- package/src/divina/DivinaVariantSelector.ts +77 -0
- package/src/divina/index.ts +8 -0
- package/src/divina/preferences/DivinaDefaults.ts +37 -0
- package/src/divina/preferences/DivinaPreferences.ts +77 -0
- package/src/divina/preferences/DivinaPreferencesEditor.ts +96 -0
- package/src/divina/preferences/DivinaSettings.ts +38 -0
- package/src/divina/preferences/index.ts +4 -0
- package/src/divina/protection/DivinaNavigatorProtector.ts +44 -0
- package/src/epub/EpubNavigator.ts +73 -7
- package/src/epub/frame/FrameBlobBuilder.ts +144 -39
- package/src/epub/frame/FrameManager.ts +7 -9
- package/src/epub/frame/FramePoolManager.ts +106 -48
- package/src/epub/fxl/FXLFrameManager.ts +69 -26
- package/src/epub/fxl/FXLFramePoolManager.ts +98 -53
- package/src/epub/fxl/FXLPeripherals.ts +22 -1
- package/src/index.ts +1 -0
- package/src/peripherals/KeyboardConditionBridge.ts +15 -5
- package/src/peripherals/KeyboardPeripherals.ts +13 -7
- package/src/webpub/WebPubFrameManager.ts +7 -9
- package/src/webpub/WebPubFramePoolManager.ts +5 -2
- package/src/webpub/WebPubNavigator.ts +44 -0
- package/types/src/audio/AudioNavigator.d.ts +29 -0
- package/types/src/audio/engine/AudioEngine.d.ts +27 -1
- package/types/src/audio/engine/WebAudioEngine.d.ts +14 -2
- package/types/src/divina/DivinaNavigator.d.ts +119 -0
- package/types/src/divina/DivinaPageManager.d.ts +66 -0
- package/types/src/divina/DivinaPagedPresenter.d.ts +122 -0
- package/types/src/divina/DivinaPeripherals.d.ts +121 -0
- package/types/src/divina/DivinaScrolledPresenter.d.ts +125 -0
- package/types/src/divina/DivinaSpreader.d.ts +65 -0
- package/types/src/divina/DivinaVariantSelector.d.ts +30 -0
- package/types/src/divina/index.d.ts +8 -0
- package/types/src/divina/preferences/DivinaDefaults.d.ts +18 -0
- package/types/src/divina/preferences/DivinaPreferences.d.ts +33 -0
- package/types/src/divina/preferences/DivinaPreferencesEditor.d.ts +20 -0
- package/types/src/divina/preferences/DivinaSettings.d.ts +26 -0
- package/types/src/divina/preferences/index.d.ts +4 -0
- package/types/src/divina/protection/DivinaNavigatorProtector.d.ts +14 -0
- package/types/src/epub/EpubNavigator.d.ts +7 -1
- package/types/src/epub/frame/FrameBlobBuilder.d.ts +19 -3
- package/types/src/epub/frame/FramePoolManager.d.ts +5 -1
- package/types/src/epub/fxl/FXLFrameManager.d.ts +2 -0
- package/types/src/epub/fxl/FXLFramePoolManager.d.ts +8 -2
- package/types/src/epub/fxl/FXLPeripherals.d.ts +3 -0
- package/types/src/index.d.ts +1 -0
- package/types/src/peripherals/KeyboardPeripherals.d.ts +1 -0
- package/types/src/webpub/WebPubNavigator.d.ts +2 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Link, Page, Publication } from "@readium/shared";
|
|
2
|
+
/**
|
|
3
|
+
* A single page of a Divina publication, with its resolved layout properties.
|
|
4
|
+
* Unlike FXLSpreader, this model never mutates the publication's links.
|
|
5
|
+
*/
|
|
6
|
+
export declare class DivinaPage {
|
|
7
|
+
readonly link: Link;
|
|
8
|
+
readonly index: number;
|
|
9
|
+
page: Page;
|
|
10
|
+
isLandscape: boolean;
|
|
11
|
+
addBlank: boolean;
|
|
12
|
+
constructor(link: Link, index: number);
|
|
13
|
+
/** 1-based page number */
|
|
14
|
+
get number(): number;
|
|
15
|
+
get authoredPage(): Page | undefined;
|
|
16
|
+
/** Whether this page occupies both slots of a spread in double-page mode */
|
|
17
|
+
get double(): boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Computes synthetic spreads for a Divina publication from the `page`
|
|
21
|
+
* (left/right/center) link properties, falling back to computed alternation.
|
|
22
|
+
*
|
|
23
|
+
* Slot model (used by the paged presenter): in double-page mode every spread
|
|
24
|
+
* occupies exactly two slots — a pair is 1+1, and a lone page (center,
|
|
25
|
+
* landscape or orphaned/addBlank) takes a double-width slot. This keeps
|
|
26
|
+
* slide indices (always even) aligned with spread boundaries.
|
|
27
|
+
*/
|
|
28
|
+
export declare class DivinaSpreader {
|
|
29
|
+
readonly rtl: boolean;
|
|
30
|
+
shift: boolean;
|
|
31
|
+
pages: DivinaPage[];
|
|
32
|
+
spreads: DivinaPage[][];
|
|
33
|
+
private itemToSlotArr;
|
|
34
|
+
private slotToItemArr;
|
|
35
|
+
private spreadOfItemArr;
|
|
36
|
+
constructor(publication: Publication);
|
|
37
|
+
private index;
|
|
38
|
+
private testShift;
|
|
39
|
+
private buildSpreads;
|
|
40
|
+
/**
|
|
41
|
+
* Builds the item <-> slot mappings for double-page mode.
|
|
42
|
+
* Slots are consumed in spread order; every spread takes exactly two slots.
|
|
43
|
+
*/
|
|
44
|
+
private buildSlots;
|
|
45
|
+
/** Total number of slots (spread mode). Always even. */
|
|
46
|
+
get slotCount(): number;
|
|
47
|
+
/** Count of pages that take a double-width slot in spread mode */
|
|
48
|
+
get nDouble(): number;
|
|
49
|
+
slotOfItem(itemIndex: number): number;
|
|
50
|
+
itemOfSlot(slot: number): number;
|
|
51
|
+
spreadIndexOfItem(itemIndex: number): number;
|
|
52
|
+
spreadOfItem(itemIndex: number): DivinaPage[];
|
|
53
|
+
/**
|
|
54
|
+
* Whether the page occupies a full spread on its own in double-page mode
|
|
55
|
+
* (and therefore takes a double-width slot). This mirrors buildSlots()
|
|
56
|
+
* exactly: any page alone in its spread is double.
|
|
57
|
+
*/
|
|
58
|
+
isDouble(itemIndex: number): boolean;
|
|
59
|
+
findByHref(href: string): DivinaPage | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* The position of a page within a spread, viewport-wise:
|
|
62
|
+
* left/right of the gutter, or centered when displayed alone.
|
|
63
|
+
*/
|
|
64
|
+
spreadPosition(spread: DivinaPage[], target: DivinaPage, perPage: number): Page;
|
|
65
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Link } from "@readium/shared";
|
|
2
|
+
/**
|
|
3
|
+
* User-selectable image quality for publications that provide alternate
|
|
4
|
+
* resolutions of their pages (RWPM `alternate` links).
|
|
5
|
+
*/
|
|
6
|
+
export declare enum DivinaQuality {
|
|
7
|
+
auto = "auto",// Match the display resolution
|
|
8
|
+
low = "low",// Smallest available variant
|
|
9
|
+
high = "high",// One step above the display resolution
|
|
10
|
+
max = "max"
|
|
11
|
+
}
|
|
12
|
+
export declare const MOBILE_MAX_HEIGHT = 2560;
|
|
13
|
+
export declare const MOBILE_MAX_WIDTH = 1800;
|
|
14
|
+
/** The link itself and its (bitmap) alternates, if any */
|
|
15
|
+
export declare function gatherVariants(item: Link): Link[];
|
|
16
|
+
export interface VariantSelectionOptions {
|
|
17
|
+
/** Display size of the page in device pixels (CSS box × devicePixelRatio) */
|
|
18
|
+
targetWidth: number;
|
|
19
|
+
targetHeight: number;
|
|
20
|
+
/** The axis that constrains the display: height in paged mode, width in scrolled mode */
|
|
21
|
+
axis: "width" | "height";
|
|
22
|
+
quality: DivinaQuality;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Selects the most appropriate variant of a page image for the current
|
|
26
|
+
* display, based purely on the choices the manifest offers: the smallest
|
|
27
|
+
* variant that covers the display resolution (in device pixels), biased by
|
|
28
|
+
* the quality preference, and capped on mobile devices.
|
|
29
|
+
*/
|
|
30
|
+
export declare function selectVariant(item: Link, opts: VariantSelectionOptions): Link;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from "./DivinaNavigator.ts";
|
|
2
|
+
export * from "./DivinaSpreader.ts";
|
|
3
|
+
export * from "./DivinaPageManager.ts";
|
|
4
|
+
export * from "./DivinaPagedPresenter.ts";
|
|
5
|
+
export * from "./DivinaScrolledPresenter.ts";
|
|
6
|
+
export * from "./DivinaPeripherals.ts";
|
|
7
|
+
export * from "./DivinaVariantSelector.ts";
|
|
8
|
+
export * from "./preferences/index.ts";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DivinaQuality } from "../DivinaVariantSelector.ts";
|
|
2
|
+
export interface IDivinaDefaults {
|
|
3
|
+
backgroundColor?: string | null;
|
|
4
|
+
constraint?: number | null;
|
|
5
|
+
quality?: DivinaQuality | null;
|
|
6
|
+
scrolled?: boolean | null;
|
|
7
|
+
spreads?: boolean | null;
|
|
8
|
+
stripWidth?: number | null;
|
|
9
|
+
}
|
|
10
|
+
export declare class DivinaDefaults {
|
|
11
|
+
backgroundColor: string | null;
|
|
12
|
+
constraint: number;
|
|
13
|
+
quality: DivinaQuality;
|
|
14
|
+
scrolled: boolean | null;
|
|
15
|
+
spreads: boolean;
|
|
16
|
+
stripWidth: number;
|
|
17
|
+
constructor(defaults: IDivinaDefaults);
|
|
18
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ConfigurablePreferences } from "../../preferences/Configurable.ts";
|
|
2
|
+
import { RangeConfig } from "../../preferences/Types.ts";
|
|
3
|
+
import { DivinaQuality } from "../DivinaVariantSelector.ts";
|
|
4
|
+
/**
|
|
5
|
+
* Maximum width in pixels of the vertical strip in scrolled mode.
|
|
6
|
+
*/
|
|
7
|
+
export declare const stripWidthRangeConfig: RangeConfig;
|
|
8
|
+
export interface IDivinaPreferences {
|
|
9
|
+
/** Background color behind the pages (equivalent of the EPUB page background theme) */
|
|
10
|
+
backgroundColor?: string | null;
|
|
11
|
+
/** Number of pixels to constrain the container width by (e.g. for docked panels) */
|
|
12
|
+
constraint?: number | null;
|
|
13
|
+
/** Image quality when the publication offers alternate resolutions */
|
|
14
|
+
quality?: DivinaQuality | null;
|
|
15
|
+
/** Display the publication as a vertical scroll instead of horizontal pages */
|
|
16
|
+
scrolled?: boolean | null;
|
|
17
|
+
/** Display two pages side-by-side on landscape viewports (paged mode only) */
|
|
18
|
+
spreads?: boolean | null;
|
|
19
|
+
/** Maximum width in pixels of the vertical strip in scrolled mode */
|
|
20
|
+
stripWidth?: number | null;
|
|
21
|
+
}
|
|
22
|
+
export declare class DivinaPreferences implements ConfigurablePreferences<DivinaPreferences> {
|
|
23
|
+
backgroundColor?: string | null;
|
|
24
|
+
constraint?: number | null;
|
|
25
|
+
quality?: DivinaQuality | null;
|
|
26
|
+
scrolled?: boolean | null;
|
|
27
|
+
spreads?: boolean | null;
|
|
28
|
+
stripWidth?: number | null;
|
|
29
|
+
constructor(preferences?: IDivinaPreferences);
|
|
30
|
+
static serialize(preferences: DivinaPreferences): string;
|
|
31
|
+
static deserialize(preferences: string): DivinaPreferences | null;
|
|
32
|
+
merging(other: DivinaPreferences): DivinaPreferences;
|
|
33
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Metadata } from "@readium/shared";
|
|
2
|
+
import { IPreferencesEditor } from "../../preferences/PreferencesEditor.ts";
|
|
3
|
+
import { BooleanPreference, EnumPreference, Preference, RangePreference } from "../../preferences/Preference.ts";
|
|
4
|
+
import { DivinaQuality } from "../DivinaVariantSelector.ts";
|
|
5
|
+
import { DivinaPreferences } from "./DivinaPreferences.ts";
|
|
6
|
+
import { DivinaSettings } from "./DivinaSettings.ts";
|
|
7
|
+
export declare class DivinaPreferencesEditor implements IPreferencesEditor {
|
|
8
|
+
preferences: DivinaPreferences;
|
|
9
|
+
private settings;
|
|
10
|
+
private metadata;
|
|
11
|
+
constructor(initialPreferences: DivinaPreferences, settings: DivinaSettings, metadata: Metadata);
|
|
12
|
+
clear(): void;
|
|
13
|
+
private updatePreference;
|
|
14
|
+
private get manifestScrolled();
|
|
15
|
+
get backgroundColor(): Preference<string>;
|
|
16
|
+
get quality(): EnumPreference<DivinaQuality>;
|
|
17
|
+
get scrolled(): BooleanPreference;
|
|
18
|
+
get spreads(): BooleanPreference;
|
|
19
|
+
get stripWidth(): RangePreference<number>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ConfigurableSettings } from "../../preferences/Configurable.ts";
|
|
2
|
+
import { DivinaQuality } from "../DivinaVariantSelector.ts";
|
|
3
|
+
import { DivinaDefaults } from "./DivinaDefaults.ts";
|
|
4
|
+
import { DivinaPreferences } from "./DivinaPreferences.ts";
|
|
5
|
+
export interface IDivinaSettings {
|
|
6
|
+
backgroundColor?: string | null;
|
|
7
|
+
constraint?: number | null;
|
|
8
|
+
quality?: DivinaQuality | null;
|
|
9
|
+
scrolled?: boolean | null;
|
|
10
|
+
spreads?: boolean | null;
|
|
11
|
+
stripWidth?: number | null;
|
|
12
|
+
}
|
|
13
|
+
export declare class DivinaSettings implements ConfigurableSettings {
|
|
14
|
+
backgroundColor: string | null;
|
|
15
|
+
constraint: number;
|
|
16
|
+
quality: DivinaQuality;
|
|
17
|
+
scrolled: boolean;
|
|
18
|
+
spreads: boolean;
|
|
19
|
+
stripWidth: number;
|
|
20
|
+
/**
|
|
21
|
+
* @param manifestScrolled Whether the publication itself declares `layout: scrolled`.
|
|
22
|
+
* A natively scrolled publication (e.g. webtoon) cannot be switched to paged mode,
|
|
23
|
+
* while a fixed publication can be switched to scrolled by the user.
|
|
24
|
+
*/
|
|
25
|
+
constructor(preferences: DivinaPreferences, defaults: DivinaDefaults, manifestScrolled: boolean);
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NavigatorProtector } from "../../protection/NavigatorProtector.ts";
|
|
2
|
+
import { IContentProtectionConfig } from "../../Navigator.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Content protection for the Divina navigator. Because Divina renders images
|
|
5
|
+
* directly in the host DOM (no iframes), the in-frame halves of the EPUB
|
|
6
|
+
* protection (copy and drag-and-drop blocking) must run host-side instead,
|
|
7
|
+
* like the audio navigator does.
|
|
8
|
+
*/
|
|
9
|
+
export declare class DivinaNavigatorProtector extends NavigatorProtector {
|
|
10
|
+
private dragAndDropProtector?;
|
|
11
|
+
private copyProtector?;
|
|
12
|
+
constructor(config?: IContentProtectionConfig);
|
|
13
|
+
destroy(): void;
|
|
14
|
+
}
|
|
@@ -12,6 +12,8 @@ import { EpubSettings } from "./preferences/index.ts";
|
|
|
12
12
|
import { EpubPreferencesEditor } from "./preferences/EpubPreferencesEditor.ts";
|
|
13
13
|
import { IInjectablesConfig } from "../injection/Injectable.ts";
|
|
14
14
|
import { IContentProtectionConfig, IKeyboardPeripheralsConfig, KeyboardPeripheralEventData } from "../Navigator.ts";
|
|
15
|
+
import { UpgradeInsecureRequests } from "./frame/FrameBlobBuilder.ts";
|
|
16
|
+
export type { UpgradeInsecureRequests };
|
|
15
17
|
export type ManagerEventKey = "zoom";
|
|
16
18
|
export interface EpubNavigatorConfiguration {
|
|
17
19
|
preferences: IEpubPreferences;
|
|
@@ -20,6 +22,7 @@ export interface EpubNavigatorConfiguration {
|
|
|
20
22
|
contentProtection?: IContentProtectionConfig;
|
|
21
23
|
keyboardPeripherals?: IKeyboardPeripheralsConfig;
|
|
22
24
|
decoratorConfig?: DecoratorConfig;
|
|
25
|
+
upgradeInsecureRequests?: UpgradeInsecureRequests;
|
|
23
26
|
}
|
|
24
27
|
export interface EpubNavigatorListeners {
|
|
25
28
|
frameLoaded: (wnd: Window) => void;
|
|
@@ -42,6 +45,7 @@ export declare class EpubNavigator extends VisualNavigator implements Configurab
|
|
|
42
45
|
private readonly container;
|
|
43
46
|
private readonly listeners;
|
|
44
47
|
private framePool;
|
|
48
|
+
private _destroyed;
|
|
45
49
|
private positions;
|
|
46
50
|
private currentLocation;
|
|
47
51
|
private _currentTimelineItem;
|
|
@@ -63,6 +67,7 @@ export declare class EpubNavigator extends VisualNavigator implements Configurab
|
|
|
63
67
|
private readonly _injectablesConfig;
|
|
64
68
|
private readonly _contentProtection;
|
|
65
69
|
private readonly _keyboardPeripherals;
|
|
70
|
+
private readonly _upgradeInsecureRequests;
|
|
66
71
|
private readonly _navigatorProtector;
|
|
67
72
|
private readonly _keyboardPeripheralsManager;
|
|
68
73
|
private readonly _suspiciousActivityListener;
|
|
@@ -79,7 +84,7 @@ export declare class EpubNavigator extends VisualNavigator implements Configurab
|
|
|
79
84
|
private reflowViewport;
|
|
80
85
|
constructor(container: HTMLElement, pub: Publication, listeners: EpubNavigatorListeners, positions?: Locator[], initialPosition?: Locator | undefined, configuration?: EpubNavigatorConfiguration);
|
|
81
86
|
static determineLayout(pub: Publication, scroll?: boolean): Layout;
|
|
82
|
-
load(): Promise<
|
|
87
|
+
load(): Promise<unknown>;
|
|
83
88
|
get settings(): Readonly<EpubSettings>;
|
|
84
89
|
get preferencesEditor(): EpubPreferencesEditor;
|
|
85
90
|
submitPreferences(preferences: EpubPreferences): Promise<void>;
|
|
@@ -143,6 +148,7 @@ export declare class EpubNavigator extends VisualNavigator implements Configurab
|
|
|
143
148
|
get publication(): Publication;
|
|
144
149
|
get timeline(): Timeline;
|
|
145
150
|
private loadLocator;
|
|
151
|
+
private completeLocator;
|
|
146
152
|
go(locator: Locator, _: boolean, cb: (ok: boolean) => void): void;
|
|
147
153
|
goLink(link: Link, animated: boolean, cb: (ok: boolean) => void): void;
|
|
148
154
|
private _notifyTimelineChange;
|
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import { Link, Publication } from "@readium/shared";
|
|
2
2
|
import { Injector } from "../../injection/Injector.ts";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
/**
|
|
4
|
+
* A flag to control whether `upgrade-insecure-requests` is included in the Content
|
|
5
|
+
* Security Policy of each spine-item blob frame:
|
|
6
|
+
*
|
|
7
|
+
* - `always` will always upgrade insecure requests
|
|
8
|
+
* - `never` will never upgrade insecure requests
|
|
9
|
+
* - `auto` will upgrade insecure requests only when the publication root URL is HTTPS
|
|
10
|
+
*/
|
|
11
|
+
export type UpgradeInsecureRequests = 'always' | 'never' | 'auto';
|
|
12
|
+
export default class FrameBlobBuilder {
|
|
6
13
|
private readonly pub;
|
|
14
|
+
private readonly baseURL;
|
|
15
|
+
private readonly item;
|
|
7
16
|
private readonly cssProperties?;
|
|
8
17
|
private readonly injector;
|
|
18
|
+
private readonly upgradeInsecureRequests;
|
|
19
|
+
private currentUrl?;
|
|
20
|
+
private currentResource?;
|
|
21
|
+
private pendingBuild?;
|
|
9
22
|
constructor(pub: Publication, baseURL: string, item: Link, options: {
|
|
10
23
|
cssProperties?: {
|
|
11
24
|
[key: string]: string;
|
|
12
25
|
};
|
|
13
26
|
injector?: Injector | null;
|
|
27
|
+
upgradeInsecureRequests?: UpgradeInsecureRequests;
|
|
14
28
|
});
|
|
29
|
+
reset(): void;
|
|
15
30
|
build(fxl?: boolean): Promise<string>;
|
|
31
|
+
private doBuild;
|
|
16
32
|
private buildHtmlFrame;
|
|
17
33
|
private buildImageFrame;
|
|
18
34
|
private setProperties;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ModuleName } from "@readium/navigator-html-injectables";
|
|
2
2
|
import { Locator, Publication } from "@readium/shared";
|
|
3
|
+
import { UpgradeInsecureRequests } from "./FrameBlobBuilder.ts";
|
|
3
4
|
import { FrameManager } from "./FrameManager.ts";
|
|
4
5
|
import { Injector } from "../../injection/Injector.ts";
|
|
5
6
|
import { IContentProtectionConfig, IKeyboardPeripheralsConfig } from "../../Navigator.ts";
|
|
@@ -16,11 +17,14 @@ export declare class FramePoolManager {
|
|
|
16
17
|
private readonly injector;
|
|
17
18
|
private readonly contentProtectionConfig;
|
|
18
19
|
private readonly keyboardPeripheralsConfig;
|
|
20
|
+
private updateSequence;
|
|
21
|
+
private forcedUpdate;
|
|
19
22
|
private resizeWatchSelectors;
|
|
20
23
|
private readonly getFragmentIds;
|
|
24
|
+
private readonly upgradeInsecureRequests;
|
|
21
25
|
constructor(container: HTMLElement, positions: Locator[], cssProperties?: {
|
|
22
26
|
[key: string]: string;
|
|
23
|
-
}, injector?: Injector | null, contentProtectionConfig?: IContentProtectionConfig, keyboardPeripheralsConfig?: IKeyboardPeripheralsConfig, getFragmentIds?: (href: string) => string[], resizeWatchSelectors?: string[]);
|
|
27
|
+
}, injector?: Injector | null, contentProtectionConfig?: IContentProtectionConfig, keyboardPeripheralsConfig?: IKeyboardPeripheralsConfig, getFragmentIds?: (href: string) => string[], resizeWatchSelectors?: string[], upgradeInsecureRequests?: UpgradeInsecureRequests);
|
|
24
28
|
addResizeTarget(selector: string): void;
|
|
25
29
|
removeResizeTarget(selector: string): void;
|
|
26
30
|
destroy(): Promise<void>;
|
|
@@ -5,6 +5,7 @@ import { FXLPeripherals } from "./FXLPeripherals.ts";
|
|
|
5
5
|
import { IContentProtectionConfig, IKeyboardPeripheralsConfig } from "../../Navigator.ts";
|
|
6
6
|
export declare class FXLFrameManager {
|
|
7
7
|
private frame;
|
|
8
|
+
private frameIsAppended;
|
|
8
9
|
private loader;
|
|
9
10
|
source: string;
|
|
10
11
|
private comms;
|
|
@@ -19,6 +20,7 @@ export declare class FXLFrameManager {
|
|
|
19
20
|
debugHref: string;
|
|
20
21
|
private loadPromise;
|
|
21
22
|
private showPromise;
|
|
23
|
+
private viewportSize;
|
|
22
24
|
constructor(peripherals: FXLPeripherals, direction: ReadingProgression, debugHref: string, contentProtectionConfig?: IContentProtectionConfig, keyboardPeripheralsConfig?: IKeyboardPeripheralsConfig, resizeWatchSelectors?: string[]);
|
|
23
25
|
load(modules: ModuleName[], source: string): Promise<Window>;
|
|
24
26
|
loadPageSize(): {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ModuleName } from "@readium/navigator-html-injectables";
|
|
2
|
-
import { Locator, Publication, Page, Link } from "@readium/shared";
|
|
2
|
+
import { Locator, Publication, Page, Link, Layout } from "@readium/shared";
|
|
3
3
|
import { FrameCommsListener } from "../frame/index.ts";
|
|
4
|
+
import { UpgradeInsecureRequests } from "../frame/FrameBlobBuilder.ts";
|
|
4
5
|
import { FXLFrameManager } from "./FXLFrameManager.ts";
|
|
5
6
|
import { FXLPeripherals } from "./FXLPeripherals.ts";
|
|
6
7
|
import { VisualNavigatorViewport, IContentProtectionConfig, IKeyboardPeripheralsConfig } from "../../Navigator.ts";
|
|
@@ -19,6 +20,7 @@ export declare class FXLFramePoolManager {
|
|
|
19
20
|
private readonly contentProtectionConfig;
|
|
20
21
|
private readonly keyboardPeripheralsConfig;
|
|
21
22
|
private resizeWatchSelectors;
|
|
23
|
+
private readonly upgradeInsecureRequests;
|
|
22
24
|
private readonly bookElement;
|
|
23
25
|
readonly spineElement: HTMLDivElement;
|
|
24
26
|
private readonly pub;
|
|
@@ -33,7 +35,8 @@ export declare class FXLFramePoolManager {
|
|
|
33
35
|
private containerHeightCached;
|
|
34
36
|
private resizeTimeout;
|
|
35
37
|
readonly peripherals: FXLPeripherals;
|
|
36
|
-
constructor(container: HTMLElement, positions: Locator[], pub: Publication,
|
|
38
|
+
constructor(container: HTMLElement, positions: Locator[], pub: Publication, _layout: Layout, // TODO: used by upcoming scrolled-layout support
|
|
39
|
+
injector?: Injector | null, contentProtectionConfig?: IContentProtectionConfig, keyboardPeripheralsConfig?: IKeyboardPeripheralsConfig, resizeWatchSelectors?: string[], upgradeInsecureRequests?: UpgradeInsecureRequests);
|
|
37
40
|
private _listener;
|
|
38
41
|
set listener(listener: FrameCommsListener);
|
|
39
42
|
get listener(): FrameCommsListener;
|
|
@@ -52,6 +55,9 @@ export declare class FXLFramePoolManager {
|
|
|
52
55
|
get threshold(): number;
|
|
53
56
|
get portrait(): boolean;
|
|
54
57
|
updateSpineStyle(animate: boolean, fast?: boolean): void;
|
|
58
|
+
private bookScale;
|
|
59
|
+
private bookTranslate;
|
|
60
|
+
private bookTransform;
|
|
55
61
|
updateBookStyle(initial?: boolean): void;
|
|
56
62
|
/**
|
|
57
63
|
* Go to slide with particular index
|
|
@@ -26,6 +26,7 @@ export interface Zoomer {
|
|
|
26
26
|
Y: number;
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
+
export declare const isTypedOMSupported: () => boolean;
|
|
29
30
|
export declare class FXLPeripherals {
|
|
30
31
|
private readonly manager;
|
|
31
32
|
private readonly coordinator;
|
|
@@ -68,6 +69,8 @@ export declare class FXLPeripherals {
|
|
|
68
69
|
*/
|
|
69
70
|
touchendHandler(e: TouchEvent): void;
|
|
70
71
|
private moveFrame;
|
|
72
|
+
private dragTranslate;
|
|
73
|
+
private dragTransform;
|
|
71
74
|
/**
|
|
72
75
|
* touchmove event handler
|
|
73
76
|
*/
|
package/types/src/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './Navigator.ts';
|
|
|
2
2
|
export * from './decorations/index.ts';
|
|
3
3
|
export * from './webpub/index.ts';
|
|
4
4
|
export * from './epub/index.ts';
|
|
5
|
+
export * from './divina/index.ts';
|
|
5
6
|
export * from './audio/index.ts';
|
|
6
7
|
export * from './helpers/index.ts';
|
|
7
8
|
export * from './preferences/index.ts';
|
|
@@ -7,6 +7,7 @@ export interface KeyboardPeripheralOptions {
|
|
|
7
7
|
export declare class KeyboardPeripherals {
|
|
8
8
|
private keydownHandler?;
|
|
9
9
|
private keyManager;
|
|
10
|
+
private readonly pagehideHandler;
|
|
10
11
|
constructor(options?: KeyboardPeripheralOptions);
|
|
11
12
|
private setupKeyboardPeripherals;
|
|
12
13
|
destroy(): void;
|
|
@@ -41,6 +41,7 @@ export declare class WebPubNavigator extends VisualNavigator implements Configur
|
|
|
41
41
|
private framePool;
|
|
42
42
|
private currentIndex;
|
|
43
43
|
private currentLocation;
|
|
44
|
+
private _destroyed;
|
|
44
45
|
private _currentTimelineItem;
|
|
45
46
|
private _visibleFragmentIds;
|
|
46
47
|
private _notifiedVisibleFragmentIds;
|
|
@@ -115,6 +116,7 @@ export declare class WebPubNavigator extends VisualNavigator implements Configur
|
|
|
115
116
|
get publication(): Publication;
|
|
116
117
|
get timeline(): Timeline;
|
|
117
118
|
private loadLocator;
|
|
119
|
+
private completeLocator;
|
|
118
120
|
go(locator: Locator, _: boolean, cb: (ok: boolean) => void): void;
|
|
119
121
|
goLink(link: Link, animated: boolean, cb: (ok: boolean) => void): void;
|
|
120
122
|
private createCurrentLocator;
|