@readium/navigator 2.5.2-beta.4 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/{ReadiumCSS-after-DBPN8It0.js → ReadiumCSS-after-BYNAMW5u.js} +4 -4
  2. package/dist/{ReadiumCSS-after-CVNJvQab.js → ReadiumCSS-after-C8SjJ_Rf.js} +4 -4
  3. package/dist/{ReadiumCSS-after-CPAYSG9F.js → ReadiumCSS-after-Dzd22Ssm.js} +6 -7
  4. package/dist/{ReadiumCSS-after-Cpw6SSeZ.js → ReadiumCSS-after-b-ykC0_O.js} +11 -12
  5. package/dist/ReadiumCSS-before-6kD9Qj82.js +529 -0
  6. package/dist/ReadiumCSS-before-CvMFpmud.js +529 -0
  7. package/dist/ReadiumCSS-before-crwPhKrV.js +529 -0
  8. package/dist/ReadiumCSS-before-usMdEglk.js +530 -0
  9. package/dist/{ReadiumCSS-default-BMLfH2r9.js → ReadiumCSS-default-BVp3Ygi2.js} +1 -1
  10. package/dist/{ReadiumCSS-default-C_BHdXWz.js → ReadiumCSS-default-CL_hP__L.js} +1 -1
  11. package/dist/{ReadiumCSS-default-BTgk8NbH.js → ReadiumCSS-default-nJgSC4Z_.js} +1 -1
  12. package/dist/{ReadiumCSS-default-C7kHIm6s.js → ReadiumCSS-default-vv7hNCaM.js} +1 -1
  13. package/dist/index.js +621 -581
  14. package/dist/index.umd.cjs +703 -290
  15. package/package.json +2 -2
  16. package/src/epub/fxl/FXLFrameManager.ts +13 -2
  17. package/src/epub/preferences/EpubPreferencesEditor.ts +6 -6
  18. package/src/helpers/lineLength.ts +1 -1
  19. package/src/preferences/Types.ts +21 -1
  20. package/types/src/epub/fxl/FXLFrameManager.d.ts +1 -0
  21. package/types/src/preferences/Types.d.ts +15 -0
  22. package/dist/ReadiumCSS-before-CA1r4W7i.js +0 -425
  23. package/dist/ReadiumCSS-before-D5x0zuZP.js +0 -425
  24. package/dist/ReadiumCSS-before-DXNoxSjL.js +0 -426
  25. package/dist/ReadiumCSS-before-DtkzLMzT.js +0 -425
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@readium/navigator",
3
- "version": "2.5.2-beta.4",
3
+ "version": "2.5.2",
4
4
  "type": "module",
5
5
  "description": "Next generation SDK for publications in Web Apps",
6
6
  "author": "readium",
@@ -50,7 +50,7 @@
50
50
  "generate:css-selector": "node scripts/generate-css-selector.js"
51
51
  },
52
52
  "devDependencies": {
53
- "@readium/css": "^2.0.2",
53
+ "@readium/css": "^2.0.4",
54
54
  "@readium/navigator-html-injectables": "workspace:*",
55
55
  "@readium/shared": "workspace:*",
56
56
  "@types/path-browserify": "^1.0.3",
@@ -4,6 +4,7 @@ import { FrameComms } from "../frame/FrameComms.ts";
4
4
  import { FXLPeripherals } from "./FXLPeripherals.ts";
5
5
  import type { ReadiumWindow } from "../../../../navigator-html-injectables/types/src/helpers/dom";
6
6
  import { IContentProtectionConfig, IKeyboardPeripheralsConfig } from "../../Navigator.ts";
7
+ import { KeyboardConditionBridge } from "../../peripherals/KeyboardConditionBridge.ts";
7
8
 
8
9
  export class FXLFrameManager {
9
10
  private frame: HTMLIFrameElement;
@@ -13,6 +14,7 @@ export class FXLFrameManager {
13
14
  private readonly peripherals: FXLPeripherals;
14
15
  private readonly contentProtectionConfig: IContentProtectionConfig;
15
16
  private readonly keyboardPeripheralsConfig: IKeyboardPeripheralsConfig;
17
+ private conditionBridge?: KeyboardConditionBridge;
16
18
  private currModules: ModuleName[] = [];
17
19
 
18
20
  // NEW
@@ -159,6 +161,7 @@ export class FXLFrameManager {
159
161
  }
160
162
 
161
163
  async destroy() {
164
+ this.conditionBridge?.destroy();
162
165
  await this.unfocus();
163
166
  this.loader?.destroy();
164
167
  this.wrapper.remove();
@@ -213,9 +216,17 @@ export class FXLFrameManager {
213
216
  // Send content protection config
214
217
  this.comms!.send("peripherals_protection", this.contentProtectionConfig);
215
218
 
216
- // Send keyboard peripherals separately
219
+ // Send keyboard peripherals, filtered through condition bridge
217
220
  if (this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0) {
218
- this.comms!.send("keyboard_peripherals", this.keyboardPeripheralsConfig);
221
+ this.conditionBridge?.destroy();
222
+ this.conditionBridge = new KeyboardConditionBridge(
223
+ this.keyboardPeripheralsConfig,
224
+ (serializable) => {
225
+ if (serializable.length > 0)
226
+ this.comms!.send("keyboard_peripherals", serializable);
227
+ }
228
+ );
229
+ this.conditionBridge.setup();
219
230
  }
220
231
 
221
232
  // Apply print protection if configured
@@ -44,7 +44,7 @@ export class EpubPreferencesEditor implements IPreferencesEditor {
44
44
  get backgroundColor(): Preference<string> {
45
45
  return new Preference<string>({
46
46
  initialValue: this.preferences.backgroundColor,
47
- effectiveValue: this.settings.backgroundColor || defaultColors.RS__backgroundColor,
47
+ effectiveValue: this.settings.backgroundColor || defaultColors.backgroundColor,
48
48
  isEffective: this.preferences.backgroundColor !== null,
49
49
  onChange: (newValue: string | null | undefined) => {
50
50
  this.updatePreference("backgroundColor", newValue ?? null);
@@ -302,7 +302,7 @@ export class EpubPreferencesEditor implements IPreferencesEditor {
302
302
  get linkColor(): Preference<string> {
303
303
  return new Preference<string>({
304
304
  initialValue: this.preferences.linkColor,
305
- effectiveValue: this.settings.linkColor || defaultColors.RS__linkColor,
305
+ effectiveValue: this.settings.linkColor || defaultColors.linkColor,
306
306
  isEffective: this.layout !== Layout.fixed && this.preferences.linkColor !== null,
307
307
  onChange: (newValue: string | null | undefined) => {
308
308
  this.updatePreference("linkColor", newValue ?? null);
@@ -455,7 +455,7 @@ export class EpubPreferencesEditor implements IPreferencesEditor {
455
455
  get selectionBackgroundColor(): Preference<string> {
456
456
  return new Preference<string>({
457
457
  initialValue: this.preferences.selectionBackgroundColor,
458
- effectiveValue: this.settings.selectionBackgroundColor || defaultColors.RS__selectionBackgroundColor,
458
+ effectiveValue: this.settings.selectionBackgroundColor || defaultColors.selectionBackgroundColor,
459
459
  isEffective: this.layout !== Layout.fixed && this.preferences.selectionBackgroundColor !== null,
460
460
  onChange: (newValue: string | null | undefined) => {
461
461
  this.updatePreference("selectionBackgroundColor", newValue ?? null);
@@ -466,7 +466,7 @@ export class EpubPreferencesEditor implements IPreferencesEditor {
466
466
  get selectionTextColor(): Preference<string> {
467
467
  return new Preference<string>({
468
468
  initialValue: this.preferences.selectionTextColor,
469
- effectiveValue: this.settings.selectionTextColor || defaultColors.RS__selectionTextColor,
469
+ effectiveValue: this.settings.selectionTextColor || defaultColors.selectionTextColor,
470
470
  isEffective: this.layout !== Layout.fixed && this.preferences.selectionTextColor !== null,
471
471
  onChange: (newValue: string | null | undefined) => {
472
472
  this.updatePreference("selectionTextColor", newValue ?? null);
@@ -489,7 +489,7 @@ export class EpubPreferencesEditor implements IPreferencesEditor {
489
489
  get textColor(): Preference<string> {
490
490
  return new Preference<string>({
491
491
  initialValue: this.preferences.textColor,
492
- effectiveValue: this.settings.textColor || defaultColors.RS__textColor,
492
+ effectiveValue: this.settings.textColor || defaultColors.textColor,
493
493
  isEffective: this.layout !== Layout.fixed && this.preferences.textColor !== null,
494
494
  onChange: (newValue: string | null | undefined) => {
495
495
  this.updatePreference("textColor", newValue ?? null);
@@ -511,7 +511,7 @@ export class EpubPreferencesEditor implements IPreferencesEditor {
511
511
  get visitedColor(): Preference<string> {
512
512
  return new Preference<string>({
513
513
  initialValue: this.preferences.visitedColor,
514
- effectiveValue: this.settings.visitedColor || defaultColors.RS__visitedColor,
514
+ effectiveValue: this.settings.visitedColor || defaultColors.visitedColor,
515
515
  isEffective: this.layout !== Layout.fixed && this.preferences.visitedColor !== null,
516
516
  onChange: (newValue: string | null | undefined) => {
517
517
  this.updatePreference("visitedColor", newValue ?? null);
@@ -27,7 +27,7 @@ export interface ILineLengths {
27
27
  }
28
28
 
29
29
  const DEFAULT_FONT_SIZE = 16;
30
- const DEFAULT_FONT_FACE = fontStacks.RS__oldStyleTf;
30
+ const DEFAULT_FONT_FACE = fontStacks.oldStyleTf;
31
31
 
32
32
  // Notes:
33
33
  //
@@ -1,8 +1,28 @@
1
1
  import RCSSExperiments from "@readium/css/css/vars/experiments.json";
2
+ import RCSSSettings from "@readium/css/css/vars/settings.json";
3
+ import RCSSI18n from "@readium/css/css/vars/i18n.json";
2
4
 
3
5
  export type ExperimentKey = keyof typeof RCSSExperiments;
6
+ export type SettingsKey = keyof typeof RCSSSettings;
7
+ export type I18nKey = keyof typeof RCSSI18n;
8
+
9
+ export type RCSSSettingsProperty =
10
+ | (typeof RCSSSettings)[SettingsKey]["disabled"][number]
11
+ | (typeof RCSSSettings)[SettingsKey]["added"][number];
12
+
13
+ export type RCSSSettingsEntry = {
14
+ disabled: readonly RCSSSettingsProperty[];
15
+ added: readonly RCSSSettingsProperty[];
16
+ }
17
+
18
+ export type RCSSI18nEntry = {
19
+ baseFontFamily: string;
20
+ lineHeightCompensation?: number;
21
+ }
4
22
 
5
23
  export const experiments = RCSSExperiments;
24
+ export const settings: Record<SettingsKey, RCSSSettingsEntry> = RCSSSettings;
25
+ export const i18n: Record<I18nKey, RCSSI18nEntry> = RCSSI18n;
6
26
 
7
27
  export enum TextAlignment {
8
28
  start = "start",
@@ -44,7 +64,7 @@ export const letterSpacingRangeConfig: RangeConfig = {
44
64
  }
45
65
 
46
66
  export const lineHeightRangeConfig: RangeConfig = {
47
- range: [1, 2],
67
+ range: [1, 2.5],
48
68
  step: .1
49
69
  }
50
70
 
@@ -11,6 +11,7 @@ export declare class FXLFrameManager {
11
11
  private readonly peripherals;
12
12
  private readonly contentProtectionConfig;
13
13
  private readonly keyboardPeripheralsConfig;
14
+ private conditionBridge?;
14
15
  private currModules;
15
16
  wrapper: HTMLDivElement;
16
17
  debugHref: string;
@@ -1,5 +1,18 @@
1
1
  import RCSSExperiments from "@readium/css/css/vars/experiments.json";
2
+ import RCSSSettings from "@readium/css/css/vars/settings.json";
3
+ import RCSSI18n from "@readium/css/css/vars/i18n.json";
2
4
  export type ExperimentKey = keyof typeof RCSSExperiments;
5
+ export type SettingsKey = keyof typeof RCSSSettings;
6
+ export type I18nKey = keyof typeof RCSSI18n;
7
+ export type RCSSSettingsProperty = (typeof RCSSSettings)[SettingsKey]["disabled"][number] | (typeof RCSSSettings)[SettingsKey]["added"][number];
8
+ export type RCSSSettingsEntry = {
9
+ disabled: readonly RCSSSettingsProperty[];
10
+ added: readonly RCSSSettingsProperty[];
11
+ };
12
+ export type RCSSI18nEntry = {
13
+ baseFontFamily: string;
14
+ lineHeightCompensation?: number;
15
+ };
3
16
  export declare const experiments: {
4
17
  experimentalHeaderFiltering: {
5
18
  description: string;
@@ -12,6 +25,8 @@ export declare const experiments: {
12
25
  value: string;
13
26
  };
14
27
  };
28
+ export declare const settings: Record<SettingsKey, RCSSSettingsEntry>;
29
+ export declare const i18n: Record<I18nKey, RCSSI18nEntry>;
15
30
  export declare enum TextAlignment {
16
31
  start = "start",
17
32
  left = "left",
@@ -1,425 +0,0 @@
1
- const n = `/*!
2
- * Readium CSS v.2.0.0
3
- * Copyright (c) 2017–2026. Readium Foundation. All rights reserved.
4
- * Use of this source code is governed by a BSD-style license which is detailed in the
5
- * LICENSE file present in the project repository where this source code is maintained.
6
- * Core maintainer: Jiminy Panoz <jiminy.panoz@edrlab.org>
7
- * Contributors:
8
- * Daniel Weck
9
- * Hadrien Gardeur
10
- * Innovimax
11
- * L. Le Meur
12
- * Mickaël Menu
13
- * k_taka
14
- */
15
-
16
- @namespace url("http://www.w3.org/1999/xhtml");
17
-
18
- @namespace epub url("http://www.idpf.org/2007/ops");
19
-
20
- @namespace m url("http://www.w3.org/1998/Math/MathML");
21
-
22
- @namespace svg url("http://www.w3.org/2000/svg");
23
-
24
- @-ms-viewport{
25
- width:device-width;
26
- }
27
-
28
- @viewport{
29
- width:device-width;
30
- zoom:1;
31
- }
32
-
33
- :root{
34
-
35
- --RS__monospaceTf:ui-monospace, 'Andale Mono', 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
36
-
37
- --RS__humanistTf:Seravek, Calibri, 'Gill Sans Nova', Roboto, Ubuntu, 'DejaVu Sans', source-sans-pro, sans-serif;
38
-
39
- --RS__sansTf:-ui-sans-serif, -apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI Variable', 'Segoe UI', Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Liberation Sans', Arial, sans-serif;
40
-
41
- --RS__modernTf:Athelas, Constantia, Charter, 'Bitstream Charter', Cambria, 'Georgia Pro', Georgia, serif;
42
-
43
- --RS__oldStyleTf:'Iowan Old Style', Sitka, 'Sitka Text', Palatino, 'Book Antiqua', 'URW Palladio L', P052, serif;
44
- --RS__baseFontFamily:var(--RS__oldStyleTf);
45
- --RS__lineHeightCompensation:1;
46
-
47
- --RS__baseLineHeight:calc(1.5 * var(--RS__lineHeightCompensation));
48
-
49
- --RS__selectionTextColor:inherit;
50
-
51
- --RS__selectionBackgroundColor:#b4d8fe;
52
-
53
- --RS__visitedColor:#551A8B;
54
-
55
- --RS__linkColor:#0000EE;
56
-
57
- --RS__textColor:#121212;
58
-
59
- --RS__backgroundColor:#FFFFFF;
60
- color:var(--RS__textColor) !important;
61
-
62
- background-color:var(--RS__backgroundColor) !important;
63
- }
64
-
65
- ::-moz-selection{
66
- color:var(--RS__selectionTextColor);
67
- background-color:var(--RS__selectionBackgroundColor);
68
- }
69
-
70
- ::selection{
71
- color:var(--RS__selectionTextColor);
72
- background-color:var(--RS__selectionBackgroundColor);
73
- }
74
-
75
- html{
76
- font-family:var(--RS__baseFontFamily);
77
- line-height:1.6;
78
- line-height:var(--RS__baseLineHeight);
79
- text-rendering:optimizelegibility;
80
- }
81
-
82
- h1, h2, h3{
83
- line-height:normal;
84
- }
85
-
86
- :lang(ja),
87
- :lang(zh),
88
- :lang(ko){
89
- word-wrap:break-word;
90
- -webkit-line-break:strict;
91
- -epub-line-break:strict;
92
- line-break:strict;
93
- }
94
-
95
- math{
96
- font-family:"Latin Modern Math", "STIX Two Math", "XITS Math", "STIX Math", "Libertinus Math", "TeX Gyre Termes Math", "TeX Gyre Bonum Math", "TeX Gyre Schola", "DejaVu Math TeX Gyre", "TeX Gyre Pagella Math", "Asana Math", "Cambria Math", "Lucida Bright Math", "Minion Math", STIXGeneral, STIXSizeOneSym, Symbol, "Times New Roman", serif;
97
- }
98
-
99
- :lang(am){
100
- --RS__baseFontFamily:kefa, nyala, roboto, noto, "Noto Sans Ethiopic", serif;
101
- --RS__lineHeightCompensation:1.167;
102
- }
103
-
104
- :lang(ar){
105
- --RS__baseFontFamily:"Geeza Pro", "Arabic Typesetting", roboto, noto, "Noto Naskh Arabic", "Times New Roman", serif;
106
- }
107
-
108
- :lang(bn){
109
- --RS__baseFontFamily:"Kohinoor Bangla", "Bangla Sangam MN", vrinda, roboto, noto, "Noto Sans Bengali", sans-serif;
110
- --RS__lineHeightCompensation:1.067;
111
- }
112
-
113
- :lang(bo){
114
- --RS__baseFontFamily:kailasa, "Microsoft Himalaya", roboto, noto, "Noto Sans Tibetan", sans-serif;
115
- }
116
-
117
- :lang(chr){
118
- --RS__baseFontFamily:"Plantagenet Cherokee", roboto, noto, "Noto Sans Cherokee";
119
- --RS__lineHeightCompensation:1.167;
120
- }
121
-
122
- :lang(fa){
123
- --RS__baseFontFamily:"Geeza Pro", "Arabic Typesetting", roboto, noto, "Noto Naskh Arabic", "Times New Roman", serif;
124
- }
125
-
126
- :lang(gu){
127
- --RS__baseFontFamily:"Gujarati Sangam MN", "Nirmala UI", shruti, roboto, noto, "Noto Sans Gujarati", sans-serif;
128
- --RS__lineHeightCompensation:1.167;
129
- }
130
-
131
- :lang(he){
132
- --RS__baseFontFamily:"New Peninim MT", "Arial Hebrew", gisha, "Times New Roman", roboto, noto, "Noto Sans Hebrew" sans-serif;
133
- --RS__lineHeightCompensation:1.1;
134
- }
135
-
136
- :lang(hi){
137
- --RS__baseFontFamily:"Kohinoor Devanagari", "Devanagari Sangam MN", kokila, "Nirmala UI", roboto, noto, "Noto Sans Devanagari", sans-serif;
138
-
139
- --RS__lineHeightCompensation:1.1;
140
- }
141
-
142
- :lang(hy){
143
- --RS__baseFontFamily:mshtakan, sylfaen, roboto, noto, "Noto Serif Armenian", serif;
144
- }
145
-
146
- :lang(iu){
147
- --RS__baseFontFamily:"Euphemia UCAS", euphemia, roboto, noto, "Noto Sans Canadian Aboriginal", sans-serif;
148
- }
149
-
150
- :lang(ja){
151
- --RS__baseFontFamily:yugothic, "Hiragino Maru Gothic ProN", "Hiragino Sans", "Yu Gothic UI", "Meiryo UI", "MS Gothic", roboto, noto, "Noto Sans CJK JP", sans-serif;
152
- --RS__lineHeightCompensation:1.167;
153
- --RS__serif-ja:"Hiragino Mincho ProN", "Hiragino Mincho Pro", "YuMincho", "BIZ UDPMincho", "Yu Mincho", "MS P明朝", "MS PMincho", serif;
154
- --RS__sans-serif-ja:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ W3", "YuGothic", "Yu Gothic Medium", "BIZ UDPGothic", "Yu Gothic", "MS Pゴシック", "MS PGothic", sans-serif;
155
- --RS__serif-ja-v:"Hiragino Mincho ProN", "Hiragino Mincho Pro", "YuMincho", "BIZ UDMincho", "Yu Mincho", "MS明朝", "MS Mincho", serif;
156
- --RS__sans-serif-ja-v:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", "ヒラギノ角ゴ W3", "YuGothic", "Yu Gothic Medium", "BIZ UDGothic", "Yu Gothic", "MSゴシック", "MS Gothic", sans-serif;
157
- }
158
-
159
- :lang(km){
160
- --RS__baseFontFamily:"Khmer Sangam MN", "Leelawadee UI", "Khmer UI", roboto, noto, "Noto Sans Khmer", sans-serif;
161
- --RS__lineHeightCompensation:1.067;
162
- }
163
-
164
- :lang(kn){
165
- --RS__baseFontFamily:"Kannada Sangam MN", "Nirmala UI", tunga, roboto, noto, "Noto Sans Kannada", sans-serif;
166
- --RS__lineHeightCompensation:1.1;
167
- }
168
-
169
- :lang(ko){
170
- --RS__baseFontFamily:"Nanum Gothic", "Apple SD Gothic Neo", "Malgun Gothic", roboto, noto, "Noto Sans CJK KR", sans-serif;
171
- --RS__lineHeightCompensation:1.167;
172
- }
173
-
174
- :lang(lo){
175
- --RS__baseFontFamily:"Lao Sangam MN", "Leelawadee UI", "Lao UI", roboto, noto, "Noto Sans Lao", sans-serif;
176
- }
177
-
178
- :lang(ml){
179
- --RS__baseFontFamily:"Malayalam Sangam MN", "Nirmala UI", kartika, roboto, noto, "Noto Sans Malayalam", sans-serif;
180
- --RS__lineHeightCompensation:1.067;
181
- }
182
-
183
- :lang(or){
184
- --RS__baseFontFamily:"Oriya Sangam MN", "Nirmala UI", kalinga, roboto, noto, "Noto Sans Oriya", sans-serif;
185
- --RS__lineHeightCompensation:1.167;
186
- }
187
-
188
- :lang(pa){
189
- --RS__baseFontFamily:"Gurmukhi MN", "Nirmala UI", kartika, roboto, noto, "Noto Sans Gurmukhi", sans-serif;
190
- --RS__lineHeightCompensation:1.1;
191
- }
192
-
193
- :lang(si){
194
- --RS__baseFontFamily:"Sinhala Sangam MN", "Nirmala UI", "Iskoola Pota", roboto, noto, "Noto Sans Sinhala", sans-serif;
195
- --RS__lineHeightCompensation:1.167;
196
- }
197
-
198
- :lang(ta){
199
- --RS__baseFontFamily:"Tamil Sangam MN", "Nirmala UI", latha, roboto, noto, "Noto Sans Tamil", sans-serif;
200
- --RS__lineHeightCompensation:1.067;
201
- }
202
-
203
- :lang(te){
204
- --RS__baseFontFamily:"Kohinoor Telugu", "Telugu Sangam MN", "Nirmala UI", gautami, roboto, noto, "Noto Sans Telugu", sans-serif;
205
- }
206
-
207
- :lang(th){
208
- --RS__baseFontFamily:"Thonburi", "Leelawadee UI", "Cordia New", roboto, noto, "Noto Sans Thai", sans-serif;
209
- --RS__lineHeightCompensation:1.067;
210
- }
211
-
212
- :lang(zh){
213
- --RS__baseFontFamily:"方体", "PingFang SC", "黑体", "Heiti SC", "Microsoft JhengHei UI", "Microsoft JhengHei", roboto, noto, "Noto Sans CJK SC", sans-serif;
214
- --RS__lineHeightCompensation:1.167;
215
- }
216
-
217
- :lang(zh-Hant),
218
- :lang(zh-TW){
219
- --RS__baseFontFamily:"方體", "PingFang TC", "黑體", "Heiti TC", "Microsoft JhengHei UI", "Microsoft JhengHei", roboto, noto, "Noto Sans CJK TC", sans-serif;
220
- --RS__lineHeightCompensation:1.167;
221
- }
222
-
223
- :lang(zh-HK){
224
- --RS__baseFontFamily:"方體", "PingFang HK", "方體", "PingFang TC", "黑體", "Heiti TC", "Microsoft JhengHei UI", "Microsoft JhengHei", roboto, noto, "Noto Sans CJK TC", sans-serif;
225
- --RS__lineHeightCompensation:1.167;
226
- }
227
-
228
- body{
229
- widows:2;
230
- orphans:2;
231
- }
232
-
233
- figcaption, th, td{
234
- widows:1;
235
- orphans:1;
236
- }
237
-
238
- h2, h3, h4, h5, h6, dt,
239
- hr, caption{
240
- -webkit-column-break-after:avoid;
241
- page-break-after:avoid;
242
- break-after:avoid;
243
- }
244
-
245
- h1, h2, h3, h4, h5, h6, dt,
246
- figure, tr{
247
- -webkit-column-break-inside:avoid;
248
- page-break-inside:avoid;
249
- break-inside:avoid;
250
- }
251
-
252
- body{
253
- -webkit-hyphenate-character:"\\002D";
254
- -moz-hyphenate-character:"\\002D";
255
- -ms-hyphenate-character:"\\002D";
256
- hyphenate-character:"\\002D";
257
- -webkit-hyphenate-limit-lines:3;
258
- -ms-hyphenate-limit-lines:3;
259
- hyphenate-limit-lines:3;
260
- }
261
-
262
- h1, h2, h3, h4, h5, h6, dt,
263
- figcaption, pre, caption, address,
264
- center, code, var{
265
- -ms-hyphens:none;
266
- -moz-hyphens:none;
267
- -webkit-hyphens:none;
268
- -epub-hyphens:none;
269
- hyphens:none;
270
- }
271
-
272
- body{
273
- font-variant-numeric:oldstyle-nums proportional-nums;
274
- }
275
-
276
- :lang(ja) body,
277
- :lang(zh) body,
278
- :lang(ko) body{
279
- font-variant-numeric:lining-nums proportional-nums;
280
- }
281
-
282
- h1, h2, h3, h4, h5, h6, dt{
283
- font-variant-numeric:lining-nums proportional-nums;
284
- }
285
-
286
- table{
287
- font-variant-numeric:lining-nums tabular-nums;
288
- }
289
-
290
- code, var{
291
- font-variant-ligatures:none;
292
- font-variant-numeric:lining-nums tabular-nums slashed-zero;
293
- }
294
-
295
- rt{
296
- font-variant-east-asian:ruby;
297
- }
298
-
299
- :lang(ar){
300
- font-variant-ligatures:common-ligatures;
301
- }
302
-
303
- :lang(ko){
304
- font-kerning:normal;
305
- }
306
-
307
- hr{
308
- color:inherit;
309
- border-color:currentcolor;
310
- }
311
-
312
- table, th, td{
313
- border-color:currentcolor;
314
- }
315
-
316
- figure, blockquote{
317
- margin:1em 5%;
318
- }
319
-
320
- ul, ol{
321
- padding-left:5%;
322
- }
323
-
324
- dd{
325
- margin-left:5%;
326
- }
327
-
328
- pre{
329
- white-space:pre-wrap;
330
- -ms-tab-size:2;
331
- -moz-tab-size:2;
332
- -webkit-tab-size:2;
333
- tab-size:2;
334
- }
335
-
336
- abbr[title], acronym[title]{
337
- text-decoration:dotted underline;
338
- }
339
-
340
- nobr wbr{
341
- white-space:normal;
342
- }
343
-
344
- ruby > rt, ruby > rp{
345
- -webkit-user-select:none;
346
- -moz-user-select:none;
347
- -ms-user-select:none;
348
- user-select:none;
349
- }
350
-
351
- *:lang(ja):not(:lang(ja-Latn)):not(:lang(ja-Cyrl)),
352
- *:lang(zh):not(:lang(zh-Latn)):not(:lang(zh-Cyrl)),
353
- *:lang(ko):not(:lang(ko-Latn)):not(:lang(ko-Cyrl)),
354
- :lang(ja):not(:lang(ja-Latn)):not(:lang(ja-Cyrl)) cite,
355
- :lang(ja):not(:lang(ja-Latn)):not(:lang(ja-Cyrl)) dfn,
356
- :lang(ja):not(:lang(ja-Latn)):not(:lang(ja-Cyrl)) em,
357
- :lang(ja):not(:lang(ja-Latn)):not(:lang(ja-Cyrl)) i,
358
- :lang(zh):not(:lang(zh-Latn)):not(:lang(zh-Cyrl)) cite,
359
- :lang(zh):not(:lang(zh-Latn)):not(:lang(zh-Cyrl)) dfn,
360
- :lang(zh):not(:lang(zh-Latn)):not(:lang(zh-Cyrl)) em,
361
- :lang(zh):not(:lang(zh-Latn)):not(:lang(zh-Cyrl)) i,
362
- :lang(ko):not(:lang(ko-Latn)):not(:lang(ko-Cyrl)) cite,
363
- :lang(ko):not(:lang(ko-Latn)):not(:lang(ko-Cyrl)) dfn,
364
- :lang(ko):not(:lang(ko-Latn)):not(:lang(ko-Cyrl)) em,
365
- :lang(ko):not(:lang(ko-Latn)):not(:lang(ko-Cyrl)) i{
366
- font-style:normal;
367
- }
368
-
369
- :lang(ja) a,
370
- :lang(zh) a,
371
- :lang(ko) a{
372
- text-decoration:none;
373
- }
374
-
375
- :root{
376
- --RS__maxMediaWidth:100%;
377
- --RS__maxMediaHeight:95vh;
378
- --RS__boxSizingMedia:border-box;
379
- --RS__boxSizingTable:border-box;
380
- }
381
-
382
- a, a span, span a, h1, h2, h3, h4, h5, h6{
383
- word-wrap:break-word;
384
- }
385
-
386
- div{
387
- max-width:var(--RS__maxMediaWidth);
388
- }
389
-
390
- img, svg|svg, video{
391
- object-fit:contain;
392
-
393
- width:auto;
394
- height:auto;
395
- max-width:var(--RS__maxMediaWidth);
396
- max-height:var(--RS__maxMediaHeight) !important;
397
- box-sizing:var(--RS__boxSizingMedia);
398
- -webkit-column-break-inside:avoid;
399
- page-break-inside:avoid;
400
- break-inside:avoid;
401
- }
402
-
403
- @supports (zoom: 1) and (not ((-webkit-column-axis: horizontal) and (-webkit-column-progression: normal))){
404
-
405
- :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] img,
406
- :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] svg|svg,
407
- :root[style*="readium-experimentalZoom-on"]:not([style*="readium-deprecatedFontSize-on"]):not([style*="readium-iOSPatch-on"])[style*="--USER__fontSize"] video{
408
- zoom:calc(100% / var(--USER__fontSize));
409
- }
410
- }
411
-
412
- audio{
413
- max-width:100%;
414
- -webkit-column-break-inside:avoid;
415
- page-break-inside:avoid;
416
- break-inside:avoid;
417
- }
418
-
419
- table{
420
- max-width:var(--RS__maxMediaWidth);
421
- box-sizing:var(--RS__boxSizingTable);
422
- }`;
423
- export {
424
- n as default
425
- };