@readium/navigator 1.3.4 → 2.0.0-beta.10
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/index.js +3974 -2928
- package/dist/index.umd.cjs +16 -16
- package/package.json +10 -9
- package/src/Navigator.ts +11 -0
- package/src/epub/EpubNavigator.ts +250 -24
- package/src/epub/css/Properties.ts +396 -0
- package/src/epub/css/ReadiumCSS.ts +339 -0
- package/src/epub/css/index.ts +2 -0
- package/src/epub/frame/FrameBlobBuilder.ts +59 -9
- package/src/epub/frame/FrameManager.ts +23 -1
- package/src/epub/frame/FramePoolManager.ts +62 -4
- package/src/epub/fxl/FXLFramePoolManager.ts +23 -16
- package/src/epub/index.ts +3 -1
- package/src/epub/preferences/EpubDefaults.ts +165 -0
- package/src/epub/preferences/EpubPreferences.ts +192 -0
- package/src/epub/preferences/EpubPreferencesEditor.ts +534 -0
- package/src/epub/preferences/EpubSettings.ts +239 -0
- package/src/epub/preferences/guards.ts +86 -0
- package/src/epub/preferences/index.ts +4 -0
- package/src/helpers/dimensions.ts +13 -0
- package/src/helpers/index.ts +1 -0
- package/src/helpers/lineLength.ts +241 -0
- package/src/helpers/sML.ts +25 -3
- package/src/index.ts +2 -1
- package/src/preferences/Configurable.ts +16 -0
- package/src/preferences/Preference.ts +272 -0
- package/src/preferences/PreferencesEditor.ts +6 -0
- package/src/preferences/Types.ts +38 -0
- package/src/preferences/index.ts +4 -0
- package/types/src/Navigator.d.ts +9 -0
- package/types/src/epub/EpubNavigator.d.ts +34 -4
- package/types/src/epub/css/Properties.d.ts +183 -0
- package/types/src/epub/css/ReadiumCSS.d.ts +31 -0
- package/types/src/epub/css/index.d.ts +2 -0
- package/types/src/epub/frame/FrameBlobBuilder.d.ts +5 -1
- package/types/src/epub/frame/FrameManager.d.ts +4 -0
- package/types/src/epub/frame/FramePoolManager.d.ts +8 -1
- package/types/src/epub/fxl/FXLFramePoolManager.d.ts +4 -4
- package/types/src/epub/index.d.ts +2 -0
- package/types/src/epub/preferences/EpubDefaults.d.ts +86 -0
- package/types/src/epub/preferences/EpubPreferences.d.ts +90 -0
- package/types/src/epub/preferences/EpubPreferencesEditor.d.ts +55 -0
- package/types/src/epub/preferences/EpubSettings.d.ts +89 -0
- package/types/src/epub/preferences/guards.d.ts +9 -0
- package/types/src/epub/preferences/index.d.ts +4 -0
- package/types/src/helpers/dimensions.d.ts +7 -0
- package/types/src/helpers/index.d.ts +1 -0
- package/types/src/helpers/lineLength.d.ts +54 -0
- package/types/src/helpers/sML.d.ts +6 -1
- package/types/src/index.d.ts +1 -0
- package/types/src/preferences/Configurable.d.ts +13 -0
- package/types/src/preferences/Preference.d.ts +117 -0
- package/types/src/preferences/PreferencesEditor.d.ts +5 -0
- package/types/src/preferences/PreferencesSerializer.d.ts +5 -0
- package/types/src/preferences/Types.d.ts +23 -0
- package/types/src/preferences/index.d.ts +4 -0
- package/LICENSE +0 -28
|
@@ -3,6 +3,7 @@ import { Locator, Publication, Page, Link } from "@readium/shared";
|
|
|
3
3
|
import { FrameCommsListener } from "../frame";
|
|
4
4
|
import { FXLFrameManager } from "./FXLFrameManager";
|
|
5
5
|
import { FXLPeripherals } from "./FXLPeripherals";
|
|
6
|
+
import { VisualNavigatorViewport } from "../../Navigator";
|
|
6
7
|
export declare class FXLFramePoolManager {
|
|
7
8
|
private readonly container;
|
|
8
9
|
private readonly positions;
|
|
@@ -25,7 +26,6 @@ export declare class FXLFramePoolManager {
|
|
|
25
26
|
private readonly spreadPresentation;
|
|
26
27
|
private orientationInternal;
|
|
27
28
|
private containerHeightCached;
|
|
28
|
-
private readonly resizeBoundHandler;
|
|
29
29
|
private resizeTimeout;
|
|
30
30
|
readonly peripherals: FXLPeripherals;
|
|
31
31
|
constructor(container: HTMLElement, positions: Locator[], pub: Publication);
|
|
@@ -33,7 +33,6 @@ export declare class FXLFramePoolManager {
|
|
|
33
33
|
set listener(listener: FrameCommsListener);
|
|
34
34
|
get listener(): FrameCommsListener;
|
|
35
35
|
get doNotDisturb(): boolean;
|
|
36
|
-
private nativeResizeHandler;
|
|
37
36
|
/**
|
|
38
37
|
* When window resizes, resize slider components as well
|
|
39
38
|
*/
|
|
@@ -60,7 +59,7 @@ export declare class FXLFramePoolManager {
|
|
|
60
59
|
get slength(): number;
|
|
61
60
|
get shift(): boolean;
|
|
62
61
|
private get nLandscape();
|
|
63
|
-
setPerPage(perPage: number): void;
|
|
62
|
+
setPerPage(perPage: number | null): void;
|
|
64
63
|
/**
|
|
65
64
|
* Moves sliders frame to position of currently active slide
|
|
66
65
|
*/
|
|
@@ -88,6 +87,7 @@ export declare class FXLFramePoolManager {
|
|
|
88
87
|
update(pub: Publication, locator: Locator, modules: ModuleName[], _force?: boolean): Promise<void>;
|
|
89
88
|
get currentFrames(): (FXLFrameManager | undefined)[];
|
|
90
89
|
get currentBounds(): DOMRect;
|
|
91
|
-
get
|
|
90
|
+
get viewport(): VisualNavigatorViewport;
|
|
91
|
+
private getCurrentNumbers;
|
|
92
92
|
deselect(): void;
|
|
93
93
|
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { LayoutStrategy, TextAlignment, Theme } from "../../preferences/Types";
|
|
2
|
+
export interface IEpubDefaults {
|
|
3
|
+
backgroundColor?: string | null;
|
|
4
|
+
blendFilter?: boolean | null;
|
|
5
|
+
columnCount?: number | null;
|
|
6
|
+
constraint?: number | null;
|
|
7
|
+
darkenFilter?: boolean | number | null;
|
|
8
|
+
deprecatedFontSize?: boolean | null;
|
|
9
|
+
fontFamily?: string | null;
|
|
10
|
+
fontSize?: number | null;
|
|
11
|
+
fontSizeNormalize?: boolean | null;
|
|
12
|
+
fontOpticalSizing?: boolean | null;
|
|
13
|
+
fontWeight?: number | null;
|
|
14
|
+
fontWidth?: number | null;
|
|
15
|
+
hyphens?: boolean | null;
|
|
16
|
+
invertFilter?: boolean | number | null;
|
|
17
|
+
invertGaijiFilter?: boolean | number | null;
|
|
18
|
+
iOSPatch?: boolean | null;
|
|
19
|
+
iPadOSPatch?: boolean | null;
|
|
20
|
+
layoutStrategy?: LayoutStrategy | null;
|
|
21
|
+
letterSpacing?: number | null;
|
|
22
|
+
ligatures?: boolean | null;
|
|
23
|
+
lineHeight?: number | null;
|
|
24
|
+
linkColor?: string | null;
|
|
25
|
+
maximalLineLength?: number | null;
|
|
26
|
+
minimalLineLength?: number | null;
|
|
27
|
+
noRuby?: boolean | null;
|
|
28
|
+
optimalLineLength?: number | null;
|
|
29
|
+
pageGutter?: number | null;
|
|
30
|
+
paragraphIndent?: number | null;
|
|
31
|
+
paragraphSpacing?: number | null;
|
|
32
|
+
scroll?: boolean | null;
|
|
33
|
+
scrollPaddingTop?: number | null;
|
|
34
|
+
scrollPaddingBottom?: number | null;
|
|
35
|
+
selectionBackgroundColor?: string | null;
|
|
36
|
+
selectionTextColor?: string | null;
|
|
37
|
+
textAlign?: TextAlignment | null;
|
|
38
|
+
textColor?: string | null;
|
|
39
|
+
textNormalization?: boolean | null;
|
|
40
|
+
theme?: Theme | null;
|
|
41
|
+
visitedColor?: string | null;
|
|
42
|
+
wordSpacing?: number | null;
|
|
43
|
+
}
|
|
44
|
+
export declare class EpubDefaults {
|
|
45
|
+
backgroundColor: string | null;
|
|
46
|
+
blendFilter: boolean | null;
|
|
47
|
+
columnCount: number | null;
|
|
48
|
+
constraint: number;
|
|
49
|
+
darkenFilter: boolean | number | null;
|
|
50
|
+
deprecatedFontSize?: boolean | null;
|
|
51
|
+
fontFamily: string | null;
|
|
52
|
+
fontSize: number | null;
|
|
53
|
+
fontSizeNormalize: boolean | null;
|
|
54
|
+
fontOpticalSizing: boolean | null;
|
|
55
|
+
fontWeight: number | null;
|
|
56
|
+
fontWidth: number | null;
|
|
57
|
+
hyphens: boolean | null;
|
|
58
|
+
invertFilter: boolean | number | null;
|
|
59
|
+
invertGaijiFilter: boolean | number | null;
|
|
60
|
+
iOSPatch: boolean;
|
|
61
|
+
iPadOSPatch: boolean;
|
|
62
|
+
layoutStrategy: LayoutStrategy | null;
|
|
63
|
+
letterSpacing: number | null;
|
|
64
|
+
ligatures: boolean | null;
|
|
65
|
+
lineHeight: number | null;
|
|
66
|
+
linkColor: string | null;
|
|
67
|
+
maximalLineLength: number | null;
|
|
68
|
+
minimalLineLength: number | null;
|
|
69
|
+
noRuby: boolean | null;
|
|
70
|
+
optimalLineLength: number;
|
|
71
|
+
pageGutter: number | null;
|
|
72
|
+
paragraphIndent: number | null;
|
|
73
|
+
paragraphSpacing: number | null;
|
|
74
|
+
scroll: boolean | null;
|
|
75
|
+
scrollPaddingTop: number | null;
|
|
76
|
+
scrollPaddingBottom: number | null;
|
|
77
|
+
selectionBackgroundColor: string | null;
|
|
78
|
+
selectionTextColor: string | null;
|
|
79
|
+
textAlign: TextAlignment | null;
|
|
80
|
+
textColor: string | null;
|
|
81
|
+
textNormalization: boolean | null;
|
|
82
|
+
theme: Theme | null;
|
|
83
|
+
visitedColor: string | null;
|
|
84
|
+
wordSpacing: number | null;
|
|
85
|
+
constructor(defaults: IEpubDefaults);
|
|
86
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ConfigurablePreferences } from "../../preferences/Configurable";
|
|
2
|
+
import { LayoutStrategy, TextAlignment, Theme } from "../../preferences/Types";
|
|
3
|
+
export interface IEpubPreferences {
|
|
4
|
+
backgroundColor?: string | null;
|
|
5
|
+
blendFilter?: boolean | null;
|
|
6
|
+
columnCount?: number | null;
|
|
7
|
+
constraint?: number | null;
|
|
8
|
+
darkenFilter?: boolean | number | null;
|
|
9
|
+
deprecatedFontSize?: boolean | null;
|
|
10
|
+
fontFamily?: string | null;
|
|
11
|
+
fontSize?: number | null;
|
|
12
|
+
fontSizeNormalize?: boolean | null;
|
|
13
|
+
fontOpticalSizing?: boolean | null;
|
|
14
|
+
fontWeight?: number | null;
|
|
15
|
+
fontWidth?: number | null;
|
|
16
|
+
hyphens?: boolean | null;
|
|
17
|
+
invertFilter?: boolean | number | null;
|
|
18
|
+
invertGaijiFilter?: boolean | number | null;
|
|
19
|
+
iOSPatch?: boolean | null;
|
|
20
|
+
iPadOSPatch?: boolean | null;
|
|
21
|
+
layoutStrategy?: LayoutStrategy | null;
|
|
22
|
+
letterSpacing?: number | null;
|
|
23
|
+
ligatures?: boolean | null;
|
|
24
|
+
lineHeight?: number | null;
|
|
25
|
+
linkColor?: string | null;
|
|
26
|
+
maximalLineLength?: number | null;
|
|
27
|
+
minimalLineLength?: number | null;
|
|
28
|
+
noRuby?: boolean | null;
|
|
29
|
+
optimalLineLength?: number | null;
|
|
30
|
+
pageGutter?: number | null;
|
|
31
|
+
paragraphIndent?: number | null;
|
|
32
|
+
paragraphSpacing?: number | null;
|
|
33
|
+
scroll?: boolean | null;
|
|
34
|
+
scrollPaddingTop?: number | null;
|
|
35
|
+
scrollPaddingBottom?: number | null;
|
|
36
|
+
selectionBackgroundColor?: string | null;
|
|
37
|
+
selectionTextColor?: string | null;
|
|
38
|
+
textAlign?: TextAlignment | null;
|
|
39
|
+
textColor?: string | null;
|
|
40
|
+
textNormalization?: boolean | null;
|
|
41
|
+
theme?: Theme | null;
|
|
42
|
+
visitedColor?: string | null;
|
|
43
|
+
wordSpacing?: number | null;
|
|
44
|
+
}
|
|
45
|
+
export declare class EpubPreferences implements ConfigurablePreferences {
|
|
46
|
+
backgroundColor?: string | null;
|
|
47
|
+
blendFilter?: boolean | null;
|
|
48
|
+
constraint?: number | null;
|
|
49
|
+
columnCount?: number | null;
|
|
50
|
+
darkenFilter?: boolean | number | null;
|
|
51
|
+
deprecatedFontSize?: boolean | null;
|
|
52
|
+
fontFamily?: string | null;
|
|
53
|
+
fontSize?: number | null;
|
|
54
|
+
fontSizeNormalize?: boolean | null;
|
|
55
|
+
fontOpticalSizing?: boolean | null;
|
|
56
|
+
fontWeight?: number | null;
|
|
57
|
+
fontWidth?: number | null;
|
|
58
|
+
hyphens?: boolean | null;
|
|
59
|
+
invertFilter?: boolean | number | null;
|
|
60
|
+
invertGaijiFilter?: boolean | number | null;
|
|
61
|
+
iOSPatch?: boolean | null;
|
|
62
|
+
iPadOSPatch?: boolean | null;
|
|
63
|
+
layoutStrategy?: LayoutStrategy | null;
|
|
64
|
+
letterSpacing?: number | null;
|
|
65
|
+
ligatures?: boolean | null;
|
|
66
|
+
lineHeight?: number | null;
|
|
67
|
+
linkColor?: string | null;
|
|
68
|
+
maximalLineLength?: number | null;
|
|
69
|
+
minimalLineLength?: number | null;
|
|
70
|
+
noRuby?: boolean | null;
|
|
71
|
+
optimalLineLength?: number | null;
|
|
72
|
+
pageGutter?: number | null;
|
|
73
|
+
paragraphIndent?: number | null;
|
|
74
|
+
paragraphSpacing?: number | null;
|
|
75
|
+
scroll?: boolean | null;
|
|
76
|
+
scrollPaddingTop?: number | null;
|
|
77
|
+
scrollPaddingBottom?: number | null;
|
|
78
|
+
selectionBackgroundColor?: string | null;
|
|
79
|
+
selectionTextColor?: string | null;
|
|
80
|
+
textAlign?: TextAlignment | null;
|
|
81
|
+
textColor?: string | null;
|
|
82
|
+
textNormalization?: boolean | null;
|
|
83
|
+
theme?: Theme | null;
|
|
84
|
+
visitedColor?: string | null;
|
|
85
|
+
wordSpacing?: number | null;
|
|
86
|
+
constructor(preferences?: IEpubPreferences);
|
|
87
|
+
static serialize(preferences: EpubPreferences): string;
|
|
88
|
+
static deserialize(preferences: string): EpubPreferences | null;
|
|
89
|
+
merging(other: ConfigurablePreferences): ConfigurablePreferences;
|
|
90
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Metadata } from "@readium/shared";
|
|
2
|
+
import { IPreferencesEditor } from "../../preferences/PreferencesEditor";
|
|
3
|
+
import { EpubPreferences } from "./EpubPreferences";
|
|
4
|
+
import { EpubSettings } from "./EpubSettings";
|
|
5
|
+
import { BooleanPreference, EnumPreference, Preference, RangePreference } from "../../preferences/Preference";
|
|
6
|
+
import { LayoutStrategy, TextAlignment, Theme } from "../../preferences/Types";
|
|
7
|
+
export declare class EpubPreferencesEditor implements IPreferencesEditor {
|
|
8
|
+
preferences: EpubPreferences;
|
|
9
|
+
private settings;
|
|
10
|
+
private metadata;
|
|
11
|
+
private layout;
|
|
12
|
+
constructor(initialPreferences: EpubPreferences, settings: EpubSettings, metadata: Metadata);
|
|
13
|
+
clear(): void;
|
|
14
|
+
private updatePreference;
|
|
15
|
+
get backgroundColor(): Preference<string>;
|
|
16
|
+
get blendFilter(): BooleanPreference;
|
|
17
|
+
get columnCount(): Preference<number>;
|
|
18
|
+
get constraint(): Preference<number>;
|
|
19
|
+
get darkenFilter(): RangePreference<number>;
|
|
20
|
+
get deprecatedFontSize(): BooleanPreference;
|
|
21
|
+
get fontFamily(): Preference<string>;
|
|
22
|
+
get fontSize(): RangePreference<number>;
|
|
23
|
+
get fontSizeNormalize(): BooleanPreference;
|
|
24
|
+
get fontOpticalSizing(): BooleanPreference;
|
|
25
|
+
get fontWeight(): RangePreference<number>;
|
|
26
|
+
get fontWidth(): RangePreference<number>;
|
|
27
|
+
get hyphens(): BooleanPreference;
|
|
28
|
+
get invertFilter(): RangePreference<number>;
|
|
29
|
+
get invertGaijiFilter(): RangePreference<number>;
|
|
30
|
+
get iOSPatch(): BooleanPreference;
|
|
31
|
+
get iPadOSPatch(): BooleanPreference;
|
|
32
|
+
get layoutStrategy(): EnumPreference<LayoutStrategy>;
|
|
33
|
+
get letterSpacing(): RangePreference<number>;
|
|
34
|
+
get ligatures(): BooleanPreference;
|
|
35
|
+
get lineHeight(): RangePreference<number>;
|
|
36
|
+
get linkColor(): Preference<string>;
|
|
37
|
+
get maximalLineLength(): RangePreference<number>;
|
|
38
|
+
get minimalLineLength(): RangePreference<number>;
|
|
39
|
+
get noRuby(): BooleanPreference;
|
|
40
|
+
get optimalLineLength(): RangePreference<number>;
|
|
41
|
+
get pageGutter(): Preference<number>;
|
|
42
|
+
get paragraphIndent(): RangePreference<number>;
|
|
43
|
+
get paragraphSpacing(): RangePreference<number>;
|
|
44
|
+
get scroll(): BooleanPreference;
|
|
45
|
+
get scrollPaddingTop(): Preference<number>;
|
|
46
|
+
get scrollPaddingBottom(): Preference<number>;
|
|
47
|
+
get selectionBackgroundColor(): Preference<string>;
|
|
48
|
+
get selectionTextColor(): Preference<string>;
|
|
49
|
+
get textAlign(): EnumPreference<TextAlignment>;
|
|
50
|
+
get textColor(): Preference<string>;
|
|
51
|
+
get textNormalization(): BooleanPreference;
|
|
52
|
+
get theme(): EnumPreference<Theme>;
|
|
53
|
+
get visitedColor(): Preference<string>;
|
|
54
|
+
get wordSpacing(): RangePreference<number>;
|
|
55
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ConfigurableSettings } from "../../preferences/Configurable";
|
|
2
|
+
import { LayoutStrategy, TextAlignment, Theme } from "../../preferences/Types";
|
|
3
|
+
import { EpubDefaults } from "./EpubDefaults";
|
|
4
|
+
import { EpubPreferences } from "./EpubPreferences";
|
|
5
|
+
export interface IEpubSettings {
|
|
6
|
+
backgroundColor?: string | null;
|
|
7
|
+
blendFilter?: boolean | null;
|
|
8
|
+
columnCount?: number | null;
|
|
9
|
+
constraint?: number | null;
|
|
10
|
+
darkenFilter?: boolean | number | null;
|
|
11
|
+
deprecatedFontSize?: boolean | null;
|
|
12
|
+
fontFamily?: string | null;
|
|
13
|
+
fontSize?: number | null;
|
|
14
|
+
fontSizeNormalize?: boolean | null;
|
|
15
|
+
fontOpticalSizing?: boolean | null;
|
|
16
|
+
fontWeight?: number | null;
|
|
17
|
+
fontWidth?: number | null;
|
|
18
|
+
hyphens?: boolean | null;
|
|
19
|
+
invertFilter?: boolean | number | null;
|
|
20
|
+
invertGaijiFilter: boolean | number | null;
|
|
21
|
+
iOSPatch?: boolean | null;
|
|
22
|
+
iPadOSPatch?: boolean | null;
|
|
23
|
+
layoutStrategy?: LayoutStrategy | null;
|
|
24
|
+
letterSpacing?: number | null;
|
|
25
|
+
ligatures?: boolean | null;
|
|
26
|
+
lineHeight?: number | null;
|
|
27
|
+
linkColor?: string | null;
|
|
28
|
+
maximalLineLength?: number | null;
|
|
29
|
+
minimalLineLength?: number | null;
|
|
30
|
+
noRuby?: boolean | null;
|
|
31
|
+
optimalLineLength?: number | null;
|
|
32
|
+
pageGutter?: number | null;
|
|
33
|
+
paragraphIndent?: number | null;
|
|
34
|
+
paragraphSpacing?: number | null;
|
|
35
|
+
scroll?: boolean | null;
|
|
36
|
+
scrollPaddingTop?: number | null;
|
|
37
|
+
scrollPaddingBottom?: number | null;
|
|
38
|
+
selectionBackgroundColor?: string | null;
|
|
39
|
+
selectionTextColor?: string | null;
|
|
40
|
+
textAlign?: TextAlignment | null;
|
|
41
|
+
textColor?: string | null;
|
|
42
|
+
textNormalization?: boolean | null;
|
|
43
|
+
theme?: Theme | null;
|
|
44
|
+
visitedColor?: string | null;
|
|
45
|
+
wordSpacing?: number | null;
|
|
46
|
+
}
|
|
47
|
+
export declare class EpubSettings implements ConfigurableSettings {
|
|
48
|
+
backgroundColor: string | null;
|
|
49
|
+
blendFilter: boolean | null;
|
|
50
|
+
columnCount: number | null;
|
|
51
|
+
constraint: number;
|
|
52
|
+
darkenFilter: boolean | number | null;
|
|
53
|
+
deprecatedFontSize: boolean | null;
|
|
54
|
+
fontFamily: string | null;
|
|
55
|
+
fontSize: number | null;
|
|
56
|
+
fontSizeNormalize: boolean | null;
|
|
57
|
+
fontOpticalSizing: boolean | null;
|
|
58
|
+
fontWeight: number | null;
|
|
59
|
+
fontWidth: number | null;
|
|
60
|
+
hyphens: boolean | null;
|
|
61
|
+
invertFilter: boolean | number | null;
|
|
62
|
+
invertGaijiFilter: boolean | number | null;
|
|
63
|
+
iOSPatch: boolean;
|
|
64
|
+
iPadOSPatch: boolean;
|
|
65
|
+
layoutStrategy: LayoutStrategy | null;
|
|
66
|
+
letterSpacing: number | null;
|
|
67
|
+
ligatures: boolean | null;
|
|
68
|
+
lineHeight: number | null;
|
|
69
|
+
linkColor: string | null;
|
|
70
|
+
maximalLineLength: number | null;
|
|
71
|
+
minimalLineLength: number | null;
|
|
72
|
+
noRuby: boolean | null;
|
|
73
|
+
optimalLineLength: number;
|
|
74
|
+
pageGutter: number | null;
|
|
75
|
+
paragraphIndent: number | null;
|
|
76
|
+
paragraphSpacing: number | null;
|
|
77
|
+
scroll: boolean | null;
|
|
78
|
+
scrollPaddingTop: number | null;
|
|
79
|
+
scrollPaddingBottom: number | null;
|
|
80
|
+
selectionBackgroundColor: string | null;
|
|
81
|
+
selectionTextColor: string | null;
|
|
82
|
+
textAlign: TextAlignment | null;
|
|
83
|
+
textColor: string | null;
|
|
84
|
+
textNormalization: boolean | null;
|
|
85
|
+
theme: Theme | null;
|
|
86
|
+
visitedColor: string | null;
|
|
87
|
+
wordSpacing: number | null;
|
|
88
|
+
constructor(preferences: EpubPreferences, defaults: EpubDefaults);
|
|
89
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function ensureLessThanOrEqual<T extends number | null | undefined>(value: T, compareTo: T): T | undefined;
|
|
2
|
+
export declare function ensureMoreThanOrEqual<T extends number | null | undefined>(value: T, compareTo: T): T | undefined;
|
|
3
|
+
export declare function ensureString(value: string | null | undefined): string | null | undefined;
|
|
4
|
+
export declare function ensureBoolean(value: boolean | null | undefined): boolean | null | undefined;
|
|
5
|
+
export declare function ensureEnumValue<T extends string>(value: T | null | undefined, enumType: Record<T, string>): T | null | undefined;
|
|
6
|
+
export declare function ensureFilter(filter: boolean | number | null | undefined): boolean | number | null | undefined;
|
|
7
|
+
export declare function ensureNonNegative(value: number | null | undefined): number | null | undefined;
|
|
8
|
+
export declare function ensureValueInRange(value: number | null | undefined, range: [number, number]): number | null | undefined;
|
|
9
|
+
export declare function withFallback<T>(value: T | null | undefined, defaultValue: T | null): T | null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export interface ICustomFontFace {
|
|
2
|
+
name: string;
|
|
3
|
+
url: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ILineLengthsConfig {
|
|
6
|
+
optimalChars: number;
|
|
7
|
+
minChars?: number | null;
|
|
8
|
+
maxChars?: number | null;
|
|
9
|
+
baseFontSize?: number | null;
|
|
10
|
+
sample?: string | null;
|
|
11
|
+
pageGutter?: number | null;
|
|
12
|
+
fontFace?: string | ICustomFontFace | null;
|
|
13
|
+
letterSpacing?: number | null;
|
|
14
|
+
wordSpacing?: number | null;
|
|
15
|
+
isCJK?: boolean | null;
|
|
16
|
+
getRelative?: boolean | null;
|
|
17
|
+
}
|
|
18
|
+
export interface ILineLengths {
|
|
19
|
+
min: number | null;
|
|
20
|
+
max: number | null;
|
|
21
|
+
optimal: number;
|
|
22
|
+
baseFontSize: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class LineLengths {
|
|
25
|
+
private _canvas;
|
|
26
|
+
private _optimalChars;
|
|
27
|
+
private _minChars?;
|
|
28
|
+
private _maxChars?;
|
|
29
|
+
private _baseFontSize;
|
|
30
|
+
private _fontFace;
|
|
31
|
+
private _sample;
|
|
32
|
+
private _pageGutter;
|
|
33
|
+
private _letterSpacing;
|
|
34
|
+
private _wordSpacing;
|
|
35
|
+
private _isCJK;
|
|
36
|
+
private _getRelative;
|
|
37
|
+
private _padding;
|
|
38
|
+
private _minDivider;
|
|
39
|
+
private _maxMultiplier;
|
|
40
|
+
private _approximatedWordSpaces;
|
|
41
|
+
private _optimalLineLength;
|
|
42
|
+
constructor(config: ILineLengthsConfig);
|
|
43
|
+
private updateMultipliers;
|
|
44
|
+
update(props: Partial<ILineLengthsConfig>): void;
|
|
45
|
+
get baseFontSize(): number;
|
|
46
|
+
get minimalLineLength(): number | null;
|
|
47
|
+
get maximalLineLength(): number | null;
|
|
48
|
+
get optimalLineLength(): number;
|
|
49
|
+
get all(): ILineLengths;
|
|
50
|
+
private static approximateWordSpaces;
|
|
51
|
+
private getLineLengthFallback;
|
|
52
|
+
private getOptimalLineLength;
|
|
53
|
+
private measureText;
|
|
54
|
+
}
|
|
@@ -41,11 +41,16 @@ declare interface UAFlags {
|
|
|
41
41
|
Facebook: number[];
|
|
42
42
|
LINE: number[];
|
|
43
43
|
}
|
|
44
|
+
declare type iOSRequest = "mobile" | "desktop" | undefined;
|
|
44
45
|
declare class sMLFactory {
|
|
45
46
|
OS: OSFlags;
|
|
46
47
|
UA: UAFlags;
|
|
47
48
|
Env: string[];
|
|
48
49
|
constructor();
|
|
49
50
|
}
|
|
51
|
+
declare class sMLFactoryWithRequest extends sMLFactory {
|
|
52
|
+
get iOSRequest(): iOSRequest;
|
|
53
|
+
}
|
|
50
54
|
declare const sML: sMLFactory;
|
|
51
|
-
|
|
55
|
+
declare const sMLWithRequest: sMLFactoryWithRequest;
|
|
56
|
+
export { sML, sMLWithRequest };
|
package/types/src/index.d.ts
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IPreferencesEditor } from "./PreferencesEditor";
|
|
2
|
+
export interface ConfigurableSettings {
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
}
|
|
5
|
+
export interface ConfigurablePreferences {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
merging(other: ConfigurablePreferences): ConfigurablePreferences;
|
|
8
|
+
}
|
|
9
|
+
export interface Configurable<ConfigurableSettings, ConfigurablePreferences> {
|
|
10
|
+
settings: ConfigurableSettings;
|
|
11
|
+
submitPreferences(preferences: ConfigurablePreferences): void;
|
|
12
|
+
preferencesEditor: IPreferencesEditor;
|
|
13
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export interface IPreference<T> {
|
|
2
|
+
/**
|
|
3
|
+
* The current value of the preference.
|
|
4
|
+
*/
|
|
5
|
+
value: T | null | undefined;
|
|
6
|
+
/**
|
|
7
|
+
* The value that will be effectively used by the Configurable object if preferences are submitted as they are.
|
|
8
|
+
*/
|
|
9
|
+
effectiveValue: T | null | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Indicates if this preference will be effectively used by the Configurable object if preferences are submitted as they are.
|
|
12
|
+
*/
|
|
13
|
+
isEffective: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Unset the preference.
|
|
16
|
+
* Equivalent to set(null).
|
|
17
|
+
*/
|
|
18
|
+
clear(): void;
|
|
19
|
+
}
|
|
20
|
+
export interface IBooleanPreference extends IPreference<boolean> {
|
|
21
|
+
/**
|
|
22
|
+
* Toggle the preference to its opposite value.
|
|
23
|
+
*/
|
|
24
|
+
toggle(): void;
|
|
25
|
+
}
|
|
26
|
+
export interface IEnumPreference<T> extends IPreference<T> {
|
|
27
|
+
/**
|
|
28
|
+
* The possible values for this preference.
|
|
29
|
+
*/
|
|
30
|
+
supportedValues: T[];
|
|
31
|
+
}
|
|
32
|
+
export interface IRangePreference<T> extends IPreference<T> {
|
|
33
|
+
/**
|
|
34
|
+
* The supported range [min, max] for this preference.
|
|
35
|
+
*/
|
|
36
|
+
supportedRange: [T, T];
|
|
37
|
+
/**
|
|
38
|
+
* The step value for the incrementing/decrementing into the range.
|
|
39
|
+
*/
|
|
40
|
+
step: number;
|
|
41
|
+
/**
|
|
42
|
+
* Increase the preference value.
|
|
43
|
+
*/
|
|
44
|
+
increment(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Decrease the preference value.
|
|
47
|
+
*/
|
|
48
|
+
decrement(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Format the preference value as a string.
|
|
51
|
+
*/
|
|
52
|
+
format(value: T): string;
|
|
53
|
+
}
|
|
54
|
+
export declare class Preference<T> implements Preference<T> {
|
|
55
|
+
protected _value?: T | null;
|
|
56
|
+
protected readonly _effectiveValue?: T | null;
|
|
57
|
+
protected readonly _isEffective: boolean;
|
|
58
|
+
protected _onChange: (newValue: T | null | undefined) => void;
|
|
59
|
+
constructor({ initialValue, effectiveValue, isEffective, onChange }: {
|
|
60
|
+
initialValue?: T | null;
|
|
61
|
+
effectiveValue?: T | null;
|
|
62
|
+
isEffective: boolean;
|
|
63
|
+
onChange: (newValue: T | null | undefined) => void;
|
|
64
|
+
});
|
|
65
|
+
set value(value: T | null | undefined);
|
|
66
|
+
get value(): T | null | undefined;
|
|
67
|
+
get effectiveValue(): T | null | undefined;
|
|
68
|
+
get isEffective(): boolean;
|
|
69
|
+
clear(): void;
|
|
70
|
+
}
|
|
71
|
+
export declare class BooleanPreference extends Preference<boolean> implements IBooleanPreference {
|
|
72
|
+
set value(value: boolean | null | undefined);
|
|
73
|
+
get value(): boolean | null | undefined;
|
|
74
|
+
get effectiveValue(): boolean | null | undefined;
|
|
75
|
+
get isEffective(): boolean;
|
|
76
|
+
clear(): void;
|
|
77
|
+
toggle(): void;
|
|
78
|
+
}
|
|
79
|
+
export declare class EnumPreference<T extends string | number | symbol> extends Preference<T> implements IEnumPreference<T> {
|
|
80
|
+
private readonly _supportedValues;
|
|
81
|
+
constructor({ initialValue, effectiveValue, isEffective, onChange, supportedValues }: {
|
|
82
|
+
initialValue?: T | null;
|
|
83
|
+
effectiveValue?: T | null;
|
|
84
|
+
isEffective: boolean;
|
|
85
|
+
onChange: (newValue: T | null | undefined) => void;
|
|
86
|
+
supportedValues: T[];
|
|
87
|
+
});
|
|
88
|
+
set value(value: T | null | undefined);
|
|
89
|
+
get value(): T | null | undefined;
|
|
90
|
+
get effectiveValue(): T | null | undefined;
|
|
91
|
+
get isEffective(): boolean;
|
|
92
|
+
get supportedValues(): T[];
|
|
93
|
+
clear(): void;
|
|
94
|
+
}
|
|
95
|
+
export declare class RangePreference<T extends number> extends Preference<T> implements IRangePreference<T> {
|
|
96
|
+
private readonly _supportedRange;
|
|
97
|
+
private readonly _step;
|
|
98
|
+
private readonly _decimals;
|
|
99
|
+
constructor({ initialValue, effectiveValue, isEffective, onChange, supportedRange, step }: {
|
|
100
|
+
initialValue?: T | null;
|
|
101
|
+
effectiveValue?: T | null;
|
|
102
|
+
isEffective: boolean;
|
|
103
|
+
onChange: (newValue: T | null | undefined) => void;
|
|
104
|
+
supportedRange: [T, T];
|
|
105
|
+
step: number;
|
|
106
|
+
});
|
|
107
|
+
set value(value: T | null | undefined);
|
|
108
|
+
get value(): T | null | undefined;
|
|
109
|
+
get effectiveValue(): T | null | undefined;
|
|
110
|
+
get isEffective(): boolean;
|
|
111
|
+
get supportedRange(): [T, T];
|
|
112
|
+
get step(): number;
|
|
113
|
+
increment(): void;
|
|
114
|
+
decrement(): void;
|
|
115
|
+
format(value: T): string;
|
|
116
|
+
clear(): void;
|
|
117
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare enum TextAlignment {
|
|
2
|
+
start = "start",
|
|
3
|
+
left = "left",
|
|
4
|
+
right = "right",
|
|
5
|
+
justify = "justify"
|
|
6
|
+
}
|
|
7
|
+
export declare enum Theme {
|
|
8
|
+
sepia = "sepia",
|
|
9
|
+
night = "night",
|
|
10
|
+
custom = "custom"
|
|
11
|
+
}
|
|
12
|
+
export declare enum LayoutStrategy {
|
|
13
|
+
margin = "margin",
|
|
14
|
+
lineLength = "lineLength",
|
|
15
|
+
columns = "columns"
|
|
16
|
+
}
|
|
17
|
+
export type RangeConfig = {
|
|
18
|
+
range: [number, number];
|
|
19
|
+
step: number;
|
|
20
|
+
};
|
|
21
|
+
export declare const fontSizeRangeConfig: RangeConfig;
|
|
22
|
+
export declare const fontWeightRangeConfig: RangeConfig;
|
|
23
|
+
export declare const fontWidthRangeConfig: RangeConfig;
|