@readium/navigator 2.5.2-beta.3 → 2.5.2-beta.5
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 +486 -444
- package/dist/index.umd.cjs +32 -32
- package/package.json +1 -1
- package/src/epub/frame/FrameManager.ts +13 -2
- package/src/epub/fxl/FXLFrameManager.ts +13 -2
- package/src/peripherals/KeyboardConditionBridge.ts +47 -0
- package/src/webpub/WebPubFrameManager.ts +13 -2
- package/types/src/epub/frame/FrameManager.d.ts +1 -0
- package/types/src/epub/fxl/FXLFrameManager.d.ts +1 -0
- package/types/src/peripherals/KeyboardConditionBridge.d.ts +11 -0
- package/types/src/webpub/WebPubFrameManager.d.ts +1 -0
package/dist/index.js
CHANGED
|
@@ -35,7 +35,7 @@ const S = class S {
|
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
S.EPUB_A11Y_10_WCAG_20_A = new S("http://www.idpf.org/epub/a11y/accessibility-20170105.html#wcag-a"), S.EPUB_A11Y_10_WCAG_20_AA = new S("http://www.idpf.org/epub/a11y/accessibility-20170105.html#wcag-aa"), S.EPUB_A11Y_10_WCAG_20_AAA = new S("http://www.idpf.org/epub/a11y/accessibility-20170105.html#wcag-aaa"), S.EPUB_A11Y_11_WCAG_20_A = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.0-a"), S.EPUB_A11Y_11_WCAG_20_AA = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.0-aa"), S.EPUB_A11Y_11_WCAG_20_AAA = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.0-aaa"), S.EPUB_A11Y_11_WCAG_21_A = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.1-a"), S.EPUB_A11Y_11_WCAG_21_AA = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.1-aa"), S.EPUB_A11Y_11_WCAG_21_AAA = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.1-aaa"), S.EPUB_A11Y_11_WCAG_22_A = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.2-a"), S.EPUB_A11Y_11_WCAG_22_AA = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.2-aa"), S.EPUB_A11Y_11_WCAG_22_AAA = new S("https://www.w3.org/TR/epub-a11y-11#wcag-2.2-aaa");
|
|
38
|
-
let
|
|
38
|
+
let Qe = S;
|
|
39
39
|
const C = class C {
|
|
40
40
|
constructor(t) {
|
|
41
41
|
this.value = t;
|
|
@@ -55,7 +55,7 @@ const C = class C {
|
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
C.AUDITORY = new C("auditory"), C.CHART_ON_VISUAL = new C("chartOnVisual"), C.CHEM_ON_VISUAL = new C("chemOnVisual"), C.COLOR_DEPENDENT = new C("colorDependent"), C.DIAGRAM_ON_VISUAL = new C("diagramOnVisual"), C.MATH_ON_VISUAL = new C("mathOnVisual"), C.MUSIC_ON_VISUAL = new C("musicOnVisual"), C.TACTILE = new C("tactile"), C.TEXT_ON_VISUAL = new C("textOnVisual"), C.TEXTUAL = new C("textual"), C.VISUAL = new C("visual");
|
|
58
|
-
let
|
|
58
|
+
let ti = C;
|
|
59
59
|
const D = class D {
|
|
60
60
|
constructor(t) {
|
|
61
61
|
if (typeof t == "string") {
|
|
@@ -91,7 +91,7 @@ const D = class D {
|
|
|
91
91
|
}
|
|
92
92
|
};
|
|
93
93
|
D.VALID_MODES = /* @__PURE__ */ new Set(["auditory", "tactile", "textual", "visual"]), D.AUDITORY = new D("auditory"), D.TACTILE = new D("tactile"), D.TEXTUAL = new D("textual"), D.VISUAL = new D("visual");
|
|
94
|
-
let
|
|
94
|
+
let ei = D;
|
|
95
95
|
const y = class y {
|
|
96
96
|
constructor(t) {
|
|
97
97
|
this.value = t;
|
|
@@ -131,7 +131,7 @@ const L = class L {
|
|
|
131
131
|
}
|
|
132
132
|
};
|
|
133
133
|
L.FLASHING = new L("flashing"), L.NO_FLASHING_HAZARD = new L("noFlashingHazard"), L.UNKNOWN_FLASHING_HAZARD = new L("unknownFlashingHazard"), L.MOTION_SIMULATION = new L("motionSimulation"), L.NO_MOTION_SIMULATION_HAZARD = new L("noMotionSimulationHazard"), L.UNKNOWN_MOTION_SIMULATION_HAZARD = new L("unknownMotionSimulationHazard"), L.SOUND = new L("sound"), L.NO_SOUND_HAZARD = new L("noSoundHazard"), L.UNKNOWN_SOUND_HAZARD = new L("unknownSoundHazard"), L.UNKNOWN = new L("unknown"), L.NONE = new L("none");
|
|
134
|
-
let
|
|
134
|
+
let ii = L;
|
|
135
135
|
const k = class k {
|
|
136
136
|
constructor(t) {
|
|
137
137
|
this.value = t;
|
|
@@ -151,10 +151,10 @@ const k = class k {
|
|
|
151
151
|
}
|
|
152
152
|
};
|
|
153
153
|
k.NONE = new k("none"), k.DOCUMENTED = new k("documented"), k.LEGAL = new k("legal"), k.TEMPORARY = new k("temporary"), k.TECHNICAL = new k("technical"), k.EAA_DISPROPORTIONATE_BURDEN = new k("eaa-disproportionate-burden"), k.EAA_FUNDAMENTAL_ALTERATION = new k("eaa-fundamental-alteration"), k.EAA_MICROENTERPRISE = new k("eaa-microenterprise"), k.EAA_TECHNICAL_IMPOSSIBILITY = new k("eaa-technical-impossibility"), k.EAA_TEMPORARY = new k("eaa-temporary");
|
|
154
|
-
let
|
|
155
|
-
const ni = ["en", "ar", "da", "fr", "it", "pt_PT", "sv"], xn = /* @__PURE__ */ JSON.parse(`{"format":{"audiobook":"Audiobook","audiobookJSON":"Audiobook Manifest","cbz":"Comic Book Archive","divina":"Divina Publication","divinaJSON":"Divina Publication Manifest","epub":"EPUB","lcpa":"LCP Protected Audiobook","lcpdf":"LCP Protected PDF","lcpl":"LCP License Document","pdf":"PDF","rwp":"Readium Web Publication","rwpm":"Readium Web Publication Manifest","zab":"Audiobook Archive","zip":"ZIP Archive"},"kind":{"audiobook_one":"audiobook","audiobook_other":"audiobooks","book_one":"book","book_other":"books","comic_one":"comic","comic_other":"comics","document_one":"document","document_other":"documents"},"metadata":{"accessibility":{"display-guide":{"accessibility-summary":{"no-metadata":"No information is available","publisher-contact":"For more information about the accessibility of this product, please contact the publisher: ","title":"Accessibility summary"},"additional-accessibility-information":{"aria":{"compact":"ARIA roles included","descriptive":"Content is enhanced with ARIA roles to optimize organization and facilitate navigation"},"audio-descriptions":"Audio descriptions","braille":"Braille","color-not-sole-means-of-conveying-information":"Color is not the sole means of conveying information","dyslexia-readability":"Dyslexia readability","full-ruby-annotations":"Full ruby annotations","high-contrast-between-foreground-and-background-audio":"High contrast between foreground and background audio","high-contrast-between-text-and-background":"High contrast between foreground text and background","large-print":"Large print","page-breaks":{"compact":"Page breaks included","descriptive":"Page breaks included from the original print source"},"ruby-annotations":"Some Ruby annotations","sign-language":"Sign language","tactile-graphics":{"compact":"Tactile graphics included","descriptive":"Tactile graphics have been integrated to facilitate access to visual elements for blind people"},"tactile-objects":"Tactile 3D objects","text-to-speech-hinting":"Text-to-speech hinting provided","title":"Additional accessibility information","ultra-high-contrast-between-text-and-background":"Ultra high contrast between text and background","visible-page-numbering":"Visible page numbering","without-background-sounds":"Without background sounds"},"conformance":{"a":{"compact":"This publication meets minimum accessibility standards","descriptive":"The publication contains a conformance statement that it meets the EPUB Accessibility and WCAG 2 Level A standard"},"aa":{"compact":"This publication meets accepted accessibility standards","descriptive":"The publication contains a conformance statement that it meets the EPUB Accessibility and WCAG 2 Level AA standard"},"aaa":{"compact":"This publication exceeds accepted accessibility standards","descriptive":"The publication contains a conformance statement that it meets the EPUB Accessibility and WCAG 2 Level AAA standard"},"certifier":"The publication was certified by ","certifier-credentials":"The certifier's credential is ","details":{"certification-info":"The publication was certified on ","certifier-report":"For more information refer to the certifier's report","claim":"This publication claims to meet","epub-accessibility-1-0":"EPUB Accessibility 1.0","epub-accessibility-1-1":"EPUB Accessibility 1.1","level-a":"Level A","level-aa":"Level AA","level-aaa":"Level AAA","wcag-2-0":{"compact":"WCAG 2.0","descriptive":"Web Content Accessibility Guidelines (WCAG) 2.0"},"wcag-2-1":{"compact":"WCAG 2.1","descriptive":"Web Content Accessibility Guidelines (WCAG) 2.1"},"wcag-2-2":{"compact":"WCAG 2.2","descriptive":"Web Content Accessibility Guidelines (WCAG) 2.2"}},"details-title":"Detailed conformance information","no":"No information is available","title":"Conformance","unknown-standard":"Conformance to accepted standards for accessibility of this publication cannot be determined"},"hazards":{"flashing":{"compact":"Flashing content","descriptive":"The publication contains flashing content that can cause photosensitive seizures"},"flashing-none":{"compact":"No flashing hazards","descriptive":"The publication does not contain flashing content that can cause photosensitive seizures"},"flashing-unknown":{"compact":"Flashing hazards not known","descriptive":"The presence of flashing content that can cause photosensitive seizures could not be determined"},"motion":{"compact":"Motion simulation","descriptive":"The publication contains motion simulations that can cause motion sickness"},"motion-none":{"compact":"No motion simulation hazards","descriptive":"The publication does not contain motion simulations that can cause motion sickness"},"motion-unknown":{"compact":"Motion simulation hazards not known","descriptive":"The presence of motion simulations that can cause motion sickness could not be determined"},"no-metadata":"No information is available","none":{"compact":"No hazards","descriptive":"The publication contains no hazards"},"sound":{"compact":"Sounds","descriptive":"The publication contains sounds that can cause sensitivity issues"},"sound-none":{"compact":"No sound hazards","descriptive":"The publication does not contain sounds that can cause sensitivity issues"},"sound-unknown":{"compact":"Sound hazards not known","descriptive":"The presence of sounds that can cause sensitivity issues could not be determined"},"title":"Hazards","unknown":"The presence of hazards is unknown"},"legal-considerations":{"exempt":{"compact":"Claims an accessibility exemption in some jurisdictions","descriptive":"This publication claims an accessibility exemption in some jurisdictions"},"no-metadata":"No information is available","title":"Legal considerations"},"navigation":{"index":{"compact":"Index","descriptive":"Index with links to referenced entries"},"no-metadata":"No information is available","page-navigation":{"compact":"Go to page","descriptive":"Page list to go to pages from the print source version"},"structural":{"compact":"Headings","descriptive":"Elements such as headings, tables, etc for structured navigation"},"title":"Navigation","toc":{"compact":"Table of contents","descriptive":"Table of contents to all chapters of the text via links"}},"rich-content":{"accessible-chemistry-as-latex":{"compact":"Chemical formulas in LaTeX","descriptive":"Chemical formulas in accessible format (LaTeX)"},"accessible-chemistry-as-mathml":{"compact":"Chemical formulas in MathML","descriptive":"Chemical formulas in accessible format (MathML)"},"accessible-math-as-latex":{"compact":"Math as LaTeX","descriptive":"Math formulas in accessible format (LaTeX)"},"accessible-math-described":"Text descriptions of math are provided","closed-captions":{"compact":"Videos have closed captions","descriptive":"Videos included in publications have closed captions"},"extended-descriptions":"Information-rich images are described by extended descriptions","math-as-mathml":{"compact":"Math as MathML","descriptive":"Math formulas in accessible format (MathML)"},"open-captions":{"compact":"Videos have open captions","descriptive":"Videos included in publications have open captions"},"title":"Rich content","transcript":"Transcript(s) provided","unknown":"No information is available"},"ways-of-reading":{"nonvisual-reading":{"alt-text":{"compact":"Has alternative text","descriptive":"Has alternative text descriptions for images"},"no-metadata":"No information about nonvisual reading is available","none":{"compact":"Not readable in read aloud or dynamic braille","descriptive":"The content is not readable as read aloud speech or dynamic braille"},"not-fully":{"compact":"Not fully readable in read aloud or dynamic braille","descriptive":"Not all of the content will be readable as read aloud speech or dynamic braille"},"readable":{"compact":"Readable in read aloud or dynamic braille","descriptive":"All content can be read as read aloud speech or dynamic braille"}},"prerecorded-audio":{"complementary":{"compact":"Prerecorded audio clips","descriptive":"Prerecorded audio clips are embedded in the content"},"no-metadata":"No information about prerecorded audio is available","only":{"compact":"Prerecorded audio only","descriptive":"Audiobook with no text alternative"},"synchronized":{"compact":"Prerecorded audio synchronized with text","descriptive":"All the content is available as prerecorded audio synchronized with text"}},"title":"Ways of reading","visual-adjustments":{"modifiable":{"compact":"Appearance can be modified","descriptive":"Appearance of the text and page layout can be modified according to the capabilities of the reading system (font family and font size, spaces between paragraphs, sentences, words, and letters, as well as color of background and text)"},"unknown":"No information about appearance modifiability is available","unmodifiable":{"compact":"Appearance cannot be modified","descriptive":"Text and page layout cannot be modified as the reading experience is close to a print version, but reading systems can still provide zooming options"}}}}},"altIdentifier_one":"alternate identifier","altIdentifier_other":"alternate identifiers","artist_one":"artist","artist_other":"artists","author_one":"author","author_other":"authors","collection_one":"editorial collection","collection_other":"editorial collections","colorist_one":"colorist","colorist_other":"colorists","contributor_one":"contributor","contributor_other":"contributors","description":"description","duration":"duration","editor_one":"editor","editor_other":"editors","identifier_one":"identifier","identifier_other":"identifiers","illustrator_one":"illustrator","illustrator_other":"illustrators","imprint_one":"imprint","imprint_other":"imprints","inker_one":"inker","inker_other":"inkers","language_one":"language","language_other":"languages","letterer_one":"letterer","letterer_other":"letterers","modified":"modification date","narrator_one":"narrator","narrator_other":"narrators","numberOfPages":"print length","penciler_one":"penciler","penciler_other":"pencilers","published":"publication date","publisher_one":"publisher","publisher_other":"publishers","series_one":"series","series_other":"series","subject_one":"subject","subject_other":"subjects","subtitle":"subtitle","title":"title","translator_one":"translator","translator_other":"translators"}}`), kn = {
|
|
156
|
-
publication:
|
|
157
|
-
},
|
|
154
|
+
let ni = k;
|
|
155
|
+
const si = ["en", "ar", "da", "fr", "it", "pt_PT", "sv"], kn = /* @__PURE__ */ JSON.parse(`{"format":{"audiobook":"Audiobook","audiobookJSON":"Audiobook Manifest","cbz":"Comic Book Archive","divina":"Divina Publication","divinaJSON":"Divina Publication Manifest","epub":"EPUB","lcpa":"LCP Protected Audiobook","lcpdf":"LCP Protected PDF","lcpl":"LCP License Document","pdf":"PDF","rwp":"Readium Web Publication","rwpm":"Readium Web Publication Manifest","zab":"Audiobook Archive","zip":"ZIP Archive"},"kind":{"audiobook_one":"audiobook","audiobook_other":"audiobooks","book_one":"book","book_other":"books","comic_one":"comic","comic_other":"comics","document_one":"document","document_other":"documents"},"metadata":{"accessibility":{"display-guide":{"accessibility-summary":{"no-metadata":"No information is available","publisher-contact":"For more information about the accessibility of this product, please contact the publisher: ","title":"Accessibility summary"},"additional-accessibility-information":{"aria":{"compact":"ARIA roles included","descriptive":"Content is enhanced with ARIA roles to optimize organization and facilitate navigation"},"audio-descriptions":"Audio descriptions","braille":"Braille","color-not-sole-means-of-conveying-information":"Color is not the sole means of conveying information","dyslexia-readability":"Dyslexia readability","full-ruby-annotations":"Full ruby annotations","high-contrast-between-foreground-and-background-audio":"High contrast between foreground and background audio","high-contrast-between-text-and-background":"High contrast between foreground text and background","large-print":"Large print","page-breaks":{"compact":"Page breaks included","descriptive":"Page breaks included from the original print source"},"ruby-annotations":"Some Ruby annotations","sign-language":"Sign language","tactile-graphics":{"compact":"Tactile graphics included","descriptive":"Tactile graphics have been integrated to facilitate access to visual elements for blind people"},"tactile-objects":"Tactile 3D objects","text-to-speech-hinting":"Text-to-speech hinting provided","title":"Additional accessibility information","ultra-high-contrast-between-text-and-background":"Ultra high contrast between text and background","visible-page-numbering":"Visible page numbering","without-background-sounds":"Without background sounds"},"conformance":{"a":{"compact":"This publication meets minimum accessibility standards","descriptive":"The publication contains a conformance statement that it meets the EPUB Accessibility and WCAG 2 Level A standard"},"aa":{"compact":"This publication meets accepted accessibility standards","descriptive":"The publication contains a conformance statement that it meets the EPUB Accessibility and WCAG 2 Level AA standard"},"aaa":{"compact":"This publication exceeds accepted accessibility standards","descriptive":"The publication contains a conformance statement that it meets the EPUB Accessibility and WCAG 2 Level AAA standard"},"certifier":"The publication was certified by ","certifier-credentials":"The certifier's credential is ","details":{"certification-info":"The publication was certified on ","certifier-report":"For more information refer to the certifier's report","claim":"This publication claims to meet","epub-accessibility-1-0":"EPUB Accessibility 1.0","epub-accessibility-1-1":"EPUB Accessibility 1.1","level-a":"Level A","level-aa":"Level AA","level-aaa":"Level AAA","wcag-2-0":{"compact":"WCAG 2.0","descriptive":"Web Content Accessibility Guidelines (WCAG) 2.0"},"wcag-2-1":{"compact":"WCAG 2.1","descriptive":"Web Content Accessibility Guidelines (WCAG) 2.1"},"wcag-2-2":{"compact":"WCAG 2.2","descriptive":"Web Content Accessibility Guidelines (WCAG) 2.2"}},"details-title":"Detailed conformance information","no":"No information is available","title":"Conformance","unknown-standard":"Conformance to accepted standards for accessibility of this publication cannot be determined"},"hazards":{"flashing":{"compact":"Flashing content","descriptive":"The publication contains flashing content that can cause photosensitive seizures"},"flashing-none":{"compact":"No flashing hazards","descriptive":"The publication does not contain flashing content that can cause photosensitive seizures"},"flashing-unknown":{"compact":"Flashing hazards not known","descriptive":"The presence of flashing content that can cause photosensitive seizures could not be determined"},"motion":{"compact":"Motion simulation","descriptive":"The publication contains motion simulations that can cause motion sickness"},"motion-none":{"compact":"No motion simulation hazards","descriptive":"The publication does not contain motion simulations that can cause motion sickness"},"motion-unknown":{"compact":"Motion simulation hazards not known","descriptive":"The presence of motion simulations that can cause motion sickness could not be determined"},"no-metadata":"No information is available","none":{"compact":"No hazards","descriptive":"The publication contains no hazards"},"sound":{"compact":"Sounds","descriptive":"The publication contains sounds that can cause sensitivity issues"},"sound-none":{"compact":"No sound hazards","descriptive":"The publication does not contain sounds that can cause sensitivity issues"},"sound-unknown":{"compact":"Sound hazards not known","descriptive":"The presence of sounds that can cause sensitivity issues could not be determined"},"title":"Hazards","unknown":"The presence of hazards is unknown"},"legal-considerations":{"exempt":{"compact":"Claims an accessibility exemption in some jurisdictions","descriptive":"This publication claims an accessibility exemption in some jurisdictions"},"no-metadata":"No information is available","title":"Legal considerations"},"navigation":{"index":{"compact":"Index","descriptive":"Index with links to referenced entries"},"no-metadata":"No information is available","page-navigation":{"compact":"Go to page","descriptive":"Page list to go to pages from the print source version"},"structural":{"compact":"Headings","descriptive":"Elements such as headings, tables, etc for structured navigation"},"title":"Navigation","toc":{"compact":"Table of contents","descriptive":"Table of contents to all chapters of the text via links"}},"rich-content":{"accessible-chemistry-as-latex":{"compact":"Chemical formulas in LaTeX","descriptive":"Chemical formulas in accessible format (LaTeX)"},"accessible-chemistry-as-mathml":{"compact":"Chemical formulas in MathML","descriptive":"Chemical formulas in accessible format (MathML)"},"accessible-math-as-latex":{"compact":"Math as LaTeX","descriptive":"Math formulas in accessible format (LaTeX)"},"accessible-math-described":"Text descriptions of math are provided","closed-captions":{"compact":"Videos have closed captions","descriptive":"Videos included in publications have closed captions"},"extended-descriptions":"Information-rich images are described by extended descriptions","math-as-mathml":{"compact":"Math as MathML","descriptive":"Math formulas in accessible format (MathML)"},"open-captions":{"compact":"Videos have open captions","descriptive":"Videos included in publications have open captions"},"title":"Rich content","transcript":"Transcript(s) provided","unknown":"No information is available"},"ways-of-reading":{"nonvisual-reading":{"alt-text":{"compact":"Has alternative text","descriptive":"Has alternative text descriptions for images"},"no-metadata":"No information about nonvisual reading is available","none":{"compact":"Not readable in read aloud or dynamic braille","descriptive":"The content is not readable as read aloud speech or dynamic braille"},"not-fully":{"compact":"Not fully readable in read aloud or dynamic braille","descriptive":"Not all of the content will be readable as read aloud speech or dynamic braille"},"readable":{"compact":"Readable in read aloud or dynamic braille","descriptive":"All content can be read as read aloud speech or dynamic braille"}},"prerecorded-audio":{"complementary":{"compact":"Prerecorded audio clips","descriptive":"Prerecorded audio clips are embedded in the content"},"no-metadata":"No information about prerecorded audio is available","only":{"compact":"Prerecorded audio only","descriptive":"Audiobook with no text alternative"},"synchronized":{"compact":"Prerecorded audio synchronized with text","descriptive":"All the content is available as prerecorded audio synchronized with text"}},"title":"Ways of reading","visual-adjustments":{"modifiable":{"compact":"Appearance can be modified","descriptive":"Appearance of the text and page layout can be modified according to the capabilities of the reading system (font family and font size, spaces between paragraphs, sentences, words, and letters, as well as color of background and text)"},"unknown":"No information about appearance modifiability is available","unmodifiable":{"compact":"Appearance cannot be modified","descriptive":"Text and page layout cannot be modified as the reading experience is close to a print version, but reading systems can still provide zooming options"}}}}},"altIdentifier_one":"alternate identifier","altIdentifier_other":"alternate identifiers","artist_one":"artist","artist_other":"artists","author_one":"author","author_other":"authors","collection_one":"editorial collection","collection_other":"editorial collections","colorist_one":"colorist","colorist_other":"colorists","contributor_one":"contributor","contributor_other":"contributors","description":"description","duration":"duration","editor_one":"editor","editor_other":"editors","identifier_one":"identifier","identifier_other":"identifiers","illustrator_one":"illustrator","illustrator_other":"illustrators","imprint_one":"imprint","imprint_other":"imprints","inker_one":"inker","inker_other":"inkers","language_one":"language","language_other":"languages","letterer_one":"letterer","letterer_other":"letterers","modified":"modification date","narrator_one":"narrator","narrator_other":"narrators","numberOfPages":"print length","penciler_one":"penciler","penciler_other":"pencilers","published":"publication date","publisher_one":"publisher","publisher_other":"publishers","series_one":"series","series_other":"series","subject_one":"subject","subject_other":"subjects","subtitle":"subtitle","title":"title","translator_one":"translator","translator_other":"translators"}}`), On = {
|
|
156
|
+
publication: kn
|
|
157
|
+
}, ri = {
|
|
158
158
|
fr: () => import("./fr-C5HEel98.js"),
|
|
159
159
|
ar: () => import("./ar-DyHX_uy2.js"),
|
|
160
160
|
da: () => import("./da-Dct0PS3E.js"),
|
|
@@ -165,10 +165,10 @@ const ni = ["en", "ar", "da", "fr", "it", "pt_PT", "sv"], xn = /* @__PURE__ */ J
|
|
|
165
165
|
sv: () => import("./sv-BfzAFsVN.js")
|
|
166
166
|
// 'tr': () => import('@edrlab/thorium-locales/publication-metadata/tr.json'),
|
|
167
167
|
// 'uk': () => import('@edrlab/thorium-locales/publication-metadata/uk.json')
|
|
168
|
-
},
|
|
168
|
+
}, oi = On?.publication?.metadata?.accessibility?.["display-guide"] || {};
|
|
169
169
|
class gt {
|
|
170
170
|
constructor() {
|
|
171
|
-
this.currentLocaleCode = "en", this.locale =
|
|
171
|
+
this.currentLocaleCode = "en", this.locale = oi, this.loadedLocales = {}, this.loadedLocales.en = oi;
|
|
172
172
|
}
|
|
173
173
|
static getInstance() {
|
|
174
174
|
return gt.instance || (gt.instance = new gt()), gt.instance;
|
|
@@ -179,14 +179,14 @@ class gt {
|
|
|
179
179
|
* @returns Promise indicating if the locale was loaded successfully
|
|
180
180
|
*/
|
|
181
181
|
async loadLocale(t) {
|
|
182
|
-
if (!
|
|
182
|
+
if (!si.includes(t))
|
|
183
183
|
return console.warn(`Locale '${t}' is not enabled`), !1;
|
|
184
184
|
if (t in this.loadedLocales)
|
|
185
185
|
return !0;
|
|
186
186
|
try {
|
|
187
|
-
if (!(t in
|
|
187
|
+
if (!(t in ri))
|
|
188
188
|
return console.warn(`Locale file not found for: ${t}`), !1;
|
|
189
|
-
const n = (await
|
|
189
|
+
const n = (await ri[t]()).default?.publication?.metadata?.accessibility?.["display-guide"];
|
|
190
190
|
return n ? (this.loadedLocales[t] = n, !0) : (console.warn(`No accessibility strings found in locale ${t}`), !1);
|
|
191
191
|
} catch (e) {
|
|
192
192
|
return console.warn(`Failed to load locale ${t}:`, e), !1;
|
|
@@ -220,7 +220,7 @@ class gt {
|
|
|
220
220
|
* Gets a list of available locale codes
|
|
221
221
|
*/
|
|
222
222
|
getAvailableLocales() {
|
|
223
|
-
return
|
|
223
|
+
return si;
|
|
224
224
|
}
|
|
225
225
|
getNestedValue(t, e) {
|
|
226
226
|
const i = e.split(".");
|
|
@@ -308,13 +308,13 @@ Object.defineProperty(G.prototype, "encryption", {
|
|
|
308
308
|
return ze.deserialize(this.otherProperties.encrypted);
|
|
309
309
|
}
|
|
310
310
|
});
|
|
311
|
-
function
|
|
311
|
+
function Rn(r) {
|
|
312
312
|
return r && Array.isArray(r) ? r : void 0;
|
|
313
313
|
}
|
|
314
|
-
function
|
|
315
|
-
return r && typeof r == "string" ? [r] :
|
|
314
|
+
function Yi(r) {
|
|
315
|
+
return r && typeof r == "string" ? [r] : Rn(r);
|
|
316
316
|
}
|
|
317
|
-
function
|
|
317
|
+
function ai(r) {
|
|
318
318
|
return typeof r == "string" ? new Date(r) : void 0;
|
|
319
319
|
}
|
|
320
320
|
function Ut(r) {
|
|
@@ -323,7 +323,7 @@ function Ut(r) {
|
|
|
323
323
|
function V(r) {
|
|
324
324
|
return Ut(r) !== void 0 && Math.sign(r) >= 0 ? r : void 0;
|
|
325
325
|
}
|
|
326
|
-
function
|
|
326
|
+
function An(r) {
|
|
327
327
|
const t = new Array();
|
|
328
328
|
return r.forEach((e) => t.push(e)), t;
|
|
329
329
|
}
|
|
@@ -786,7 +786,7 @@ class m {
|
|
|
786
786
|
});
|
|
787
787
|
}
|
|
788
788
|
}
|
|
789
|
-
class
|
|
789
|
+
class li {
|
|
790
790
|
constructor(t) {
|
|
791
791
|
this.uri = t, this.parameters = this.getParameters(t);
|
|
792
792
|
}
|
|
@@ -836,7 +836,7 @@ class _ {
|
|
|
836
836
|
return Object.entries(t).forEach(([a, l]) => {
|
|
837
837
|
o.has(a) || s.set(a, l);
|
|
838
838
|
}), new _({
|
|
839
|
-
fragments:
|
|
839
|
+
fragments: Yi(t.fragments || t.fragment),
|
|
840
840
|
progression: e !== void 0 && e >= 0 && e <= 1 ? e : void 0,
|
|
841
841
|
totalProgression: i !== void 0 && i >= 0 && i <= 1 ? i : void 0,
|
|
842
842
|
position: n !== void 0 && n > 0 ? n : void 0,
|
|
@@ -941,7 +941,7 @@ class $ {
|
|
|
941
941
|
size: V(t.size),
|
|
942
942
|
duration: V(t.duration),
|
|
943
943
|
bitrate: V(t.bitrate),
|
|
944
|
-
languages:
|
|
944
|
+
languages: Yi(t.language),
|
|
945
945
|
alternates: Ht.deserialize(t.alternate),
|
|
946
946
|
children: Ht.deserialize(t.children)
|
|
947
947
|
});
|
|
@@ -951,7 +951,7 @@ class $ {
|
|
|
951
951
|
*/
|
|
952
952
|
serialize() {
|
|
953
953
|
const t = { href: this.href };
|
|
954
|
-
return this.templated !== void 0 && (t.templated = this.templated), this.type !== void 0 && (t.type = this.type), this.title !== void 0 && (t.title = this.title), this.rels && (t.rel =
|
|
954
|
+
return this.templated !== void 0 && (t.templated = this.templated), this.type !== void 0 && (t.type = this.type), this.title !== void 0 && (t.title = this.title), this.rels && (t.rel = An(this.rels)), this.properties && (t.properties = this.properties.serialize()), this.height !== void 0 && (t.height = this.height), this.width !== void 0 && (t.width = this.width), this.size !== void 0 && (t.size = this.size), this.duration !== void 0 && (t.duration = this.duration), this.bitrate !== void 0 && (t.bitrate = this.bitrate), this.languages && (t.language = this.languages), this.alternates && (t.alternate = this.alternates.serialize()), this.children && (t.children = this.children.serialize()), t;
|
|
955
955
|
}
|
|
956
956
|
/** MediaType of the linked resource. */
|
|
957
957
|
get mediaType() {
|
|
@@ -968,14 +968,14 @@ class $ {
|
|
|
968
968
|
}
|
|
969
969
|
/** List of URI template parameter keys, if the `Link` is templated. */
|
|
970
970
|
get templateParameters() {
|
|
971
|
-
return this.templated ? new
|
|
971
|
+
return this.templated ? new li(this.href).parameters : /* @__PURE__ */ new Set();
|
|
972
972
|
}
|
|
973
973
|
/** Expands the `Link`'s HREF by replacing URI template variables by the given parameters.
|
|
974
974
|
* See RFC 6570 on URI template: https://tools.ietf.org/html/rfc6570
|
|
975
975
|
*/
|
|
976
976
|
expandTemplate(t) {
|
|
977
977
|
return new $({
|
|
978
|
-
href: new
|
|
978
|
+
href: new li(this.href).expand(t),
|
|
979
979
|
templated: !1
|
|
980
980
|
});
|
|
981
981
|
}
|
|
@@ -1095,7 +1095,7 @@ class Ht {
|
|
|
1095
1095
|
return this.items.filter((t) => t.type);
|
|
1096
1096
|
}
|
|
1097
1097
|
}
|
|
1098
|
-
var
|
|
1098
|
+
var qi = /* @__PURE__ */ ((r) => (r.EPUB = "https://readium.org/webpub-manifest/profiles/epub", r.AUDIOBOOK = "https://readium.org/webpub-manifest/profiles/audiobook", r.DIVINA = "https://readium.org/webpub-manifest/profiles/divina", r.PDF = "https://readium.org/webpub-manifest/profiles/pdf", r))(qi || {}), N = /* @__PURE__ */ ((r) => (r.ltr = "ltr", r.rtl = "rtl", r))(N || {});
|
|
1099
1099
|
G.prototype.getContains = function() {
|
|
1100
1100
|
return new Set(this.otherProperties.contains || []);
|
|
1101
1101
|
};
|
|
@@ -1308,8 +1308,8 @@ class Ue {
|
|
|
1308
1308
|
if (t && t.state)
|
|
1309
1309
|
return new Ue({
|
|
1310
1310
|
state: t.state,
|
|
1311
|
-
since:
|
|
1312
|
-
until:
|
|
1311
|
+
since: ai(t.since),
|
|
1312
|
+
until: ai(t.until)
|
|
1313
1313
|
});
|
|
1314
1314
|
}
|
|
1315
1315
|
/**
|
|
@@ -1343,41 +1343,41 @@ G.prototype.getAvailability = function() {
|
|
|
1343
1343
|
G.prototype.getAuthenticate = function() {
|
|
1344
1344
|
return $.deserialize(this.otherProperties.authenticate);
|
|
1345
1345
|
};
|
|
1346
|
-
const
|
|
1347
|
-
function
|
|
1348
|
-
console.warn(`${
|
|
1346
|
+
const Tn = "CssSelectorGenerator";
|
|
1347
|
+
function hi(r = "unknown problem", ...t) {
|
|
1348
|
+
console.warn(`${Tn}: ${r}`, ...t);
|
|
1349
1349
|
}
|
|
1350
|
-
function
|
|
1350
|
+
function Mn(r) {
|
|
1351
1351
|
return r instanceof RegExp;
|
|
1352
1352
|
}
|
|
1353
|
-
function
|
|
1353
|
+
function Nn(r) {
|
|
1354
1354
|
return r.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".+");
|
|
1355
1355
|
}
|
|
1356
|
-
function
|
|
1356
|
+
function zn(r) {
|
|
1357
1357
|
const t = r.map((e) => {
|
|
1358
|
-
if (
|
|
1358
|
+
if (Mn(e))
|
|
1359
1359
|
return (i) => e.test(i);
|
|
1360
1360
|
if (typeof e == "function")
|
|
1361
1361
|
return (i) => {
|
|
1362
1362
|
const n = e(i);
|
|
1363
|
-
return typeof n != "boolean" ? (
|
|
1363
|
+
return typeof n != "boolean" ? (hi("pattern matcher function invalid", "Provided pattern matching function does not return boolean. It's result will be ignored.", e), !1) : n;
|
|
1364
1364
|
};
|
|
1365
1365
|
if (typeof e == "string") {
|
|
1366
|
-
const i = new RegExp("^" +
|
|
1366
|
+
const i = new RegExp("^" + Nn(e) + "$");
|
|
1367
1367
|
return (n) => i.test(n);
|
|
1368
1368
|
}
|
|
1369
|
-
return
|
|
1369
|
+
return hi("pattern matcher invalid", "Pattern matching only accepts strings, regular expressions and/or functions. This item is invalid and will be ignored.", e), () => !1;
|
|
1370
1370
|
});
|
|
1371
1371
|
return (e) => t.some((i) => i(e));
|
|
1372
1372
|
}
|
|
1373
|
-
|
|
1373
|
+
zn([
|
|
1374
1374
|
"class",
|
|
1375
1375
|
"id",
|
|
1376
1376
|
// Angular attributes
|
|
1377
1377
|
"ng-*"
|
|
1378
1378
|
]);
|
|
1379
|
-
const
|
|
1380
|
-
class
|
|
1379
|
+
const In = Math.pow(2, 32), ci = () => Math.round(Math.random() * In).toString(36), we = () => `${Math.round(performance.now())}-${ci()}-${ci()}`, ft = 1;
|
|
1380
|
+
class Dn {
|
|
1381
1381
|
constructor(t) {
|
|
1382
1382
|
this.destination = null, this.registrar = /* @__PURE__ */ new Map(), this.origin = "", this.channelId = "", this.receiver = this.receive.bind(this), this.preLog = [], this.wnd = t, t.addEventListener("message", this.receiver);
|
|
1383
1383
|
}
|
|
@@ -1469,15 +1469,15 @@ class In {
|
|
|
1469
1469
|
}
|
|
1470
1470
|
class Et {
|
|
1471
1471
|
}
|
|
1472
|
-
function
|
|
1472
|
+
function di(r) {
|
|
1473
1473
|
return r.split("").reverse().join("");
|
|
1474
1474
|
}
|
|
1475
|
-
function
|
|
1476
|
-
const i =
|
|
1475
|
+
function Fn(r, t, e) {
|
|
1476
|
+
const i = di(t);
|
|
1477
1477
|
return e.map((n) => {
|
|
1478
|
-
const s = Math.max(0, n.end - t.length - n.errors), o =
|
|
1478
|
+
const s = Math.max(0, n.end - t.length - n.errors), o = di(r.slice(s, n.end));
|
|
1479
1479
|
return {
|
|
1480
|
-
start:
|
|
1480
|
+
start: Ki(o, i, n.errors).reduce((l, h) => n.end - h.end < l ? n.end - h.end : l, n.end),
|
|
1481
1481
|
end: n.end,
|
|
1482
1482
|
errors: n.errors
|
|
1483
1483
|
};
|
|
@@ -1486,14 +1486,14 @@ function Dn(r, t, e) {
|
|
|
1486
1486
|
function de(r) {
|
|
1487
1487
|
return (r | -r) >> 31 & 1;
|
|
1488
1488
|
}
|
|
1489
|
-
function
|
|
1489
|
+
function ui(r, t, e, i) {
|
|
1490
1490
|
let n = r.P[e], s = r.M[e];
|
|
1491
1491
|
const o = i >>> 31, a = t[e] | o, l = a | s, h = (a & n) + n ^ n | a;
|
|
1492
1492
|
let c = s | ~(h | n), u = n & h;
|
|
1493
1493
|
const p = de(c & r.lastRowMask[e]) - de(u & r.lastRowMask[e]);
|
|
1494
1494
|
return c <<= 1, u <<= 1, u |= o, c |= de(i) - o, n = u | ~(l | c), s = c & l, r.P[e] = n, r.M[e] = s, p;
|
|
1495
1495
|
}
|
|
1496
|
-
function
|
|
1496
|
+
function Ki(r, t, e) {
|
|
1497
1497
|
if (t.length === 0)
|
|
1498
1498
|
return [];
|
|
1499
1499
|
e = Math.min(e, t.length);
|
|
@@ -1535,7 +1535,7 @@ function qi(r, t, e) {
|
|
|
1535
1535
|
g < h.length ? d = h[g] : (d = l.get(g), typeof d > "u" && (d = a));
|
|
1536
1536
|
let f = 0;
|
|
1537
1537
|
for (let w = 0; w <= c; w += 1)
|
|
1538
|
-
f =
|
|
1538
|
+
f = ui(o, d, w, f), u[w] += f;
|
|
1539
1539
|
if (u[c] - f <= e && c < s && (d[c + 1] & 1 || f < 0)) {
|
|
1540
1540
|
c += 1, o.P[c] = -1, o.M[c] = 0;
|
|
1541
1541
|
let w;
|
|
@@ -1544,7 +1544,7 @@ function qi(r, t, e) {
|
|
|
1544
1544
|
w = P === 0 ? n : P;
|
|
1545
1545
|
} else
|
|
1546
1546
|
w = n;
|
|
1547
|
-
u[c] = u[c - 1] + w - f +
|
|
1547
|
+
u[c] = u[c - 1] + w - f + ui(o, d, c, f);
|
|
1548
1548
|
} else
|
|
1549
1549
|
for (; c > 0 && u[c] >= e + n; )
|
|
1550
1550
|
c -= 1;
|
|
@@ -1556,11 +1556,11 @@ function qi(r, t, e) {
|
|
|
1556
1556
|
}
|
|
1557
1557
|
return i;
|
|
1558
1558
|
}
|
|
1559
|
-
function
|
|
1560
|
-
const i =
|
|
1561
|
-
return
|
|
1559
|
+
function Wn(r, t, e) {
|
|
1560
|
+
const i = Ki(r, t, e);
|
|
1561
|
+
return Fn(r, t, i);
|
|
1562
1562
|
}
|
|
1563
|
-
function
|
|
1563
|
+
function Ji(r, t, e) {
|
|
1564
1564
|
let i = 0;
|
|
1565
1565
|
const n = [];
|
|
1566
1566
|
for (; i !== -1; )
|
|
@@ -1569,25 +1569,25 @@ function Ki(r, t, e) {
|
|
|
1569
1569
|
end: i + t.length,
|
|
1570
1570
|
errors: 0
|
|
1571
1571
|
}), i += 1);
|
|
1572
|
-
return n.length > 0 ? n :
|
|
1572
|
+
return n.length > 0 ? n : Wn(r, t, e);
|
|
1573
1573
|
}
|
|
1574
|
-
function
|
|
1575
|
-
return t.length === 0 || r.length === 0 ? 0 : 1 -
|
|
1574
|
+
function pi(r, t) {
|
|
1575
|
+
return t.length === 0 || r.length === 0 ? 0 : 1 - Ji(r, t, t.length)[0].errors / t.length;
|
|
1576
1576
|
}
|
|
1577
|
-
function
|
|
1577
|
+
function Un(r, t, e = {}) {
|
|
1578
1578
|
if (t.length === 0)
|
|
1579
1579
|
return null;
|
|
1580
|
-
const i = Math.min(256, t.length / 2), n =
|
|
1580
|
+
const i = Math.min(256, t.length / 2), n = Ji(r, t, i);
|
|
1581
1581
|
if (n.length === 0)
|
|
1582
1582
|
return null;
|
|
1583
1583
|
const s = (a) => {
|
|
1584
|
-
const p = 1 - a.errors / t.length, g = e.prefix ?
|
|
1584
|
+
const p = 1 - a.errors / t.length, g = e.prefix ? pi(
|
|
1585
1585
|
r.slice(
|
|
1586
1586
|
Math.max(0, a.start - e.prefix.length),
|
|
1587
1587
|
a.start
|
|
1588
1588
|
),
|
|
1589
1589
|
e.prefix
|
|
1590
|
-
) : 1, d = e.suffix ?
|
|
1590
|
+
) : 1, d = e.suffix ? pi(
|
|
1591
1591
|
r.slice(a.end, a.end + e.suffix.length),
|
|
1592
1592
|
e.suffix
|
|
1593
1593
|
) : 1;
|
|
@@ -1610,7 +1610,7 @@ function ve(r, t, e) {
|
|
|
1610
1610
|
const o = n.length - s.length;
|
|
1611
1611
|
return e === 2 ? t - o : t + o;
|
|
1612
1612
|
}
|
|
1613
|
-
function
|
|
1613
|
+
function fi(r, t) {
|
|
1614
1614
|
const e = r.commonAncestorContainer.ownerDocument.createNodeIterator(
|
|
1615
1615
|
r.commonAncestorContainer,
|
|
1616
1616
|
NodeFilter.SHOW_TEXT
|
|
@@ -1632,7 +1632,7 @@ function pi(r, t) {
|
|
|
1632
1632
|
return { node: s, offset: o };
|
|
1633
1633
|
throw new RangeError("No text nodes with non-whitespace text found in range");
|
|
1634
1634
|
}
|
|
1635
|
-
function
|
|
1635
|
+
function Bn(r) {
|
|
1636
1636
|
if (!r.toString().trim().length)
|
|
1637
1637
|
throw new RangeError("Range contains no non-whitespace text");
|
|
1638
1638
|
if (r.startContainer.nodeType !== Node.TEXT_NODE)
|
|
@@ -1658,7 +1658,7 @@ function Un(r) {
|
|
|
1658
1658
|
if (n.start >= 0 && (t.setStart(r.startContainer, n.start), e = !0), n.end > 0 && (t.setEnd(r.endContainer, n.end), i = !0), e && i)
|
|
1659
1659
|
return t;
|
|
1660
1660
|
if (!e) {
|
|
1661
|
-
const { node: s, offset: o } =
|
|
1661
|
+
const { node: s, offset: o } = fi(
|
|
1662
1662
|
t,
|
|
1663
1663
|
1
|
|
1664
1664
|
/* Forwards */
|
|
@@ -1666,7 +1666,7 @@ function Un(r) {
|
|
|
1666
1666
|
s && o >= 0 && t.setStart(s, o);
|
|
1667
1667
|
}
|
|
1668
1668
|
if (!i) {
|
|
1669
|
-
const { node: s, offset: o } =
|
|
1669
|
+
const { node: s, offset: o } = fi(
|
|
1670
1670
|
t,
|
|
1671
1671
|
2
|
|
1672
1672
|
/* Backwards */
|
|
@@ -1675,7 +1675,7 @@ function Un(r) {
|
|
|
1675
1675
|
}
|
|
1676
1676
|
return t;
|
|
1677
1677
|
}
|
|
1678
|
-
function
|
|
1678
|
+
function Zi(r) {
|
|
1679
1679
|
switch (r.nodeType) {
|
|
1680
1680
|
case Node.ELEMENT_NODE:
|
|
1681
1681
|
case Node.TEXT_NODE:
|
|
@@ -1684,13 +1684,13 @@ function Ji(r) {
|
|
|
1684
1684
|
return 0;
|
|
1685
1685
|
}
|
|
1686
1686
|
}
|
|
1687
|
-
function
|
|
1687
|
+
function mi(r) {
|
|
1688
1688
|
let t = r.previousSibling, e = 0;
|
|
1689
1689
|
for (; t; )
|
|
1690
|
-
e +=
|
|
1690
|
+
e += Zi(t), t = t.previousSibling;
|
|
1691
1691
|
return e;
|
|
1692
1692
|
}
|
|
1693
|
-
function
|
|
1693
|
+
function Qi(r, ...t) {
|
|
1694
1694
|
let e = t.shift();
|
|
1695
1695
|
const i = r.ownerDocument.createNodeIterator(
|
|
1696
1696
|
r,
|
|
@@ -1722,7 +1722,7 @@ class K {
|
|
|
1722
1722
|
throw new Error("Parent is not an ancestor of current element");
|
|
1723
1723
|
let e = this.element, i = this.offset;
|
|
1724
1724
|
for (; e !== t; )
|
|
1725
|
-
i +=
|
|
1725
|
+
i += mi(e), e = e.parentElement;
|
|
1726
1726
|
return new K(e, i);
|
|
1727
1727
|
}
|
|
1728
1728
|
/**
|
|
@@ -1744,7 +1744,7 @@ class K {
|
|
|
1744
1744
|
*/
|
|
1745
1745
|
resolve(t = {}) {
|
|
1746
1746
|
try {
|
|
1747
|
-
return
|
|
1747
|
+
return Qi(this.element, this.offset)[0];
|
|
1748
1748
|
} catch (e) {
|
|
1749
1749
|
if (this.offset === 0 && t.direction !== void 0) {
|
|
1750
1750
|
const i = document.createTreeWalker(
|
|
@@ -1787,7 +1787,7 @@ class K {
|
|
|
1787
1787
|
throw new Error("Text node offset is out of range");
|
|
1788
1788
|
if (!t.parentElement)
|
|
1789
1789
|
throw new Error("Text node has no parent");
|
|
1790
|
-
const i =
|
|
1790
|
+
const i = mi(t) + e;
|
|
1791
1791
|
return new K(t.parentElement, i);
|
|
1792
1792
|
}
|
|
1793
1793
|
case Node.ELEMENT_NODE: {
|
|
@@ -1795,7 +1795,7 @@ class K {
|
|
|
1795
1795
|
throw new Error("Child node offset is out of range");
|
|
1796
1796
|
let i = 0;
|
|
1797
1797
|
for (let n = 0; n < e; n++)
|
|
1798
|
-
i +=
|
|
1798
|
+
i += Zi(t.childNodes[n]);
|
|
1799
1799
|
return new K(t, i);
|
|
1800
1800
|
}
|
|
1801
1801
|
default:
|
|
@@ -1829,7 +1829,7 @@ class et {
|
|
|
1829
1829
|
*/
|
|
1830
1830
|
toRange() {
|
|
1831
1831
|
let t, e;
|
|
1832
|
-
this.start.element === this.end.element && this.start.offset <= this.end.offset ? [t, e] =
|
|
1832
|
+
this.start.element === this.end.element && this.start.offset <= this.end.offset ? [t, e] = Qi(
|
|
1833
1833
|
this.start.element,
|
|
1834
1834
|
this.start.offset,
|
|
1835
1835
|
this.end.offset
|
|
@@ -1868,7 +1868,7 @@ class et {
|
|
|
1868
1868
|
* whitespace
|
|
1869
1869
|
*/
|
|
1870
1870
|
static trimmedRange(t) {
|
|
1871
|
-
return
|
|
1871
|
+
return Bn(et.fromRange(t).toRange());
|
|
1872
1872
|
}
|
|
1873
1873
|
}
|
|
1874
1874
|
class jt {
|
|
@@ -1932,7 +1932,7 @@ class $t {
|
|
|
1932
1932
|
return this.toPositionAnchor(t).toRange();
|
|
1933
1933
|
}
|
|
1934
1934
|
toPositionAnchor(t = {}) {
|
|
1935
|
-
const e = this.root.textContent, i =
|
|
1935
|
+
const e = this.root.textContent, i = Un(e, this.exact, {
|
|
1936
1936
|
...this.context,
|
|
1937
1937
|
hint: t.hint
|
|
1938
1938
|
});
|
|
@@ -1941,7 +1941,7 @@ class $t {
|
|
|
1941
1941
|
return new jt(this.root, i.start, i.end);
|
|
1942
1942
|
}
|
|
1943
1943
|
}
|
|
1944
|
-
function
|
|
1944
|
+
function Hn(r) {
|
|
1945
1945
|
const t = r.tagName.toUpperCase();
|
|
1946
1946
|
return t === "IMG" || t === "VIDEO" || t === "AUDIO" || t === "IFRAME" || t === "OBJECT" || t === "EMBED" || t === "CANVAS";
|
|
1947
1947
|
}
|
|
@@ -1970,7 +1970,7 @@ function It(r, t) {
|
|
|
1970
1970
|
}
|
|
1971
1971
|
if (n) {
|
|
1972
1972
|
const s = r.createRange();
|
|
1973
|
-
return n.childNodes.length === 0 ||
|
|
1973
|
+
return n.childNodes.length === 0 || Hn(n) ? (s.selectNode(n), s) : (s.setStartBefore(n), s.setEndAfter(n), s);
|
|
1974
1974
|
}
|
|
1975
1975
|
}
|
|
1976
1976
|
} catch (e) {
|
|
@@ -1978,7 +1978,7 @@ function It(r, t) {
|
|
|
1978
1978
|
}
|
|
1979
1979
|
return null;
|
|
1980
1980
|
}
|
|
1981
|
-
function
|
|
1981
|
+
function Vn(r, t) {
|
|
1982
1982
|
let e = r.getClientRects();
|
|
1983
1983
|
e.length || r.commonAncestorContainer.nodeType === Node.ELEMENT_NODE && (e = r.commonAncestorContainer.getClientRects());
|
|
1984
1984
|
const i = 1, n = [];
|
|
@@ -1991,10 +1991,10 @@ function Hn(r, t) {
|
|
|
1991
1991
|
top: h.top,
|
|
1992
1992
|
width: h.width
|
|
1993
1993
|
});
|
|
1994
|
-
const s =
|
|
1994
|
+
const s = tn(
|
|
1995
1995
|
n,
|
|
1996
1996
|
i
|
|
1997
|
-
), o =
|
|
1997
|
+
), o = $n(s, i), a = en(o), l = 4;
|
|
1998
1998
|
for (let h = a.length - 1; h >= 0; h--) {
|
|
1999
1999
|
const c = a[h];
|
|
2000
2000
|
if (!(c.width * c.height > l))
|
|
@@ -2005,16 +2005,16 @@ function Hn(r, t) {
|
|
|
2005
2005
|
}
|
|
2006
2006
|
return a;
|
|
2007
2007
|
}
|
|
2008
|
-
function
|
|
2008
|
+
function tn(r, t, e) {
|
|
2009
2009
|
for (let i = 0; i < r.length; i++)
|
|
2010
2010
|
for (let n = i + 1; n < r.length; n++) {
|
|
2011
2011
|
const s = r[i], o = r[n];
|
|
2012
2012
|
if (s === o)
|
|
2013
2013
|
continue;
|
|
2014
2014
|
const a = j(s.top, o.top, t) && j(s.bottom, o.bottom, t), l = j(s.left, o.left, t) && j(s.right, o.right, t);
|
|
2015
|
-
if (a && !l &&
|
|
2016
|
-
const u = r.filter((g) => g !== s && g !== o), p =
|
|
2017
|
-
return u.push(p),
|
|
2015
|
+
if (a && !l && nn(s, o, t)) {
|
|
2016
|
+
const u = r.filter((g) => g !== s && g !== o), p = jn(s, o);
|
|
2017
|
+
return u.push(p), tn(
|
|
2018
2018
|
u,
|
|
2019
2019
|
t
|
|
2020
2020
|
);
|
|
@@ -2022,7 +2022,7 @@ function Qi(r, t, e) {
|
|
|
2022
2022
|
}
|
|
2023
2023
|
return r;
|
|
2024
2024
|
}
|
|
2025
|
-
function
|
|
2025
|
+
function jn(r, t) {
|
|
2026
2026
|
const e = Math.min(r.left, t.left), i = Math.max(r.right, t.right), n = Math.min(r.top, t.top), s = Math.max(r.bottom, t.bottom);
|
|
2027
2027
|
return {
|
|
2028
2028
|
bottom: s,
|
|
@@ -2033,7 +2033,7 @@ function Vn(r, t) {
|
|
|
2033
2033
|
width: i - e
|
|
2034
2034
|
};
|
|
2035
2035
|
}
|
|
2036
|
-
function
|
|
2036
|
+
function $n(r, t) {
|
|
2037
2037
|
const e = new Set(r);
|
|
2038
2038
|
for (const i of r) {
|
|
2039
2039
|
if (!(i.width > 1 && i.height > 1)) {
|
|
@@ -2041,40 +2041,40 @@ function jn(r, t) {
|
|
|
2041
2041
|
continue;
|
|
2042
2042
|
}
|
|
2043
2043
|
for (const s of r)
|
|
2044
|
-
if (i !== s && e.has(s) &&
|
|
2044
|
+
if (i !== s && e.has(s) && Xn(s, i, t)) {
|
|
2045
2045
|
e.delete(i);
|
|
2046
2046
|
break;
|
|
2047
2047
|
}
|
|
2048
2048
|
}
|
|
2049
2049
|
return Array.from(e);
|
|
2050
2050
|
}
|
|
2051
|
-
function
|
|
2051
|
+
function Xn(r, t, e) {
|
|
2052
2052
|
return Dt(r, t.left, t.top, e) && Dt(r, t.right, t.top, e) && Dt(r, t.left, t.bottom, e) && Dt(r, t.right, t.bottom, e);
|
|
2053
2053
|
}
|
|
2054
2054
|
function Dt(r, t, e, i) {
|
|
2055
2055
|
return (r.left < t || j(r.left, t, i)) && (r.right > t || j(r.right, t, i)) && (r.top < e || j(r.top, e, i)) && (r.bottom > e || j(r.bottom, e, i));
|
|
2056
2056
|
}
|
|
2057
|
-
function
|
|
2057
|
+
function en(r) {
|
|
2058
2058
|
for (let t = 0; t < r.length; t++)
|
|
2059
2059
|
for (let e = t + 1; e < r.length; e++) {
|
|
2060
2060
|
const i = r[t], n = r[e];
|
|
2061
|
-
if (i !== n &&
|
|
2061
|
+
if (i !== n && nn(i, n, -1)) {
|
|
2062
2062
|
let s = [], o;
|
|
2063
|
-
const a =
|
|
2063
|
+
const a = gi(i, n);
|
|
2064
2064
|
if (a.length === 1)
|
|
2065
2065
|
s = a, o = i;
|
|
2066
2066
|
else {
|
|
2067
|
-
const h =
|
|
2067
|
+
const h = gi(n, i);
|
|
2068
2068
|
a.length < h.length ? (s = a, o = i) : (s = h, o = n);
|
|
2069
2069
|
}
|
|
2070
2070
|
const l = r.filter((h) => h !== o);
|
|
2071
|
-
return Array.prototype.push.apply(l, s),
|
|
2071
|
+
return Array.prototype.push.apply(l, s), en(l);
|
|
2072
2072
|
}
|
|
2073
2073
|
}
|
|
2074
2074
|
return r;
|
|
2075
2075
|
}
|
|
2076
|
-
function
|
|
2077
|
-
const e =
|
|
2076
|
+
function gi(r, t) {
|
|
2077
|
+
const e = Gn(t, r);
|
|
2078
2078
|
if (e.height === 0 || e.width === 0)
|
|
2079
2079
|
return [r];
|
|
2080
2080
|
const i = [];
|
|
@@ -2124,7 +2124,7 @@ function mi(r, t) {
|
|
|
2124
2124
|
}
|
|
2125
2125
|
return i;
|
|
2126
2126
|
}
|
|
2127
|
-
function
|
|
2127
|
+
function Gn(r, t) {
|
|
2128
2128
|
const e = Math.max(r.left, t.left), i = Math.min(r.right, t.right), n = Math.max(r.top, t.top), s = Math.min(r.bottom, t.bottom);
|
|
2129
2129
|
return {
|
|
2130
2130
|
bottom: s,
|
|
@@ -2135,7 +2135,7 @@ function Xn(r, t) {
|
|
|
2135
2135
|
width: Math.max(0, i - e)
|
|
2136
2136
|
};
|
|
2137
2137
|
}
|
|
2138
|
-
function
|
|
2138
|
+
function nn(r, t, e) {
|
|
2139
2139
|
return (r.left < t.right || e >= 0 && j(r.left, t.right, e)) && (t.left < r.right || e >= 0 && j(t.left, r.right, e)) && (r.top < t.bottom || e >= 0 && j(r.top, t.bottom, e)) && (t.top < r.bottom || e >= 0 && j(t.top, r.bottom, e));
|
|
2140
2140
|
}
|
|
2141
2141
|
function j(r, t, e) {
|
|
@@ -2147,7 +2147,7 @@ function Be(r) {
|
|
|
2147
2147
|
Object.hasOwn(e, i) && !Number.isNaN(Number.parseInt(i)) && (t[e[i]] = e.getPropertyValue(e[i]));
|
|
2148
2148
|
return t;
|
|
2149
2149
|
}
|
|
2150
|
-
function
|
|
2150
|
+
function sn(r, t) {
|
|
2151
2151
|
const e = Be(r);
|
|
2152
2152
|
Object.keys(e).forEach((i) => {
|
|
2153
2153
|
t.hasOwnProperty(i) || re(r, i);
|
|
@@ -2165,7 +2165,7 @@ function re(r, t) {
|
|
|
2165
2165
|
r.document.documentElement.style.removeProperty(t);
|
|
2166
2166
|
}
|
|
2167
2167
|
let Ft = null, pe = null, _t = 0;
|
|
2168
|
-
const mt = { r: 255, g: 255, b: 255, a: 1 }, ct = /* @__PURE__ */ new Map(),
|
|
2168
|
+
const mt = { r: 255, g: 255, b: 255, a: 1 }, ct = /* @__PURE__ */ new Map(), Yn = () => {
|
|
2169
2169
|
if (!Ft)
|
|
2170
2170
|
if (typeof OffscreenCanvas < "u")
|
|
2171
2171
|
Ft = new OffscreenCanvas(5, 5), pe = Ft.getContext("2d", {
|
|
@@ -2180,7 +2180,7 @@ const mt = { r: 255, g: 255, b: 255, a: 1 }, ct = /* @__PURE__ */ new Map(), Gn
|
|
|
2180
2180
|
});
|
|
2181
2181
|
}
|
|
2182
2182
|
return pe;
|
|
2183
|
-
},
|
|
2183
|
+
}, qn = (r) => {
|
|
2184
2184
|
if (!r) return !0;
|
|
2185
2185
|
const t = r.trim().toLowerCase();
|
|
2186
2186
|
return t.startsWith("var(") || [
|
|
@@ -2207,9 +2207,9 @@ const mt = { r: 255, g: 255, b: 255, a: 1 }, ct = /* @__PURE__ */ new Map(), Gn
|
|
|
2207
2207
|
const e = t ? `${r}|${t}` : r, i = ct.get(e);
|
|
2208
2208
|
if (i !== void 0)
|
|
2209
2209
|
return i ?? mt;
|
|
2210
|
-
if (
|
|
2210
|
+
if (qn(r))
|
|
2211
2211
|
return Wt(r, "Unsupported color format or special value."), ct.set(e, null), mt;
|
|
2212
|
-
const n =
|
|
2212
|
+
const n = Yn();
|
|
2213
2213
|
if (!n)
|
|
2214
2214
|
return Wt(r, "Could not get canvas context."), ct.set(e, null), mt;
|
|
2215
2215
|
try {
|
|
@@ -2229,24 +2229,24 @@ const mt = { r: 255, g: 255, b: 255, a: 1 }, ct = /* @__PURE__ */ new Map(), Gn
|
|
|
2229
2229
|
}, fe = (r) => {
|
|
2230
2230
|
const t = r / 255;
|
|
2231
2231
|
return t <= 0.03928 ? t / 12.92 : Math.pow((t + 0.055) / 1.055, 2.4);
|
|
2232
|
-
},
|
|
2232
|
+
}, yi = (r) => {
|
|
2233
2233
|
const t = fe(r.r), e = fe(r.g), i = fe(r.b);
|
|
2234
2234
|
return 0.2126 * t + 0.7152 * e + 0.0722 * i;
|
|
2235
|
-
},
|
|
2236
|
-
const e = typeof r == "string" ? Se(r) : r, i = typeof t == "string" ? Se(t) : t, n =
|
|
2235
|
+
}, bi = (r, t) => {
|
|
2236
|
+
const e = typeof r == "string" ? Se(r) : r, i = typeof t == "string" ? Se(t) : t, n = yi(e), s = yi(i), o = Math.max(n, s), a = Math.min(n, s);
|
|
2237
2237
|
return (o + 0.05) / (a + 0.05);
|
|
2238
2238
|
}, Pe = (r, t = null) => {
|
|
2239
|
-
const e = Se(r, t), i =
|
|
2239
|
+
const e = Se(r, t), i = bi(e, { r: 255, g: 255, b: 255, a: 1 }), n = bi(e, { r: 0, g: 0, b: 0, a: 1 });
|
|
2240
2240
|
return i > n;
|
|
2241
|
-
},
|
|
2242
|
-
class
|
|
2241
|
+
}, Kn = (r, t = null) => Pe(r, t) ? "white" : "black", wi = "#FFFF00", Jn = () => "Highlight" in window, vi = ["IMG", "IMAGE", "AUDIO", "VIDEO", "SVG"];
|
|
2242
|
+
class Zn {
|
|
2243
2243
|
/**
|
|
2244
2244
|
* Creates a DecorationGroup object
|
|
2245
2245
|
* @param id Unique HTML ID-adhering name of the group
|
|
2246
2246
|
* @param name Human-readable name of the group
|
|
2247
2247
|
*/
|
|
2248
2248
|
constructor(t, e, i, n) {
|
|
2249
|
-
this.wnd = t, this.comms = e, this.id = i, this.name = n, this.items = [], this.lastItemId = 0, this.container = void 0, this.activateable = !1, this.experimentalHighlights = !1, this.currentRender = 0,
|
|
2249
|
+
this.wnd = t, this.comms = e, this.id = i, this.name = n, this.items = [], this.lastItemId = 0, this.container = void 0, this.activateable = !1, this.experimentalHighlights = !1, this.currentRender = 0, Jn() && (this.experimentalHighlights = !0, this.notTextFlag = /* @__PURE__ */ new Map());
|
|
2250
2250
|
}
|
|
2251
2251
|
get activeable() {
|
|
2252
2252
|
return this.activateable;
|
|
@@ -2265,7 +2265,7 @@ class Jn {
|
|
|
2265
2265
|
return;
|
|
2266
2266
|
}
|
|
2267
2267
|
const n = i.commonAncestorContainer;
|
|
2268
|
-
n.nodeType !== Node.TEXT_NODE && this.experimentalHighlights && (
|
|
2268
|
+
n.nodeType !== Node.TEXT_NODE && this.experimentalHighlights && (vi.includes(n.nodeName.toUpperCase()) && this.notTextFlag?.set(e, !0), i.cloneContents().querySelector(vi.join(", ").toLowerCase()) && this.notTextFlag?.set(e, !0), (n.textContent?.trim() || "").length === 0 && this.notTextFlag?.set(e, !0));
|
|
2269
2269
|
const s = {
|
|
2270
2270
|
decoration: t,
|
|
2271
2271
|
id: e,
|
|
@@ -2306,10 +2306,10 @@ class Jn {
|
|
|
2306
2306
|
experimentalLayout(t) {
|
|
2307
2307
|
const [e, i] = this.requireContainer(!0);
|
|
2308
2308
|
i.add(t.range);
|
|
2309
|
-
const n = ue(this.wnd, "--USER__backgroundColor") || this.wnd.getComputedStyle(this.wnd.document.documentElement).getPropertyValue("background-color"), s = t.decoration?.style?.tint ??
|
|
2309
|
+
const n = ue(this.wnd, "--USER__backgroundColor") || this.wnd.getComputedStyle(this.wnd.document.documentElement).getPropertyValue("background-color"), s = t.decoration?.style?.tint ?? wi;
|
|
2310
2310
|
e.innerHTML = `
|
|
2311
2311
|
::highlight(${this.id}) {
|
|
2312
|
-
color: ${
|
|
2312
|
+
color: ${Kn(s, n)};
|
|
2313
2313
|
background-color: ${s};
|
|
2314
2314
|
}`;
|
|
2315
2315
|
}
|
|
@@ -2347,7 +2347,7 @@ class Jn {
|
|
|
2347
2347
|
data-readium="true"
|
|
2348
2348
|
class="readium-highlight"
|
|
2349
2349
|
style="${[
|
|
2350
|
-
`background-color: ${t.decoration?.style?.tint ??
|
|
2350
|
+
`background-color: ${t.decoration?.style?.tint ?? wi} !important`,
|
|
2351
2351
|
//"opacity: 0.3 !important",
|
|
2352
2352
|
`mix-blend-mode: ${p ? "exclusion" : "multiply"} !important`,
|
|
2353
2353
|
"opacity: 1 !important",
|
|
@@ -2361,7 +2361,7 @@ class Jn {
|
|
|
2361
2361
|
const d = g.cloneNode(!0);
|
|
2362
2362
|
d.style.setProperty("pointer-events", "none"), h(d, c, c), e.append(d);
|
|
2363
2363
|
} else {
|
|
2364
|
-
let d =
|
|
2364
|
+
let d = Vn(
|
|
2365
2365
|
t.range
|
|
2366
2366
|
);
|
|
2367
2367
|
d = d.sort((f, w) => f.top < w.top ? -1 : f.top > w.top ? 1 : 0);
|
|
@@ -2430,7 +2430,7 @@ const Ot = class Ot extends Et {
|
|
|
2430
2430
|
mount(t, e) {
|
|
2431
2431
|
return this.wnd = t, e.register("decorate", Ot.moduleName, (i, n) => {
|
|
2432
2432
|
const s = i;
|
|
2433
|
-
s.decoration && s.decoration.locator && (s.decoration.locator = I.deserialize(s.decoration.locator)), this.groups.has(s.group) || this.groups.set(s.group, new
|
|
2433
|
+
s.decoration && s.decoration.locator && (s.decoration.locator = I.deserialize(s.decoration.locator)), this.groups.has(s.group) || this.groups.set(s.group, new Zn(
|
|
2434
2434
|
t,
|
|
2435
2435
|
e,
|
|
2436
2436
|
`readium-decoration-${this.lastGroupId++}`,
|
|
@@ -2473,7 +2473,7 @@ const Ot = class Ot extends Et {
|
|
|
2473
2473
|
};
|
|
2474
2474
|
Ot.moduleName = "decorator";
|
|
2475
2475
|
let Ee = Ot;
|
|
2476
|
-
const
|
|
2476
|
+
const Si = "readium-snapper-style", Rt = class Rt extends Et {
|
|
2477
2477
|
constructor() {
|
|
2478
2478
|
super(...arguments), this.protected = !1;
|
|
2479
2479
|
}
|
|
@@ -2486,37 +2486,37 @@ const vi = "readium-snapper-style", Rt = class Rt extends Et {
|
|
|
2486
2486
|
}
|
|
2487
2487
|
mount(t, e) {
|
|
2488
2488
|
const i = t.document.createElement("style");
|
|
2489
|
-
return i.dataset.readium = "true", i.id =
|
|
2489
|
+
return i.dataset.readium = "true", i.id = Si, i.textContent = this.buildStyles(), t.document.head.appendChild(i), e.register("protect", Rt.moduleName, (n, s) => {
|
|
2490
2490
|
this.protected = !0, i.textContent = this.buildStyles(), s(!0);
|
|
2491
2491
|
}), e.register("unprotect", Rt.moduleName, (n, s) => {
|
|
2492
2492
|
this.protected = !1, i.textContent = this.buildStyles(), s(!0);
|
|
2493
2493
|
}), e.log("Snapper Mounted"), !0;
|
|
2494
2494
|
}
|
|
2495
2495
|
unmount(t, e) {
|
|
2496
|
-
return t.document.getElementById(
|
|
2496
|
+
return t.document.getElementById(Si)?.remove(), e.log("Snapper Unmounted"), !0;
|
|
2497
2497
|
}
|
|
2498
2498
|
};
|
|
2499
2499
|
Rt.moduleName = "snapper";
|
|
2500
2500
|
let St = Rt;
|
|
2501
|
-
function
|
|
2501
|
+
function Qn(r) {
|
|
2502
2502
|
return (r.document.documentElement.dir || r.document.body.dir).toLowerCase() === "rtl";
|
|
2503
2503
|
}
|
|
2504
|
-
function
|
|
2504
|
+
function ts(r) {
|
|
2505
2505
|
return (r.getComputedStyle(r.document.documentElement).writingMode || r.getComputedStyle(r.document.body).writingMode) === "vertical-lr";
|
|
2506
2506
|
}
|
|
2507
|
-
function
|
|
2507
|
+
function rn(r) {
|
|
2508
2508
|
return parseInt(
|
|
2509
2509
|
r.getComputedStyle(
|
|
2510
2510
|
r.document.documentElement
|
|
2511
2511
|
).getPropertyValue("column-count")
|
|
2512
2512
|
);
|
|
2513
2513
|
}
|
|
2514
|
-
function
|
|
2514
|
+
function Pi(r) {
|
|
2515
2515
|
const t = getComputedStyle(r), e = parseFloat(t.paddingTop || "0"), i = parseFloat(t.paddingBottom || "0");
|
|
2516
2516
|
return r.clientHeight - e - i;
|
|
2517
2517
|
}
|
|
2518
|
-
function
|
|
2519
|
-
const t =
|
|
2518
|
+
function Ei(r) {
|
|
2519
|
+
const t = rn(r);
|
|
2520
2520
|
if (!t)
|
|
2521
2521
|
return !1;
|
|
2522
2522
|
const e = r.document.querySelectorAll("div[id^='readium-virtual-page']");
|
|
@@ -2526,7 +2526,7 @@ function Pi(r) {
|
|
|
2526
2526
|
if (l > 0)
|
|
2527
2527
|
for (let h = 0; h < l; h++) {
|
|
2528
2528
|
const c = r.document.createElement("div");
|
|
2529
|
-
c.setAttribute("id", `readium-virtual-page-${h}`), c.dataset.readium = "true", CSS.supports("break-before", "column") ? c.style.breakBefore = "column" : (CSS.supports("break-inside", "avoid-column") && (c.style.breakInside = "avoid-column"), c.style.height =
|
|
2529
|
+
c.setAttribute("id", `readium-virtual-page-${h}`), c.dataset.readium = "true", CSS.supports("break-before", "column") ? c.style.breakBefore = "column" : (CSS.supports("break-inside", "avoid-column") && (c.style.breakInside = "avoid-column"), c.style.height = Pi(r.document.documentElement) + "px"), c.innerHTML = "​", r.document.body.appendChild(c);
|
|
2530
2530
|
}
|
|
2531
2531
|
return i !== l;
|
|
2532
2532
|
}
|
|
@@ -2534,14 +2534,14 @@ function He(r) {
|
|
|
2534
2534
|
const t = r.document.createElement("style");
|
|
2535
2535
|
t.appendChild(r.document.createTextNode("*{}")), r.document.body.appendChild(t), r.document.body.removeChild(t);
|
|
2536
2536
|
}
|
|
2537
|
-
function
|
|
2537
|
+
function es(r) {
|
|
2538
2538
|
return r < 0.5 ? 2 * r * r : -1 + (4 - 2 * r) * r;
|
|
2539
2539
|
}
|
|
2540
2540
|
function O(r) {
|
|
2541
2541
|
const t = r.getSelection();
|
|
2542
2542
|
t && t.removeAllRanges();
|
|
2543
2543
|
}
|
|
2544
|
-
const
|
|
2544
|
+
const is = [
|
|
2545
2545
|
"a",
|
|
2546
2546
|
"area",
|
|
2547
2547
|
"audio",
|
|
@@ -2555,18 +2555,18 @@ const es = [
|
|
|
2555
2555
|
"submit",
|
|
2556
2556
|
"textarea",
|
|
2557
2557
|
"video"
|
|
2558
|
-
],
|
|
2558
|
+
], ns = ["dialog", "radiogroup", "radio", "menu", "menuitem"];
|
|
2559
2559
|
function Ve(r) {
|
|
2560
|
-
return
|
|
2560
|
+
return ss(r) ? null : on(r) ? r : r.parentElement ? Ve(r.parentElement) : null;
|
|
2561
2561
|
}
|
|
2562
|
-
function
|
|
2562
|
+
function ss(r) {
|
|
2563
2563
|
return r ? r.closest("[inert]") !== null || r.hasAttribute("disabled") : !0;
|
|
2564
2564
|
}
|
|
2565
|
-
function
|
|
2566
|
-
return r ? r.role &&
|
|
2565
|
+
function on(r) {
|
|
2566
|
+
return r ? r.role && ns.includes(r.role) || r.tabIndex >= 0 ? !0 : is.includes(r.nodeName.toLowerCase()) || r.hasAttribute("contenteditable") && r.getAttribute("contenteditable")?.toLowerCase() !== "false" : !1;
|
|
2567
2567
|
}
|
|
2568
2568
|
function oe(r, t) {
|
|
2569
|
-
const e =
|
|
2569
|
+
const e = an(r, r.document.body, t), i = r._readium_cssSelectorGenerator.getCssSelector(e, {
|
|
2570
2570
|
selectors: ["tag", "id", "class", "nthchild", "nthoftype", "attribute"]
|
|
2571
2571
|
});
|
|
2572
2572
|
return new I({
|
|
@@ -2582,15 +2582,15 @@ function oe(r, t) {
|
|
|
2582
2582
|
})
|
|
2583
2583
|
});
|
|
2584
2584
|
}
|
|
2585
|
-
function
|
|
2585
|
+
function an(r, t, e) {
|
|
2586
2586
|
for (var i = 0; i < t.children.length; i++) {
|
|
2587
2587
|
const n = t.children[i];
|
|
2588
|
-
if (!
|
|
2589
|
-
return
|
|
2588
|
+
if (!as(n) && rs(r, n, e))
|
|
2589
|
+
return os(r, n) ? n : an(r, n, e);
|
|
2590
2590
|
}
|
|
2591
2591
|
return t;
|
|
2592
2592
|
}
|
|
2593
|
-
function
|
|
2593
|
+
function rs(r, t, e) {
|
|
2594
2594
|
if (t === document.body || t === document.documentElement)
|
|
2595
2595
|
return !0;
|
|
2596
2596
|
if (!document || !document.documentElement || !document.body)
|
|
@@ -2598,11 +2598,11 @@ function ss(r, t, e) {
|
|
|
2598
2598
|
const i = t.getBoundingClientRect();
|
|
2599
2599
|
return e ? i.bottom > 0 && i.top < r.innerHeight : i.right > 0 && i.left < r.innerWidth;
|
|
2600
2600
|
}
|
|
2601
|
-
function
|
|
2601
|
+
function os(r, t) {
|
|
2602
2602
|
const e = t.getBoundingClientRect();
|
|
2603
2603
|
return e.top >= 0 && e.left >= 0 && e.bottom <= r.innerHeight && e.right <= r.innerWidth;
|
|
2604
2604
|
}
|
|
2605
|
-
function
|
|
2605
|
+
function as(r) {
|
|
2606
2606
|
const t = getComputedStyle(r);
|
|
2607
2607
|
if (t) {
|
|
2608
2608
|
const e = t.getPropertyValue("display");
|
|
@@ -2611,7 +2611,7 @@ function os(r) {
|
|
|
2611
2611
|
}
|
|
2612
2612
|
return !1;
|
|
2613
2613
|
}
|
|
2614
|
-
const
|
|
2614
|
+
const ls = {
|
|
2615
2615
|
maxVelocity: 200,
|
|
2616
2616
|
// Reasonable default for human-like scrolling (pixels/ms)
|
|
2617
2617
|
minVariance: 0.01,
|
|
@@ -2633,11 +2633,11 @@ const as = {
|
|
|
2633
2633
|
// Only trigger on near-perfect patterns
|
|
2634
2634
|
maxConsistentScrolls: 20
|
|
2635
2635
|
// Need many consistent scrolls
|
|
2636
|
-
},
|
|
2636
|
+
}, ln = {
|
|
2637
2637
|
maxSelectionsPerSecond: 500,
|
|
2638
2638
|
minVariance: 50,
|
|
2639
2639
|
historySize: 20
|
|
2640
|
-
},
|
|
2640
|
+
}, hs = {
|
|
2641
2641
|
enabled: !0,
|
|
2642
2642
|
maxSelectionPercent: 0.1,
|
|
2643
2643
|
minThreshold: 100,
|
|
@@ -2646,7 +2646,7 @@ const as = {
|
|
|
2646
2646
|
};
|
|
2647
2647
|
class ae {
|
|
2648
2648
|
constructor(t = {}) {
|
|
2649
|
-
this.history = [], this.consistentScrollCount = 0, this.options = { ...
|
|
2649
|
+
this.history = [], this.consistentScrollCount = 0, this.options = { ...ls, ...t };
|
|
2650
2650
|
}
|
|
2651
2651
|
analyze(t, e, i) {
|
|
2652
2652
|
if (i <= 0) return !1;
|
|
@@ -2677,7 +2677,7 @@ class ae {
|
|
|
2677
2677
|
this.history = [], this.consistentScrollCount = 0;
|
|
2678
2678
|
}
|
|
2679
2679
|
}
|
|
2680
|
-
const
|
|
2680
|
+
const _i = "readium-column-snapper-style", cs = 200, F = class F extends St {
|
|
2681
2681
|
constructor() {
|
|
2682
2682
|
super(...arguments), this.isSnapProtectionEnabled = !1, this.patternAnalyzer = null, this.lastTurnTime = 0, this.rtl = !1, this.shakeTimeout = 0, this.snappingCancelled = !1, this.alreadyScrollLeft = 0, this.overscroll = 0, this.cachedScrollWidth = 0, this.touchState = 0, this.startingX = void 0, this.endingX = void 0, this.onTouchStarter = this.onTouchStart.bind(this), this.onTouchEnder = this.onTouchEnd.bind(this), this.onWidthChanger = this.onWidthChange.bind(this), this.onTouchMover = this.onTouchMove.bind(this);
|
|
2683
2683
|
}
|
|
@@ -2733,10 +2733,10 @@ const Ei = "readium-column-snapper-style", hs = 200, F = class F extends St {
|
|
|
2733
2733
|
}
|
|
2734
2734
|
// Snaps the current offset to the page width.
|
|
2735
2735
|
snapCurrentOffset(t = !1, e = !1) {
|
|
2736
|
-
const i = this.doc(), n =
|
|
2736
|
+
const i = this.doc(), n = rn(this.wnd), s = this.cachedScrollWidth - this.wnd.innerWidth, o = Math.min(Math.max(0, this.normScroll()), s), a = this.dragOffset(), l = this.rtl ? -a : a, h = this.wnd.innerWidth / 3 * (l > 0 ? 2 : 1), c = Math.min(s, Math.max(0, this.snapNormOffset(o + h))), u = this.rtl ? -c : c, p = this.rtl ? -o : o, g = u > p ? "right" : "left";
|
|
2737
2737
|
if (this.checkSuspiciousSnap(g, Math.abs(u - p)), t && u !== p) {
|
|
2738
2738
|
this.snappingCancelled = !1;
|
|
2739
|
-
const d = (R, Y, lt, ht) => lt > ht ? Y : R + (Y - R) *
|
|
2739
|
+
const d = (R, Y, lt, ht) => lt > ht ? Y : R + (Y - R) * es(lt / ht), f = cs * n;
|
|
2740
2740
|
let w;
|
|
2741
2741
|
const P = (R) => {
|
|
2742
2742
|
if (this.snappingCancelled) return;
|
|
@@ -2810,10 +2810,10 @@ const Ei = "readium-column-snapper-style", hs = 200, F = class F extends St {
|
|
|
2810
2810
|
});
|
|
2811
2811
|
}
|
|
2812
2812
|
mount(t, e) {
|
|
2813
|
-
if (this.wnd = t, this.comms = e, this.rtl =
|
|
2813
|
+
if (this.wnd = t, this.comms = e, this.rtl = Qn(t), !super.mount(t, e)) return !1;
|
|
2814
2814
|
t.navigator.epubReadingSystem && (t.navigator.epubReadingSystem.layoutStyle = "paginated");
|
|
2815
2815
|
const i = t.document.createElement("style");
|
|
2816
|
-
i.dataset.readium = "true", i.id =
|
|
2816
|
+
i.dataset.readium = "true", i.id = _i, i.textContent = `
|
|
2817
2817
|
@keyframes readium-bounce-l-animation {
|
|
2818
2818
|
0%, 100% {transform: translate3d(0, 0, 0);}
|
|
2819
2819
|
50% {transform: translate3d(-50px, 0, 0);}
|
|
@@ -2849,14 +2849,14 @@ const Ei = "readium-column-snapper-style", hs = 200, F = class F extends St {
|
|
|
2849
2849
|
}
|
|
2850
2850
|
`, t.document.head.appendChild(i), this.resizeObserver = new ResizeObserver(() => {
|
|
2851
2851
|
t.requestAnimationFrame(() => {
|
|
2852
|
-
t &&
|
|
2852
|
+
t && Ei(t);
|
|
2853
2853
|
}), this.onWidthChange();
|
|
2854
2854
|
}), this.resizeObserver.observe(t.document.body), this.mutationObserver = new MutationObserver((o) => {
|
|
2855
2855
|
for (const a of o)
|
|
2856
2856
|
if (a.target === this.wnd.document.documentElement) {
|
|
2857
2857
|
const l = a.oldValue, h = a.target.getAttribute("style"), c = /transform\s*:\s*([^;]+)/, u = l?.match(c), p = h?.match(c);
|
|
2858
2858
|
(!u && !p || u && !p || u && p && u[1] !== p[1]) && (t.requestAnimationFrame(() => {
|
|
2859
|
-
t &&
|
|
2859
|
+
t && Ei(t);
|
|
2860
2860
|
}), this.onWidthChange());
|
|
2861
2861
|
} else
|
|
2862
2862
|
t.requestAnimationFrame(() => this.cachedScrollWidth = this.doc().scrollWidth);
|
|
@@ -2951,12 +2951,12 @@ const Ei = "readium-column-snapper-style", hs = 200, F = class F extends St {
|
|
|
2951
2951
|
}), e.log("ColumnSnapper Mounted"), !0;
|
|
2952
2952
|
}
|
|
2953
2953
|
unmount(t, e) {
|
|
2954
|
-
return this.snappingCancelled = !0, e.unregisterAll(F.moduleName), this.resizeObserver.disconnect(), this.mutationObserver.disconnect(), this.patternAnalyzer && (this.patternAnalyzer.clear(), this.patternAnalyzer = null, this.isSnapProtectionEnabled = !1), t.removeEventListener("touchstart", this.onTouchStarter), t.removeEventListener("touchend", this.onTouchEnder), t.removeEventListener("touchmove", this.onTouchMover), t.removeEventListener("orientationchange", this.onWidthChanger), t.removeEventListener("resize", this.onWidthChanger), t.document.getElementById(
|
|
2954
|
+
return this.snappingCancelled = !0, e.unregisterAll(F.moduleName), this.resizeObserver.disconnect(), this.mutationObserver.disconnect(), this.patternAnalyzer && (this.patternAnalyzer.clear(), this.patternAnalyzer = null, this.isSnapProtectionEnabled = !1), t.removeEventListener("touchstart", this.onTouchStarter), t.removeEventListener("touchend", this.onTouchEnder), t.removeEventListener("touchmove", this.onTouchMover), t.removeEventListener("orientationchange", this.onWidthChanger), t.removeEventListener("resize", this.onWidthChanger), t.document.getElementById(_i)?.remove(), e.log("ColumnSnapper Unmounted"), super.unmount(t, e);
|
|
2955
2955
|
}
|
|
2956
2956
|
};
|
|
2957
2957
|
F.moduleName = "column_snapper";
|
|
2958
2958
|
let _e = F;
|
|
2959
|
-
const
|
|
2959
|
+
const Ci = "readium-scroll-snapper-style", U = class U extends St {
|
|
2960
2960
|
constructor() {
|
|
2961
2961
|
super(...arguments), this.patternAnalyzer = null, this.lastScrollTime = 0, this.isScrollProtectionEnabled = !1, this.initialScrollHandled = !1, this.isScrolling = !1, this.lastScrollTop = 0, this.isResizing = !1, this.resizeDebounce = null, this.handleScroll = (t) => {
|
|
2962
2962
|
if (this.comms.ready && !this.isResizing) {
|
|
@@ -3007,7 +3007,7 @@ const _i = "readium-scroll-snapper-style", U = class U extends St {
|
|
|
3007
3007
|
mount(t, e) {
|
|
3008
3008
|
this.wnd = t, this.comms = e, this.initialScrollHandled = !1, this.lastScrollTop = 0, this.isResizing = !1, this.resizeDebounce && (this.wnd.clearTimeout(this.resizeDebounce), this.resizeDebounce = null), t.navigator.epubReadingSystem && (t.navigator.epubReadingSystem.layoutStyle = "scrolling");
|
|
3009
3009
|
const i = t.document.createElement("style");
|
|
3010
|
-
return i.dataset.readium = "true", i.id =
|
|
3010
|
+
return i.dataset.readium = "true", i.id = Ci, i.textContent = `
|
|
3011
3011
|
* {
|
|
3012
3012
|
scrollbar-width: none; /* for Firefox */
|
|
3013
3013
|
}
|
|
@@ -3084,7 +3084,7 @@ const _i = "readium-scroll-snapper-style", U = class U extends St {
|
|
|
3084
3084
|
}), e.log("ScrollSnapper Mounted"), !0;
|
|
3085
3085
|
}
|
|
3086
3086
|
unmount(t, e) {
|
|
3087
|
-
return e.unregisterAll(U.moduleName), this.resizeObserver.disconnect(), this.handleScroll && t.removeEventListener("scroll", this.handleScroll), t.document.getElementById(
|
|
3087
|
+
return e.unregisterAll(U.moduleName), this.resizeObserver.disconnect(), this.handleScroll && t.removeEventListener("scroll", this.handleScroll), t.document.getElementById(Ci)?.remove(), this.patternAnalyzer && (this.patternAnalyzer.clear(), this.patternAnalyzer = null, this.isScrollProtectionEnabled = !1), e.log("ScrollSnapper Unmounted"), !0;
|
|
3088
3088
|
}
|
|
3089
3089
|
};
|
|
3090
3090
|
U.moduleName = "scroll_snapper";
|
|
@@ -3212,7 +3212,7 @@ const B = class B extends St {
|
|
|
3212
3212
|
};
|
|
3213
3213
|
B.moduleName = "webpub_snapper";
|
|
3214
3214
|
let Le = B;
|
|
3215
|
-
class
|
|
3215
|
+
class ds {
|
|
3216
3216
|
constructor(t, e) {
|
|
3217
3217
|
this.window = t, this.copyHistory = [], this.lastSelectionLength = 0, this.lastSelectionTime = 0, this.options = e;
|
|
3218
3218
|
}
|
|
@@ -3252,8 +3252,8 @@ class cs {
|
|
|
3252
3252
|
this.lastSelectionLength = 0, this.lastSelectionTime = 0, this.copyHistory = [], this.options.enabled = !1;
|
|
3253
3253
|
}
|
|
3254
3254
|
}
|
|
3255
|
-
class
|
|
3256
|
-
constructor(t =
|
|
3255
|
+
class us {
|
|
3256
|
+
constructor(t = ln) {
|
|
3257
3257
|
this.options = t, this.events = [], this.selectionStartTime = 0, this.lastSelectionTime = 0, this.lastSelectionPosition = 0, this.selectionPatterns = [], this.lastSelectedText = "";
|
|
3258
3258
|
}
|
|
3259
3259
|
analyze(t) {
|
|
@@ -3294,7 +3294,7 @@ class ds {
|
|
|
3294
3294
|
this.events = [], this.selectionStartTime = 0, this.lastSelectionTime = 0, this.lastSelectionPosition = 0, this.selectionPatterns = [], this.lastSelectedText = "";
|
|
3295
3295
|
}
|
|
3296
3296
|
}
|
|
3297
|
-
class
|
|
3297
|
+
class hn {
|
|
3298
3298
|
/**
|
|
3299
3299
|
* Checks if the given keyboard event matches any of the provided key combinations
|
|
3300
3300
|
*/
|
|
@@ -3376,7 +3376,7 @@ class ln {
|
|
|
3376
3376
|
const l = a.suppressOnInteractiveElement;
|
|
3377
3377
|
if (l) {
|
|
3378
3378
|
const h = (n?.document ?? document).activeElement;
|
|
3379
|
-
if (Array.isArray(l) ? l.some((c) => h?.matches(c)) :
|
|
3379
|
+
if (Array.isArray(l) ? l.some((c) => h?.matches(c)) : on(h)) return;
|
|
3380
3380
|
}
|
|
3381
3381
|
o.preventDefault(), o.stopPropagation(), a.handler(o);
|
|
3382
3382
|
return;
|
|
@@ -3386,7 +3386,7 @@ class ln {
|
|
|
3386
3386
|
}
|
|
3387
3387
|
const yt = class yt extends Et {
|
|
3388
3388
|
constructor() {
|
|
3389
|
-
super(...arguments), this.configApplied = !1, this.cleanupCallbacks = [], this.pointerMoved = !1, this.isContextMenuEnabled = !1, this.isDragAndDropEnabled = !1, this.isSelectionMonitoringEnabled = !1, this.isBulkCopyProtectionEnabled = !1, this.selectionAnalyzer = null, this.currentSelection = null, this.bulkCopyProtector = null, this.keyManager = new
|
|
3389
|
+
super(...arguments), this.configApplied = !1, this.cleanupCallbacks = [], this.pointerMoved = !1, this.isContextMenuEnabled = !1, this.isDragAndDropEnabled = !1, this.isSelectionMonitoringEnabled = !1, this.isBulkCopyProtectionEnabled = !1, this.selectionAnalyzer = null, this.currentSelection = null, this.bulkCopyProtector = null, this.keyManager = new hn(), this.keyDownHandler = null, this.preventBulkCopy = (t) => {
|
|
3390
3390
|
if (!this.isBulkCopyProtectionEnabled || !this.bulkCopyProtector)
|
|
3391
3391
|
return !0;
|
|
3392
3392
|
if (!this.bulkCopyProtector.shouldAllowCopy(t)) {
|
|
@@ -3509,16 +3509,16 @@ const yt = class yt extends Et {
|
|
|
3509
3509
|
}
|
|
3510
3510
|
addBulkCopyProtection(t = {}) {
|
|
3511
3511
|
if (this.isBulkCopyProtectionEnabled || !this.wnd) return;
|
|
3512
|
-
const e =
|
|
3513
|
-
this.bulkCopyProtector = new
|
|
3512
|
+
const e = hs, i = t ? { ...e, ...t } : e;
|
|
3513
|
+
this.bulkCopyProtector = new ds(this.wnd, i), this.wnd.document.addEventListener("copy", this.preventBulkCopy, !0), this.wnd.document.addEventListener("cut", this.preventBulkCopy, !0), this.isBulkCopyProtectionEnabled = !0;
|
|
3514
3514
|
}
|
|
3515
3515
|
removeBulkCopyProtection() {
|
|
3516
3516
|
!this.isBulkCopyProtectionEnabled || !this.wnd || (this.wnd.document.removeEventListener("copy", this.preventBulkCopy, !0), this.wnd.document.removeEventListener("cut", this.preventBulkCopy, !0), this.bulkCopyProtector?.destroy(), this.bulkCopyProtector = null, this.isBulkCopyProtectionEnabled = !1);
|
|
3517
3517
|
}
|
|
3518
3518
|
addSelectionMonitoring(t) {
|
|
3519
3519
|
if (this.isSelectionMonitoringEnabled || !this.wnd) return;
|
|
3520
|
-
const e = t ||
|
|
3521
|
-
this.selectionAnalyzer = new
|
|
3520
|
+
const e = t || ln;
|
|
3521
|
+
this.selectionAnalyzer = new us(e), this.wnd.document.addEventListener("selectionchange", this.handleSelection), this.isSelectionMonitoringEnabled = !0;
|
|
3522
3522
|
}
|
|
3523
3523
|
removeSelectionMonitoring() {
|
|
3524
3524
|
!this.isSelectionMonitoringEnabled || !this.wnd || (this.wnd.document.removeEventListener("selectionchange", this.handleSelection), this.selectionAnalyzer?.clear(), this.selectionAnalyzer = null, this.isSelectionMonitoringEnabled = !1);
|
|
@@ -3660,7 +3660,7 @@ const At = class At extends Et {
|
|
|
3660
3660
|
), Reflect.defineProperty(t.navigator, "epubReadingSystem", {
|
|
3661
3661
|
value: {
|
|
3662
3662
|
name: "readium-ts-toolkit",
|
|
3663
|
-
version: "2.5.2-beta.
|
|
3663
|
+
version: "2.5.2-beta.5",
|
|
3664
3664
|
hasFeature: (n, s = "") => {
|
|
3665
3665
|
switch (n) {
|
|
3666
3666
|
case "dom-manipulation":
|
|
@@ -3709,7 +3709,7 @@ const At = class At extends Et {
|
|
|
3709
3709
|
};
|
|
3710
3710
|
At.moduleName = "setup";
|
|
3711
3711
|
let Xt = At;
|
|
3712
|
-
const
|
|
3712
|
+
const Li = "readium-viewport", Z = class Z extends Xt {
|
|
3713
3713
|
onViewportWidthChanged(t) {
|
|
3714
3714
|
const e = t.target;
|
|
3715
3715
|
Tt(e, "--RS__viewportWidth", `${e.innerWidth}px`);
|
|
@@ -3717,7 +3717,7 @@ const Ci = "readium-viewport", Z = class Z extends Xt {
|
|
|
3717
3717
|
mount(t, e) {
|
|
3718
3718
|
if (!super.mount(t, e)) return !1;
|
|
3719
3719
|
const i = t.document.createElement("meta");
|
|
3720
|
-
return i.dataset.readium = "true", i.setAttribute("name", "viewport"), i.setAttribute("id",
|
|
3720
|
+
return i.dataset.readium = "true", i.setAttribute("name", "viewport"), i.setAttribute("id", Li), i.setAttribute(
|
|
3721
3721
|
"content",
|
|
3722
3722
|
"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"
|
|
3723
3723
|
), t.document.head.appendChild(i), t.addEventListener("orientationchange", this.onViewportWidthChanged), t.addEventListener("resize", this.onViewportWidthChanged), this.onViewportWidthChanged({
|
|
@@ -3725,7 +3725,7 @@ const Ci = "readium-viewport", Z = class Z extends Xt {
|
|
|
3725
3725
|
}), e.register("get_properties", Z.moduleName, (n, s) => {
|
|
3726
3726
|
Be(t), s(!0);
|
|
3727
3727
|
}), e.register("update_properties", Z.moduleName, (n, s) => {
|
|
3728
|
-
n["--RS__viewportWidth"] = `${t.innerWidth}px`,
|
|
3728
|
+
n["--RS__viewportWidth"] = `${t.innerWidth}px`, sn(t, n), s(!0);
|
|
3729
3729
|
}), e.register("set_property", Z.moduleName, (n, s) => {
|
|
3730
3730
|
const o = n;
|
|
3731
3731
|
Tt(t, o[0], o[1]), s(!0);
|
|
@@ -3736,17 +3736,17 @@ const Ci = "readium-viewport", Z = class Z extends Xt {
|
|
|
3736
3736
|
}), e.log("ReflowableSetup Mounted"), !0;
|
|
3737
3737
|
}
|
|
3738
3738
|
unmount(t, e) {
|
|
3739
|
-
return e.unregisterAll(Z.moduleName), t.document.head.querySelector(`#${
|
|
3739
|
+
return e.unregisterAll(Z.moduleName), t.document.head.querySelector(`#${Li}`)?.remove(), t.removeEventListener("orientationchange", this.onViewportWidthChanged), e.log("ReflowableSetup Unmounted"), super.unmount(t, e);
|
|
3740
3740
|
}
|
|
3741
3741
|
};
|
|
3742
3742
|
Z.moduleName = "reflowable_setup";
|
|
3743
3743
|
let ke = Z;
|
|
3744
|
-
const
|
|
3744
|
+
const xi = "readium-fixed-style", q = class q extends Xt {
|
|
3745
3745
|
mount(t, e) {
|
|
3746
3746
|
if (!super.mount(t, e)) return !1;
|
|
3747
3747
|
t.navigator.epubReadingSystem && (t.navigator.epubReadingSystem.layoutStyle = "paginated");
|
|
3748
3748
|
const i = t.document.createElement("style");
|
|
3749
|
-
return i.id =
|
|
3749
|
+
return i.id = xi, i.dataset.readium = "true", i.textContent = `
|
|
3750
3750
|
html, body {
|
|
3751
3751
|
text-size-adjust: none;
|
|
3752
3752
|
-ms-text-size-adjust: none;
|
|
@@ -3779,7 +3779,7 @@ const Li = "readium-fixed-style", q = class q extends Xt {
|
|
|
3779
3779
|
}), e.log("FixedSetup Mounted"), !0;
|
|
3780
3780
|
}
|
|
3781
3781
|
unmount(t, e) {
|
|
3782
|
-
return e.unregisterAll(q.moduleName), t.document.getElementById(
|
|
3782
|
+
return e.unregisterAll(q.moduleName), t.document.getElementById(xi)?.remove(), e.log("FixedSetup Unmounted"), super.unmount(t, e);
|
|
3783
3783
|
}
|
|
3784
3784
|
};
|
|
3785
3785
|
q.moduleName = "fixed_setup";
|
|
@@ -3801,7 +3801,7 @@ const Q = class Q extends Et {
|
|
|
3801
3801
|
), e.register("get_properties", Q.moduleName, (i, n) => {
|
|
3802
3802
|
Be(t), n(!0);
|
|
3803
3803
|
}), e.register("update_properties", Q.moduleName, (i, n) => {
|
|
3804
|
-
|
|
3804
|
+
sn(t, i), n(!0);
|
|
3805
3805
|
}), e.register("set_property", Q.moduleName, (i, n) => {
|
|
3806
3806
|
const s = i;
|
|
3807
3807
|
Tt(t, s[0], s[1]), n(!0);
|
|
@@ -3818,7 +3818,7 @@ const Q = class Q extends Et {
|
|
|
3818
3818
|
Q.moduleName = "webpub_setup";
|
|
3819
3819
|
let Re = Q;
|
|
3820
3820
|
var nt;
|
|
3821
|
-
let
|
|
3821
|
+
let ps = (nt = class extends Et {
|
|
3822
3822
|
constructor() {
|
|
3823
3823
|
super(...arguments), this.styleElement = null, this.beforePrintHandler = null, this.configApplied = !1;
|
|
3824
3824
|
}
|
|
@@ -3854,7 +3854,7 @@ let us = (nt = class extends Et {
|
|
|
3854
3854
|
return this.beforePrintHandler && (t.removeEventListener("beforeprint", this.beforePrintHandler), this.beforePrintHandler = null), this.styleElement?.parentNode && (this.styleElement.parentNode.removeChild(this.styleElement), this.styleElement = null), this.comms?.unregisterAll(nt.moduleName), this.configApplied = !1, !0;
|
|
3855
3855
|
}
|
|
3856
3856
|
}, nt.moduleName = "print_protection", nt);
|
|
3857
|
-
const
|
|
3857
|
+
const ki = "readium-cjk-vertical-snapper-style", H = class H extends St {
|
|
3858
3858
|
constructor() {
|
|
3859
3859
|
super(...arguments), this.patternAnalyzer = null, this.lastScrollTime = 0, this.isScrollProtectionEnabled = !1, this.initialScrollHandled = !1, this.isScrolling = !1, this.lastScrollLeft = 0, this.isResizing = !1, this.resizeDebounce = null, this.verticalLR = !1, this.handleScroll = (t) => {
|
|
3860
3860
|
if (this.comms.ready && !this.isResizing) {
|
|
@@ -3909,9 +3909,9 @@ const xi = "readium-cjk-vertical-snapper-style", H = class H extends St {
|
|
|
3909
3909
|
this.patternAnalyzer || (this.patternAnalyzer = new ae(je), this.isScrollProtectionEnabled = !0, this.comms?.log("Scroll protection enabled"));
|
|
3910
3910
|
}
|
|
3911
3911
|
mount(t, e) {
|
|
3912
|
-
this.wnd = t, this.comms = e, this.initialScrollHandled = !1, this.lastScrollLeft = 0, this.isResizing = !1, this.verticalLR =
|
|
3912
|
+
this.wnd = t, this.comms = e, this.initialScrollHandled = !1, this.lastScrollLeft = 0, this.isResizing = !1, this.verticalLR = ts(t), this.resizeDebounce && (this.wnd.clearTimeout(this.resizeDebounce), this.resizeDebounce = null), t.navigator.epubReadingSystem && (t.navigator.epubReadingSystem.layoutStyle = "scrolling");
|
|
3913
3913
|
const i = t.document.createElement("style");
|
|
3914
|
-
return i.dataset.readium = "true", i.id =
|
|
3914
|
+
return i.dataset.readium = "true", i.id = ki, i.textContent = `
|
|
3915
3915
|
* {
|
|
3916
3916
|
scrollbar-width: none;
|
|
3917
3917
|
}
|
|
@@ -3990,17 +3990,17 @@ const xi = "readium-cjk-vertical-snapper-style", H = class H extends St {
|
|
|
3990
3990
|
}), e.log("CJKVerticalSnapper Mounted"), !0;
|
|
3991
3991
|
}
|
|
3992
3992
|
unmount(t, e) {
|
|
3993
|
-
return e.unregisterAll(H.moduleName), this.resizeObserver.disconnect(), this.handleScroll && t.removeEventListener("scroll", this.handleScroll), t.document.getElementById(
|
|
3993
|
+
return e.unregisterAll(H.moduleName), this.resizeObserver.disconnect(), this.handleScroll && t.removeEventListener("scroll", this.handleScroll), t.document.getElementById(ki)?.remove(), this.patternAnalyzer && (this.patternAnalyzer.clear(), this.patternAnalyzer = null, this.isScrollProtectionEnabled = !1), e.log("CJKVerticalSnapper Unmounted"), !0;
|
|
3994
3994
|
}
|
|
3995
3995
|
};
|
|
3996
3996
|
H.moduleName = "cjk_vertical_snapper";
|
|
3997
3997
|
let Ae = H;
|
|
3998
|
-
const
|
|
3998
|
+
const fs = [
|
|
3999
3999
|
"fixed_setup",
|
|
4000
4000
|
"decorator",
|
|
4001
4001
|
"peripherals",
|
|
4002
4002
|
"print_protection"
|
|
4003
|
-
],
|
|
4003
|
+
], ms = [
|
|
4004
4004
|
"reflowable_setup",
|
|
4005
4005
|
"decorator",
|
|
4006
4006
|
"peripherals",
|
|
@@ -4008,7 +4008,7 @@ const ps = [
|
|
|
4008
4008
|
"scroll_snapper",
|
|
4009
4009
|
"cjk_vertical_snapper",
|
|
4010
4010
|
"print_protection"
|
|
4011
|
-
],
|
|
4011
|
+
], gs = [
|
|
4012
4012
|
"webpub_setup",
|
|
4013
4013
|
"webpub_snapper",
|
|
4014
4014
|
"decorator",
|
|
@@ -4025,7 +4025,7 @@ const ps = [
|
|
|
4025
4025
|
_e,
|
|
4026
4026
|
Ce,
|
|
4027
4027
|
Ae,
|
|
4028
|
-
|
|
4028
|
+
ps
|
|
4029
4029
|
].map((r) => [r.moduleName, r]));
|
|
4030
4030
|
class Pt {
|
|
4031
4031
|
/**
|
|
@@ -4033,7 +4033,7 @@ class Pt {
|
|
|
4033
4033
|
* @param initialModules List of initial modules to load
|
|
4034
4034
|
*/
|
|
4035
4035
|
constructor(t = window, e = []) {
|
|
4036
|
-
this.loadedModules = [], this.wnd = t, this.comms = new
|
|
4036
|
+
this.loadedModules = [], this.wnd = t, this.comms = new Dn(t);
|
|
4037
4037
|
const i = [...new Set(e)];
|
|
4038
4038
|
if (i.length) {
|
|
4039
4039
|
if (typeof t > "u")
|
|
@@ -4077,7 +4077,7 @@ class Pt {
|
|
|
4077
4077
|
this.comms.destroy(), this.loadedModules.forEach((t) => t.unmount(this.wnd, this.comms)), this.loadedModules = [];
|
|
4078
4078
|
}
|
|
4079
4079
|
}
|
|
4080
|
-
const
|
|
4080
|
+
const ys = {
|
|
4081
4081
|
type: "developer_tools",
|
|
4082
4082
|
keyCombos: [
|
|
4083
4083
|
{ keyCode: 73, meta: !0, alt: !0 },
|
|
@@ -4111,7 +4111,7 @@ const gs = {
|
|
|
4111
4111
|
{ keyCode: 123, meta: !0, alt: !0 }
|
|
4112
4112
|
// Cmd+Option+F12
|
|
4113
4113
|
]
|
|
4114
|
-
},
|
|
4114
|
+
}, bs = {
|
|
4115
4115
|
type: "select_all",
|
|
4116
4116
|
keyCombos: [
|
|
4117
4117
|
{ keyCode: 65, meta: !0 },
|
|
@@ -4119,7 +4119,7 @@ const gs = {
|
|
|
4119
4119
|
{ keyCode: 65, ctrl: !0 }
|
|
4120
4120
|
// Ctrl+A
|
|
4121
4121
|
]
|
|
4122
|
-
},
|
|
4122
|
+
}, ws = {
|
|
4123
4123
|
type: "print",
|
|
4124
4124
|
keyCombos: [
|
|
4125
4125
|
{ keyCode: 80, meta: !0 },
|
|
@@ -4135,7 +4135,7 @@ const gs = {
|
|
|
4135
4135
|
{ keyCode: 80, ctrl: !0, alt: !0 }
|
|
4136
4136
|
// Ctrl+Alt+P
|
|
4137
4137
|
]
|
|
4138
|
-
},
|
|
4138
|
+
}, vs = {
|
|
4139
4139
|
type: "save",
|
|
4140
4140
|
keyCombos: [
|
|
4141
4141
|
{ keyCode: 83, meta: !0 },
|
|
@@ -4144,7 +4144,7 @@ const gs = {
|
|
|
4144
4144
|
// Ctrl+S
|
|
4145
4145
|
]
|
|
4146
4146
|
};
|
|
4147
|
-
class
|
|
4147
|
+
class cn {
|
|
4148
4148
|
/**
|
|
4149
4149
|
* Merges keyboard peripherals from content protection config with user-provided peripherals
|
|
4150
4150
|
* Content protection peripherals are added first for priority, then user peripherals are added only if they don't conflict
|
|
@@ -4153,7 +4153,7 @@ class hn {
|
|
|
4153
4153
|
const i = [], n = e.filter(
|
|
4154
4154
|
(s) => !["developer_tools", "select_all", "print", "save"].includes(s.type)
|
|
4155
4155
|
);
|
|
4156
|
-
t.disableSelectAll && i.push(
|
|
4156
|
+
t.disableSelectAll && i.push(bs), t.disableSave && i.push(vs), t.monitorDevTools && i.push(ys), t.protectPrinting?.disable && i.push(ws);
|
|
4157
4157
|
for (const s of n) {
|
|
4158
4158
|
const o = s.keyCombos.filter(
|
|
4159
4159
|
(a) => !i.some(
|
|
@@ -4170,7 +4170,7 @@ class hn {
|
|
|
4170
4170
|
return i;
|
|
4171
4171
|
}
|
|
4172
4172
|
}
|
|
4173
|
-
class
|
|
4173
|
+
class dn extends cn {
|
|
4174
4174
|
/**
|
|
4175
4175
|
* Moves to the left content portion (eg. page) relative to the reading progression direction.
|
|
4176
4176
|
*/
|
|
@@ -4184,9 +4184,9 @@ class cn extends hn {
|
|
|
4184
4184
|
this.readingProgression === N.ltr ? this.goForward(t, e) : this.readingProgression === N.rtl && this.goBackward(t, e);
|
|
4185
4185
|
}
|
|
4186
4186
|
}
|
|
4187
|
-
class
|
|
4187
|
+
class Ss extends cn {
|
|
4188
4188
|
}
|
|
4189
|
-
class
|
|
4189
|
+
class Ps {
|
|
4190
4190
|
constructor(t, e, i, n) {
|
|
4191
4191
|
this.injector = null, this.pub = t, this.item = i, this.burl = i.toURL(e) || "", this.cssProperties = n.cssProperties, this.injector = n.injector ?? null;
|
|
4192
4192
|
}
|
|
@@ -4236,7 +4236,7 @@ class Ss {
|
|
|
4236
4236
|
return n + o;
|
|
4237
4237
|
}
|
|
4238
4238
|
}
|
|
4239
|
-
const
|
|
4239
|
+
const Es = 1e4;
|
|
4240
4240
|
class Mt {
|
|
4241
4241
|
constructor(t, e) {
|
|
4242
4242
|
this.registry = /* @__PURE__ */ new Map(), this._ready = !1, this.listenerBuffer = [], this.handler = this.handle.bind(this), this.wnd = t, this.origin = e;
|
|
@@ -4247,7 +4247,7 @@ class Mt {
|
|
|
4247
4247
|
}
|
|
4248
4248
|
this.gc = setInterval(() => {
|
|
4249
4249
|
this.registry.forEach((i, n) => {
|
|
4250
|
-
performance.now() - i.time >
|
|
4250
|
+
performance.now() - i.time > Es && (console.warn(n, "event for", i.key, "was never handled!"), this.registry.delete(n));
|
|
4251
4251
|
});
|
|
4252
4252
|
}, 5e3), window.addEventListener("message", this.handler), this.send("_ping", void 0);
|
|
4253
4253
|
}
|
|
@@ -4316,12 +4316,12 @@ class Mt {
|
|
|
4316
4316
|
), o;
|
|
4317
4317
|
}
|
|
4318
4318
|
}
|
|
4319
|
-
const
|
|
4320
|
-
RS__oldStyleTf:
|
|
4321
|
-
},
|
|
4319
|
+
const _s = "'Iowan Old Style', Sitka, 'Sitka Text', Palatino, 'Book Antiqua', 'URW Palladio L', P052, serif", Cs = {
|
|
4320
|
+
RS__oldStyleTf: _s
|
|
4321
|
+
}, Ls = 16, Oi = Cs.RS__oldStyleTf;
|
|
4322
4322
|
class kt {
|
|
4323
4323
|
constructor(t) {
|
|
4324
|
-
this._optimalLineLength = null, this._canvas = document.createElement("canvas"), this._optimalChars = t.optimalChars, this._minChars = t.minChars, this._maxChars = t.maxChars, this._baseFontSize = t.baseFontSize ||
|
|
4324
|
+
this._optimalLineLength = null, this._canvas = document.createElement("canvas"), this._optimalChars = t.optimalChars, this._minChars = t.minChars, this._maxChars = t.maxChars, this._baseFontSize = t.baseFontSize || Ls, this._fontFace = t.fontFace || Oi, this._sample = t.sample || null, this._padding = t.padding ?? 0, this._letterSpacing = t.letterSpacing ? Math.round(t.letterSpacing * this._baseFontSize) : 0, this._wordSpacing = t.wordSpacing ? Math.round(t.wordSpacing * this._baseFontSize) : 0, this._isCJK = t.isCJK || !1, this._getRelative = t.getRelative || !1, this._minDivider = this._minChars && this._minChars < this._optimalChars ? this._optimalChars / this._minChars : this._minChars === null ? null : 1, this._maxMultiplier = this._maxChars && this._maxChars > this._optimalChars ? this._maxChars / this._optimalChars : this._maxChars === null ? null : 1, this._approximatedWordSpaces = kt.approximateWordSpaces(this._optimalChars, this._sample);
|
|
4325
4325
|
}
|
|
4326
4326
|
updateMultipliers() {
|
|
4327
4327
|
this._minDivider = this._minChars && this._minChars < this._optimalChars ? this._optimalChars / this._minChars : this._minChars === null ? null : 1, this._maxMultiplier = this._maxChars && this._maxChars > this._optimalChars ? this._maxChars / this._optimalChars : this._maxChars === null ? null : 1;
|
|
@@ -4330,7 +4330,7 @@ class kt {
|
|
|
4330
4330
|
// Not filtering because pretty much everything can
|
|
4331
4331
|
// trigger a recomputation anyway.
|
|
4332
4332
|
update(t) {
|
|
4333
|
-
t.optimalChars && (this._optimalChars = t.optimalChars), t.minChars !== void 0 && (this._minChars = t.minChars), t.maxChars !== void 0 && (this._maxChars = t.maxChars), t.baseFontSize && (this._baseFontSize = t.baseFontSize), t.fontFace !== void 0 && (this._fontFace = t.fontFace ||
|
|
4333
|
+
t.optimalChars && (this._optimalChars = t.optimalChars), t.minChars !== void 0 && (this._minChars = t.minChars), t.maxChars !== void 0 && (this._maxChars = t.maxChars), t.baseFontSize && (this._baseFontSize = t.baseFontSize), t.fontFace !== void 0 && (this._fontFace = t.fontFace || Oi), t.letterSpacing && (this._letterSpacing = t.letterSpacing), t.wordSpacing && (this._wordSpacing = t.wordSpacing), t.isCJK != null && (this._isCJK = t.isCJK), t.padding !== void 0 && (this._padding = t.padding ?? 0), t.getRelative && (this._getRelative = t.getRelative), t.sample && (this._sample = t.sample, this._approximatedWordSpaces = kt.approximateWordSpaces(this._optimalChars, this._sample)), this.updateMultipliers(), this._optimalLineLength = this.getOptimalLineLength();
|
|
4334
4334
|
}
|
|
4335
4335
|
get baseFontSize() {
|
|
4336
4336
|
return this._baseFontSize;
|
|
@@ -4393,10 +4393,10 @@ class kt {
|
|
|
4393
4393
|
return this.getLineLengthFallback();
|
|
4394
4394
|
}
|
|
4395
4395
|
}
|
|
4396
|
-
const
|
|
4397
|
-
class
|
|
4396
|
+
const un = () => typeof navigator > "u" ? "" : navigator.userAgent || "", pn = () => typeof navigator > "u" ? void 0 : navigator.userAgentData || void 0;
|
|
4397
|
+
class fn {
|
|
4398
4398
|
constructor() {
|
|
4399
|
-
const t =
|
|
4399
|
+
const t = pn(), e = un(), i = (s) => (typeof s == "string" || typeof s == "number") && s ? String(s).replace(/_/g, ".").split(".").map((o) => parseInt(o) || 0) : [], n = (s = "") => {
|
|
4400
4400
|
if (!s) return [];
|
|
4401
4401
|
const o = new RegExp("^.*" + s + "[ :\\/]?(\\d+([\\._]\\d+)*).*$");
|
|
4402
4402
|
return o.test(e) ? i(e.replace(o, "$1")) : [];
|
|
@@ -4427,16 +4427,16 @@ class pn {
|
|
|
4427
4427
|
}, []) };
|
|
4428
4428
|
}
|
|
4429
4429
|
}
|
|
4430
|
-
class
|
|
4430
|
+
class xs extends fn {
|
|
4431
4431
|
get iOSRequest() {
|
|
4432
|
-
const t =
|
|
4432
|
+
const t = pn(), e = un();
|
|
4433
4433
|
if (this.OS.iOS && !this.OS.iPadOS)
|
|
4434
4434
|
return "mobile";
|
|
4435
4435
|
if (this.OS.iPadOS)
|
|
4436
4436
|
return /\(iPad;/.test(e) || t && /^iPad(OS)?$/.test(t.platform) ? "mobile" : "desktop";
|
|
4437
4437
|
}
|
|
4438
4438
|
}
|
|
4439
|
-
const J = new
|
|
4439
|
+
const J = new fn(), T = new xs();
|
|
4440
4440
|
function bt(r) {
|
|
4441
4441
|
const t = r.languages?.[0]?.toLowerCase(), e = r.readingProgression;
|
|
4442
4442
|
if (t) {
|
|
@@ -4447,7 +4447,34 @@ function bt(r) {
|
|
|
4447
4447
|
}
|
|
4448
4448
|
return "ltr";
|
|
4449
4449
|
}
|
|
4450
|
-
class
|
|
4450
|
+
class $e {
|
|
4451
|
+
constructor(t, e) {
|
|
4452
|
+
this.config = t, this.onUpdate = e, this.unsubs = [], this.conditionValues = /* @__PURE__ */ new Map();
|
|
4453
|
+
}
|
|
4454
|
+
setup() {
|
|
4455
|
+
let t = !0;
|
|
4456
|
+
this.config.forEach(
|
|
4457
|
+
(e) => e.keyCombos.forEach((i) => {
|
|
4458
|
+
if (i.condition) {
|
|
4459
|
+
const n = i.condition.subscribe((s) => {
|
|
4460
|
+
this.conditionValues.set(i, s), t || this.onUpdate(this.buildSerializable());
|
|
4461
|
+
});
|
|
4462
|
+
this.unsubs.push(n);
|
|
4463
|
+
}
|
|
4464
|
+
})
|
|
4465
|
+
), t = !1, this.onUpdate(this.buildSerializable());
|
|
4466
|
+
}
|
|
4467
|
+
buildSerializable() {
|
|
4468
|
+
return this.config.map((t) => ({
|
|
4469
|
+
...t,
|
|
4470
|
+
keyCombos: t.keyCombos.filter((e) => !e.condition || this.conditionValues.get(e) === !0).map(({ condition: e, ...i }) => i)
|
|
4471
|
+
})).filter((t) => t.keyCombos.length > 0);
|
|
4472
|
+
}
|
|
4473
|
+
destroy() {
|
|
4474
|
+
this.unsubs.forEach((t) => t()), this.unsubs = [], this.conditionValues.clear();
|
|
4475
|
+
}
|
|
4476
|
+
}
|
|
4477
|
+
class ks {
|
|
4451
4478
|
constructor(t, e = {}, i = []) {
|
|
4452
4479
|
this.hidden = !0, this.destroyed = !1, this.currModules = [], this.frame = document.createElement("iframe"), this.frame.classList.add("readium-navigator-iframe"), this.frame.style.visibility = "hidden", this.frame.style.setProperty("aria-hidden", "true"), this.frame.style.opacity = "0", this.frame.style.position = "absolute", this.frame.style.pointerEvents = "none", this.frame.style.transition = "visibility 0s, opacity 0.1s linear", this.frame.style.backgroundColor = "#FFFFFF", this.source = t, this.contentProtectionConfig = { ...e }, this.keyboardPeripheralsConfig = [...i];
|
|
4453
4480
|
}
|
|
@@ -4485,10 +4512,15 @@ class xs {
|
|
|
4485
4512
|
});
|
|
4486
4513
|
}
|
|
4487
4514
|
applyContentProtection() {
|
|
4488
|
-
this.comms || this.comms.resume(), this.comms.send("peripherals_protection", this.contentProtectionConfig), this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0 && this.
|
|
4515
|
+
this.comms || this.comms.resume(), this.comms.send("peripherals_protection", this.contentProtectionConfig), this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0 && (this.conditionBridge?.destroy(), this.conditionBridge = new $e(
|
|
4516
|
+
this.keyboardPeripheralsConfig,
|
|
4517
|
+
(t) => {
|
|
4518
|
+
t.length > 0 && this.comms.send("keyboard_peripherals", t);
|
|
4519
|
+
}
|
|
4520
|
+
), this.conditionBridge.setup()), this.contentProtectionConfig.monitorScrollingExperimental && this.comms.send("scroll_protection", {}), this.contentProtectionConfig.protectPrinting?.disable && this.comms.send("print_protection", this.contentProtectionConfig.protectPrinting);
|
|
4489
4521
|
}
|
|
4490
4522
|
async destroy() {
|
|
4491
|
-
await this.hide(), this.loader?.destroy(), this.frame.remove(), this.destroyed = !0;
|
|
4523
|
+
this.conditionBridge?.destroy(), await this.hide(), this.loader?.destroy(), this.frame.remove(), this.destroyed = !0;
|
|
4492
4524
|
}
|
|
4493
4525
|
async hide() {
|
|
4494
4526
|
if (!this.destroyed) {
|
|
@@ -4538,7 +4570,7 @@ class xs {
|
|
|
4538
4570
|
return this.loader;
|
|
4539
4571
|
}
|
|
4540
4572
|
}
|
|
4541
|
-
class
|
|
4573
|
+
class Os {
|
|
4542
4574
|
constructor(t, e, i, n = {}, s = []) {
|
|
4543
4575
|
this.pool = /* @__PURE__ */ new Map(), this.blobs = /* @__PURE__ */ new Map(), this.inprogress = /* @__PURE__ */ new Map(), this.pendingUpdates = /* @__PURE__ */ new Map(), this.injector = null, this.container = t, this.currentCssProperties = e, this.injector = i, this.contentProtectionConfig = n, this.keyboardPeripheralsConfig = [...s];
|
|
4544
4576
|
}
|
|
@@ -4589,7 +4621,7 @@ class ks {
|
|
|
4589
4621
|
const f = t.readingOrder.findWithHref(d);
|
|
4590
4622
|
if (!f) return;
|
|
4591
4623
|
if (!this.blobs.has(d)) {
|
|
4592
|
-
const R = await new
|
|
4624
|
+
const R = await new Ps(
|
|
4593
4625
|
t,
|
|
4594
4626
|
this.currentBaseURL || "",
|
|
4595
4627
|
f,
|
|
@@ -4600,7 +4632,7 @@ class ks {
|
|
|
4600
4632
|
).build();
|
|
4601
4633
|
this.blobs.set(d, R);
|
|
4602
4634
|
}
|
|
4603
|
-
const w = new
|
|
4635
|
+
const w = new ks(this.blobs.get(d), this.contentProtectionConfig, this.keyboardPeripheralsConfig);
|
|
4604
4636
|
d !== o && await w.hide(), this.container.appendChild(w.iframe), await w.load(i), this.pool.set(d, w);
|
|
4605
4637
|
};
|
|
4606
4638
|
try {
|
|
@@ -4654,10 +4686,10 @@ class ks {
|
|
|
4654
4686
|
}), t;
|
|
4655
4687
|
}
|
|
4656
4688
|
}
|
|
4657
|
-
var me,
|
|
4658
|
-
function
|
|
4659
|
-
if (
|
|
4660
|
-
|
|
4689
|
+
var me, Ri;
|
|
4690
|
+
function Rs() {
|
|
4691
|
+
if (Ri) return me;
|
|
4692
|
+
Ri = 1;
|
|
4661
4693
|
function r(n) {
|
|
4662
4694
|
if (typeof n != "string")
|
|
4663
4695
|
throw new TypeError("Path must be a string. Received " + JSON.stringify(n));
|
|
@@ -4842,11 +4874,11 @@ function Os() {
|
|
|
4842
4874
|
};
|
|
4843
4875
|
return i.posix = i, me = i, me;
|
|
4844
4876
|
}
|
|
4845
|
-
var Gt =
|
|
4846
|
-
const
|
|
4847
|
-
experimentalHeaderFiltering:
|
|
4848
|
-
experimentalZoom:
|
|
4849
|
-
},
|
|
4877
|
+
var Gt = Rs();
|
|
4878
|
+
const As = { description: "Attempts to filter out paragraphs that are implicitly headings or part of headers", scope: "RS", value: "readium-experimentalHeaderFiltering-on" }, Ts = { description: "Attemps to filter out elements that are sized using viewport units and should not be scaled directly e.g. tables, images, iframes, etc.", scope: "RS", value: "readium-experimentalZoom-on" }, Ms = {
|
|
4879
|
+
experimentalHeaderFiltering: As,
|
|
4880
|
+
experimentalZoom: Ts
|
|
4881
|
+
}, Xe = Ms;
|
|
4850
4882
|
var tt = /* @__PURE__ */ ((r) => (r.start = "start", r.left = "left", r.right = "right", r.justify = "justify", r))(tt || {});
|
|
4851
4883
|
const dt = {
|
|
4852
4884
|
range: [0, 100],
|
|
@@ -4918,7 +4950,7 @@ class le {
|
|
|
4918
4950
|
return `${t}rem`;
|
|
4919
4951
|
}
|
|
4920
4952
|
}
|
|
4921
|
-
class
|
|
4953
|
+
class mn extends le {
|
|
4922
4954
|
constructor(t) {
|
|
4923
4955
|
super(), this.a11yNormalize = t.a11yNormalize ?? null, this.bodyHyphens = t.bodyHyphens ?? null, this.fontFamily = t.fontFamily ?? null, this.fontWeight = t.fontWeight ?? null, this.iOSPatch = t.iOSPatch ?? null, this.iPadOSPatch = t.iPadOSPatch ?? null, this.letterSpacing = t.letterSpacing ?? null, this.ligatures = t.ligatures ?? null, this.lineHeight = t.lineHeight ?? null, this.noRuby = t.noRuby ?? null, this.paraIndent = t.paraIndent ?? null, this.paraSpacing = t.paraSpacing ?? null, this.textAlign = t.textAlign ?? null, this.wordSpacing = t.wordSpacing ?? null, this.zoom = t.zoom ?? null;
|
|
4924
4956
|
}
|
|
@@ -4927,18 +4959,18 @@ class fn extends le {
|
|
|
4927
4959
|
return this.a11yNormalize && (t["--USER__a11yNormalize"] = this.toFlag("a11y")), this.bodyHyphens && (t["--USER__bodyHyphens"] = this.bodyHyphens), this.fontFamily && (t["--USER__fontFamily"] = this.fontFamily), this.fontWeight != null && (t["--USER__fontWeight"] = this.toUnitless(this.fontWeight)), this.iOSPatch && (t["--USER__iOSPatch"] = this.toFlag("iOSPatch")), this.iPadOSPatch && (t["--USER__iPadOSPatch"] = this.toFlag("iPadOSPatch")), this.letterSpacing != null && (t["--USER__letterSpacing"] = this.toRem(this.letterSpacing)), this.ligatures && (t["--USER__ligatures"] = this.ligatures), this.lineHeight != null && (t["--USER__lineHeight"] = this.toUnitless(this.lineHeight)), this.noRuby && (t["--USER__noRuby"] = this.toFlag("noRuby")), this.paraIndent != null && (t["--USER__paraIndent"] = this.toRem(this.paraIndent)), this.paraSpacing != null && (t["--USER__paraSpacing"] = this.toRem(this.paraSpacing)), this.textAlign && (t["--USER__textAlign"] = this.textAlign), this.wordSpacing != null && (t["--USER__wordSpacing"] = this.toRem(this.wordSpacing)), this.zoom !== null && (t["--USER__zoom"] = this.toPercentage(this.zoom, !0)), t;
|
|
4928
4960
|
}
|
|
4929
4961
|
}
|
|
4930
|
-
class
|
|
4962
|
+
class Ns extends le {
|
|
4931
4963
|
constructor(t) {
|
|
4932
4964
|
super(), this.experiments = t.experiments ?? null;
|
|
4933
4965
|
}
|
|
4934
4966
|
toCSSProperties() {
|
|
4935
4967
|
const t = {};
|
|
4936
4968
|
return this.experiments && this.experiments.forEach((e) => {
|
|
4937
|
-
t["--RS__" + e] =
|
|
4969
|
+
t["--RS__" + e] = Xe[e].value;
|
|
4938
4970
|
}), t;
|
|
4939
4971
|
}
|
|
4940
4972
|
}
|
|
4941
|
-
class
|
|
4973
|
+
class zs {
|
|
4942
4974
|
constructor(t) {
|
|
4943
4975
|
this.rsProperties = t.rsProperties, this.userProperties = t.userProperties;
|
|
4944
4976
|
}
|
|
@@ -4961,13 +4993,13 @@ class Ns {
|
|
|
4961
4993
|
wordSpacing: t.wordSpacing,
|
|
4962
4994
|
zoom: t.zoom
|
|
4963
4995
|
};
|
|
4964
|
-
this.userProperties = new
|
|
4996
|
+
this.userProperties = new mn(e);
|
|
4965
4997
|
}
|
|
4966
4998
|
}
|
|
4967
|
-
function
|
|
4999
|
+
function Is(r, t) {
|
|
4968
5000
|
return r == null || t == null || r <= t ? r : void 0;
|
|
4969
5001
|
}
|
|
4970
|
-
function
|
|
5002
|
+
function Ds(r, t) {
|
|
4971
5003
|
return r == null || t == null || r >= t ? r : void 0;
|
|
4972
5004
|
}
|
|
4973
5005
|
function W(r) {
|
|
@@ -4998,9 +5030,9 @@ function z(r, t) {
|
|
|
4998
5030
|
function ge(r, t) {
|
|
4999
5031
|
return r === void 0 ? t : r;
|
|
5000
5032
|
}
|
|
5001
|
-
function
|
|
5033
|
+
function gn(r) {
|
|
5002
5034
|
if (r !== void 0)
|
|
5003
|
-
return r === null ? null : r.filter((t) => t in
|
|
5035
|
+
return r === null ? null : r.filter((t) => t in Xe);
|
|
5004
5036
|
}
|
|
5005
5037
|
class Nt {
|
|
5006
5038
|
constructor(t = {}) {
|
|
@@ -5025,12 +5057,12 @@ class Nt {
|
|
|
5025
5057
|
return new Nt(e);
|
|
5026
5058
|
}
|
|
5027
5059
|
}
|
|
5028
|
-
class
|
|
5060
|
+
class Fs {
|
|
5029
5061
|
constructor(t) {
|
|
5030
|
-
this.fontFamily = W(t.fontFamily) || null, this.fontWeight = z(t.fontWeight, st.range) || null, this.hyphens = E(t.hyphens) ?? null, this.iOSPatch = t.iOSPatch === !1 ? !1 : (T.OS.iOS || T.OS.iPadOS) && T.iOSRequest === "mobile", this.iPadOSPatch = t.iPadOSPatch === !1 ? !1 : T.OS.iPadOS && T.iOSRequest === "desktop", this.letterSpacing = v(t.letterSpacing) || null, this.ligatures = E(t.ligatures) ?? null, this.lineHeight = v(t.lineHeight) || null, this.noRuby = E(t.noRuby) ?? !1, this.paragraphIndent = v(t.paragraphIndent) ?? null, this.paragraphSpacing = v(t.paragraphSpacing) ?? null, this.textAlign = he(t.textAlign, tt) || null, this.textNormalization = E(t.textNormalization) ?? !1, this.wordSpacing = v(t.wordSpacing) || null, this.zoom = z(t.zoom, ee.range) || 1, this.experiments =
|
|
5062
|
+
this.fontFamily = W(t.fontFamily) || null, this.fontWeight = z(t.fontWeight, st.range) || null, this.hyphens = E(t.hyphens) ?? null, this.iOSPatch = t.iOSPatch === !1 ? !1 : (T.OS.iOS || T.OS.iPadOS) && T.iOSRequest === "mobile", this.iPadOSPatch = t.iPadOSPatch === !1 ? !1 : T.OS.iPadOS && T.iOSRequest === "desktop", this.letterSpacing = v(t.letterSpacing) || null, this.ligatures = E(t.ligatures) ?? null, this.lineHeight = v(t.lineHeight) || null, this.noRuby = E(t.noRuby) ?? !1, this.paragraphIndent = v(t.paragraphIndent) ?? null, this.paragraphSpacing = v(t.paragraphSpacing) ?? null, this.textAlign = he(t.textAlign, tt) || null, this.textNormalization = E(t.textNormalization) ?? !1, this.wordSpacing = v(t.wordSpacing) || null, this.zoom = z(t.zoom, ee.range) || 1, this.experiments = gn(t.experiments) ?? null;
|
|
5031
5063
|
}
|
|
5032
5064
|
}
|
|
5033
|
-
class
|
|
5065
|
+
class Ai {
|
|
5034
5066
|
constructor(t, e, i) {
|
|
5035
5067
|
this.fontFamily = null, this.fontWeight = null, this.hyphens = null, this.iOSPatch = null, this.iPadOSPatch = null, this.letterSpacing = null, this.ligatures = null, this.lineHeight = null, this.noRuby = null, this.paragraphIndent = null, this.paragraphSpacing = null, this.textAlign = null, this.textNormalization = null, this.wordSpacing = null, i && (this.fontFamily = t.fontFamily || e.fontFamily || null, this.fontWeight = t.fontWeight !== void 0 ? t.fontWeight : e.fontWeight !== void 0 ? e.fontWeight : null, this.hyphens = typeof t.hyphens == "boolean" ? t.hyphens : e.hyphens ?? null, this.iOSPatch = t.iOSPatch === !1 ? !1 : t.iOSPatch === !0 ? (T.OS.iOS || T.OS.iPadOS) && T.iOSRequest === "mobile" : e.iOSPatch, this.iPadOSPatch = t.iPadOSPatch === !1 ? !1 : t.iPadOSPatch === !0 ? T.OS.iPadOS && T.iOSRequest === "desktop" : e.iPadOSPatch, this.letterSpacing = t.letterSpacing !== void 0 ? t.letterSpacing : e.letterSpacing !== void 0 ? e.letterSpacing : null, this.ligatures = typeof t.ligatures == "boolean" ? t.ligatures : e.ligatures ?? null, this.lineHeight = t.lineHeight !== void 0 ? t.lineHeight : e.lineHeight !== void 0 ? e.lineHeight : null, this.noRuby = typeof t.noRuby == "boolean" ? t.noRuby : e.noRuby ?? null, this.paragraphIndent = t.paragraphIndent !== void 0 ? t.paragraphIndent : e.paragraphIndent !== void 0 ? e.paragraphIndent : null, this.paragraphSpacing = t.paragraphSpacing !== void 0 ? t.paragraphSpacing : e.paragraphSpacing !== void 0 ? e.paragraphSpacing : null, this.textAlign = t.textAlign || e.textAlign || null, this.textNormalization = typeof t.textNormalization == "boolean" ? t.textNormalization : e.textNormalization ?? null, this.wordSpacing = t.wordSpacing !== void 0 ? t.wordSpacing : e.wordSpacing !== void 0 ? e.wordSpacing : null), this.zoom = t.zoom !== void 0 ? t.zoom : e.zoom !== void 0 ? e.zoom : null, this.experiments = e.experiments || null;
|
|
5036
5068
|
}
|
|
@@ -5080,7 +5112,7 @@ class A extends M {
|
|
|
5080
5112
|
this._value = !this._value, this._onChange(this._value);
|
|
5081
5113
|
}
|
|
5082
5114
|
}
|
|
5083
|
-
class
|
|
5115
|
+
class yn extends M {
|
|
5084
5116
|
constructor({
|
|
5085
5117
|
initialValue: t = null,
|
|
5086
5118
|
effectiveValue: e,
|
|
@@ -5161,7 +5193,7 @@ class x extends M {
|
|
|
5161
5193
|
this._value = null;
|
|
5162
5194
|
}
|
|
5163
5195
|
}
|
|
5164
|
-
class
|
|
5196
|
+
class Ti {
|
|
5165
5197
|
constructor(t, e, i) {
|
|
5166
5198
|
this.preferences = t, this.settings = e, this.metadata = i;
|
|
5167
5199
|
}
|
|
@@ -5297,7 +5329,7 @@ class Ai {
|
|
|
5297
5329
|
});
|
|
5298
5330
|
}
|
|
5299
5331
|
get textAlign() {
|
|
5300
|
-
return new
|
|
5332
|
+
return new yn({
|
|
5301
5333
|
initialValue: this.preferences.textAlign,
|
|
5302
5334
|
effectiveValue: this.settings.textAlign || tt.start,
|
|
5303
5335
|
isEffective: this.isDisplayTransformable,
|
|
@@ -5342,7 +5374,7 @@ class Ai {
|
|
|
5342
5374
|
});
|
|
5343
5375
|
}
|
|
5344
5376
|
}
|
|
5345
|
-
const
|
|
5377
|
+
const bn = (r) => {
|
|
5346
5378
|
if ("blob" in r && r.blob.type)
|
|
5347
5379
|
return r.blob.type;
|
|
5348
5380
|
if (r.as === "script")
|
|
@@ -5352,22 +5384,22 @@ const yn = (r) => {
|
|
|
5352
5384
|
if (t.endsWith(".css")) return "text/css";
|
|
5353
5385
|
if ([".js", ".mjs", ".cjs"].some((e) => t.endsWith(e))) return "text/javascript";
|
|
5354
5386
|
}
|
|
5355
|
-
},
|
|
5387
|
+
}, wn = (r, t) => {
|
|
5356
5388
|
t.attributes && Object.entries(t.attributes).forEach(([e, i]) => {
|
|
5357
5389
|
e === "type" || e === "rel" || e === "href" || e === "src" || i != null && (typeof i == "boolean" ? i && r.setAttribute(e, "") : r.setAttribute(e, i));
|
|
5358
5390
|
});
|
|
5359
|
-
},
|
|
5391
|
+
}, Ws = (r, t, e) => {
|
|
5360
5392
|
const i = r.createElement("script");
|
|
5361
5393
|
i.dataset.readium = "true", t.id && (i.id = t.id);
|
|
5362
|
-
const n = t.type ||
|
|
5363
|
-
return n && (i.type = n),
|
|
5364
|
-
},
|
|
5394
|
+
const n = t.type || bn(t);
|
|
5395
|
+
return n && (i.type = n), wn(i, t), i.src = e, i;
|
|
5396
|
+
}, Mi = (r, t, e) => {
|
|
5365
5397
|
const i = r.createElement("link");
|
|
5366
5398
|
i.dataset.readium = "true", t.id && (i.id = t.id), t.rel && (i.rel = t.rel);
|
|
5367
|
-
const n = t.type ||
|
|
5368
|
-
return n && (i.type = n),
|
|
5399
|
+
const n = t.type || bn(t);
|
|
5400
|
+
return n && (i.type = n), wn(i, t), i.href = e, i;
|
|
5369
5401
|
};
|
|
5370
|
-
class
|
|
5402
|
+
class vn {
|
|
5371
5403
|
constructor(t) {
|
|
5372
5404
|
this.blobStore = /* @__PURE__ */ new Map(), this.createdBlobUrls = /* @__PURE__ */ new Set(), this.allowedDomains = [], this.injectableIdCounter = 0, this.allowedDomains = (t.allowedDomains || []).map((e) => {
|
|
5373
5405
|
try {
|
|
@@ -5448,14 +5480,14 @@ class wn {
|
|
|
5448
5480
|
...e.attributes,
|
|
5449
5481
|
as: e.as
|
|
5450
5482
|
}
|
|
5451
|
-
}, s =
|
|
5483
|
+
}, s = Mi(t, n, i);
|
|
5452
5484
|
t.head.appendChild(s);
|
|
5453
5485
|
}
|
|
5454
5486
|
createElement(t, e, i) {
|
|
5455
5487
|
if (e.as === "script")
|
|
5456
|
-
return
|
|
5488
|
+
return Ws(t, e, i);
|
|
5457
5489
|
if (e.as === "link")
|
|
5458
|
-
return
|
|
5490
|
+
return Mi(t, e, i);
|
|
5459
5491
|
throw new Error(`Unsupported element type: ${e.as}`);
|
|
5460
5492
|
}
|
|
5461
5493
|
async applyRule(t, e) {
|
|
@@ -5512,7 +5544,7 @@ class wn {
|
|
|
5512
5544
|
}
|
|
5513
5545
|
}
|
|
5514
5546
|
}
|
|
5515
|
-
const vt = (r) => r.replace(/\/\/.*/g, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/\n/g, "").replace(/\s+/g, " "), Ct = (r) => r.replace(/\/\*(?:(?!\*\/)[\s\S])*\*\/|[\r\n\t]+/g, "").replace(/ {2,}/g, " "),
|
|
5547
|
+
const vt = (r) => r.replace(/\/\/.*/g, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/\n/g, "").replace(/\s+/g, " "), Ct = (r) => r.replace(/\/\*(?:(?!\*\/)[\s\S])*\*\/|[\r\n\t]+/g, "").replace(/ {2,}/g, " "), Us = `/*!
|
|
5516
5548
|
* Readium CSS v.2.0.0
|
|
5517
5549
|
* Copyright (c) 2017–2026. Readium Foundation. All rights reserved.
|
|
5518
5550
|
* Use of this source code is governed by a BSD-style license which is detailed in the
|
|
@@ -5786,11 +5818,11 @@ const vt = (r) => r.replace(/\/\/.*/g, "").replace(/\/\*[\s\S]*?\*\//g, "").repl
|
|
|
5786
5818
|
|
|
5787
5819
|
:root[style*="readium-iPadOSPatch-on"] p:not(:has(b, cite, em, i, q, s, small, span, strong)):first-line{
|
|
5788
5820
|
-webkit-text-zoom:normal;
|
|
5789
|
-
}`,
|
|
5821
|
+
}`, Sn = '!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports._readium_cssSelectorGenerator=e():t._readium_cssSelectorGenerator=e()}(self,(()=>(()=>{"use strict";var t={d:(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};function n(t){return"object"==typeof t&&null!==t&&t.nodeType===Node.ELEMENT_NODE}t.r(e),t.d(e,{_readium_cssSelectorGenerator:()=>Z,default:()=>tt,getCssSelector:()=>X});const o={NONE:"",DESCENDANT:" ",CHILD:" > "},r={id:"id",class:"class",tag:"tag",attribute:"attribute",nthchild:"nthchild",nthoftype:"nthoftype"},i="_readium_cssSelectorGenerator";function c(t="unknown problem",...e){console.warn(`${i}: ${t}`,...e)}const s={selectors:[r.id,r.class,r.tag,r.attribute],includeTag:!1,whitelist:[],blacklist:[],combineWithinSelector:!0,combineBetweenSelectors:!0,root:null,maxCombinations:Number.POSITIVE_INFINITY,maxCandidates:Number.POSITIVE_INFINITY,useScope:!1};function u(t){return t instanceof RegExp}function l(t){return["string","function"].includes(typeof t)||u(t)}function a(t){return Array.isArray(t)?t.filter(l):[]}function f(t){const e=[Node.DOCUMENT_NODE,Node.DOCUMENT_FRAGMENT_NODE,Node.ELEMENT_NODE];return function(t){return t instanceof Node}(t)&&e.includes(t.nodeType)}function d(t,e){if(f(t))return t.contains(e)||c("element root mismatch","Provided root does not contain the element. This will most likely result in producing a fallback selector using element\'s real root node. If you plan to use the selector using provided root (e.g. `root.querySelector`), it will not work as intended."),t;const n=e.getRootNode({composed:!1});return f(n)?(n!==document&&c("shadow root inferred","You did not provide a root and the element is a child of Shadow DOM. This will produce a selector using ShadowRoot as a root. If you plan to use the selector using document as a root (e.g. `document.querySelector`), it will not work as intended."),n):S(e)}function m(t){return"number"==typeof t?t:Number.POSITIVE_INFINITY}function p(t=[]){const[e=[],...n]=t;return 0===n.length?e:n.reduce(((t,e)=>t.filter((t=>e.includes(t)))),e)}function g(t){const e=t.map((t=>{if(u(t))return e=>t.test(e);if("function"==typeof t)return e=>{const n=t(e);return"boolean"!=typeof n?(c("pattern matcher function invalid","Provided pattern matching function does not return boolean. It\'s result will be ignored.",t),!1):n};if("string"==typeof t){const e=new RegExp("^"+t.replace(/[|\\\\{}()[\\]^$+?.]/g,"\\\\$&").replace(/\\*/g,".+")+"$");return t=>e.test(t)}return c("pattern matcher invalid","Pattern matching only accepts strings, regular expressions and/or functions. This item is invalid and will be ignored.",t),()=>!1}));return t=>e.some((e=>e(t)))}function h(t,e,n){const o=Array.from(d(n,t[0]).querySelectorAll(e));return o.length===t.length&&t.every((t=>o.includes(t)))}function y(t,e){e=null!=e?e:S(t);const o=[];let r=t;for(;n(r)&&r!==e;)o.push(r),r=r.parentElement;return o}function b(t,e){return p(t.map((t=>y(t,e))))}function S(t){return t.ownerDocument.querySelector(":root")}const N=", ",v=new RegExp(["^$","\\\\s"].join("|")),E=new RegExp(["^$"].join("|")),x=[r.nthoftype,r.tag,r.id,r.class,r.attribute,r.nthchild],w=g(["class","id","ng-*"]);function I({name:t}){return`[${t}]`}function T({name:t,value:e}){return`[${t}=\'${e}\']`}function O({nodeName:t,nodeValue:e}){return{name:F(t),value:F(null!=e?e:void 0)}}function C(t){const e=Array.from(t.attributes).filter((e=>function({nodeName:t,nodeValue:e},n){const o=n.tagName.toLowerCase();return!(["input","option"].includes(o)&&"value"===t||"src"===t&&(null==e?void 0:e.startsWith("data:"))||w(t))}(e,t))).map(O);return[...e.map(I),...e.map(T)]}function j(t){var e;return(null!==(e=t.getAttribute("class"))&&void 0!==e?e:"").trim().split(/\\s+/).filter((t=>!E.test(t))).map((t=>`.${F(t)}`))}function A(t){var e;const n=null!==(e=t.getAttribute("id"))&&void 0!==e?e:"",o=`#${F(n)}`,r=t.getRootNode({composed:!1});return!v.test(n)&&h([t],o,r)?[o]:[]}function R(t){var e;const n=null===(e=t.parentElement)||void 0===e?void 0:e.children;if(n)for(let e=0;e<n.length;e++)if(n[e]===t)return[`:nth-child(${String(e+1)})`];return[]}function $(t){return[F(t.tagName.toLowerCase())]}function D(t){const e=[...new Set((n=t.map($),[].concat(...n)))];var n;return 0===e.length||e.length>1?[]:[e[0]]}function k(t){const e=D([t])[0],n=t.parentElement;if(n){const o=Array.from(n.children).filter((t=>t.tagName.toLowerCase()===e)),r=o.indexOf(t);if(r>-1)return[`${e}:nth-of-type(${String(r+1)})`]}return[]}function*P(t=[],{maxResults:e=Number.POSITIVE_INFINITY}={}){let n=0,o=L(1);for(;o.length<=t.length&&n<e;){n+=1;const e=o.map((e=>t[e]));yield e,o=_(o,t.length-1)}}function _(t=[],e=0){const n=t.length;if(0===n)return[];const o=[...t];o[n-1]+=1;for(let t=n-1;t>=0;t--)if(o[t]>e){if(0===t)return L(n+1);o[t-1]++,o[t]=o[t-1]+1}return o[n-1]>e?L(n+1):o}function L(t=1){return Array.from(Array(t).keys())}const M=":".charCodeAt(0).toString(16).toUpperCase(),V=/[ !"#$%&\'()\\[\\]{|}<>*+,./;=?@^`~\\\\]/;function F(t=""){return CSS?CSS.escape(t):function(t=""){return t.split("").map((t=>":"===t?`\\\\${M} `:V.test(t)?`\\\\${t}`:escape(t).replace(/%/g,"\\\\"))).join("")}(t)}const Y={tag:D,id:function(t){return 0===t.length||t.length>1?[]:A(t[0])},class:function(t){return p(t.map(j))},attribute:function(t){return p(t.map(C))},nthchild:function(t){return p(t.map(R))},nthoftype:function(t){return p(t.map(k))}},G={tag:$,id:A,class:j,attribute:C,nthchild:R,nthoftype:k};function W(t){return t.includes(r.tag)||t.includes(r.nthoftype)?[...t]:[...t,r.tag]}function*q(t,e){const n={};for(const o of t){const t=e[o];t&&t.length>0&&(n[o]=t)}for(const t of function*(t={}){const e=Object.entries(t);if(0===e.length)return;const n=[{index:e.length-1,partial:{}}];for(;n.length>0;){const t=n.pop();if(!t)break;const{index:o,partial:r}=t;if(o<0){yield r;continue}const[i,c]=e[o];for(let t=c.length-1;t>=0;t--)n.push({index:o-1,partial:Object.assign(Object.assign({},r),{[i]:c[t]})})}}(n))yield B(t)}function B(t={}){const e=[...x];return t[r.tag]&&t[r.nthoftype]&&e.splice(e.indexOf(r.tag),1),e.map((e=>{return(o=t)[n=e]?o[n].join(""):"";var n,o})).join("")}function H(t,e){return[...t.map((t=>e+o.DESCENDANT+t)),...t.map((t=>e+o.CHILD+t))]}function*U(t,e,n="",o){const r=function*(t,e){const n=new Set,o=function(t,e){const{blacklist:n,whitelist:o,combineWithinSelector:r,maxCombinations:i}=e,c=g(n),s=g(o);return function(t){const{selectors:e,includeTag:n}=t,o=[...e];return n&&!o.includes("tag")&&o.push("tag"),o}(e).reduce(((e,n)=>{const o=function(t,e){return(0,Y[e])(t)}(t,n),u=function(t=[],e,n){return t.filter((t=>n(t)||!e(t)))}(o,c,s),l=function(t=[],e){return t.sort(((t,n)=>{const o=e(t),r=e(n);return o&&!r?-1:!o&&r?1:0}))}(u,s);return e[n]=r?Array.from(P(l,{maxResults:i})):l.map((t=>[t])),e}),{})}(t,e);for(const t of function*(t,e){for(const n of function(t){const{selectors:e,combineBetweenSelectors:n,includeTag:o,maxCandidates:r}=t,i=n?function(t=[],{maxResults:e=Number.POSITIVE_INFINITY}={}){return Array.from(P(t,{maxResults:e}))}(e,{maxResults:r}):e.map((t=>[t]));return o?i.map(W):i}(e))yield*q(n,t)}(o,e))n.has(t)||(n.add(t),yield t)}(t,o);for(const o of function*(t,e){if(""===e)yield*t;else for(const n of t)yield*H([n],e)}(r,n))h(t,o,e)&&(yield o)}function*z(t,e,n="",o){if(0===t.length)return null;const r=[t.length>1?t:[],...b(t,e).map((t=>[t]))];for(const t of r)for(const r of U(t,e,n,o))yield{foundElements:t,selector:r}}function J(t){return{value:t,include:!1}}function K({selectors:t,operator:e}){let n=[...x];t[r.tag]&&t[r.nthoftype]&&(n=n.filter((t=>t!==r.tag)));let o="";return n.forEach((e=>{var n;(null!==(n=t[e])&&void 0!==n?n:[]).forEach((({value:t,include:e})=>{e&&(o+=t)}))})),e+o}function Q(t,e){return t.map((t=>function(t,e){return[e?":scope":":root",...y(t,e).reverse().map((t=>{var e;const n=function(t,e,n=o.NONE){const r={};return e.forEach((e=>{Reflect.set(r,e,function(t,e){return G[e](t)}(t,e).map(J))})),{element:t,operator:n,selectors:r}}(t,[r.nthchild],o.CHILD);return(null!==(e=n.selectors.nthchild)&&void 0!==e?e:[]).forEach((t=>{t.include=!0})),n})).map(K)].join("")}(t,e))).join(N)}function X(t,e={}){return Z(t,Object.assign(Object.assign({},e),{maxResults:1})).next().value}function*Z(t,e={}){var o;const i=function(t){(t instanceof NodeList||t instanceof HTMLCollection)&&(t=Array.from(t));const e=(Array.isArray(t)?t:[t]).filter(n);return[...new Set(e)]}(t),c=function(t,e={}){const n=Object.assign(Object.assign({},s),e);return{selectors:(o=n.selectors,Array.isArray(o)?o.filter((t=>{return e=r,n=t,Object.values(e).includes(n);var e,n})):[]),whitelist:a(n.whitelist),blacklist:a(n.blacklist),root:d(n.root,t),combineWithinSelector:!!n.combineWithinSelector,combineBetweenSelectors:!!n.combineBetweenSelectors,includeTag:!!n.includeTag,maxCombinations:m(n.maxCombinations),maxCandidates:m(n.maxCandidates),useScope:!!n.useScope,maxResults:m(n.maxResults)};var o}(i[0],e),u=null!==(o=c.root)&&void 0!==o?o:S(i[0]);let l=0;for(const t of function*({elements:t,root:e,rootSelector:n="",options:o}){let r=e,i=n,c=!0;for(;c;){let n=!1;for(const c of z(t,r,i,o)){const{foundElements:o,selector:s}=c;if(n=!0,!h(t,s,e)){r=o[0],i=s;break}yield s}n||(c=!1)}}({elements:i,options:c,root:u,rootSelector:""}))if(yield t,l++,l>=c.maxResults)return;i.length>1&&(yield i.map((t=>X(t,c))).join(N),l++,l>=c.maxResults)||(yield Q(i,c.useScope?u:void 0))}const tt=X;return e})()));', Bs = `// WebPub-specific setup - no execution blocking needed
|
|
5790
5822
|
window._readium_blockedEvents = [];
|
|
5791
5823
|
window._readium_blockEvents = false; // WebPub doesn't need event blocking
|
|
5792
5824
|
window._readium_eventBlocker = null;
|
|
5793
|
-
`,
|
|
5825
|
+
`, Pn = `(function() {
|
|
5794
5826
|
if(window.onload) window.onload = new Proxy(window.onload, {
|
|
5795
5827
|
apply: function(target, receiver, args) {
|
|
5796
5828
|
if(!window._readium_blockEvents) {
|
|
@@ -5804,21 +5836,21 @@ window._readium_eventBlocker = null;
|
|
|
5804
5836
|
});
|
|
5805
5837
|
})();
|
|
5806
5838
|
`;
|
|
5807
|
-
function
|
|
5839
|
+
function Hs(r) {
|
|
5808
5840
|
const t = r.filter((s) => s.mediaType.isHTML).map((s) => s.href), e = t.length > 0 ? t : [/\.html$/, /\.xhtml$/, /\/$/], i = [
|
|
5809
5841
|
// CSS Selector Generator - always injected
|
|
5810
5842
|
{
|
|
5811
5843
|
id: "css-selector-generator",
|
|
5812
5844
|
as: "script",
|
|
5813
5845
|
target: "head",
|
|
5814
|
-
blob: new Blob([vt(
|
|
5846
|
+
blob: new Blob([vt(Sn)], { type: "text/javascript" })
|
|
5815
5847
|
},
|
|
5816
5848
|
// WebPub Execution - always injected (sets up event blocking to false)
|
|
5817
5849
|
{
|
|
5818
5850
|
id: "webpub-execution",
|
|
5819
5851
|
as: "script",
|
|
5820
5852
|
target: "head",
|
|
5821
|
-
blob: new Blob([vt(
|
|
5853
|
+
blob: new Blob([vt(Bs)], { type: "text/javascript" })
|
|
5822
5854
|
}
|
|
5823
5855
|
], n = [
|
|
5824
5856
|
// Onload Proxy - conditional (has executable scripts)
|
|
@@ -5826,7 +5858,7 @@ function Bs(r) {
|
|
|
5826
5858
|
id: "onload-proxy",
|
|
5827
5859
|
as: "script",
|
|
5828
5860
|
target: "head",
|
|
5829
|
-
blob: new Blob([vt(
|
|
5861
|
+
blob: new Blob([vt(Pn)], { type: "text/javascript" }),
|
|
5830
5862
|
condition: (s) => !!(s.querySelector("script") || s.querySelector("body[onload]:not(body[onload=''])"))
|
|
5831
5863
|
},
|
|
5832
5864
|
// Readium CSS WebPub - always injected
|
|
@@ -5834,7 +5866,7 @@ function Bs(r) {
|
|
|
5834
5866
|
id: "readium-css-webpub",
|
|
5835
5867
|
as: "link",
|
|
5836
5868
|
target: "head",
|
|
5837
|
-
blob: new Blob([Ct(
|
|
5869
|
+
blob: new Blob([Ct(Us)], { type: "text/css" }),
|
|
5838
5870
|
rel: "stylesheet"
|
|
5839
5871
|
}
|
|
5840
5872
|
];
|
|
@@ -5846,7 +5878,7 @@ function Bs(r) {
|
|
|
5846
5878
|
}
|
|
5847
5879
|
];
|
|
5848
5880
|
}
|
|
5849
|
-
class
|
|
5881
|
+
class Vs {
|
|
5850
5882
|
constructor(t) {
|
|
5851
5883
|
if (this.detectedTools = /* @__PURE__ */ new Set(), !t.onDetected)
|
|
5852
5884
|
throw new Error("onDetected callback is required");
|
|
@@ -5878,11 +5910,11 @@ class Hs {
|
|
|
5878
5910
|
this.observer?.disconnect(), this.observer = void 0, this.detectedTools.clear();
|
|
5879
5911
|
}
|
|
5880
5912
|
}
|
|
5881
|
-
let
|
|
5882
|
-
function
|
|
5883
|
-
return ++
|
|
5913
|
+
let js = 0;
|
|
5914
|
+
function $s() {
|
|
5915
|
+
return ++js;
|
|
5884
5916
|
}
|
|
5885
|
-
const
|
|
5917
|
+
const Xs = `
|
|
5886
5918
|
onmessage = function(event) {
|
|
5887
5919
|
var action = event.data;
|
|
5888
5920
|
var startTime = performance.now()
|
|
@@ -5893,7 +5925,7 @@ onmessage = function(event) {
|
|
|
5893
5925
|
time: performance.now() - startTime
|
|
5894
5926
|
})
|
|
5895
5927
|
}
|
|
5896
|
-
`,
|
|
5928
|
+
`, Je = class Je {
|
|
5897
5929
|
constructor(t, e) {
|
|
5898
5930
|
this.callbacks = /* @__PURE__ */ new Map(), this.worker = t, this.blobUrl = e, this.worker.onmessage = (i) => {
|
|
5899
5931
|
const n = i.data, s = n.id, o = this.callbacks.get(n.id);
|
|
@@ -5903,7 +5935,7 @@ onmessage = function(event) {
|
|
|
5903
5935
|
}, this.log = (...i) => this.send("log", ...i), this.table = (...i) => this.send("table", ...i), this.clear = (...i) => this.send("clear", ...i);
|
|
5904
5936
|
}
|
|
5905
5937
|
async send(t, ...e) {
|
|
5906
|
-
const i =
|
|
5938
|
+
const i = $s();
|
|
5907
5939
|
return new Promise((n, s) => {
|
|
5908
5940
|
this.callbacks.set(i, n), this.worker.postMessage({
|
|
5909
5941
|
id: i,
|
|
@@ -5918,14 +5950,14 @@ onmessage = function(event) {
|
|
|
5918
5950
|
this.worker.terminate(), URL.revokeObjectURL(this.blobUrl);
|
|
5919
5951
|
}
|
|
5920
5952
|
};
|
|
5921
|
-
|
|
5922
|
-
let se =
|
|
5923
|
-
function
|
|
5953
|
+
Je.workerScript = Xs;
|
|
5954
|
+
let se = Je;
|
|
5955
|
+
function Ge(r) {
|
|
5924
5956
|
return typeof window < "u" && console ? console[r] : (...t) => {
|
|
5925
5957
|
};
|
|
5926
5958
|
}
|
|
5927
|
-
const
|
|
5928
|
-
async function
|
|
5959
|
+
const Gs = Ge("log"), Ni = Ge("table"), Ys = Ge("clear");
|
|
5960
|
+
async function zi() {
|
|
5929
5961
|
if (typeof navigator < "u" && navigator.brave && navigator.brave.isBrave)
|
|
5930
5962
|
try {
|
|
5931
5963
|
return await Promise.race([
|
|
@@ -5937,10 +5969,10 @@ async function Ni() {
|
|
|
5937
5969
|
}
|
|
5938
5970
|
return !1;
|
|
5939
5971
|
}
|
|
5940
|
-
function
|
|
5972
|
+
function qs(r) {
|
|
5941
5973
|
return r.excludes.some((t) => t()) ? !1 : r.includes.some((t) => t());
|
|
5942
5974
|
}
|
|
5943
|
-
class
|
|
5975
|
+
class Ks {
|
|
5944
5976
|
constructor(t = {}) {
|
|
5945
5977
|
if (this.isOpen = !1, this.checkCount = 0, this.maxChecks = 10, this.maxPrintTime = 0, this.largeObjectArray = null, this.options = {
|
|
5946
5978
|
onDetected: t.onDetected || (() => {
|
|
@@ -5986,11 +6018,11 @@ class qs {
|
|
|
5986
6018
|
return (await this.workerConsole.table(t)).time;
|
|
5987
6019
|
} catch {
|
|
5988
6020
|
const i = performance.now();
|
|
5989
|
-
return
|
|
6021
|
+
return Ni(t), performance.now() - i;
|
|
5990
6022
|
}
|
|
5991
6023
|
else {
|
|
5992
6024
|
const e = performance.now();
|
|
5993
|
-
return
|
|
6025
|
+
return Ni(t), performance.now() - e;
|
|
5994
6026
|
}
|
|
5995
6027
|
}
|
|
5996
6028
|
/**
|
|
@@ -6002,14 +6034,14 @@ class qs {
|
|
|
6002
6034
|
return (await this.workerConsole.log(t)).time;
|
|
6003
6035
|
{
|
|
6004
6036
|
const e = performance.now();
|
|
6005
|
-
return
|
|
6037
|
+
return Gs(t), performance.now() - e;
|
|
6006
6038
|
}
|
|
6007
6039
|
}
|
|
6008
6040
|
/**
|
|
6009
6041
|
* Check if performance-based detection is enabled for current browser
|
|
6010
6042
|
*/
|
|
6011
6043
|
isPerformanceDetectionEnabled() {
|
|
6012
|
-
return
|
|
6044
|
+
return qs({
|
|
6013
6045
|
includes: [
|
|
6014
6046
|
() => !!J.UA.Chrome,
|
|
6015
6047
|
() => !!J.UA.Chromium,
|
|
@@ -6032,14 +6064,14 @@ class qs {
|
|
|
6032
6064
|
if (!this.isPerformanceDetectionEnabled())
|
|
6033
6065
|
return !1;
|
|
6034
6066
|
const t = await this.calcTablePrintTime(), e = Math.max(await this.calcLogPrintTime(), await this.calcLogPrintTime());
|
|
6035
|
-
return this.maxPrintTime = Math.max(this.maxPrintTime, e), this.workerConsole ? await this.workerConsole.clear() :
|
|
6067
|
+
return this.maxPrintTime = Math.max(this.maxPrintTime, e), this.workerConsole ? await this.workerConsole.clear() : Ys(), t === 0 ? !1 : this.maxPrintTime === 0 ? !!await zi() : t > this.maxPrintTime * 10;
|
|
6036
6068
|
}
|
|
6037
6069
|
/**
|
|
6038
6070
|
* Debugger-based detection (fallback method)
|
|
6039
6071
|
* WARNING: This method impacts user experience
|
|
6040
6072
|
*/
|
|
6041
6073
|
async checkDebuggerBased() {
|
|
6042
|
-
if (!this.isDebuggerDetectionEnabled() || await
|
|
6074
|
+
if (!this.isDebuggerDetectionEnabled() || await zi())
|
|
6043
6075
|
return !1;
|
|
6044
6076
|
const t = performance.now();
|
|
6045
6077
|
try {
|
|
@@ -6087,7 +6119,7 @@ class qs {
|
|
|
6087
6119
|
this.intervalId && (clearInterval(this.intervalId), this.intervalId = void 0), this.workerConsole && (this.workerConsole.destroy(), this.workerConsole = void 0), this.isOpen = !1, this.checkCount = 0;
|
|
6088
6120
|
}
|
|
6089
6121
|
}
|
|
6090
|
-
class
|
|
6122
|
+
class Js {
|
|
6091
6123
|
constructor(t) {
|
|
6092
6124
|
if (this.detected = !1, !t.onDetected)
|
|
6093
6125
|
throw new Error("onDetected callback is required");
|
|
@@ -6122,7 +6154,7 @@ class Ks {
|
|
|
6122
6154
|
this.observer?.disconnect(), this.observer = void 0, this.detected = !1;
|
|
6123
6155
|
}
|
|
6124
6156
|
}
|
|
6125
|
-
class
|
|
6157
|
+
class Zs {
|
|
6126
6158
|
constructor(t = {}) {
|
|
6127
6159
|
this.styleElement = null, this.beforePrintHandler = null, this.onPrintAttempt = t.onPrintAttempt, t.disable && this.setupPrintProtection(t.watermark);
|
|
6128
6160
|
}
|
|
@@ -6148,7 +6180,7 @@ class Js {
|
|
|
6148
6180
|
this.beforePrintHandler && (window.removeEventListener("beforeprint", this.beforePrintHandler), this.beforePrintHandler = null), this.styleElement?.parentNode && (this.styleElement.parentNode.removeChild(this.styleElement), this.styleElement = null);
|
|
6149
6181
|
}
|
|
6150
6182
|
}
|
|
6151
|
-
class
|
|
6183
|
+
class Qs {
|
|
6152
6184
|
constructor(t = {}) {
|
|
6153
6185
|
this.onContextMenuBlocked = t.onContextMenuBlocked, this.contextMenuHandler = this.handleContextMenu.bind(this), document.addEventListener("contextmenu", this.contextMenuHandler, !0), window.addEventListener("unload", () => this.destroy());
|
|
6154
6186
|
}
|
|
@@ -6168,7 +6200,7 @@ class Zs {
|
|
|
6168
6200
|
}
|
|
6169
6201
|
}
|
|
6170
6202
|
const ot = "readium:navigator:suspiciousActivity";
|
|
6171
|
-
class
|
|
6203
|
+
class Ye {
|
|
6172
6204
|
dispatchSuspiciousActivity(t, e) {
|
|
6173
6205
|
const i = new CustomEvent(ot, {
|
|
6174
6206
|
detail: {
|
|
@@ -6180,7 +6212,7 @@ class Ge {
|
|
|
6180
6212
|
window.dispatchEvent(i);
|
|
6181
6213
|
}
|
|
6182
6214
|
constructor(t = {}) {
|
|
6183
|
-
t.monitorDevTools && (this.devToolsDetector = new
|
|
6215
|
+
t.monitorDevTools && (this.devToolsDetector = new Ks({
|
|
6184
6216
|
onDetected: () => {
|
|
6185
6217
|
this.dispatchSuspiciousActivity("developer_tools", {
|
|
6186
6218
|
targetFrameSrc: "",
|
|
@@ -6193,20 +6225,20 @@ class Ge {
|
|
|
6193
6225
|
metaKey: !1
|
|
6194
6226
|
});
|
|
6195
6227
|
}
|
|
6196
|
-
})), t.checkAutomation && (this.automationDetector = new
|
|
6228
|
+
})), t.checkAutomation && (this.automationDetector = new Vs({
|
|
6197
6229
|
onDetected: (e) => {
|
|
6198
6230
|
this.dispatchSuspiciousActivity("automation_detected", { tool: e });
|
|
6199
6231
|
}
|
|
6200
|
-
})), t.checkIFrameEmbedding && (this.iframeEmbeddingDetector = new
|
|
6232
|
+
})), t.checkIFrameEmbedding && (this.iframeEmbeddingDetector = new Js({
|
|
6201
6233
|
onDetected: (e) => {
|
|
6202
6234
|
this.dispatchSuspiciousActivity("iframe_embedding_detected", { isCrossOrigin: e });
|
|
6203
6235
|
}
|
|
6204
|
-
})), t.protectPrinting?.disable && (this.printProtector = new
|
|
6236
|
+
})), t.protectPrinting?.disable && (this.printProtector = new Zs({
|
|
6205
6237
|
...t.protectPrinting,
|
|
6206
6238
|
onPrintAttempt: () => {
|
|
6207
6239
|
this.dispatchSuspiciousActivity("print", {});
|
|
6208
6240
|
}
|
|
6209
|
-
})), t.disableContextMenu && (this.contextMenuProtector = new
|
|
6241
|
+
})), t.disableContextMenu && (this.contextMenuProtector = new Qs({
|
|
6210
6242
|
onContextMenuBlocked: (e) => {
|
|
6211
6243
|
this.dispatchSuspiciousActivity("context_menu", e);
|
|
6212
6244
|
}
|
|
@@ -6217,9 +6249,9 @@ class Ge {
|
|
|
6217
6249
|
}
|
|
6218
6250
|
}
|
|
6219
6251
|
const at = "readium:navigator:keyboardPeripheral";
|
|
6220
|
-
class
|
|
6252
|
+
class qe {
|
|
6221
6253
|
constructor(t = {}) {
|
|
6222
|
-
this.keyManager = new
|
|
6254
|
+
this.keyManager = new hn(), this.setupKeyboardPeripherals(t.keyboardPeripherals || []);
|
|
6223
6255
|
}
|
|
6224
6256
|
setupKeyboardPeripherals(t) {
|
|
6225
6257
|
if (t.length > 0) {
|
|
@@ -6242,7 +6274,7 @@ class Ye {
|
|
|
6242
6274
|
this.keydownHandler && (document.removeEventListener("keydown", this.keydownHandler, !0), this.keydownHandler = void 0);
|
|
6243
6275
|
}
|
|
6244
6276
|
}
|
|
6245
|
-
const
|
|
6277
|
+
const tr = (r) => ({
|
|
6246
6278
|
frameLoaded: r.frameLoaded || (() => {
|
|
6247
6279
|
}),
|
|
6248
6280
|
positionChanged: r.positionChanged || (() => {
|
|
@@ -6265,27 +6297,27 @@ const Qs = (r) => ({
|
|
|
6265
6297
|
peripheral: r.peripheral || (() => {
|
|
6266
6298
|
})
|
|
6267
6299
|
});
|
|
6268
|
-
class
|
|
6300
|
+
class er extends dn {
|
|
6269
6301
|
constructor(t, e, i, n = void 0, s = { preferences: {}, defaults: {} }) {
|
|
6270
6302
|
super(), this.currentIndex = 0, this._preferencesEditor = null, this._injector = null, this._navigatorProtector = null, this._keyboardPeripheralsManager = null, this._suspiciousActivityListener = null, this._keyboardPeripheralListener = null, this.webViewport = {
|
|
6271
6303
|
readingOrder: [],
|
|
6272
6304
|
progressions: /* @__PURE__ */ new Map(),
|
|
6273
6305
|
positions: null
|
|
6274
|
-
}, this.pub = e, this.container = t, this.listeners =
|
|
6275
|
-
rsProperties: new
|
|
6276
|
-
userProperties: new
|
|
6306
|
+
}, this.pub = e, this.container = t, this.listeners = tr(i), this._preferences = new Nt(s.preferences), this._defaults = new Fs(s.defaults), this._settings = new Ai(this._preferences, this._defaults, this.hasDisplayTransformability), this._css = new zs({
|
|
6307
|
+
rsProperties: new Ns({ experiments: this._settings.experiments || null }),
|
|
6308
|
+
userProperties: new mn({ zoom: this._settings.zoom })
|
|
6277
6309
|
});
|
|
6278
|
-
const o =
|
|
6279
|
-
if (this._injector = new
|
|
6310
|
+
const o = Hs(e.readingOrder.items), a = s.injectables || { rules: [], allowedDomains: [] };
|
|
6311
|
+
if (this._injector = new vn({
|
|
6280
6312
|
rules: [...o, ...a.rules],
|
|
6281
6313
|
allowedDomains: a.allowedDomains
|
|
6282
6314
|
}), this._contentProtection = s.contentProtection || {}, this._keyboardPeripherals = this.mergeKeyboardPeripherals(
|
|
6283
6315
|
this._contentProtection,
|
|
6284
6316
|
s.keyboardPeripherals || []
|
|
6285
|
-
), (this._contentProtection.disableContextMenu || this._contentProtection.checkAutomation || this._contentProtection.checkIFrameEmbedding || this._contentProtection.monitorDevTools || this._contentProtection.protectPrinting?.disable) && (this._navigatorProtector = new
|
|
6317
|
+
), (this._contentProtection.disableContextMenu || this._contentProtection.checkAutomation || this._contentProtection.checkIFrameEmbedding || this._contentProtection.monitorDevTools || this._contentProtection.protectPrinting?.disable) && (this._navigatorProtector = new Ye(this._contentProtection), this._suspiciousActivityListener = (l) => {
|
|
6286
6318
|
const { type: h, ...c } = l.detail;
|
|
6287
6319
|
h === "context_menu" ? this.listeners.contextMenu(c) : this.listeners.contentProtection(h, c);
|
|
6288
|
-
}, window.addEventListener(ot, this._suspiciousActivityListener)), this._keyboardPeripherals.length > 0 && (this._keyboardPeripheralsManager = new
|
|
6320
|
+
}, window.addEventListener(ot, this._suspiciousActivityListener)), this._keyboardPeripherals.length > 0 && (this._keyboardPeripheralsManager = new qe({
|
|
6289
6321
|
keyboardPeripherals: this._keyboardPeripherals
|
|
6290
6322
|
}), this._keyboardPeripheralListener = (l) => {
|
|
6291
6323
|
const h = l.detail;
|
|
@@ -6300,7 +6332,7 @@ class tr extends cn {
|
|
|
6300
6332
|
async load() {
|
|
6301
6333
|
await this.updateCSS(!1);
|
|
6302
6334
|
const t = this.compileCSSProperties(this._css);
|
|
6303
|
-
this.framePool = new
|
|
6335
|
+
this.framePool = new Os(
|
|
6304
6336
|
this.container,
|
|
6305
6337
|
t,
|
|
6306
6338
|
this._injector,
|
|
@@ -6313,13 +6345,13 @@ class tr extends cn {
|
|
|
6313
6345
|
return Object.freeze({ ...this._settings });
|
|
6314
6346
|
}
|
|
6315
6347
|
get preferencesEditor() {
|
|
6316
|
-
return this._preferencesEditor === null && (this._preferencesEditor = new
|
|
6348
|
+
return this._preferencesEditor === null && (this._preferencesEditor = new Ti(this._preferences, this.settings, this.pub.metadata)), this._preferencesEditor;
|
|
6317
6349
|
}
|
|
6318
6350
|
async submitPreferences(t) {
|
|
6319
6351
|
this._preferences = this._preferences.merging(t), await this.applyPreferences();
|
|
6320
6352
|
}
|
|
6321
6353
|
async applyPreferences() {
|
|
6322
|
-
this._settings = new
|
|
6354
|
+
this._settings = new Ai(this._preferences, this._defaults, this.hasDisplayTransformability), this._preferencesEditor !== null && (this._preferencesEditor = new Ti(this._preferences, this.settings, this.pub.metadata)), await this.updateCSS(!0);
|
|
6323
6355
|
}
|
|
6324
6356
|
async updateCSS(t) {
|
|
6325
6357
|
this._css.update(this._settings), t && await this.commitCSS(this._css);
|
|
@@ -6441,7 +6473,7 @@ class tr extends cn {
|
|
|
6441
6473
|
}
|
|
6442
6474
|
}
|
|
6443
6475
|
determineModules() {
|
|
6444
|
-
const t =
|
|
6476
|
+
const t = gs.slice(), e = bt(this.pub.metadata);
|
|
6445
6477
|
return e === "cjk-vertical" || e === "mongolian-vertical" ? t.map((i) => i === "webpub_snapper" ? "cjk_vertical_snapper" : i) : t;
|
|
6446
6478
|
}
|
|
6447
6479
|
attachListener() {
|
|
@@ -6580,7 +6612,7 @@ class tr extends cn {
|
|
|
6580
6612
|
});
|
|
6581
6613
|
}
|
|
6582
6614
|
}
|
|
6583
|
-
const
|
|
6615
|
+
const Fr = er, ir = (r) => {
|
|
6584
6616
|
const t = r.join(" ");
|
|
6585
6617
|
return [
|
|
6586
6618
|
// 'self' is useless because the document is loaded from a blob: URL
|
|
@@ -6605,7 +6637,7 @@ const Dr = tr, er = (r) => {
|
|
|
6605
6637
|
//`report-uri ?`,
|
|
6606
6638
|
].join("; ");
|
|
6607
6639
|
};
|
|
6608
|
-
class
|
|
6640
|
+
class En {
|
|
6609
6641
|
constructor(t, e, i, n) {
|
|
6610
6642
|
this.injector = null, this.pub = t, this.item = i, this.burl = i.toURL(e) || "", this.cssProperties = n.cssProperties, this.injector = n.injector ?? null;
|
|
6611
6643
|
}
|
|
@@ -6659,7 +6691,7 @@ class Pn {
|
|
|
6659
6691
|
u.href = i, u.dataset.readium = "true", t.head.firstChild.before(u);
|
|
6660
6692
|
}
|
|
6661
6693
|
const c = t.createElement("meta");
|
|
6662
|
-
return c.httpEquiv = "Content-Security-Policy", c.content =
|
|
6694
|
+
return c.httpEquiv = "Content-Security-Policy", c.content = ir(l), c.dataset.readium = "true", t.head.firstChild.before(c), URL.createObjectURL(
|
|
6663
6695
|
new Blob([new XMLSerializer().serializeToString(t)], {
|
|
6664
6696
|
type: n.isHTML ? n.string : "application/xhtml+xml"
|
|
6665
6697
|
// Fallback to XHTML
|
|
@@ -6667,7 +6699,7 @@ class Pn {
|
|
|
6667
6699
|
);
|
|
6668
6700
|
}
|
|
6669
6701
|
}
|
|
6670
|
-
class
|
|
6702
|
+
class _n {
|
|
6671
6703
|
constructor(t, e = {}, i = []) {
|
|
6672
6704
|
this.hidden = !0, this.destroyed = !1, this.currModules = [], this.frame = document.createElement("iframe"), this.frame.sandbox.value = "allow-same-origin allow-scripts", this.frame.classList.add("readium-navigator-iframe"), this.frame.style.visibility = "hidden", this.frame.style.setProperty("aria-hidden", "true"), this.frame.style.opacity = "0", this.frame.style.position = "absolute", this.frame.style.pointerEvents = "none", this.frame.style.transition = "visibility 0s, opacity 0.1s linear", this.source = t, this.contentProtectionConfig = { ...e }, this.keyboardPeripheralsConfig = [...i];
|
|
6673
6705
|
}
|
|
@@ -6705,10 +6737,15 @@ class En {
|
|
|
6705
6737
|
});
|
|
6706
6738
|
}
|
|
6707
6739
|
applyContentProtection() {
|
|
6708
|
-
this.comms || this.comms.resume(), this.comms.send("peripherals_protection", this.contentProtectionConfig), this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0 && this.
|
|
6740
|
+
this.comms || this.comms.resume(), this.comms.send("peripherals_protection", this.contentProtectionConfig), this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0 && (this.conditionBridge?.destroy(), this.conditionBridge = new $e(
|
|
6741
|
+
this.keyboardPeripheralsConfig,
|
|
6742
|
+
(t) => {
|
|
6743
|
+
t.length > 0 && this.comms.send("keyboard_peripherals", t);
|
|
6744
|
+
}
|
|
6745
|
+
), this.conditionBridge.setup()), this.contentProtectionConfig.monitorScrollingExperimental && this.comms.send("scroll_protection", {}), this.contentProtectionConfig.protectPrinting?.disable && this.comms.send("print_protection", this.contentProtectionConfig.protectPrinting);
|
|
6709
6746
|
}
|
|
6710
6747
|
async destroy() {
|
|
6711
|
-
await this.hide(), this.loader?.destroy(), this.frame.remove(), this.destroyed = !0;
|
|
6748
|
+
this.conditionBridge?.destroy(), await this.hide(), this.loader?.destroy(), this.frame.remove(), this.destroyed = !0;
|
|
6712
6749
|
}
|
|
6713
6750
|
async hide() {
|
|
6714
6751
|
if (!this.destroyed) {
|
|
@@ -6767,8 +6804,8 @@ class En {
|
|
|
6767
6804
|
return this.loader;
|
|
6768
6805
|
}
|
|
6769
6806
|
}
|
|
6770
|
-
const
|
|
6771
|
-
class
|
|
6807
|
+
const Ii = 5, Di = 3;
|
|
6808
|
+
class nr {
|
|
6772
6809
|
constructor(t, e, i, n, s, o) {
|
|
6773
6810
|
this.pool = /* @__PURE__ */ new Map(), this.blobs = /* @__PURE__ */ new Map(), this.inprogress = /* @__PURE__ */ new Map(), this.pendingUpdates = /* @__PURE__ */ new Map(), this.injector = null, this.container = t, this.positions = e, this.currentCssProperties = i, this.injector = n ?? null, this.contentProtectionConfig = s || {}, this.keyboardPeripheralsConfig = o || [];
|
|
6774
6811
|
}
|
|
@@ -6795,7 +6832,7 @@ class ir {
|
|
|
6795
6832
|
const a = new Promise(async (l, h) => {
|
|
6796
6833
|
const c = [], u = [];
|
|
6797
6834
|
this.positions.forEach((d, f) => {
|
|
6798
|
-
(f > s +
|
|
6835
|
+
(f > s + Ii || f < s - Ii) && (c.includes(d.href) || c.push(d.href)), f < s + Di && f > s - Di && (u.includes(d.href) || u.push(d.href));
|
|
6799
6836
|
}), c.forEach(async (d) => {
|
|
6800
6837
|
u.includes(d) || this.pool.has(d) && (await this.pool.get(d)?.destroy(), this.pool.delete(d), this.pendingUpdates.has(d) && this.pendingUpdates.set(d, { inPool: !1 }));
|
|
6801
6838
|
}), this.currentBaseURL !== void 0 && t.baseURL !== this.currentBaseURL && (this.blobs.forEach((d) => {
|
|
@@ -6820,7 +6857,7 @@ class ir {
|
|
|
6820
6857
|
const f = t.readingOrder.findWithHref(d);
|
|
6821
6858
|
if (!f) return;
|
|
6822
6859
|
if (!this.blobs.has(d)) {
|
|
6823
|
-
const R = await new
|
|
6860
|
+
const R = await new En(
|
|
6824
6861
|
t,
|
|
6825
6862
|
this.currentBaseURL || "",
|
|
6826
6863
|
f,
|
|
@@ -6831,7 +6868,7 @@ class ir {
|
|
|
6831
6868
|
).build();
|
|
6832
6869
|
this.blobs.set(d, R);
|
|
6833
6870
|
}
|
|
6834
|
-
const w = new
|
|
6871
|
+
const w = new _n(this.blobs.get(d), this.contentProtectionConfig, this.keyboardPeripheralsConfig);
|
|
6835
6872
|
d !== o && await w.hide(), this.container.appendChild(w.iframe), await w.load(i), this.pool.set(d, w);
|
|
6836
6873
|
};
|
|
6837
6874
|
try {
|
|
@@ -6885,7 +6922,7 @@ class ir {
|
|
|
6885
6922
|
}), t;
|
|
6886
6923
|
}
|
|
6887
6924
|
}
|
|
6888
|
-
class
|
|
6925
|
+
class sr {
|
|
6889
6926
|
constructor(t, e, i, n = {}, s = []) {
|
|
6890
6927
|
this.currModules = [], this.cachedPage = void 0, this.peripherals = t, this.debugHref = i, this.contentProtectionConfig = { ...n }, this.keyboardPeripheralsConfig = [...s], this.frame = document.createElement("iframe"), this.frame.sandbox.value = "allow-same-origin allow-scripts", this.frame.classList.add("readium-navigator-iframe"), this.frame.classList.add("blank"), this.frame.scrolling = "no", this.frame.style.visibility = "hidden", this.frame.style.setProperty("aria-hidden", "true"), this.frame.style.display = "none", this.frame.style.position = "absolute", this.frame.style.pointerEvents = "none", this.frame.style.transformOrigin = "0 0", this.frame.style.transform = "scale(1)", this.frame.style.background = "#fff", this.frame.style.touchAction = "none", this.frame.dataset.originalHref = i, this.source = "about:blank", this.wrapper = document.createElement("div"), this.wrapper.style.position = "relative", this.wrapper.style.float = this.wrapper.style.cssFloat = e === N.rtl ? "right" : "left", this.wrapper.appendChild(this.frame);
|
|
6891
6928
|
}
|
|
@@ -6958,7 +6995,7 @@ class nr {
|
|
|
6958
6995
|
this.frame.style.removeProperty("visibility"), this.frame.style.removeProperty("aria-hidden"), this.frame.style.removeProperty("pointer-events"), this.frame.classList.remove("blank"), this.frame.classList.add("loaded");
|
|
6959
6996
|
}
|
|
6960
6997
|
async destroy() {
|
|
6961
|
-
await this.unfocus(), this.loader?.destroy(), this.wrapper.remove();
|
|
6998
|
+
this.conditionBridge?.destroy(), await this.unfocus(), this.loader?.destroy(), this.wrapper.remove();
|
|
6962
6999
|
}
|
|
6963
7000
|
async unload() {
|
|
6964
7001
|
if (this.loaded)
|
|
@@ -6989,7 +7026,12 @@ class nr {
|
|
|
6989
7026
|
this.comms?.halt();
|
|
6990
7027
|
}
|
|
6991
7028
|
applyContentProtection() {
|
|
6992
|
-
this.comms || this.comms.resume(), this.comms.send("peripherals_protection", this.contentProtectionConfig), this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0 && this.
|
|
7029
|
+
this.comms || this.comms.resume(), this.comms.send("peripherals_protection", this.contentProtectionConfig), this.keyboardPeripheralsConfig && this.keyboardPeripheralsConfig.length > 0 && (this.conditionBridge?.destroy(), this.conditionBridge = new $e(
|
|
7030
|
+
this.keyboardPeripheralsConfig,
|
|
7031
|
+
(t) => {
|
|
7032
|
+
t.length > 0 && this.comms.send("keyboard_peripherals", t);
|
|
7033
|
+
}
|
|
7034
|
+
), this.conditionBridge.setup()), this.contentProtectionConfig.protectPrinting?.disable && this.comms.send("print_protection", this.contentProtectionConfig.protectPrinting);
|
|
6993
7035
|
}
|
|
6994
7036
|
async show(t) {
|
|
6995
7037
|
if (!this.frame.parentElement) {
|
|
@@ -7051,8 +7093,8 @@ class nr {
|
|
|
7051
7093
|
return this.loader;
|
|
7052
7094
|
}
|
|
7053
7095
|
}
|
|
7054
|
-
var
|
|
7055
|
-
class
|
|
7096
|
+
var rr = /* @__PURE__ */ ((r) => (r[r.Left = 0] = "Left", r[r.Center = 1] = "Center", r[r.Right = 2] = "Right", r))(rr || {}), or = /* @__PURE__ */ ((r) => (r[r.Top = 0] = "Top", r[r.Middle = 1] = "Middle", r[r.Bottom = 2] = "Bottom", r))(or || {});
|
|
7097
|
+
class ar {
|
|
7056
7098
|
constructor() {
|
|
7057
7099
|
this.outerWidth = 0, this.outerHeight = 0, this.HTML = document.documentElement, this.Head = document.head, this.Body = document.body;
|
|
7058
7100
|
}
|
|
@@ -7100,7 +7142,7 @@ class or {
|
|
|
7100
7142
|
};
|
|
7101
7143
|
}
|
|
7102
7144
|
}
|
|
7103
|
-
class
|
|
7145
|
+
class lr {
|
|
7104
7146
|
constructor() {
|
|
7105
7147
|
this._DOM = {
|
|
7106
7148
|
show: !1,
|
|
@@ -7118,8 +7160,8 @@ class ar {
|
|
|
7118
7160
|
return this._DOM;
|
|
7119
7161
|
}
|
|
7120
7162
|
}
|
|
7121
|
-
const
|
|
7122
|
-
class
|
|
7163
|
+
const Fi = 6, ye = 1.02, Wi = 50;
|
|
7164
|
+
class hr {
|
|
7123
7165
|
constructor(t, e = !1) {
|
|
7124
7166
|
this.dragState = 0, this.minimumMoved = !1, this.pan = {
|
|
7125
7167
|
startX: 0,
|
|
@@ -7138,7 +7180,7 @@ class lr {
|
|
|
7138
7180
|
target: { X: 0, Y: 0 },
|
|
7139
7181
|
touchN: 0,
|
|
7140
7182
|
startTranslate: { X: 0, Y: 0 }
|
|
7141
|
-
}, this._scale = 1, this.scaleDebouncer = 0, this.frameBounds = null, this.debugger = null, this.btouchstartHandler = this.touchstartHandler.bind(this), this.btouchendHandler = this.touchendHandler.bind(this), this.btouchmoveHandler = this.touchmoveHandler.bind(this), this.bdblclickHandler = this.dblclickHandler.bind(this), this.bmousedownHandler = this.mousedownHandler.bind(this), this.bmouseupHandler = this.mouseupHandler.bind(this), this.bmousemoveHandler = this.mousemoveHandler.bind(this), this.moveFrame = 0, this.manager = t, this.coordinator = new
|
|
7183
|
+
}, this._scale = 1, this.scaleDebouncer = 0, this.frameBounds = null, this.debugger = null, this.btouchstartHandler = this.touchstartHandler.bind(this), this.btouchendHandler = this.touchendHandler.bind(this), this.btouchmoveHandler = this.touchmoveHandler.bind(this), this.bdblclickHandler = this.dblclickHandler.bind(this), this.bmousedownHandler = this.mousedownHandler.bind(this), this.bmouseupHandler = this.mouseupHandler.bind(this), this.bmousemoveHandler = this.mousemoveHandler.bind(this), this.moveFrame = 0, this.manager = t, this.coordinator = new ar(), this.attachEvents(), e && (this.debugger = new lr());
|
|
7142
7184
|
}
|
|
7143
7185
|
get scale() {
|
|
7144
7186
|
return this._scale;
|
|
@@ -7234,7 +7276,7 @@ class lr {
|
|
|
7234
7276
|
*/
|
|
7235
7277
|
touchendHandler(t) {
|
|
7236
7278
|
if (t.stopPropagation(), !t.touches || t.touches.length === 0)
|
|
7237
|
-
this.pan.endX && !this.isScaled ? (this.pinch.touchN && (this.pan.endX = this.pan.startX), this.updateAfterDrag()) : !this.pinch.touchN && Math.abs(this.pan.overscrollX) >
|
|
7279
|
+
this.pan.endX && !this.isScaled ? (this.pinch.touchN && (this.pan.endX = this.pan.startX), this.updateAfterDrag()) : !this.pinch.touchN && Math.abs(this.pan.overscrollX) > Wi && Math.abs(this.pan.overscrollY) < Wi / 2 && (this.pan.startX = 0, this.pan.endX = -this.pan.overscrollX, this.updateAfterDrag()), this.dragState = 0, this.minimumMoved = !1, this.clearPinch(), this.debugger?.show && (this.debugger.DOM.center.style.display = "none", this.debugger.DOM.touch1.style.display = "none", this.debugger.DOM.touch2.style.display = "none");
|
|
7238
7280
|
else if (t.touches.length === 1) {
|
|
7239
7281
|
this.dragState = 1, t.touches[0].identifier !== this.pan.touchID && (this.pan.touchID = t.touches[0].identifier), this.debugger?.show && (this.debugger.DOM.center.style.display = "none", this.debugger.DOM.touch2.style.display = "none", this.debugger.DOM.pinchTarget.style.display = "none");
|
|
7240
7282
|
const e = this.startTouch(t);
|
|
@@ -7257,7 +7299,7 @@ class lr {
|
|
|
7257
7299
|
if (this.dragState === 2 && i) {
|
|
7258
7300
|
if (this.pinch.touchN++, this.pinch.touchN < 4) return;
|
|
7259
7301
|
let o = i / this.pinch.startDistance * this.scale;
|
|
7260
|
-
o >=
|
|
7302
|
+
o >= Fi && (o = Fi), o <= ye && (o = 1), this.scale = o, this.pinch.startDistance = i, n = !0;
|
|
7261
7303
|
}
|
|
7262
7304
|
if (this.pan.letItGo === !1 && (this.pan.letItGo = Math.abs(this.pan.startY - e.Y) < Math.abs(this.pan.startX - e.X)), this.debugger?.show && (this.debugger.DOM.touch1.style.top = `${e.Y - 10}px`, this.debugger.DOM.touch1.style.left = `${e.X - 10}px`, this.debugger.DOM.touch1.innerText = `${e.X.toFixed(2)},${e.Y.toFixed(2)}`), this.dragState > 0 && this.isScaled || this.dragState > 1) {
|
|
7263
7305
|
if (this.dragState === 1) {
|
|
@@ -7340,7 +7382,7 @@ Overscroll: ${this.pan.overscrollX.toFixed(2)},${this.pan.overscrollY.toFixed(2)
|
|
|
7340
7382
|
}
|
|
7341
7383
|
}
|
|
7342
7384
|
var Me = /* @__PURE__ */ ((r) => (r.auto = "auto", r.landscape = "landscape", r.portrait = "portrait", r))(Me || {}), Ne = /* @__PURE__ */ ((r) => (r.auto = "auto", r.both = "both", r.none = "none", r.landscape = "landscape", r))(Ne || {});
|
|
7343
|
-
class
|
|
7385
|
+
class cr {
|
|
7344
7386
|
// TODO getter
|
|
7345
7387
|
constructor(t) {
|
|
7346
7388
|
this.shift = !0, this.spreads = [], this.nLandscape = 0, this.index(t), this.testShift(t), console.log(`Indexed ${this.spreads.length} spreads for ${t.readingOrder.items.length} items`);
|
|
@@ -7385,13 +7427,13 @@ class hr {
|
|
|
7385
7427
|
return this.spreads.find((e) => e.includes(t)) || void 0;
|
|
7386
7428
|
}
|
|
7387
7429
|
}
|
|
7388
|
-
const
|
|
7389
|
-
class
|
|
7430
|
+
const Ui = 8, Bi = 5, dr = 300, ur = 15e3, pr = 250, fr = 150, mr = 500;
|
|
7431
|
+
class gr {
|
|
7390
7432
|
constructor(t, e, i, n, s, o) {
|
|
7391
7433
|
if (this.pool = /* @__PURE__ */ new Map(), this.blobs = /* @__PURE__ */ new Map(), this.inprogress = /* @__PURE__ */ new Map(), this.delayedShow = /* @__PURE__ */ new Map(), this.delayedTimeout = /* @__PURE__ */ new Map(), this.previousFrames = [], this.injector = null, this.width = 0, this.height = 0, this.transform = "", this.currentSlide = 0, this.spread = !0, this.orientationInternal = -1, this.container = t, this.positions = e, this.pub = i, this.injector = n ?? null, this.contentProtectionConfig = s || {}, this.keyboardPeripheralsConfig = o || [], this.spreadPresentation = i.metadata.otherMetadata?.spread || Ne.auto, this.pub.metadata.effectiveReadingProgression !== N.rtl && this.pub.metadata.effectiveReadingProgression !== N.ltr)
|
|
7392
7434
|
throw Error("Unsupported reading progression for EPUB");
|
|
7393
|
-
this.spreader = new
|
|
7394
|
-
const l = new
|
|
7435
|
+
this.spreader = new cr(this.pub), this.containerHeightCached = t.clientHeight, this.bookElement = document.createElement("div"), this.bookElement.ariaLabel = "Book", this.bookElement.tabIndex = -1, this.updateBookStyle(!0), this.spineElement = document.createElement("div"), this.spineElement.ariaLabel = "Spine", this.bookElement.appendChild(this.spineElement), this.container.appendChild(this.bookElement), this.updateSpineStyle(!0), this.peripherals = new hr(this), this.pub.readingOrder.items.forEach((a) => {
|
|
7436
|
+
const l = new sr(this.peripherals, this.pub.metadata.effectiveReadingProgression, a.href, this.contentProtectionConfig, this.keyboardPeripheralsConfig);
|
|
7395
7437
|
this.spineElement.appendChild(l.element), this.pool.set(a.href, l), l.width = 100 / this.length * (a.properties?.otherProperties.orientation === Me.landscape || a.properties?.otherProperties.addBlank ? this.perPage : 1), l.height = this.height;
|
|
7396
7438
|
});
|
|
7397
7439
|
}
|
|
@@ -7416,7 +7458,7 @@ class mr {
|
|
|
7416
7458
|
const a = this.spreader.findByLink(o);
|
|
7417
7459
|
i.update(this.spreadPosition(a, o));
|
|
7418
7460
|
});
|
|
7419
|
-
},
|
|
7461
|
+
}, pr);
|
|
7420
7462
|
}
|
|
7421
7463
|
/**
|
|
7422
7464
|
* It is important that these values be cached to avoid spamming them on redraws, they are expensive.
|
|
@@ -7443,7 +7485,7 @@ class mr {
|
|
|
7443
7485
|
let i = "0";
|
|
7444
7486
|
this.updateDimensions(), this.perPage > 1 && (i = `${this.width / 2}px`);
|
|
7445
7487
|
const n = {
|
|
7446
|
-
transition: t ? `all ${e ?
|
|
7488
|
+
transition: t ? `all ${e ? fr : mr}ms ease-out` : "all 0ms ease-out",
|
|
7447
7489
|
marginRight: this.rtl ? i : "0",
|
|
7448
7490
|
marginLeft: this.rtl ? "0" : i,
|
|
7449
7491
|
width: `${this.width / this.perPage * this.length}px`,
|
|
@@ -7603,7 +7645,7 @@ class mr {
|
|
|
7603
7645
|
const a = new Promise(async (l, h) => {
|
|
7604
7646
|
const c = [], u = [];
|
|
7605
7647
|
this.positions.forEach((d, f) => {
|
|
7606
|
-
(f > s +
|
|
7648
|
+
(f > s + Ui || f < s - Ui) && (c.includes(d.href) || c.push(d.href)), f < s + Bi && f > s - Bi && (u.includes(d.href) || u.push(d.href));
|
|
7607
7649
|
}), c.forEach(async (d) => {
|
|
7608
7650
|
u.includes(d) || this.pool.has(d) && (this.cancelShowing(d), await this.pool.get(d)?.unload());
|
|
7609
7651
|
}), this.currentBaseURL !== void 0 && t.baseURL !== this.currentBaseURL && (this.blobs.forEach((d) => URL.revokeObjectURL(d)), this.blobs.clear()), this.currentBaseURL = t.baseURL;
|
|
@@ -7611,7 +7653,7 @@ class mr {
|
|
|
7611
7653
|
const f = t.readingOrder.findIndexWithHref(d), w = t.readingOrder.items[f];
|
|
7612
7654
|
if (w) {
|
|
7613
7655
|
if (!this.blobs.has(d)) {
|
|
7614
|
-
const R = await new
|
|
7656
|
+
const R = await new En(
|
|
7615
7657
|
t,
|
|
7616
7658
|
this.currentBaseURL || "",
|
|
7617
7659
|
w,
|
|
@@ -7625,12 +7667,12 @@ class mr {
|
|
|
7625
7667
|
let Y = !1;
|
|
7626
7668
|
const lt = window.setTimeout(async () => {
|
|
7627
7669
|
this.delayedTimeout.set(d, 0);
|
|
7628
|
-
const ht = this.makeSpread(this.reAlign(f)),
|
|
7629
|
-
await
|
|
7630
|
-
},
|
|
7670
|
+
const ht = this.makeSpread(this.reAlign(f)), xn = this.spreadPosition(ht, w), Ze = this.pool.get(d);
|
|
7671
|
+
await Ze.load(i, this.blobs.get(d)), this.peripherals.isScaled || await Ze.show(xn), this.delayedShow.delete(d), Y = !0, P();
|
|
7672
|
+
}, dr);
|
|
7631
7673
|
setTimeout(() => {
|
|
7632
7674
|
!Y && this.delayedShow.has(d) && R(`Offscreen load timeout: ${d}`);
|
|
7633
|
-
},
|
|
7675
|
+
}, ur), this.delayedTimeout.set(d, lt);
|
|
7634
7676
|
}));
|
|
7635
7677
|
}
|
|
7636
7678
|
};
|
|
@@ -7729,20 +7771,20 @@ class zt {
|
|
|
7729
7771
|
return new zt(e);
|
|
7730
7772
|
}
|
|
7731
7773
|
}
|
|
7732
|
-
class
|
|
7774
|
+
class yr {
|
|
7733
7775
|
constructor(t) {
|
|
7734
|
-
this.backgroundColor = W(t.backgroundColor) || null, this.blendFilter = E(t.blendFilter) ?? !1, this.constraint = v(t.constraint) || 0, this.columnCount = v(t.columnCount) || null, this.darkenFilter = wt(t.darkenFilter) ?? !1, this.deprecatedFontSize = E(t.deprecatedFontSize), (this.deprecatedFontSize === !1 || this.deprecatedFontSize === null) && (this.deprecatedFontSize = !CSS.supports("zoom", "1")), this.fontFamily = W(t.fontFamily) || null, this.fontSize = z(t.fontSize, Yt.range) || 1, this.fontSizeNormalize = E(t.fontSizeNormalize) ?? !1, this.fontOpticalSizing = E(t.fontOpticalSizing) ?? null, this.fontWeight = z(t.fontWeight, st.range) || null, this.fontWidth = z(t.fontWidth, qt.range) || null, this.hyphens = E(t.hyphens) ?? null, this.invertFilter = wt(t.invertFilter) ?? !1, this.invertGaijiFilter = wt(t.invertGaijiFilter) ?? !1, this.iOSPatch = t.iOSPatch === !1 ? !1 : (T.OS.iOS || T.OS.iPadOS) && T.iOSRequest === "mobile", this.iPadOSPatch = t.iPadOSPatch === !1 ? !1 : T.OS.iPadOS && T.iOSRequest === "desktop", this.letterSpacing = v(t.letterSpacing) || null, this.ligatures = E(t.ligatures) ?? null, this.lineHeight = v(t.lineHeight) || null, this.linkColor = W(t.linkColor) || null, this.noRuby = E(t.noRuby) ?? !1, this.pageGutter = ge(v(t.pageGutter), 20), this.paragraphIndent = v(t.paragraphIndent) ?? null, this.paragraphSpacing = v(t.paragraphSpacing) ?? null, this.scroll = E(t.scroll) ?? !1, this.scrollPaddingTop = v(t.scrollPaddingTop) ?? null, this.scrollPaddingBottom = v(t.scrollPaddingBottom) ?? null, this.scrollPaddingLeft = v(t.scrollPaddingLeft) ?? null, this.scrollPaddingRight = v(t.scrollPaddingRight) ?? null, this.selectionBackgroundColor = W(t.selectionBackgroundColor) || null, this.selectionTextColor = W(t.selectionTextColor) || null, this.textAlign = he(t.textAlign, tt) || null, this.textColor = W(t.textColor) || null, this.textNormalization = E(t.textNormalization) ?? !1, this.visitedColor = W(t.visitedColor) || null, this.wordSpacing = v(t.wordSpacing) || null, this.optimalLineLength = v(t.optimalLineLength) || 65, this.maximalLineLength = ge(
|
|
7776
|
+
this.backgroundColor = W(t.backgroundColor) || null, this.blendFilter = E(t.blendFilter) ?? !1, this.constraint = v(t.constraint) || 0, this.columnCount = v(t.columnCount) || null, this.darkenFilter = wt(t.darkenFilter) ?? !1, this.deprecatedFontSize = E(t.deprecatedFontSize), (this.deprecatedFontSize === !1 || this.deprecatedFontSize === null) && (this.deprecatedFontSize = !CSS.supports("zoom", "1")), this.fontFamily = W(t.fontFamily) || null, this.fontSize = z(t.fontSize, Yt.range) || 1, this.fontSizeNormalize = E(t.fontSizeNormalize) ?? !1, this.fontOpticalSizing = E(t.fontOpticalSizing) ?? null, this.fontWeight = z(t.fontWeight, st.range) || null, this.fontWidth = z(t.fontWidth, qt.range) || null, this.hyphens = E(t.hyphens) ?? null, this.invertFilter = wt(t.invertFilter) ?? !1, this.invertGaijiFilter = wt(t.invertGaijiFilter) ?? !1, this.iOSPatch = t.iOSPatch === !1 ? !1 : (T.OS.iOS || T.OS.iPadOS) && T.iOSRequest === "mobile", this.iPadOSPatch = t.iPadOSPatch === !1 ? !1 : T.OS.iPadOS && T.iOSRequest === "desktop", this.letterSpacing = v(t.letterSpacing) || null, this.ligatures = E(t.ligatures) ?? null, this.lineHeight = v(t.lineHeight) || null, this.linkColor = W(t.linkColor) || null, this.noRuby = E(t.noRuby) ?? !1, this.pageGutter = ge(v(t.pageGutter), 20), this.paragraphIndent = v(t.paragraphIndent) ?? null, this.paragraphSpacing = v(t.paragraphSpacing) ?? null, this.scroll = E(t.scroll) ?? !1, this.scrollPaddingTop = v(t.scrollPaddingTop) ?? null, this.scrollPaddingBottom = v(t.scrollPaddingBottom) ?? null, this.scrollPaddingLeft = v(t.scrollPaddingLeft) ?? null, this.scrollPaddingRight = v(t.scrollPaddingRight) ?? null, this.selectionBackgroundColor = W(t.selectionBackgroundColor) || null, this.selectionTextColor = W(t.selectionTextColor) || null, this.textAlign = he(t.textAlign, tt) || null, this.textColor = W(t.textColor) || null, this.textNormalization = E(t.textNormalization) ?? !1, this.visitedColor = W(t.visitedColor) || null, this.wordSpacing = v(t.wordSpacing) || null, this.optimalLineLength = v(t.optimalLineLength) || 65, this.maximalLineLength = ge(Ds(t.maximalLineLength, this.optimalLineLength), 80), this.minimalLineLength = ge(Is(t.minimalLineLength, this.optimalLineLength), 40), this.experiments = gn(t.experiments) || null;
|
|
7735
7777
|
}
|
|
7736
7778
|
}
|
|
7737
|
-
const
|
|
7738
|
-
RS__backgroundColor:
|
|
7739
|
-
RS__textColor:
|
|
7740
|
-
RS__linkColor:
|
|
7741
|
-
RS__visitedColor:
|
|
7742
|
-
RS__selectionBackgroundColor:
|
|
7743
|
-
RS__selectionTextColor:
|
|
7779
|
+
const br = "#FFFFFF", wr = "#121212", vr = "#0000EE", Sr = "#551A8B", Pr = "#b4d8fe", Er = "inherit", pt = {
|
|
7780
|
+
RS__backgroundColor: br,
|
|
7781
|
+
RS__textColor: wr,
|
|
7782
|
+
RS__linkColor: vr,
|
|
7783
|
+
RS__visitedColor: Sr,
|
|
7784
|
+
RS__selectionBackgroundColor: Pr,
|
|
7785
|
+
RS__selectionTextColor: Er
|
|
7744
7786
|
};
|
|
7745
|
-
class
|
|
7787
|
+
class Hi {
|
|
7746
7788
|
constructor(t, e, i) {
|
|
7747
7789
|
this.preferences = t, this.settings = e, this.metadata = i, this.layout = this.metadata?.effectiveLayout || b.reflowable;
|
|
7748
7790
|
}
|
|
@@ -8134,7 +8176,7 @@ class Bi {
|
|
|
8134
8176
|
});
|
|
8135
8177
|
}
|
|
8136
8178
|
get textAlign() {
|
|
8137
|
-
return new
|
|
8179
|
+
return new yn({
|
|
8138
8180
|
initialValue: this.preferences.textAlign,
|
|
8139
8181
|
effectiveValue: this.settings.textAlign || tt.start,
|
|
8140
8182
|
isEffective: this.layout !== b.fixed && this.preferences.textAlign !== null,
|
|
@@ -8187,7 +8229,7 @@ class Bi {
|
|
|
8187
8229
|
});
|
|
8188
8230
|
}
|
|
8189
8231
|
}
|
|
8190
|
-
class
|
|
8232
|
+
class Vi {
|
|
8191
8233
|
constructor(t, e) {
|
|
8192
8234
|
this.backgroundColor = t.backgroundColor || e.backgroundColor || null, this.blendFilter = typeof t.blendFilter == "boolean" ? t.blendFilter : e.blendFilter ?? null, this.columnCount = t.columnCount !== void 0 ? t.columnCount : e.columnCount !== void 0 ? e.columnCount : null, this.constraint = t.constraint || e.constraint, this.darkenFilter = typeof t.darkenFilter == "boolean" ? t.darkenFilter : e.darkenFilter ?? null, this.deprecatedFontSize = typeof t.deprecatedFontSize == "boolean" ? t.deprecatedFontSize : e.deprecatedFontSize ?? null, this.fontFamily = t.fontFamily || e.fontFamily || null, this.fontSize = t.fontSize !== void 0 ? t.fontSize : e.fontSize !== void 0 ? e.fontSize : null, this.fontSizeNormalize = typeof t.fontSizeNormalize == "boolean" ? t.fontSizeNormalize : e.fontSizeNormalize ?? null, this.fontOpticalSizing = typeof t.fontOpticalSizing == "boolean" ? t.fontOpticalSizing : e.fontOpticalSizing ?? null, this.fontWeight = t.fontWeight !== void 0 ? t.fontWeight : e.fontWeight !== void 0 ? e.fontWeight : null, this.fontWidth = t.fontWidth !== void 0 ? t.fontWidth : e.fontWidth !== void 0 ? e.fontWidth : null, this.hyphens = typeof t.hyphens == "boolean" ? t.hyphens : e.hyphens ?? null, this.invertFilter = typeof t.invertFilter == "boolean" ? t.invertFilter : e.invertFilter ?? null, this.invertGaijiFilter = typeof t.invertGaijiFilter == "boolean" ? t.invertGaijiFilter : e.invertGaijiFilter ?? null, this.iOSPatch = this.deprecatedFontSize || t.iOSPatch === !1 ? !1 : t.iOSPatch === !0 ? (T.OS.iOS || T.OS.iPadOS) && T.iOSRequest === "mobile" : e.iOSPatch, this.iPadOSPatch = this.deprecatedFontSize || t.iPadOSPatch === !1 ? !1 : t.iPadOSPatch === !0 ? T.OS.iPadOS && T.iOSRequest === "desktop" : e.iPadOSPatch, this.letterSpacing = t.letterSpacing !== void 0 ? t.letterSpacing : e.letterSpacing !== void 0 ? e.letterSpacing : null, this.ligatures = typeof t.ligatures == "boolean" ? t.ligatures : e.ligatures ?? null, this.lineHeight = t.lineHeight !== void 0 ? t.lineHeight : e.lineHeight !== void 0 ? e.lineHeight : null, this.linkColor = t.linkColor || e.linkColor || null, this.maximalLineLength = t.maximalLineLength === null ? null : t.maximalLineLength || e.maximalLineLength || null, this.minimalLineLength = t.minimalLineLength === null ? null : t.minimalLineLength || e.minimalLineLength || null, this.noRuby = typeof t.noRuby == "boolean" ? t.noRuby : e.noRuby ?? null, this.optimalLineLength = t.optimalLineLength || e.optimalLineLength, this.pageGutter = t.pageGutter !== void 0 ? t.pageGutter : e.pageGutter !== void 0 ? e.pageGutter : null, this.paragraphIndent = t.paragraphIndent !== void 0 ? t.paragraphIndent : e.paragraphIndent !== void 0 ? e.paragraphIndent : null, this.paragraphSpacing = t.paragraphSpacing !== void 0 ? t.paragraphSpacing : e.paragraphSpacing !== void 0 ? e.paragraphSpacing : null, this.scroll = typeof t.scroll == "boolean" ? t.scroll : e.scroll ?? null, this.scrollPaddingTop = t.scrollPaddingTop !== void 0 ? t.scrollPaddingTop : e.scrollPaddingTop !== void 0 ? e.scrollPaddingTop : null, this.scrollPaddingBottom = t.scrollPaddingBottom !== void 0 ? t.scrollPaddingBottom : e.scrollPaddingBottom !== void 0 ? e.scrollPaddingBottom : null, this.scrollPaddingLeft = t.scrollPaddingLeft !== void 0 ? t.scrollPaddingLeft : e.scrollPaddingLeft !== void 0 ? e.scrollPaddingLeft : null, this.scrollPaddingRight = t.scrollPaddingRight !== void 0 ? t.scrollPaddingRight : e.scrollPaddingRight !== void 0 ? e.scrollPaddingRight : null, this.selectionBackgroundColor = t.selectionBackgroundColor || e.selectionBackgroundColor || null, this.selectionTextColor = t.selectionTextColor || e.selectionTextColor || null, this.textAlign = t.textAlign || e.textAlign || null, this.textColor = t.textColor || e.textColor || null, this.textNormalization = typeof t.textNormalization == "boolean" ? t.textNormalization : e.textNormalization ?? null, this.visitedColor = t.visitedColor || e.visitedColor || null, this.wordSpacing = t.wordSpacing !== void 0 ? t.wordSpacing : e.wordSpacing !== void 0 ? e.wordSpacing : null, this.experiments = e.experiments || null;
|
|
8193
8235
|
}
|
|
@@ -8196,11 +8238,11 @@ function Lt(r) {
|
|
|
8196
8238
|
const t = getComputedStyle(r), e = parseFloat(t.paddingLeft || "0"), i = parseFloat(t.paddingRight || "0");
|
|
8197
8239
|
return r.clientWidth - e - i;
|
|
8198
8240
|
}
|
|
8199
|
-
function
|
|
8241
|
+
function _r(r) {
|
|
8200
8242
|
const t = getComputedStyle(r), e = parseFloat(t.paddingTop || "0"), i = parseFloat(t.paddingBottom || "0");
|
|
8201
8243
|
return r.clientHeight - e - i;
|
|
8202
8244
|
}
|
|
8203
|
-
class
|
|
8245
|
+
class Cn extends le {
|
|
8204
8246
|
constructor(t) {
|
|
8205
8247
|
super(), this.a11yNormalize = t.a11yNormalize ?? null, this.backgroundColor = t.backgroundColor ?? null, this.blendFilter = t.blendFilter ?? null, this.bodyHyphens = t.bodyHyphens ?? null, this.colCount = t.colCount ?? null, this.darkenFilter = t.darkenFilter ?? null, this.deprecatedFontSize = t.deprecatedFontSize ?? null, this.fontFamily = t.fontFamily ?? null, this.fontOpticalSizing = t.fontOpticalSizing ?? null, this.fontSize = t.fontSize ?? null, this.fontSizeNormalize = t.fontSizeNormalize ?? null, this.fontWeight = t.fontWeight ?? null, this.fontWidth = t.fontWidth ?? null, this.invertFilter = t.invertFilter ?? null, this.invertGaijiFilter = t.invertGaijiFilter ?? null, this.iOSPatch = t.iOSPatch ?? null, this.iPadOSPatch = t.iPadOSPatch ?? null, this.letterSpacing = t.letterSpacing ?? null, this.ligatures = t.ligatures ?? null, this.lineHeight = t.lineHeight ?? null, this.lineLength = t.lineLength ?? null, this.linkColor = t.linkColor ?? null, this.noRuby = t.noRuby ?? null, this.paraIndent = t.paraIndent ?? null, this.paraSpacing = t.paraSpacing ?? null, this.selectionBackgroundColor = t.selectionBackgroundColor ?? null, this.selectionTextColor = t.selectionTextColor ?? null, this.textAlign = t.textAlign ?? null, this.textColor = t.textColor ?? null, this.view = t.view ?? null, this.visitedColor = t.visitedColor ?? null, this.wordSpacing = t.wordSpacing ?? null;
|
|
8206
8248
|
}
|
|
@@ -8209,18 +8251,18 @@ class _n extends le {
|
|
|
8209
8251
|
return this.a11yNormalize && (t["--USER__a11yNormalize"] = this.toFlag("a11y")), this.backgroundColor && (t["--USER__backgroundColor"] = this.backgroundColor), this.blendFilter && (t["--USER__blendFilter"] = this.toFlag("blend")), this.bodyHyphens && (t["--USER__bodyHyphens"] = this.bodyHyphens), this.colCount && (t["--USER__colCount"] = this.toUnitless(this.colCount)), this.darkenFilter === !0 ? t["--USER__darkenFilter"] = this.toFlag("darken") : typeof this.darkenFilter == "number" && (t["--USER__darkenFilter"] = this.toPercentage(this.darkenFilter)), this.deprecatedFontSize && (t["--USER__fontSizeImplementation"] = this.toFlag("deprecatedFontSize")), this.fontFamily && (t["--USER__fontFamily"] = this.fontFamily), this.fontOpticalSizing != null && (t["--USER__fontOpticalSizing"] = this.fontOpticalSizing), this.fontSize != null && (t["--USER__fontSize"] = this.toPercentage(this.fontSize, !0)), this.fontSizeNormalize && (t["--USER__fontSizeNormalize"] = this.toFlag("normalize")), this.fontWeight != null && (t["--USER__fontWeight"] = this.toUnitless(this.fontWeight)), this.fontWidth != null && (t["--USER__fontWidth"] = typeof this.fontWidth == "string" ? this.fontWidth : this.toUnitless(this.fontWidth)), this.invertFilter === !0 ? t["--USER__invertFilter"] = this.toFlag("invert") : typeof this.invertFilter == "number" && (t["--USER__invertFilter"] = this.toPercentage(this.invertFilter)), this.invertGaijiFilter === !0 ? t["--USER__invertGaiji"] = this.toFlag("invertGaiji") : typeof this.invertGaijiFilter == "number" && (t["--USER__invertGaiji"] = this.toPercentage(this.invertGaijiFilter)), this.iOSPatch && (t["--USER__iOSPatch"] = this.toFlag("iOSPatch")), this.iPadOSPatch && (t["--USER__iPadOSPatch"] = this.toFlag("iPadOSPatch")), this.letterSpacing != null && (t["--USER__letterSpacing"] = this.toRem(this.letterSpacing)), this.ligatures && (t["--USER__ligatures"] = this.ligatures), this.lineHeight != null && (t["--USER__lineHeight"] = this.toUnitless(this.lineHeight)), this.lineLength != null && (t["--USER__lineLength"] = this.toPx(this.lineLength)), this.linkColor && (t["--USER__linkColor"] = this.linkColor), this.noRuby && (t["--USER__noRuby"] = this.toFlag("noRuby")), this.paraIndent != null && (t["--USER__paraIndent"] = this.toRem(this.paraIndent)), this.paraSpacing != null && (t["--USER__paraSpacing"] = this.toRem(this.paraSpacing)), this.selectionBackgroundColor && (t["--USER__selectionBackgroundColor"] = this.selectionBackgroundColor), this.selectionTextColor && (t["--USER__selectionTextColor"] = this.selectionTextColor), this.textAlign && (t["--USER__textAlign"] = this.textAlign), this.textColor && (t["--USER__textColor"] = this.textColor), this.view && (t["--USER__view"] = this.toFlag(this.view)), this.visitedColor && (t["--USER__visitedColor"] = this.visitedColor), this.wordSpacing != null && (t["--USER__wordSpacing"] = this.toRem(this.wordSpacing)), t;
|
|
8210
8252
|
}
|
|
8211
8253
|
}
|
|
8212
|
-
class
|
|
8254
|
+
class Cr extends le {
|
|
8213
8255
|
constructor(t) {
|
|
8214
8256
|
super(), this.backgroundColor = t.backgroundColor ?? null, this.baseFontFamily = t.baseFontFamily ?? null, this.baseFontSize = t.baseFontSize ?? null, this.baseLineHeight = t.baseLineHeight ?? null, this.boxSizingMedia = t.boxSizingMedia ?? null, this.boxSizingTable = t.boxSizingTable ?? null, this.colWidth = t.colWidth ?? null, this.colCount = t.colCount ?? null, this.colGap = t.colGap ?? null, this.codeFontFamily = t.codeFontFamily ?? null, this.compFontFamily = t.compFontFamily ?? null, this.defaultLineLength = t.defaultLineLength ?? null, this.flowSpacing = t.flowSpacing ?? null, this.humanistTf = t.humanistTf ?? null, this.linkColor = t.linkColor ?? null, this.maxMediaWidth = t.maxMediaWidth ?? null, this.maxMediaHeight = t.maxMediaHeight ?? null, this.modernTf = t.modernTf ?? null, this.monospaceTf = t.monospaceTf ?? null, this.noOverflow = t.noOverflow ?? null, this.noVerticalPagination = t.noVerticalPagination ?? null, this.oldStyleTf = t.oldStyleTf ?? null, this.pageGutter = t.pageGutter ?? null, this.paraIndent = t.paraIndent ?? null, this.paraSpacing = t.paraSpacing ?? null, this.primaryColor = t.primaryColor ?? null, this.scrollPaddingBottom = t.scrollPaddingBottom ?? null, this.scrollPaddingLeft = t.scrollPaddingLeft ?? null, this.scrollPaddingRight = t.scrollPaddingRight ?? null, this.scrollPaddingTop = t.scrollPaddingTop ?? null, this.sansSerifJa = t.sansSerifJa ?? null, this.sansSerifJaV = t.sansSerifJaV ?? null, this.sansTf = t.sansTf ?? null, this.secondaryColor = t.secondaryColor ?? null, this.selectionBackgroundColor = t.selectionBackgroundColor ?? null, this.selectionTextColor = t.selectionTextColor ?? null, this.serifJa = t.serifJa ?? null, this.serifJaV = t.serifJaV ?? null, this.textColor = t.textColor ?? null, this.typeScale = t.typeScale ?? null, this.visitedColor = t.visitedColor ?? null, this.experiments = t.experiments ?? null;
|
|
8215
8257
|
}
|
|
8216
8258
|
toCSSProperties() {
|
|
8217
8259
|
const t = {};
|
|
8218
8260
|
return this.backgroundColor && (t["--RS__backgroundColor"] = this.backgroundColor), this.baseFontFamily && (t["--RS__baseFontFamily"] = this.baseFontFamily), this.baseFontSize != null && (t["--RS__baseFontSize"] = this.toRem(this.baseFontSize)), this.baseLineHeight != null && (t["--RS__baseLineHeight"] = this.toUnitless(this.baseLineHeight)), this.boxSizingMedia && (t["--RS__boxSizingMedia"] = this.boxSizingMedia), this.boxSizingTable && (t["--RS__boxSizingTable"] = this.boxSizingTable), this.colWidth != null && (t["--RS__colWidth"] = this.colWidth), this.colCount != null && (t["--RS__colCount"] = this.toUnitless(this.colCount)), this.colGap != null && (t["--RS__colGap"] = this.toPx(this.colGap)), this.codeFontFamily && (t["--RS__codeFontFamily"] = this.codeFontFamily), this.compFontFamily && (t["--RS__compFontFamily"] = this.compFontFamily), this.defaultLineLength != null && (t["--RS__defaultLineLength"] = this.toPx(this.defaultLineLength)), this.flowSpacing != null && (t["--RS__flowSpacing"] = this.toRem(this.flowSpacing)), this.humanistTf && (t["--RS__humanistTf"] = this.humanistTf), this.linkColor && (t["--RS__linkColor"] = this.linkColor), this.maxMediaWidth && (t["--RS__maxMediaWidth"] = this.toVw(this.maxMediaWidth)), this.maxMediaHeight && (t["--RS__maxMediaHeight"] = this.toVh(this.maxMediaHeight)), this.modernTf && (t["--RS__modernTf"] = this.modernTf), this.monospaceTf && (t["--RS__monospaceTf"] = this.monospaceTf), this.noOverflow && (t["--RS__disableOverflow"] = this.toFlag("noOverflow")), this.noVerticalPagination && (t["--RS__disablePagination"] = this.toFlag("noVerticalPagination")), this.oldStyleTf && (t["--RS__oldStyleTf"] = this.oldStyleTf), this.pageGutter != null && (t["--RS__pageGutter"] = this.toPx(this.pageGutter)), this.paraIndent != null && (t["--RS__paraIndent"] = this.toRem(this.paraIndent)), this.paraSpacing != null && (t["--RS__paraSpacing"] = this.toRem(this.paraSpacing)), this.primaryColor && (t["--RS__primaryColor"] = this.primaryColor), this.sansSerifJa && (t["--RS__sans-serif-ja"] = this.sansSerifJa), this.sansSerifJaV && (t["--RS__sans-serif-ja-v"] = this.sansSerifJaV), this.sansTf && (t["--RS__sansTf"] = this.sansTf), this.scrollPaddingBottom != null && (t["--RS__scrollPaddingBottom"] = this.toPx(this.scrollPaddingBottom)), this.scrollPaddingLeft != null && (t["--RS__scrollPaddingLeft"] = this.toPx(this.scrollPaddingLeft)), this.scrollPaddingRight != null && (t["--RS__scrollPaddingRight"] = this.toPx(this.scrollPaddingRight)), this.scrollPaddingTop != null && (t["--RS__scrollPaddingTop"] = this.toPx(this.scrollPaddingTop)), this.secondaryColor && (t["--RS__secondaryColor"] = this.secondaryColor), this.selectionBackgroundColor && (t["--RS__selectionBackgroundColor"] = this.selectionBackgroundColor), this.selectionTextColor && (t["--RS__selectionTextColor"] = this.selectionTextColor), this.serifJa && (t["--RS__serif-ja"] = this.serifJa), this.serifJaV && (t["--RS__serif-ja-v"] = this.serifJaV), this.textColor && (t["--RS__textColor"] = this.textColor), this.typeScale && (t["--RS__typeScale"] = this.toUnitless(this.typeScale)), this.visitedColor && (t["--RS__visitedColor"] = this.visitedColor), this.experiments && this.experiments.forEach((e) => {
|
|
8219
|
-
t["--RS__" + e] =
|
|
8261
|
+
t["--RS__" + e] = Xe[e].value;
|
|
8220
8262
|
}), t;
|
|
8221
8263
|
}
|
|
8222
8264
|
}
|
|
8223
|
-
class
|
|
8265
|
+
class Lr {
|
|
8224
8266
|
constructor(t) {
|
|
8225
8267
|
this.rsProperties = t.rsProperties, this.userProperties = t.userProperties, this.lineLengths = t.lineLengths, this.container = t.container, this.containerParent = t.container.parentElement || document.documentElement, this.constraint = t.constraint, this.isCJKVertical = t.isCJKVertical ?? !1, this.cachedColCount = t.userProperties.colCount, this.effectiveContainerWidth = Lt(this.containerParent);
|
|
8226
8268
|
}
|
|
@@ -8270,7 +8312,7 @@ class Cr {
|
|
|
8270
8312
|
visitedColor: t.visitedColor,
|
|
8271
8313
|
wordSpacing: t.wordSpacing
|
|
8272
8314
|
};
|
|
8273
|
-
this.userProperties = new
|
|
8315
|
+
this.userProperties = new Cn(i);
|
|
8274
8316
|
}
|
|
8275
8317
|
updateLayout(t, e, i, n) {
|
|
8276
8318
|
return this.isCJKVertical ? this.computeCJKVerticalLength(t, e) : i ?? this.userProperties.view === "scroll" ? this.computeScrollLength(t, e) : this.paginate(t, e, n);
|
|
@@ -8334,7 +8376,7 @@ class Cr {
|
|
|
8334
8376
|
};
|
|
8335
8377
|
}
|
|
8336
8378
|
computeCJKVerticalLength(t, e) {
|
|
8337
|
-
const i = Math.round(Lt(this.containerParent) - this.constraint), n = Math.round(
|
|
8379
|
+
const i = Math.round(Lt(this.containerParent) - this.constraint), n = Math.round(_r(this.containerParent)), s = this.getCompensatedMetrics(t, e), o = s.maximal !== null ? Math.min(Math.round(s.maximal * s.zoomCompensation), n) : n;
|
|
8338
8380
|
return { colCount: void 0, effectiveContainerWidth: i, effectiveLineLength: o };
|
|
8339
8381
|
}
|
|
8340
8382
|
// This behaves as paginate where colCount = 1
|
|
@@ -8361,7 +8403,7 @@ class Cr {
|
|
|
8361
8403
|
this.userProperties.colCount = t.colCount, this.userProperties.lineLength = t.effectiveLineLength, this.effectiveContainerWidth = t.effectiveContainerWidth, this.container.style.width = `${this.effectiveContainerWidth}px`;
|
|
8362
8404
|
}
|
|
8363
8405
|
}
|
|
8364
|
-
const
|
|
8406
|
+
const xr = `// Note: we aren't blocking some of the events right now to try and be as nonintrusive as possible.
|
|
8365
8407
|
// For a more comprehensive implementation, see https://github.com/hackademix/noscript/blob/3a83c0e4a506f175e38b0342dad50cdca3eae836/src/content/syncFetchPolicy.js#L142
|
|
8366
8408
|
// The snippet of code at the beginning of this source is an attempt at defence against JS using persistent storage
|
|
8367
8409
|
(function() {
|
|
@@ -8427,21 +8469,21 @@ const Lr = `// Note: we aren't blocking some of the events right now to try and
|
|
|
8427
8469
|
window.addEventListener("load", window._readium_eventBlocker, true);
|
|
8428
8470
|
})();
|
|
8429
8471
|
`;
|
|
8430
|
-
async function
|
|
8472
|
+
async function kr(r, t) {
|
|
8431
8473
|
const e = r.effectiveLayout === b.fixed, i = t.filter((a) => a.mediaType.isHTML).map((a) => a.href), n = i.length > 0 ? i : [/\.xhtml$/, /\.html$/], s = [
|
|
8432
8474
|
// CSS Selector Generator - always injected
|
|
8433
8475
|
{
|
|
8434
8476
|
id: "css-selector-generator",
|
|
8435
8477
|
as: "script",
|
|
8436
8478
|
target: "head",
|
|
8437
|
-
blob: new Blob([vt(
|
|
8479
|
+
blob: new Blob([vt(Sn)], { type: "text/javascript" })
|
|
8438
8480
|
},
|
|
8439
8481
|
// Execution Prevention - conditional (has executable scripts)
|
|
8440
8482
|
{
|
|
8441
8483
|
id: "execution-prevention",
|
|
8442
8484
|
as: "script",
|
|
8443
8485
|
target: "head",
|
|
8444
|
-
blob: new Blob([vt(
|
|
8486
|
+
blob: new Blob([vt(xr)], { type: "text/javascript" }),
|
|
8445
8487
|
condition: (a) => !!(a.querySelector("script") || a.querySelector("body[onload]:not(body[onload=''])"))
|
|
8446
8488
|
}
|
|
8447
8489
|
], o = [
|
|
@@ -8450,7 +8492,7 @@ async function xr(r, t) {
|
|
|
8450
8492
|
id: "onload-proxy",
|
|
8451
8493
|
as: "script",
|
|
8452
8494
|
target: "head",
|
|
8453
|
-
blob: new Blob([vt(
|
|
8495
|
+
blob: new Blob([vt(Pn)], { type: "text/javascript" }),
|
|
8454
8496
|
condition: (a) => !!(a.querySelector("script") || a.querySelector("body[onload]:not(body[onload=''])"))
|
|
8455
8497
|
}
|
|
8456
8498
|
];
|
|
@@ -8542,7 +8584,7 @@ async function xr(r, t) {
|
|
|
8542
8584
|
}
|
|
8543
8585
|
];
|
|
8544
8586
|
}
|
|
8545
|
-
const
|
|
8587
|
+
const Or = (r) => ({
|
|
8546
8588
|
frameLoaded: r.frameLoaded || (() => {
|
|
8547
8589
|
}),
|
|
8548
8590
|
positionChanged: r.positionChanged || (() => {
|
|
@@ -8567,17 +8609,17 @@ const kr = (r) => ({
|
|
|
8567
8609
|
peripheral: r.peripheral || (() => {
|
|
8568
8610
|
})
|
|
8569
8611
|
});
|
|
8570
|
-
class
|
|
8612
|
+
class Ln extends dn {
|
|
8571
8613
|
constructor(t, e, i, n = [], s = void 0, o = { preferences: {}, defaults: {} }) {
|
|
8572
8614
|
super(), this._preferencesEditor = null, this._injector = null, this._navigatorProtector = null, this._keyboardPeripheralsManager = null, this._suspiciousActivityListener = null, this._keyboardPeripheralListener = null, this.reflowViewport = {
|
|
8573
8615
|
readingOrder: [],
|
|
8574
8616
|
progressions: /* @__PURE__ */ new Map(),
|
|
8575
8617
|
positions: null
|
|
8576
|
-
}, this.pub = e, this.container = t, this.listeners =
|
|
8618
|
+
}, this.pub = e, this.container = t, this.listeners = Or(i), this.currentLocation = s, n.length && (this.positions = n), this._preferences = new zt(o.preferences), this._defaults = new yr(o.defaults), this._settings = new Vi(this._preferences, this._defaults);
|
|
8577
8619
|
const a = bt(e.metadata), l = a === "cjk-horizontal", h = a === "cjk-vertical", u = h || a === "mongolian-vertical", p = l || h;
|
|
8578
|
-
this._css = new
|
|
8579
|
-
rsProperties: new
|
|
8580
|
-
userProperties: new
|
|
8620
|
+
this._css = new Lr({
|
|
8621
|
+
rsProperties: new Cr({ noVerticalPagination: u || void 0 }),
|
|
8622
|
+
userProperties: new Cn({}),
|
|
8581
8623
|
lineLengths: new kt({
|
|
8582
8624
|
optimalChars: this._settings.optimalLineLength,
|
|
8583
8625
|
minChars: this._settings.minimalLineLength,
|
|
@@ -8592,13 +8634,13 @@ class Cn extends cn {
|
|
|
8592
8634
|
container: t,
|
|
8593
8635
|
constraint: this._settings.constraint,
|
|
8594
8636
|
isCJKVertical: u
|
|
8595
|
-
}), this._layout =
|
|
8637
|
+
}), this._layout = Ln.determineLayout(e, !!this._settings.scroll), this.currentProgression = e.metadata.effectiveReadingProgression, this._injectablesConfig = o.injectables || { rules: [], allowedDomains: [] }, this._readiumRulesPromise = kr(e.metadata, e.readingOrder.items), this._contentProtection = o.contentProtection || {}, this._keyboardPeripherals = this.mergeKeyboardPeripherals(
|
|
8596
8638
|
this._contentProtection,
|
|
8597
8639
|
o.keyboardPeripherals || []
|
|
8598
|
-
), (this._contentProtection.disableContextMenu || this._contentProtection.checkAutomation || this._contentProtection.checkIFrameEmbedding || this._contentProtection.monitorDevTools || this._contentProtection.protectPrinting?.disable) && (this._navigatorProtector = new
|
|
8640
|
+
), (this._contentProtection.disableContextMenu || this._contentProtection.checkAutomation || this._contentProtection.checkIFrameEmbedding || this._contentProtection.monitorDevTools || this._contentProtection.protectPrinting?.disable) && (this._navigatorProtector = new Ye(this._contentProtection), this._suspiciousActivityListener = (g) => {
|
|
8599
8641
|
const { type: d, ...f } = g.detail;
|
|
8600
8642
|
d === "context_menu" ? this.listeners.contextMenu(f) : this.listeners.contentProtection(d, f);
|
|
8601
|
-
}, window.addEventListener(ot, this._suspiciousActivityListener)), this._keyboardPeripherals.length > 0 && (this._keyboardPeripheralsManager = new
|
|
8643
|
+
}, window.addEventListener(ot, this._suspiciousActivityListener)), this._keyboardPeripherals.length > 0 && (this._keyboardPeripheralsManager = new qe({
|
|
8602
8644
|
keyboardPeripherals: this._keyboardPeripherals
|
|
8603
8645
|
}), this._keyboardPeripheralListener = (g) => {
|
|
8604
8646
|
const d = g.detail;
|
|
@@ -8607,7 +8649,7 @@ class Cn extends cn {
|
|
|
8607
8649
|
}
|
|
8608
8650
|
static determineLayout(t, e) {
|
|
8609
8651
|
const i = t.metadata.effectiveLayout;
|
|
8610
|
-
if (i === b.fixed || t.metadata.otherMetadata && "http://openmangaformat.org/schema/1.0#version" in t.metadata.otherMetadata || t.metadata?.conformsTo?.includes(
|
|
8652
|
+
if (i === b.fixed || t.metadata.otherMetadata && "http://openmangaformat.org/schema/1.0#version" in t.metadata.otherMetadata || t.metadata?.conformsTo?.includes(qi.DIVINA))
|
|
8611
8653
|
return b.fixed;
|
|
8612
8654
|
if (i === b.scrolled)
|
|
8613
8655
|
return b.scrolled;
|
|
@@ -8617,13 +8659,13 @@ class Cn extends cn {
|
|
|
8617
8659
|
async load() {
|
|
8618
8660
|
if (this.positions?.length || (this.positions = await this.pub.positionsFromManifest()), !this._injector) {
|
|
8619
8661
|
const t = await this._readiumRulesPromise;
|
|
8620
|
-
this._injector = new
|
|
8662
|
+
this._injector = new vn({
|
|
8621
8663
|
rules: [...t, ...this._injectablesConfig.rules],
|
|
8622
8664
|
allowedDomains: this._injectablesConfig.allowedDomains
|
|
8623
8665
|
});
|
|
8624
8666
|
}
|
|
8625
8667
|
if (this._layout === b.fixed)
|
|
8626
|
-
this.framePool = new
|
|
8668
|
+
this.framePool = new gr(
|
|
8627
8669
|
this.container,
|
|
8628
8670
|
this.positions,
|
|
8629
8671
|
this.pub,
|
|
@@ -8636,7 +8678,7 @@ class Cn extends cn {
|
|
|
8636
8678
|
else {
|
|
8637
8679
|
await this.updateCSS(!1);
|
|
8638
8680
|
const t = this.compileCSSProperties(this._css);
|
|
8639
|
-
this.framePool = new
|
|
8681
|
+
this.framePool = new nr(
|
|
8640
8682
|
this.container,
|
|
8641
8683
|
this.positions,
|
|
8642
8684
|
t,
|
|
@@ -8656,14 +8698,14 @@ class Cn extends cn {
|
|
|
8656
8698
|
}
|
|
8657
8699
|
}
|
|
8658
8700
|
get preferencesEditor() {
|
|
8659
|
-
return this._preferencesEditor === null && (this._preferencesEditor = new
|
|
8701
|
+
return this._preferencesEditor === null && (this._preferencesEditor = new Hi(this._preferences, this.settings, this.pub.metadata)), this._preferencesEditor;
|
|
8660
8702
|
}
|
|
8661
8703
|
async submitPreferences(t) {
|
|
8662
8704
|
this._preferences = this._preferences.merging(t), await this.applyPreferences();
|
|
8663
8705
|
}
|
|
8664
8706
|
async applyPreferences() {
|
|
8665
8707
|
const t = this._settings;
|
|
8666
|
-
this._settings = new
|
|
8708
|
+
this._settings = new Vi(this._preferences, this._defaults), this._preferencesEditor !== null && (this._preferencesEditor = new Hi(this._preferences, this.settings, this.pub.metadata)), this._layout === b.fixed ? this.handleFXLPrefs(t, this._settings) : await this.updateCSS(!0);
|
|
8667
8709
|
}
|
|
8668
8710
|
// TODO: fit, etc.
|
|
8669
8711
|
handleFXLPrefs(t, e) {
|
|
@@ -8706,7 +8748,7 @@ class Cn extends cn {
|
|
|
8706
8748
|
* TODO remove when settings management is incorporated
|
|
8707
8749
|
*/
|
|
8708
8750
|
get _cframes() {
|
|
8709
|
-
return (this.framePool?.currentFrames ?? []).filter((t) => !(t instanceof
|
|
8751
|
+
return (this.framePool?.currentFrames ?? []).filter((t) => !(t instanceof _n && t.isDestroyed));
|
|
8710
8752
|
}
|
|
8711
8753
|
/**
|
|
8712
8754
|
* Exposed to the public to compensate for lack of implemented readium conveniences
|
|
@@ -8827,8 +8869,8 @@ class Cn extends cn {
|
|
|
8827
8869
|
determineModules() {
|
|
8828
8870
|
let t = Array.from(Te.keys());
|
|
8829
8871
|
if (this._layout === b.fixed)
|
|
8830
|
-
return t.filter((n) =>
|
|
8831
|
-
t = t.filter((n) =>
|
|
8872
|
+
return t.filter((n) => fs.includes(n));
|
|
8873
|
+
t = t.filter((n) => ms.includes(n));
|
|
8832
8874
|
const e = bt(this.pub.metadata);
|
|
8833
8875
|
if (e === "cjk-vertical" || e === "mongolian-vertical")
|
|
8834
8876
|
return t.filter((n) => n !== "column_snapper" && n !== "scroll_snapper");
|
|
@@ -9026,7 +9068,7 @@ class Cn extends cn {
|
|
|
9026
9068
|
return this.go(t.locator, e, i);
|
|
9027
9069
|
}
|
|
9028
9070
|
}
|
|
9029
|
-
const
|
|
9071
|
+
const Rr = `// PreservePitchProcessor.js
|
|
9030
9072
|
// AudioWorklet processor for pitch preservation via pitch shifting.
|
|
9031
9073
|
//
|
|
9032
9074
|
// Architecture:
|
|
@@ -9241,17 +9283,17 @@ class PreservePitchProcessor extends AudioWorkletProcessor {
|
|
|
9241
9283
|
|
|
9242
9284
|
registerProcessor('preserve-pitch-processor', PreservePitchProcessor);
|
|
9243
9285
|
`;
|
|
9244
|
-
class
|
|
9286
|
+
class Ke {
|
|
9245
9287
|
constructor(t) {
|
|
9246
9288
|
this.workletNode = null, this.url = null, this.ctx = t;
|
|
9247
9289
|
}
|
|
9248
9290
|
static async createWorklet(t) {
|
|
9249
|
-
const { ctx: e, pitchFactor: i, modulePath: n } = t, s = new
|
|
9291
|
+
const { ctx: e, pitchFactor: i, modulePath: n } = t, s = new Ke(e);
|
|
9250
9292
|
try {
|
|
9251
9293
|
if (n)
|
|
9252
9294
|
await e.audioWorklet.addModule(n);
|
|
9253
9295
|
else {
|
|
9254
|
-
const o = new Blob([
|
|
9296
|
+
const o = new Blob([Rr], { type: "text/javascript" });
|
|
9255
9297
|
s.url = URL.createObjectURL(o), await e.audioWorklet.addModule(s.url);
|
|
9256
9298
|
}
|
|
9257
9299
|
} catch (o) {
|
|
@@ -9271,7 +9313,7 @@ class qe {
|
|
|
9271
9313
|
this.workletNode && (this.workletNode.disconnect(), this.workletNode = null), this.url && (URL.revokeObjectURL(this.url), this.url = null);
|
|
9272
9314
|
}
|
|
9273
9315
|
}
|
|
9274
|
-
class
|
|
9316
|
+
class Ar {
|
|
9275
9317
|
constructor(t) {
|
|
9276
9318
|
this.audioContext = null, this.sourceNode = null, this.gainNode = null, this.listeners = {}, this.isMutedValue = !1, this.isPlayingValue = !1, this.isPausedValue = !1, this.isLoadingValue = !1, this.isLoadedValue = !1, this.isEndedValue = !1, this.isStoppedValue = !1, this.worklet = null, this.webAudioActive = !1, this.boundOnCanPlayThrough = this.onCanPlayThrough.bind(this), this.boundOnTimeUpdate = this.onTimeUpdate.bind(this), this.boundOnError = this.onError.bind(this), this.boundOnEnded = this.onEnded.bind(this), this.boundOnStalled = this.onStalled.bind(this), this.boundOnEmptied = this.onEmptied.bind(this), this.boundOnSuspend = this.onSuspend.bind(this), this.boundOnWaiting = this.onWaiting.bind(this), this.boundOnLoadedMetadata = this.onLoadedMetadata.bind(this), this.boundOnSeeking = this.onSeeking.bind(this), this.boundOnSeeked = this.onSeeked.bind(this), this.boundOnPlay = this.onPlay.bind(this), this.boundOnPlaying = this.onPlaying.bind(this), this.boundOnPause = this.onPause.bind(this), this.boundOnProgress = this.onProgress.bind(this), this.playback = t.playback, this.mediaElement = document.createElement("audio"), this.mediaElement.addEventListener("canplaythrough", this.boundOnCanPlayThrough), this.mediaElement.addEventListener("timeupdate", this.boundOnTimeUpdate), this.mediaElement.addEventListener("error", this.boundOnError), this.mediaElement.addEventListener("ended", this.boundOnEnded), this.mediaElement.addEventListener("stalled", this.boundOnStalled), this.mediaElement.addEventListener("emptied", this.boundOnEmptied), this.mediaElement.addEventListener("suspend", this.boundOnSuspend), this.mediaElement.addEventListener("waiting", this.boundOnWaiting), this.mediaElement.addEventListener("loadedmetadata", this.boundOnLoadedMetadata), this.mediaElement.addEventListener("seeking", this.boundOnSeeking), this.mediaElement.addEventListener("seeked", this.boundOnSeeked), this.mediaElement.addEventListener("play", this.boundOnPlay), this.mediaElement.addEventListener("playing", this.boundOnPlaying), this.mediaElement.addEventListener("pause", this.boundOnPause), this.mediaElement.addEventListener("progress", this.boundOnProgress), this.mediaElement.currentTime = this.playback.state.currentTime;
|
|
9277
9319
|
}
|
|
@@ -9453,7 +9495,7 @@ class Rr {
|
|
|
9453
9495
|
*/
|
|
9454
9496
|
setPlaybackRate(t, e) {
|
|
9455
9497
|
this.mediaElement.playbackRate = t, e ? "preservesPitch" in this.mediaElement ? this.mediaElement.preservesPitch = !0 : this.activateWebAudio().then(() => {
|
|
9456
|
-
this.worklet ? this.worklet.updatePitchFactor(1 / t) :
|
|
9498
|
+
this.worklet ? this.worklet.updatePitchFactor(1 / t) : Ke.createWorklet({
|
|
9457
9499
|
ctx: this.getOrCreateAudioContext(),
|
|
9458
9500
|
pitchFactor: 1
|
|
9459
9501
|
}).then((i) => {
|
|
@@ -9548,17 +9590,17 @@ class ce {
|
|
|
9548
9590
|
return new ce(e);
|
|
9549
9591
|
}
|
|
9550
9592
|
}
|
|
9551
|
-
class
|
|
9593
|
+
class Tr {
|
|
9552
9594
|
constructor(t = {}) {
|
|
9553
9595
|
this.volume = z(t.volume, ie.range) ?? 1, this.playbackRate = z(t.playbackRate, ne.range) ?? 1, this.preservePitch = E(t.preservePitch) ?? !0, this.skipBackwardInterval = z(t.skipBackwardInterval, it.range) ?? 10, this.skipForwardInterval = z(t.skipForwardInterval, it.range) ?? 10, this.pollInterval = v(t.pollInterval) ?? 1e3, this.autoPlay = E(t.autoPlay) ?? !0, this.enableMediaSession = E(t.enableMediaSession) ?? !0;
|
|
9554
9596
|
}
|
|
9555
9597
|
}
|
|
9556
|
-
class
|
|
9598
|
+
class ji {
|
|
9557
9599
|
constructor(t, e) {
|
|
9558
9600
|
this.volume = t.volume ?? e.volume, this.playbackRate = t.playbackRate ?? e.playbackRate, this.preservePitch = t.preservePitch ?? e.preservePitch, this.skipBackwardInterval = t.skipBackwardInterval ?? e.skipBackwardInterval, this.skipForwardInterval = t.skipForwardInterval ?? e.skipForwardInterval, this.pollInterval = t.pollInterval ?? e.pollInterval, this.autoPlay = t.autoPlay ?? e.autoPlay, this.enableMediaSession = t.enableMediaSession ?? e.enableMediaSession;
|
|
9559
9601
|
}
|
|
9560
9602
|
}
|
|
9561
|
-
class
|
|
9603
|
+
class $i {
|
|
9562
9604
|
constructor(t, e) {
|
|
9563
9605
|
this.preferences = t, this.settings = e;
|
|
9564
9606
|
}
|
|
@@ -9657,8 +9699,8 @@ class ji {
|
|
|
9657
9699
|
});
|
|
9658
9700
|
}
|
|
9659
9701
|
}
|
|
9660
|
-
const
|
|
9661
|
-
class
|
|
9702
|
+
const Xi = 1, Gi = 1;
|
|
9703
|
+
class Mr {
|
|
9662
9704
|
constructor(t, e, i = {}) {
|
|
9663
9705
|
this.pool = /* @__PURE__ */ new Map(), this._audioEngine = t, this._publication = e, this._supportedAudioTypes = this.detectSupportedAudioTypes(), i.disableRemotePlayback && (this._audioEngine.getMediaElement().disableRemotePlayback = !0);
|
|
9664
9706
|
}
|
|
@@ -9710,7 +9752,7 @@ class Tr {
|
|
|
9710
9752
|
for (let n = 0; n < e.length; n++) {
|
|
9711
9753
|
if (n === t) continue;
|
|
9712
9754
|
const s = this.pickPlayableHref(e[n]);
|
|
9713
|
-
n >= t -
|
|
9755
|
+
n >= t - Gi && n <= t + Gi ? (this.ensure(s), i.add(s)) : n >= t - Xi && n <= t + Xi && this.pool.has(s) && i.add(s);
|
|
9714
9756
|
}
|
|
9715
9757
|
for (const [n, s] of this.pool)
|
|
9716
9758
|
i.has(n) || (s.removeAttribute("src"), s.load(), this.pool.delete(n));
|
|
@@ -9735,7 +9777,7 @@ class Tr {
|
|
|
9735
9777
|
this.pool.clear();
|
|
9736
9778
|
}
|
|
9737
9779
|
}
|
|
9738
|
-
class
|
|
9780
|
+
class Nr {
|
|
9739
9781
|
constructor(t = {}) {
|
|
9740
9782
|
this.dragstartHandler = (e) => {
|
|
9741
9783
|
e.preventDefault(), e.stopPropagation(), t.onDragDetected?.(Array.from(e.dataTransfer?.types ?? []));
|
|
@@ -9751,7 +9793,7 @@ class Mr {
|
|
|
9751
9793
|
document.removeEventListener("dragstart", this.dragstartHandler, !0), document.removeEventListener("dragover", this.dragoverHandler, !0), document.removeEventListener("drop", this.dropHandler, !0), window.removeEventListener("unload", this.unloadHandler);
|
|
9752
9794
|
}
|
|
9753
9795
|
}
|
|
9754
|
-
class
|
|
9796
|
+
class zr {
|
|
9755
9797
|
constructor(t = {}) {
|
|
9756
9798
|
this.copyHandler = (e) => {
|
|
9757
9799
|
e.preventDefault(), e.stopPropagation(), t.onCopyBlocked?.();
|
|
@@ -9761,16 +9803,16 @@ class Nr {
|
|
|
9761
9803
|
document.removeEventListener("copy", this.copyHandler, !0), window.removeEventListener("unload", this.unloadHandler);
|
|
9762
9804
|
}
|
|
9763
9805
|
}
|
|
9764
|
-
class
|
|
9806
|
+
class Ir extends Ye {
|
|
9765
9807
|
constructor(t = {}) {
|
|
9766
|
-
super(t), t.disableDragAndDrop && (this.dragAndDropProtector = new
|
|
9808
|
+
super(t), t.disableDragAndDrop && (this.dragAndDropProtector = new Nr({
|
|
9767
9809
|
onDragDetected: (e) => {
|
|
9768
9810
|
this.dispatchSuspiciousActivity("drag_detected", { dataTransferTypes: e, targetFrameSrc: "" });
|
|
9769
9811
|
},
|
|
9770
9812
|
onDropDetected: (e, i) => {
|
|
9771
9813
|
this.dispatchSuspiciousActivity("drop_detected", { dataTransferTypes: e, fileCount: i, targetFrameSrc: "" });
|
|
9772
9814
|
}
|
|
9773
|
-
})), t.protectCopy && (this.copyProtector = new
|
|
9815
|
+
})), t.protectCopy && (this.copyProtector = new zr({
|
|
9774
9816
|
onCopyBlocked: () => {
|
|
9775
9817
|
this.dispatchSuspiciousActivity("bulk_copy", { targetFrameSrc: "" });
|
|
9776
9818
|
}
|
|
@@ -9780,7 +9822,7 @@ class zr extends Ge {
|
|
|
9780
9822
|
super.destroy(), this.dragAndDropProtector?.destroy(), this.copyProtector?.destroy();
|
|
9781
9823
|
}
|
|
9782
9824
|
}
|
|
9783
|
-
const
|
|
9825
|
+
const Dr = (r) => ({
|
|
9784
9826
|
trackLoaded: r.trackLoaded ?? (() => {
|
|
9785
9827
|
}),
|
|
9786
9828
|
positionChanged: r.positionChanged ?? (() => {
|
|
@@ -9812,12 +9854,12 @@ const Ir = (r) => ({
|
|
|
9812
9854
|
remotePlaybackStateChanged: r.remotePlaybackStateChanged ?? (() => {
|
|
9813
9855
|
})
|
|
9814
9856
|
});
|
|
9815
|
-
class
|
|
9857
|
+
class Wr extends Ss {
|
|
9816
9858
|
constructor(t, e, i, n = {
|
|
9817
9859
|
preferences: {},
|
|
9818
9860
|
defaults: {}
|
|
9819
9861
|
}) {
|
|
9820
|
-
if (super(), this.positionPollInterval = null, this.navigationId = 0, this._playIntent = !1, this._preferencesEditor = null, this._mediaSessionEnabled = !1, this._navigatorProtector = null, this._keyboardPeripheralsManager = null, this._suspiciousActivityListener = null, this._keyboardPeripheralListener = null, this._isNavigating = !1, this._isStalled = !1, this._stalledWatchdog = null, this._stalledCheckTime = 0, this.pub = t, this.listeners =
|
|
9862
|
+
if (super(), this.positionPollInterval = null, this.navigationId = 0, this._playIntent = !1, this._preferencesEditor = null, this._mediaSessionEnabled = !1, this._navigatorProtector = null, this._keyboardPeripheralsManager = null, this._suspiciousActivityListener = null, this._keyboardPeripheralListener = null, this._isNavigating = !1, this._isStalled = !1, this._stalledWatchdog = null, this._stalledCheckTime = 0, this.pub = t, this.listeners = Dr(e), this._preferences = new ce(n.preferences), this._defaults = new Tr(n.defaults), this._settings = new ji(this._preferences, this._defaults), t.readingOrder.items.length === 0)
|
|
9821
9863
|
throw new Error("AudioNavigator: publication has an empty reading order");
|
|
9822
9864
|
if (i)
|
|
9823
9865
|
this.currentLocation = this.ensureLocatorLocations(i);
|
|
@@ -9838,7 +9880,7 @@ class Fr extends vs {
|
|
|
9838
9880
|
const s = this.currentLocation.href.split("#")[0], o = this.hrefToTrackIndex(s);
|
|
9839
9881
|
if (o === -1)
|
|
9840
9882
|
throw new Error(`AudioNavigator: initial href "${s}" not found in reading order`);
|
|
9841
|
-
const a = this.currentLocation.locations?.time() || 0, l = new
|
|
9883
|
+
const a = this.currentLocation.locations?.time() || 0, l = new Ar({
|
|
9842
9884
|
playback: {
|
|
9843
9885
|
state: {
|
|
9844
9886
|
currentTime: a,
|
|
@@ -9848,17 +9890,17 @@ class Fr extends vs {
|
|
|
9848
9890
|
index: o
|
|
9849
9891
|
}
|
|
9850
9892
|
});
|
|
9851
|
-
this.pool = new
|
|
9893
|
+
this.pool = new Mr(l, t, n.contentProtection);
|
|
9852
9894
|
const h = n.contentProtection || {};
|
|
9853
9895
|
this._contentProtection = h;
|
|
9854
9896
|
const c = this.mergeKeyboardPeripherals(
|
|
9855
9897
|
h,
|
|
9856
9898
|
n.keyboardPeripherals || []
|
|
9857
9899
|
);
|
|
9858
|
-
(h.disableContextMenu || h.checkAutomation || h.checkIFrameEmbedding || h.monitorDevTools || h.protectPrinting?.disable || h.disableDragAndDrop || h.protectCopy) && (this._navigatorProtector = new
|
|
9900
|
+
(h.disableContextMenu || h.checkAutomation || h.checkIFrameEmbedding || h.monitorDevTools || h.protectPrinting?.disable || h.disableDragAndDrop || h.protectCopy) && (this._navigatorProtector = new Ir(h), this._suspiciousActivityListener = (u) => {
|
|
9859
9901
|
const { type: p, ...g } = u.detail;
|
|
9860
9902
|
p === "context_menu" ? this.listeners.contextMenu(g) : this.listeners.contentProtection(p, g);
|
|
9861
|
-
}, window.addEventListener(ot, this._suspiciousActivityListener)), c.length > 0 && (this._keyboardPeripheralsManager = new
|
|
9903
|
+
}, window.addEventListener(ot, this._suspiciousActivityListener)), c.length > 0 && (this._keyboardPeripheralsManager = new qe({ keyboardPeripherals: c }), this._keyboardPeripheralListener = (u) => {
|
|
9862
9904
|
this.listeners.peripheral(u.detail);
|
|
9863
9905
|
}, window.addEventListener(at, this._keyboardPeripheralListener)), this.setupEventListeners(), this._isNavigating = !0, this.pool.setCurrentAudio(o, "forward"), this.applyPreferences(), this.waitForLoadedAndSeeked(a).then(() => {
|
|
9864
9906
|
this._isNavigating = !1, this.listeners.trackLoaded(this.pool.audioEngine.getMediaElement()), this._notifyTimelineChange(this.currentLocator), this.listeners.positionChanged(this.currentLocator), this._setupRemotePlayback();
|
|
@@ -9870,13 +9912,13 @@ class Fr extends vs {
|
|
|
9870
9912
|
return this._settings;
|
|
9871
9913
|
}
|
|
9872
9914
|
get preferencesEditor() {
|
|
9873
|
-
return this._preferencesEditor === null && (this._preferencesEditor = new
|
|
9915
|
+
return this._preferencesEditor === null && (this._preferencesEditor = new $i(this._preferences, this.settings)), this._preferencesEditor;
|
|
9874
9916
|
}
|
|
9875
9917
|
async submitPreferences(t) {
|
|
9876
9918
|
this._preferences = this._preferences.merging(t), this.applyPreferences();
|
|
9877
9919
|
}
|
|
9878
9920
|
applyPreferences() {
|
|
9879
|
-
this._settings = new
|
|
9921
|
+
this._settings = new ji(this._preferences, this._defaults), this._preferencesEditor !== null && (this._preferencesEditor = new $i(this._preferences, this.settings)), this.pool.audioEngine.setVolume(this._settings.volume), this.pool.audioEngine.setPlaybackRate(this._settings.playbackRate, this._settings.preservePitch), this.positionPollInterval !== null && this.startPositionPolling(), this._settings.enableMediaSession && !this._mediaSessionEnabled ? (this._mediaSessionEnabled = !0, this.setupMediaSession()) : !this._settings.enableMediaSession && this._mediaSessionEnabled && (this._mediaSessionEnabled = !1, this.destroyMediaSession());
|
|
9880
9922
|
}
|
|
9881
9923
|
get publication() {
|
|
9882
9924
|
return this.pub;
|
|
@@ -10172,65 +10214,65 @@ class Fr extends vs {
|
|
|
10172
10214
|
}
|
|
10173
10215
|
}
|
|
10174
10216
|
export {
|
|
10175
|
-
|
|
10176
|
-
|
|
10217
|
+
Tr as AudioDefaults,
|
|
10218
|
+
Wr as AudioNavigator,
|
|
10177
10219
|
ce as AudioPreferences,
|
|
10178
|
-
|
|
10179
|
-
|
|
10220
|
+
$i as AudioPreferencesEditor,
|
|
10221
|
+
ji as AudioSettings,
|
|
10180
10222
|
A as BooleanPreference,
|
|
10181
|
-
|
|
10182
|
-
|
|
10183
|
-
|
|
10223
|
+
yn as EnumPreference,
|
|
10224
|
+
yr as EpubDefaults,
|
|
10225
|
+
Ln as EpubNavigator,
|
|
10184
10226
|
zt as EpubPreferences,
|
|
10185
|
-
|
|
10186
|
-
|
|
10187
|
-
|
|
10188
|
-
|
|
10189
|
-
|
|
10190
|
-
|
|
10191
|
-
|
|
10192
|
-
|
|
10227
|
+
Hi as EpubPreferencesEditor,
|
|
10228
|
+
Vi as EpubSettings,
|
|
10229
|
+
Fr as ExperimentalWebPubNavigator,
|
|
10230
|
+
ar as FXLCoordinator,
|
|
10231
|
+
sr as FXLFrameManager,
|
|
10232
|
+
gr as FXLFramePoolManager,
|
|
10233
|
+
hr as FXLPeripherals,
|
|
10234
|
+
cr as FXLSpreader,
|
|
10193
10235
|
Mt as FrameComms,
|
|
10194
|
-
|
|
10195
|
-
|
|
10196
|
-
|
|
10197
|
-
|
|
10236
|
+
_n as FrameManager,
|
|
10237
|
+
nr as FramePoolManager,
|
|
10238
|
+
rr as HorizontalThird,
|
|
10239
|
+
vn as Injector,
|
|
10198
10240
|
kt as LineLengths,
|
|
10199
|
-
|
|
10200
|
-
|
|
10241
|
+
Ss as MediaNavigator,
|
|
10242
|
+
cn as Navigator,
|
|
10201
10243
|
Me as Orientation,
|
|
10202
10244
|
M as Preference,
|
|
10203
10245
|
le as Properties,
|
|
10204
|
-
|
|
10246
|
+
Cr as RSProperties,
|
|
10205
10247
|
x as RangePreference,
|
|
10206
|
-
|
|
10248
|
+
Lr as ReadiumCSS,
|
|
10207
10249
|
Ne as Spread,
|
|
10208
10250
|
tt as TextAlignment,
|
|
10209
|
-
|
|
10210
|
-
|
|
10211
|
-
|
|
10212
|
-
|
|
10213
|
-
|
|
10214
|
-
|
|
10215
|
-
|
|
10216
|
-
|
|
10217
|
-
|
|
10218
|
-
|
|
10251
|
+
Cn as UserProperties,
|
|
10252
|
+
or as VerticalThird,
|
|
10253
|
+
dn as VisualNavigator,
|
|
10254
|
+
Ar as WebAudioEngine,
|
|
10255
|
+
Ps as WebPubBlobBuilder,
|
|
10256
|
+
zs as WebPubCSS,
|
|
10257
|
+
Fs as WebPubDefaults,
|
|
10258
|
+
ks as WebPubFrameManager,
|
|
10259
|
+
Os as WebPubFramePoolManager,
|
|
10260
|
+
er as WebPubNavigator,
|
|
10219
10261
|
Nt as WebPubPreferences,
|
|
10220
|
-
|
|
10221
|
-
|
|
10222
|
-
|
|
10223
|
-
|
|
10262
|
+
Ti as WebPubPreferencesEditor,
|
|
10263
|
+
Ai as WebPubSettings,
|
|
10264
|
+
Ns as WebRSProperties,
|
|
10265
|
+
mn as WebUserProperties,
|
|
10224
10266
|
E as ensureBoolean,
|
|
10225
10267
|
he as ensureEnumValue,
|
|
10226
|
-
|
|
10268
|
+
gn as ensureExperiment,
|
|
10227
10269
|
wt as ensureFilter,
|
|
10228
|
-
|
|
10229
|
-
|
|
10270
|
+
Is as ensureLessThanOrEqual,
|
|
10271
|
+
Ds as ensureMoreThanOrEqual,
|
|
10230
10272
|
v as ensureNonNegative,
|
|
10231
10273
|
W as ensureString,
|
|
10232
10274
|
z as ensureValueInRange,
|
|
10233
|
-
|
|
10275
|
+
Xe as experiments,
|
|
10234
10276
|
dt as filterRangeConfig,
|
|
10235
10277
|
Yt as fontSizeRangeConfig,
|
|
10236
10278
|
st as fontWeightRangeConfig,
|