@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 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 Ze = S;
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 Qe = C;
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 ti = D;
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 ei = L;
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 ii = k;
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: xn
157
- }, si = {
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
- }, ri = kn?.publication?.metadata?.accessibility?.["display-guide"] || {};
168
+ }, oi = On?.publication?.metadata?.accessibility?.["display-guide"] || {};
169
169
  class gt {
170
170
  constructor() {
171
- this.currentLocaleCode = "en", this.locale = ri, this.loadedLocales = {}, this.loadedLocales.en = ri;
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 (!ni.includes(t))
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 si))
187
+ if (!(t in ri))
188
188
  return console.warn(`Locale file not found for: ${t}`), !1;
189
- const n = (await si[t]()).default?.publication?.metadata?.accessibility?.["display-guide"];
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 ni;
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 On(r) {
311
+ function Rn(r) {
312
312
  return r && Array.isArray(r) ? r : void 0;
313
313
  }
314
- function Gi(r) {
315
- return r && typeof r == "string" ? [r] : On(r);
314
+ function Yi(r) {
315
+ return r && typeof r == "string" ? [r] : Rn(r);
316
316
  }
317
- function oi(r) {
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 Rn(r) {
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 ai {
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: Gi(t.fragments || t.fragment),
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: Gi(t.language),
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 = Rn(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;
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 ai(this.href).parameters : /* @__PURE__ */ new Set();
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 ai(this.href).expand(t),
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 Yi = /* @__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))(Yi || {}), N = /* @__PURE__ */ ((r) => (r.ltr = "ltr", r.rtl = "rtl", r))(N || {});
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: oi(t.since),
1312
- until: oi(t.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 An = "CssSelectorGenerator";
1347
- function li(r = "unknown problem", ...t) {
1348
- console.warn(`${An}: ${r}`, ...t);
1346
+ const Tn = "CssSelectorGenerator";
1347
+ function hi(r = "unknown problem", ...t) {
1348
+ console.warn(`${Tn}: ${r}`, ...t);
1349
1349
  }
1350
- function Tn(r) {
1350
+ function Mn(r) {
1351
1351
  return r instanceof RegExp;
1352
1352
  }
1353
- function Mn(r) {
1353
+ function Nn(r) {
1354
1354
  return r.replace(/[|\\{}()[\]^$+?.]/g, "\\$&").replace(/\*/g, ".+");
1355
1355
  }
1356
- function Nn(r) {
1356
+ function zn(r) {
1357
1357
  const t = r.map((e) => {
1358
- if (Tn(e))
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" ? (li("pattern matcher function invalid", "Provided pattern matching function does not return boolean. It's result will be ignored.", e), !1) : n;
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("^" + Mn(e) + "$");
1366
+ const i = new RegExp("^" + Nn(e) + "$");
1367
1367
  return (n) => i.test(n);
1368
1368
  }
1369
- return li("pattern matcher invalid", "Pattern matching only accepts strings, regular expressions and/or functions. This item is invalid and will be ignored.", e), () => !1;
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
- Nn([
1373
+ zn([
1374
1374
  "class",
1375
1375
  "id",
1376
1376
  // Angular attributes
1377
1377
  "ng-*"
1378
1378
  ]);
1379
- const zn = Math.pow(2, 32), hi = () => Math.round(Math.random() * zn).toString(36), we = () => `${Math.round(performance.now())}-${hi()}-${hi()}`, ft = 1;
1380
- class In {
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 ci(r) {
1472
+ function di(r) {
1473
1473
  return r.split("").reverse().join("");
1474
1474
  }
1475
- function Dn(r, t, e) {
1476
- const i = ci(t);
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 = ci(r.slice(s, n.end));
1478
+ const s = Math.max(0, n.end - t.length - n.errors), o = di(r.slice(s, n.end));
1479
1479
  return {
1480
- start: qi(o, i, n.errors).reduce((l, h) => n.end - h.end < l ? n.end - h.end : l, n.end),
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 di(r, t, e, i) {
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 qi(r, t, e) {
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 = di(o, d, w, f), u[w] += 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 + di(o, d, c, 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 Fn(r, t, e) {
1560
- const i = qi(r, t, e);
1561
- return Dn(r, t, i);
1559
+ function Wn(r, t, e) {
1560
+ const i = Ki(r, t, e);
1561
+ return Fn(r, t, i);
1562
1562
  }
1563
- function Ki(r, t, e) {
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 : Fn(r, t, e);
1572
+ return n.length > 0 ? n : Wn(r, t, e);
1573
1573
  }
1574
- function ui(r, t) {
1575
- return t.length === 0 || r.length === 0 ? 0 : 1 - Ki(r, t, t.length)[0].errors / t.length;
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 Wn(r, t, e = {}) {
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 = Ki(r, t, i);
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 ? ui(
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 ? ui(
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 pi(r, t) {
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 Un(r) {
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 } = pi(
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 } = pi(
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 Ji(r) {
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 fi(r) {
1687
+ function mi(r) {
1688
1688
  let t = r.previousSibling, e = 0;
1689
1689
  for (; t; )
1690
- e += Ji(t), t = t.previousSibling;
1690
+ e += Zi(t), t = t.previousSibling;
1691
1691
  return e;
1692
1692
  }
1693
- function Zi(r, ...t) {
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 += fi(e), e = e.parentElement;
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 Zi(this.element, this.offset)[0];
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 = fi(t) + e;
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 += Ji(t.childNodes[n]);
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] = Zi(
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 Un(et.fromRange(t).toRange());
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 = Wn(e, this.exact, {
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 Bn(r) {
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 || Bn(n) ? (s.selectNode(n), s) : (s.setStartBefore(n), s.setEndAfter(n), s);
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 Hn(r, t) {
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 = Qi(
1994
+ const s = tn(
1995
1995
  n,
1996
1996
  i
1997
- ), o = jn(s, i), a = tn(o), l = 4;
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 Qi(r, t, e) {
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 && en(s, o, t)) {
2016
- const u = r.filter((g) => g !== s && g !== o), p = Vn(s, o);
2017
- return u.push(p), Qi(
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 Vn(r, t) {
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 jn(r, t) {
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) && $n(s, i, t)) {
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 $n(r, t, e) {
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 tn(r) {
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 && en(i, n, -1)) {
2061
+ if (i !== n && nn(i, n, -1)) {
2062
2062
  let s = [], o;
2063
- const a = mi(i, n);
2063
+ const a = gi(i, n);
2064
2064
  if (a.length === 1)
2065
2065
  s = a, o = i;
2066
2066
  else {
2067
- const h = mi(n, i);
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), tn(l);
2071
+ return Array.prototype.push.apply(l, s), en(l);
2072
2072
  }
2073
2073
  }
2074
2074
  return r;
2075
2075
  }
2076
- function mi(r, t) {
2077
- const e = Xn(t, r);
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 Xn(r, t) {
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 en(r, t, e) {
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 nn(r, t) {
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(), Gn = () => {
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
- }, Yn = (r) => {
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 (Yn(r))
2210
+ if (qn(r))
2211
2211
  return Wt(r, "Unsupported color format or special value."), ct.set(e, null), mt;
2212
- const n = Gn();
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
- }, gi = (r) => {
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
- }, yi = (r, t) => {
2236
- const e = typeof r == "string" ? Se(r) : r, i = typeof t == "string" ? Se(t) : t, n = gi(e), s = gi(i), o = Math.max(n, s), a = Math.min(n, s);
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 = yi(e, { r: 255, g: 255, b: 255, a: 1 }), n = yi(e, { r: 0, g: 0, b: 0, a: 1 });
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
- }, qn = (r, t = null) => Pe(r, t) ? "white" : "black", bi = "#FFFF00", Kn = () => "Highlight" in window, wi = ["IMG", "IMAGE", "AUDIO", "VIDEO", "SVG"];
2242
- class Jn {
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, Kn() && (this.experimentalHighlights = !0, this.notTextFlag = /* @__PURE__ */ new Map());
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 && (wi.includes(n.nodeName.toUpperCase()) && this.notTextFlag?.set(e, !0), i.cloneContents().querySelector(wi.join(", ").toLowerCase()) && this.notTextFlag?.set(e, !0), (n.textContent?.trim() || "").length === 0 && this.notTextFlag?.set(e, !0));
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 ?? bi;
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: ${qn(s, n)};
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 ?? bi} !important`,
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 = Hn(
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 Jn(
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 vi = "readium-snapper-style", Rt = class Rt extends Et {
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 = vi, i.textContent = this.buildStyles(), t.document.head.appendChild(i), e.register("protect", Rt.moduleName, (n, s) => {
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(vi)?.remove(), e.log("Snapper Unmounted"), !0;
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 Zn(r) {
2501
+ function Qn(r) {
2502
2502
  return (r.document.documentElement.dir || r.document.body.dir).toLowerCase() === "rtl";
2503
2503
  }
2504
- function Qn(r) {
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 sn(r) {
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 Si(r) {
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 Pi(r) {
2519
- const t = sn(r);
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 = Si(r.document.documentElement) + "px"), c.innerHTML = "&#8203;", r.document.body.appendChild(c);
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 = "&#8203;", 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 ts(r) {
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 es = [
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
- ], is = ["dialog", "radiogroup", "radio", "menu", "menuitem"];
2558
+ ], ns = ["dialog", "radiogroup", "radio", "menu", "menuitem"];
2559
2559
  function Ve(r) {
2560
- return ns(r) ? null : rn(r) ? r : r.parentElement ? Ve(r.parentElement) : null;
2560
+ return ss(r) ? null : on(r) ? r : r.parentElement ? Ve(r.parentElement) : null;
2561
2561
  }
2562
- function ns(r) {
2562
+ function ss(r) {
2563
2563
  return r ? r.closest("[inert]") !== null || r.hasAttribute("disabled") : !0;
2564
2564
  }
2565
- function rn(r) {
2566
- return r ? r.role && is.includes(r.role) || r.tabIndex >= 0 ? !0 : es.includes(r.nodeName.toLowerCase()) || r.hasAttribute("contenteditable") && r.getAttribute("contenteditable")?.toLowerCase() !== "false" : !1;
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 = on(r, r.document.body, t), i = r._readium_cssSelectorGenerator.getCssSelector(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 on(r, t, e) {
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 (!os(n) && ss(r, n, e))
2589
- return rs(r, n) ? n : on(r, n, e);
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 ss(r, t, e) {
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 rs(r, t) {
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 os(r) {
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 as = {
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
- }, an = {
2636
+ }, ln = {
2637
2637
  maxSelectionsPerSecond: 500,
2638
2638
  minVariance: 50,
2639
2639
  historySize: 20
2640
- }, ls = {
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 = { ...as, ...t };
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 Ei = "readium-column-snapper-style", hs = 200, F = class F extends St {
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 = sn(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";
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) * ts(lt / ht), f = hs * n;
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 = Zn(t), !super.mount(t, e)) return !1;
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 = Ei, i.textContent = `
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 && Pi(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 && Pi(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(Ei)?.remove(), e.log("ColumnSnapper Unmounted"), super.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(_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 _i = "readium-scroll-snapper-style", U = class U extends St {
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 = _i, i.textContent = `
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(_i)?.remove(), this.patternAnalyzer && (this.patternAnalyzer.clear(), this.patternAnalyzer = null, this.isScrollProtectionEnabled = !1), e.log("ScrollSnapper Unmounted"), !0;
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 cs {
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 ds {
3256
- constructor(t = an) {
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 ln {
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)) : rn(h)) return;
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 ln(), this.keyDownHandler = null, this.preventBulkCopy = (t) => {
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 = ls, i = t ? { ...e, ...t } : e;
3513
- this.bulkCopyProtector = new cs(this.wnd, i), this.wnd.document.addEventListener("copy", this.preventBulkCopy, !0), this.wnd.document.addEventListener("cut", this.preventBulkCopy, !0), this.isBulkCopyProtectionEnabled = !0;
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 || an;
3521
- this.selectionAnalyzer = new ds(e), this.wnd.document.addEventListener("selectionchange", this.handleSelection), this.isSelectionMonitoringEnabled = !0;
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.3",
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 Ci = "readium-viewport", Z = class Z extends Xt {
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", Ci), i.setAttribute(
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`, nn(t, n), s(!0);
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(`#${Ci}`)?.remove(), t.removeEventListener("orientationchange", this.onViewportWidthChanged), e.log("ReflowableSetup Unmounted"), super.unmount(t, e);
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 Li = "readium-fixed-style", q = class q extends Xt {
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 = Li, i.dataset.readium = "true", i.textContent = `
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(Li)?.remove(), e.log("FixedSetup Unmounted"), super.unmount(t, e);
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
- nn(t, i), n(!0);
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 us = (nt = class extends Et {
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 xi = "readium-cjk-vertical-snapper-style", H = class H extends St {
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 = Qn(t), this.resizeDebounce && (this.wnd.clearTimeout(this.resizeDebounce), this.resizeDebounce = null), t.navigator.epubReadingSystem && (t.navigator.epubReadingSystem.layoutStyle = "scrolling");
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 = xi, i.textContent = `
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(xi)?.remove(), this.patternAnalyzer && (this.patternAnalyzer.clear(), this.patternAnalyzer = null, this.isScrollProtectionEnabled = !1), e.log("CJKVerticalSnapper Unmounted"), !0;
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 ps = [
3998
+ const fs = [
3999
3999
  "fixed_setup",
4000
4000
  "decorator",
4001
4001
  "peripherals",
4002
4002
  "print_protection"
4003
- ], fs = [
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
- ], ms = [
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
- us
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 In(t);
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 gs = {
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
- }, ys = {
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
- }, bs = {
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
- }, ws = {
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 hn {
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(ys), t.disableSave && i.push(ws), t.monitorDevTools && i.push(gs), t.protectPrinting?.disable && i.push(bs);
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 cn extends hn {
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 vs extends hn {
4187
+ class Ss extends cn {
4188
4188
  }
4189
- class Ss {
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 Ps = 1e4;
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 > Ps && (console.warn(n, "event for", i.key, "was never handled!"), this.registry.delete(n));
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 Es = "'Iowan Old Style', Sitka, 'Sitka Text', Palatino, 'Book Antiqua', 'URW Palladio L', P052, serif", _s = {
4320
- RS__oldStyleTf: Es
4321
- }, Cs = 16, ki = _s.RS__oldStyleTf;
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 || Cs, this._fontFace = t.fontFace || ki, 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);
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 || ki), 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();
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 dn = () => typeof navigator > "u" ? "" : navigator.userAgent || "", un = () => typeof navigator > "u" ? void 0 : navigator.userAgentData || void 0;
4397
- class pn {
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 = un(), e = dn(), i = (s) => (typeof s == "string" || typeof s == "number") && s ? String(s).replace(/_/g, ".").split(".").map((o) => parseInt(o) || 0) : [], n = (s = "") => {
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 Ls extends pn {
4430
+ class xs extends fn {
4431
4431
  get iOSRequest() {
4432
- const t = un(), e = dn();
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 pn(), T = new Ls();
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 xs {
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.comms.send("keyboard_peripherals", this.keyboardPeripheralsConfig), this.contentProtectionConfig.monitorScrollingExperimental && this.comms.send("scroll_protection", {}), this.contentProtectionConfig.protectPrinting?.disable && this.comms.send("print_protection", this.contentProtectionConfig.protectPrinting);
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 ks {
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 Ss(
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 xs(this.blobs.get(d), this.contentProtectionConfig, this.keyboardPeripheralsConfig);
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, Oi;
4658
- function Os() {
4659
- if (Oi) return me;
4660
- Oi = 1;
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 = Os();
4846
- const Rs = { description: "Attempts to filter out paragraphs that are implicitly headings or part of headers", scope: "RS", value: "readium-experimentalHeaderFiltering-on" }, As = { 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" }, Ts = {
4847
- experimentalHeaderFiltering: Rs,
4848
- experimentalZoom: As
4849
- }, $e = Ts;
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 fn extends le {
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 Ms extends le {
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] = $e[e].value;
4969
+ t["--RS__" + e] = Xe[e].value;
4938
4970
  }), t;
4939
4971
  }
4940
4972
  }
4941
- class Ns {
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 fn(e);
4996
+ this.userProperties = new mn(e);
4965
4997
  }
4966
4998
  }
4967
- function zs(r, t) {
4999
+ function Is(r, t) {
4968
5000
  return r == null || t == null || r <= t ? r : void 0;
4969
5001
  }
4970
- function Is(r, t) {
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 mn(r) {
5033
+ function gn(r) {
5002
5034
  if (r !== void 0)
5003
- return r === null ? null : r.filter((t) => t in $e);
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 Ds {
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 = mn(t.experiments) ?? null;
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 Ri {
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 gn extends M {
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 Ai {
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 gn({
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 yn = (r) => {
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
- }, bn = (r, t) => {
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
- }, Fs = (r, t, e) => {
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 || yn(t);
5363
- return n && (i.type = n), bn(i, t), i.src = e, i;
5364
- }, Ti = (r, t, e) => {
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 || yn(t);
5368
- return n && (i.type = n), bn(i, t), i.href = e, i;
5399
+ const n = t.type || bn(t);
5400
+ return n && (i.type = n), wn(i, t), i.href = e, i;
5369
5401
  };
5370
- class wn {
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 = Ti(t, n, i);
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 Fs(t, e, i);
5488
+ return Ws(t, e, i);
5457
5489
  if (e.as === "link")
5458
- return Ti(t, e, i);
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, " "), Ws = `/*!
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
- }`, vn = '!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})()));', Us = `// WebPub-specific setup - no execution blocking needed
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
- `, Sn = `(function() {
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 Bs(r) {
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(vn)], { type: "text/javascript" })
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(Us)], { type: "text/javascript" })
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(Sn)], { type: "text/javascript" }),
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(Ws)], { type: "text/css" }),
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 Hs {
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 Vs = 0;
5882
- function js() {
5883
- return ++Vs;
5913
+ let js = 0;
5914
+ function $s() {
5915
+ return ++js;
5884
5916
  }
5885
- const $s = `
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
- `, Ke = class Ke {
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 = js();
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
- Ke.workerScript = $s;
5922
- let se = Ke;
5923
- function Xe(r) {
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 Xs = Xe("log"), Mi = Xe("table"), Gs = Xe("clear");
5928
- async function Ni() {
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 Ys(r) {
5972
+ function qs(r) {
5941
5973
  return r.excludes.some((t) => t()) ? !1 : r.includes.some((t) => t());
5942
5974
  }
5943
- class qs {
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 Mi(t), performance.now() - i;
6021
+ return Ni(t), performance.now() - i;
5990
6022
  }
5991
6023
  else {
5992
6024
  const e = performance.now();
5993
- return Mi(t), performance.now() - e;
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 Xs(t), performance.now() - e;
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 Ys({
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() : Gs(), t === 0 ? !1 : this.maxPrintTime === 0 ? !!await Ni() : t > this.maxPrintTime * 10;
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 Ni())
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 Ks {
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 Js {
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 Zs {
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 Ge {
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 qs({
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 Hs({
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 Ks({
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 Js({
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 Zs({
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 Ye {
6252
+ class qe {
6221
6253
  constructor(t = {}) {
6222
- this.keyManager = new ln(), this.setupKeyboardPeripherals(t.keyboardPeripherals || []);
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 Qs = (r) => ({
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 tr extends cn {
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 = Qs(i), this._preferences = new Nt(s.preferences), this._defaults = new Ds(s.defaults), this._settings = new Ri(this._preferences, this._defaults, this.hasDisplayTransformability), this._css = new Ns({
6275
- rsProperties: new Ms({ experiments: this._settings.experiments || null }),
6276
- userProperties: new fn({ zoom: this._settings.zoom })
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 = Bs(e.readingOrder.items), a = s.injectables || { rules: [], allowedDomains: [] };
6279
- if (this._injector = new wn({
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 Ge(this._contentProtection), this._suspiciousActivityListener = (l) => {
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 Ye({
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 ks(
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 Ai(this._preferences, this.settings, this.pub.metadata)), this._preferencesEditor;
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 Ri(this._preferences, this._defaults, this.hasDisplayTransformability), this._preferencesEditor !== null && (this._preferencesEditor = new Ai(this._preferences, this.settings, this.pub.metadata)), await this.updateCSS(!0);
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 = ms.slice(), e = bt(this.pub.metadata);
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 Dr = tr, er = (r) => {
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 Pn {
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 = er(l), c.dataset.readium = "true", t.head.firstChild.before(c), URL.createObjectURL(
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 En {
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.comms.send("keyboard_peripherals", this.keyboardPeripheralsConfig), this.contentProtectionConfig.monitorScrollingExperimental && this.comms.send("scroll_protection", {}), this.contentProtectionConfig.protectPrinting?.disable && this.comms.send("print_protection", this.contentProtectionConfig.protectPrinting);
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 zi = 5, Ii = 3;
6771
- class ir {
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 + zi || f < s - zi) && (c.includes(d.href) || c.push(d.href)), f < s + Ii && f > s - Ii && (u.includes(d.href) || u.push(d.href));
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 Pn(
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 En(this.blobs.get(d), this.contentProtectionConfig, this.keyboardPeripheralsConfig);
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 nr {
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.comms.send("keyboard_peripherals", this.keyboardPeripheralsConfig), this.contentProtectionConfig.protectPrinting?.disable && this.comms.send("print_protection", this.contentProtectionConfig.protectPrinting);
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 sr = /* @__PURE__ */ ((r) => (r[r.Left = 0] = "Left", r[r.Center = 1] = "Center", r[r.Right = 2] = "Right", r))(sr || {}), rr = /* @__PURE__ */ ((r) => (r[r.Top = 0] = "Top", r[r.Middle = 1] = "Middle", r[r.Bottom = 2] = "Bottom", r))(rr || {});
7055
- class or {
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 ar {
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 Di = 6, ye = 1.02, Fi = 50;
7122
- class lr {
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 or(), this.attachEvents(), e && (this.debugger = new ar());
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) > Fi && Math.abs(this.pan.overscrollY) < Fi / 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");
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 >= Di && (o = Di), o <= ye && (o = 1), this.scale = o, this.pinch.startDistance = i, n = !0;
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 hr {
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 Wi = 8, Ui = 5, cr = 300, dr = 15e3, ur = 250, pr = 150, fr = 500;
7389
- class mr {
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 hr(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 lr(this), this.pub.readingOrder.items.forEach((a) => {
7394
- const l = new nr(this.peripherals, this.pub.metadata.effectiveReadingProgression, a.href, this.contentProtectionConfig, this.keyboardPeripheralsConfig);
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
- }, ur);
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 ? pr : fr}ms ease-out` : "all 0ms ease-out",
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 + Wi || f < s - Wi) && (c.includes(d.href) || c.push(d.href)), f < s + Ui && f > s - Ui && (u.includes(d.href) || u.push(d.href));
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 Pn(
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)), Ln = this.spreadPosition(ht, w), Je = this.pool.get(d);
7629
- await Je.load(i, this.blobs.get(d)), this.peripherals.isScaled || await Je.show(Ln), this.delayedShow.delete(d), Y = !0, P();
7630
- }, cr);
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
- }, dr), this.delayedTimeout.set(d, lt);
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 gr {
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(Is(t.maximalLineLength, this.optimalLineLength), 80), this.minimalLineLength = ge(zs(t.minimalLineLength, this.optimalLineLength), 40), this.experiments = mn(t.experiments) || null;
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 yr = "#FFFFFF", br = "#121212", wr = "#0000EE", vr = "#551A8B", Sr = "#b4d8fe", Pr = "inherit", pt = {
7738
- RS__backgroundColor: yr,
7739
- RS__textColor: br,
7740
- RS__linkColor: wr,
7741
- RS__visitedColor: vr,
7742
- RS__selectionBackgroundColor: Sr,
7743
- RS__selectionTextColor: Pr
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 Bi {
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 gn({
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 Hi {
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 Er(r) {
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 _n extends le {
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 _r extends le {
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] = $e[e].value;
8261
+ t["--RS__" + e] = Xe[e].value;
8220
8262
  }), t;
8221
8263
  }
8222
8264
  }
8223
- class Cr {
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 _n(i);
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(Er(this.containerParent)), s = this.getCompensatedMetrics(t, e), o = s.maximal !== null ? Math.min(Math.round(s.maximal * s.zoomCompensation), n) : n;
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 Lr = `// Note: we aren't blocking some of the events right now to try and be as nonintrusive as possible.
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 xr(r, t) {
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(vn)], { type: "text/javascript" })
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(Lr)], { type: "text/javascript" }),
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(Sn)], { type: "text/javascript" }),
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 kr = (r) => ({
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 Cn extends cn {
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 = kr(i), this.currentLocation = s, n.length && (this.positions = n), this._preferences = new zt(o.preferences), this._defaults = new gr(o.defaults), this._settings = new Hi(this._preferences, this._defaults);
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 Cr({
8579
- rsProperties: new _r({ noVerticalPagination: u || void 0 }),
8580
- userProperties: new _n({}),
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 = Cn.determineLayout(e, !!this._settings.scroll), this.currentProgression = e.metadata.effectiveReadingProgression, this._injectablesConfig = o.injectables || { rules: [], allowedDomains: [] }, this._readiumRulesPromise = xr(e.metadata, e.readingOrder.items), this._contentProtection = o.contentProtection || {}, this._keyboardPeripherals = this.mergeKeyboardPeripherals(
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 Ge(this._contentProtection), this._suspiciousActivityListener = (g) => {
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 Ye({
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(Yi.DIVINA))
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 wn({
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 mr(
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 ir(
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 Bi(this._preferences, this.settings, this.pub.metadata)), this._preferencesEditor;
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 Hi(this._preferences, this._defaults), this._preferencesEditor !== null && (this._preferencesEditor = new Bi(this._preferences, this.settings, this.pub.metadata)), this._layout === b.fixed ? this.handleFXLPrefs(t, this._settings) : await this.updateCSS(!0);
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 En && t.isDestroyed));
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) => ps.includes(n));
8831
- t = t.filter((n) => fs.includes(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 Or = `// PreservePitchProcessor.js
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 qe {
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 qe(e);
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([Or], { type: "text/javascript" });
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 Rr {
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) : qe.createWorklet({
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 Ar {
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 Vi {
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 ji {
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 $i = 1, Xi = 1;
9661
- class Tr {
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 - Xi && n <= t + Xi ? (this.ensure(s), i.add(s)) : n >= t - $i && n <= t + $i && this.pool.has(s) && i.add(s);
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 Mr {
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 Nr {
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 zr extends Ge {
9806
+ class Ir extends Ye {
9765
9807
  constructor(t = {}) {
9766
- super(t), t.disableDragAndDrop && (this.dragAndDropProtector = new Mr({
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 Nr({
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 Ir = (r) => ({
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 Fr extends vs {
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 = Ir(e), this._preferences = new ce(n.preferences), this._defaults = new Ar(n.defaults), this._settings = new Vi(this._preferences, this._defaults), t.readingOrder.items.length === 0)
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 Rr({
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 Tr(l, t, n.contentProtection);
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 zr(h), this._suspiciousActivityListener = (u) => {
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 Ye({ keyboardPeripherals: c }), this._keyboardPeripheralListener = (u) => {
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 ji(this._preferences, this.settings)), this._preferencesEditor;
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 Vi(this._preferences, this._defaults), this._preferencesEditor !== null && (this._preferencesEditor = new ji(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());
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
- Ar as AudioDefaults,
10176
- Fr as AudioNavigator,
10217
+ Tr as AudioDefaults,
10218
+ Wr as AudioNavigator,
10177
10219
  ce as AudioPreferences,
10178
- ji as AudioPreferencesEditor,
10179
- Vi as AudioSettings,
10220
+ $i as AudioPreferencesEditor,
10221
+ ji as AudioSettings,
10180
10222
  A as BooleanPreference,
10181
- gn as EnumPreference,
10182
- gr as EpubDefaults,
10183
- Cn as EpubNavigator,
10223
+ yn as EnumPreference,
10224
+ yr as EpubDefaults,
10225
+ Ln as EpubNavigator,
10184
10226
  zt as EpubPreferences,
10185
- Bi as EpubPreferencesEditor,
10186
- Hi as EpubSettings,
10187
- Dr as ExperimentalWebPubNavigator,
10188
- or as FXLCoordinator,
10189
- nr as FXLFrameManager,
10190
- mr as FXLFramePoolManager,
10191
- lr as FXLPeripherals,
10192
- hr as FXLSpreader,
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
- En as FrameManager,
10195
- ir as FramePoolManager,
10196
- sr as HorizontalThird,
10197
- wn as Injector,
10236
+ _n as FrameManager,
10237
+ nr as FramePoolManager,
10238
+ rr as HorizontalThird,
10239
+ vn as Injector,
10198
10240
  kt as LineLengths,
10199
- vs as MediaNavigator,
10200
- hn as Navigator,
10241
+ Ss as MediaNavigator,
10242
+ cn as Navigator,
10201
10243
  Me as Orientation,
10202
10244
  M as Preference,
10203
10245
  le as Properties,
10204
- _r as RSProperties,
10246
+ Cr as RSProperties,
10205
10247
  x as RangePreference,
10206
- Cr as ReadiumCSS,
10248
+ Lr as ReadiumCSS,
10207
10249
  Ne as Spread,
10208
10250
  tt as TextAlignment,
10209
- _n as UserProperties,
10210
- rr as VerticalThird,
10211
- cn as VisualNavigator,
10212
- Rr as WebAudioEngine,
10213
- Ss as WebPubBlobBuilder,
10214
- Ns as WebPubCSS,
10215
- Ds as WebPubDefaults,
10216
- xs as WebPubFrameManager,
10217
- ks as WebPubFramePoolManager,
10218
- tr as WebPubNavigator,
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
- Ai as WebPubPreferencesEditor,
10221
- Ri as WebPubSettings,
10222
- Ms as WebRSProperties,
10223
- fn as WebUserProperties,
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
- mn as ensureExperiment,
10268
+ gn as ensureExperiment,
10227
10269
  wt as ensureFilter,
10228
- zs as ensureLessThanOrEqual,
10229
- Is as ensureMoreThanOrEqual,
10270
+ Is as ensureLessThanOrEqual,
10271
+ Ds as ensureMoreThanOrEqual,
10230
10272
  v as ensureNonNegative,
10231
10273
  W as ensureString,
10232
10274
  z as ensureValueInRange,
10233
- $e as experiments,
10275
+ Xe as experiments,
10234
10276
  dt as filterRangeConfig,
10235
10277
  Yt as fontSizeRangeConfig,
10236
10278
  st as fontWeightRangeConfig,