@internetarchive/bookreader 5.0.0-118-alpha2 → 5.0.0-119

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/BookReader/474.js +2 -0
  2. package/BookReader/474.js.map +1 -0
  3. package/BookReader/BookReader.css +2451 -0
  4. package/BookReader/bergamot-translator-worker.js +2966 -0
  5. package/BookReader/bergamot-translator-worker.wasm +0 -0
  6. package/BookReader/hypothesis/LICENSE +50 -0
  7. package/BookReader/hypothesis/README.md +55 -0
  8. package/BookReader/hypothesis/build/boot-template.js +1 -0
  9. package/BookReader/hypothesis/build/boot.js +1 -0
  10. package/BookReader/hypothesis/build/manifest.json +20 -0
  11. package/BookReader/hypothesis/build/scripts/annotator.bundle.js +199 -0
  12. package/BookReader/hypothesis/build/scripts/annotator.bundle.js.map +1 -0
  13. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js +811 -0
  14. package/BookReader/hypothesis/build/scripts/sidebar.bundle.js.map +1 -0
  15. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js +437 -0
  16. package/BookReader/hypothesis/build/scripts/ui-playground.bundle.js.map +1 -0
  17. package/BookReader/hypothesis/build/styles/annotator.css +4 -0
  18. package/BookReader/hypothesis/build/styles/annotator.css.map +1 -0
  19. package/BookReader/hypothesis/build/styles/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  20. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  21. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  22. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  23. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  24. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Bold.woff2 +0 -0
  25. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  26. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Italic.woff2 +0 -0
  27. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Main-Regular.woff2 +0 -0
  28. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  29. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Math-Italic.woff2 +0 -0
  30. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  31. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  32. package/BookReader/hypothesis/build/styles/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  33. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Script-Regular.woff2 +0 -0
  34. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  35. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  36. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  37. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  38. package/BookReader/hypothesis/build/styles/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  39. package/BookReader/hypothesis/build/styles/highlights.css +2 -0
  40. package/BookReader/hypothesis/build/styles/highlights.css.map +1 -0
  41. package/BookReader/hypothesis/build/styles/katex.min.css +3 -0
  42. package/BookReader/hypothesis/build/styles/katex.min.css.map +1 -0
  43. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css +14 -0
  44. package/BookReader/hypothesis/build/styles/pdfjs-overrides.css.map +1 -0
  45. package/BookReader/hypothesis/build/styles/sidebar.css +4 -0
  46. package/BookReader/hypothesis/build/styles/sidebar.css.map +1 -0
  47. package/BookReader/hypothesis/build/styles/ui-playground.css +4 -0
  48. package/BookReader/hypothesis/build/styles/ui-playground.css.map +1 -0
  49. package/BookReader/hypothesis/package.json +126 -0
  50. package/BookReader/ia-bookreader.js +1886 -0
  51. package/BookReader/ia-bookreader.js.LICENSE.txt +78 -0
  52. package/BookReader/ia-bookreader.js.map +1 -0
  53. package/BookReader/icons/1up.svg +1 -0
  54. package/BookReader/icons/2up.svg +1 -0
  55. package/BookReader/icons/advance.svg +3 -0
  56. package/BookReader/icons/chevron-right.svg +1 -0
  57. package/BookReader/icons/close-circle-dark.svg +1 -0
  58. package/BookReader/icons/close-circle.svg +1 -0
  59. package/BookReader/icons/fullscreen.svg +1 -0
  60. package/BookReader/icons/fullscreen_exit.svg +1 -0
  61. package/BookReader/icons/hamburger.svg +1 -0
  62. package/BookReader/icons/left-arrow.svg +1 -0
  63. package/BookReader/icons/magnify-minus.svg +1 -0
  64. package/BookReader/icons/magnify-plus.svg +1 -0
  65. package/BookReader/icons/magnify.svg +1 -0
  66. package/BookReader/icons/pause.svg +1 -0
  67. package/BookReader/icons/play.svg +1 -0
  68. package/BookReader/icons/playback-speed.svg +1 -0
  69. package/BookReader/icons/read-aloud.svg +1 -0
  70. package/BookReader/icons/review.svg +3 -0
  71. package/BookReader/icons/slider-toggle.svg +1 -0
  72. package/BookReader/icons/thumbnails.svg +1 -0
  73. package/BookReader/icons/voice.svg +1 -0
  74. package/BookReader/icons/volume-full.svg +1 -0
  75. package/BookReader/images/BRicons.png +0 -0
  76. package/BookReader/images/BRicons.svg +5 -0
  77. package/BookReader/images/BRicons_ia.png +0 -0
  78. package/BookReader/images/back_pages.png +0 -0
  79. package/BookReader/images/book_bottom_icon.png +0 -0
  80. package/BookReader/images/book_down_icon.png +0 -0
  81. package/BookReader/images/book_left_icon.png +0 -0
  82. package/BookReader/images/book_leftmost_icon.png +0 -0
  83. package/BookReader/images/book_right_icon.png +0 -0
  84. package/BookReader/images/book_rightmost_icon.png +0 -0
  85. package/BookReader/images/book_top_icon.png +0 -0
  86. package/BookReader/images/book_up_icon.png +0 -0
  87. package/BookReader/images/books_graphic.svg +1 -0
  88. package/BookReader/images/booksplit.png +0 -0
  89. package/BookReader/images/control_pause_icon.png +0 -0
  90. package/BookReader/images/control_play_icon.png +0 -0
  91. package/BookReader/images/embed_icon.png +0 -0
  92. package/BookReader/images/hypothesis.ico +0 -0
  93. package/BookReader/images/icon-home-ia.png +0 -0
  94. package/BookReader/images/icon_OL-logo-xs.png +0 -0
  95. package/BookReader/images/icon_alert-xs.png +0 -0
  96. package/BookReader/images/icon_book.svg +1 -0
  97. package/BookReader/images/icon_bookmark.svg +1 -0
  98. package/BookReader/images/icon_close-pop.png +0 -0
  99. package/BookReader/images/icon_download.png +0 -0
  100. package/BookReader/images/icon_experiment.svg +1 -0
  101. package/BookReader/images/icon_gear.svg +1 -0
  102. package/BookReader/images/icon_hamburger.svg +1 -0
  103. package/BookReader/images/icon_home.png +0 -0
  104. package/BookReader/images/icon_home.svg +1 -0
  105. package/BookReader/images/icon_home_ia.png +0 -0
  106. package/BookReader/images/icon_indicator.png +0 -0
  107. package/BookReader/images/icon_info.svg +1 -0
  108. package/BookReader/images/icon_one_page.svg +1 -0
  109. package/BookReader/images/icon_pause.svg +1 -0
  110. package/BookReader/images/icon_play.svg +1 -0
  111. package/BookReader/images/icon_playback-rate.svg +1 -0
  112. package/BookReader/images/icon_return.png +0 -0
  113. package/BookReader/images/icon_search_button.svg +1 -0
  114. package/BookReader/images/icon_share.svg +1 -0
  115. package/BookReader/images/icon_skip-ahead.svg +1 -0
  116. package/BookReader/images/icon_skip-back.svg +2 -0
  117. package/BookReader/images/icon_speaker.svg +1 -0
  118. package/BookReader/images/icon_speaker_open.svg +1 -0
  119. package/BookReader/images/icon_thumbnails.svg +1 -0
  120. package/BookReader/images/icon_toc.svg +1 -0
  121. package/BookReader/images/icon_two_pages.svg +1 -0
  122. package/BookReader/images/icon_zoomer.png +0 -0
  123. package/BookReader/images/loading.gif +0 -0
  124. package/BookReader/images/logo_icon.png +0 -0
  125. package/BookReader/images/marker_chap-off.png +0 -0
  126. package/BookReader/images/marker_chap-off.svg +1 -0
  127. package/BookReader/images/marker_chap-off_ia.png +0 -0
  128. package/BookReader/images/marker_chap-on.png +0 -0
  129. package/BookReader/images/marker_chap-on.svg +1 -0
  130. package/BookReader/images/marker_srch-on.svg +1 -0
  131. package/BookReader/images/marker_srchchap-off.png +0 -0
  132. package/BookReader/images/marker_srchchap-on.png +0 -0
  133. package/BookReader/images/nav_control-dn.png +0 -0
  134. package/BookReader/images/nav_control-dn_ia.png +0 -0
  135. package/BookReader/images/nav_control-up.png +0 -0
  136. package/BookReader/images/nav_control-up_ia.png +0 -0
  137. package/BookReader/images/nav_control.png +0 -0
  138. package/BookReader/images/one_page_mode_icon.png +0 -0
  139. package/BookReader/images/paper-badge.png +0 -0
  140. package/BookReader/images/print_icon.png +0 -0
  141. package/BookReader/images/progressbar.gif +0 -0
  142. package/BookReader/images/right_edges.png +0 -0
  143. package/BookReader/images/slider.png +0 -0
  144. package/BookReader/images/slider_ia.png +0 -0
  145. package/BookReader/images/thumbnail_mode_icon.png +0 -0
  146. package/BookReader/images/translate.svg +1 -0
  147. package/BookReader/images/transparent.png +0 -0
  148. package/BookReader/images/two_page_mode_icon.png +0 -0
  149. package/BookReader/images/unviewable_page.png +0 -0
  150. package/BookReader/images/zoom_in_icon.png +0 -0
  151. package/BookReader/images/zoom_out_icon.png +0 -0
  152. package/BookReader/jquery-3.js +2 -0
  153. package/BookReader/jquery-3.js.LICENSE.txt +24 -0
  154. package/BookReader/plugins/plugin.archive_analytics.js +2 -0
  155. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -0
  156. package/BookReader/plugins/plugin.autoplay.js +2 -0
  157. package/BookReader/plugins/plugin.autoplay.js.map +1 -0
  158. package/BookReader/plugins/plugin.chapters.js +23 -0
  159. package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -0
  160. package/BookReader/plugins/plugin.chapters.js.map +1 -0
  161. package/BookReader/plugins/plugin.experiments.js +3 -0
  162. package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -0
  163. package/BookReader/plugins/plugin.experiments.js.map +1 -0
  164. package/BookReader/plugins/plugin.iframe.js +2 -0
  165. package/BookReader/plugins/plugin.iframe.js.map +1 -0
  166. package/BookReader/plugins/plugin.iiif.js +2 -0
  167. package/BookReader/plugins/plugin.iiif.js.map +1 -0
  168. package/BookReader/plugins/plugin.resume.js +2 -0
  169. package/BookReader/plugins/plugin.resume.js.map +1 -0
  170. package/BookReader/plugins/plugin.search.js +3 -0
  171. package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -0
  172. package/BookReader/plugins/plugin.search.js.map +1 -0
  173. package/BookReader/plugins/plugin.text_selection.js +3 -0
  174. package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -0
  175. package/BookReader/plugins/plugin.text_selection.js.map +1 -0
  176. package/BookReader/plugins/plugin.translate.js +3 -0
  177. package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -0
  178. package/BookReader/plugins/plugin.translate.js.map +1 -0
  179. package/BookReader/plugins/plugin.tts.js +3 -0
  180. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +29 -0
  181. package/BookReader/plugins/plugin.tts.js.map +1 -0
  182. package/BookReader/plugins/plugin.url.js +2 -0
  183. package/BookReader/plugins/plugin.url.js.map +1 -0
  184. package/BookReader/plugins/plugin.vendor-fullscreen.js +2 -0
  185. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -0
  186. package/BookReader/plugins/translator-worker.js +2 -0
  187. package/BookReader/plugins/translator-worker.js.map +1 -0
  188. package/BookReader/silence.mp3 +0 -0
  189. package/BookReader/translator-worker.js +475 -0
  190. package/BookReader/webcomponents-bundle.js +3 -0
  191. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  192. package/BookReader/webcomponents-bundle.js.map +1 -0
  193. package/dist/esm/ia-bookreader.js +3 -0
  194. package/dist/esm/ia-bookreader.js.LICENSE.txt +17 -0
  195. package/dist/esm/ia-bookreader.js.map +1 -0
  196. package/dist/esm/plugins/plugin.archive_analytics.js +2 -0
  197. package/dist/esm/plugins/plugin.archive_analytics.js.map +1 -0
  198. package/dist/esm/plugins/plugin.autoplay.js +2 -0
  199. package/dist/esm/plugins/plugin.autoplay.js.map +1 -0
  200. package/dist/esm/plugins/plugin.chapters.js +2 -0
  201. package/dist/esm/plugins/plugin.chapters.js.map +1 -0
  202. package/dist/esm/plugins/plugin.experiments.js +2 -0
  203. package/dist/esm/plugins/plugin.experiments.js.map +1 -0
  204. package/dist/esm/plugins/plugin.iframe.js +2 -0
  205. package/dist/esm/plugins/plugin.iframe.js.map +1 -0
  206. package/dist/esm/plugins/plugin.iiif.js +2 -0
  207. package/dist/esm/plugins/plugin.iiif.js.map +1 -0
  208. package/dist/esm/plugins/plugin.resume.js +2 -0
  209. package/dist/esm/plugins/plugin.resume.js.map +1 -0
  210. package/dist/esm/plugins/plugin.search.js +2 -0
  211. package/dist/esm/plugins/plugin.search.js.map +1 -0
  212. package/dist/esm/plugins/plugin.text_selection.js +2 -0
  213. package/dist/esm/plugins/plugin.text_selection.js.map +1 -0
  214. package/dist/esm/plugins/plugin.translate.js +2 -0
  215. package/dist/esm/plugins/plugin.translate.js.map +1 -0
  216. package/dist/esm/plugins/plugin.tts.js +2 -0
  217. package/dist/esm/plugins/plugin.tts.js.map +1 -0
  218. package/dist/esm/plugins/plugin.url.js +2 -0
  219. package/dist/esm/plugins/plugin.url.js.map +1 -0
  220. package/dist/esm/plugins/plugin.vendor-fullscreen.js +2 -0
  221. package/dist/esm/plugins/plugin.vendor-fullscreen.js.map +1 -0
  222. package/package.json +19 -13
  223. package/src/BookReader/Navbar/Navbar.js +8 -12
  224. package/src/BookReader/options.js +1 -1
  225. package/src/BookReader/utils/SelectionObserver.js +19 -2
  226. package/src/ia-bookreader/ia-bookreader.js +12 -3
  227. package/src/plugins/search/view.js +1 -1
  228. package/src/plugins/translate/plugin.translate.js +3 -2
  229. package/src/plugins/tts/PageChunk.js +92 -10
  230. package/src/plugins/tts/plugin.tts.js +0 -24
  231. package/src/plugins/url/UrlPlugin.js +4 -1
  232. package/src/plugins/url/plugin.url.js +4 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/plugin.url.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-from.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/array-set-length.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/get-built-in-prototype-method.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/object-assign.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/whitespaces.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.from-entries.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/./src/plugins/url/plugin.url.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.iterator.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url.constructor.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/web.url.to-json.js","webpack://@internetarchive/bookreader/./src/plugins/url/UrlPlugin.js"],"sourcesContent":["'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar setArrayLength = require('../internals/array-set-length');\nvar getIterator = require('../internals/get-iterator-internal');\nvar getIteratorMethod = require('../internals/get-iterator-method-internal');\nvar iteratorClose = require('../internals/iterator-close');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var O = toObject(arrayLike);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n result = IS_CONSTRUCTOR ? new this() : [];\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n for (;!(step = call(next, iterator)).done; index++) {\n try {\n doesNotExceedSafeInteger(index);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n try {\n createProperty(result, index, value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n setArrayLength(result, index);\n return result;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n var Constructor = globalThis[CONSTRUCTOR];\n var Prototype = Constructor && Constructor.prototype;\n return Prototype && Prototype[METHOD];\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol('assign detection');\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n // eslint-disable-next-line es/no-array-prototype-foreach -- safe\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) === 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw new $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw new $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue === n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://tc39.es/ecma262/#sec-object.fromentries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","/* global BookReader */\n\nimport { UrlPlugin } from \"./UrlPlugin.js\";\n\n/**\n * Plugin for URL management in BookReader\n * Note read more about the url \"fragment\" here:\n * https://openlibrary.org/dev/docs/bookurls\n */\n\njQuery.extend(BookReader.defaultOptions, {\n enableUrlPlugin: true,\n bookId: '',\n /** @type {string} Defaults can be a urlFragment string */\n defaults: null,\n updateWindowTitle: false,\n\n /** @type {'history' | 'hash'} */\n urlMode: 'hash',\n\n /**\n * When using 'history' mode, this part of the URL is kept constant\n * @example /details/plato/\n */\n urlHistoryBasePath: '/',\n\n /** Only these params will be reflected onto the URL */\n urlTrackedParams: ['page', 'search', 'mode', 'region', 'highlight', 'view', 'text'],\n\n /** If true, don't update the URL when `page == n0 (eg \"/page/n0\")` */\n urlTrackIndex0: false,\n});\n\n/** @override */\nBookReader.prototype.setup = (function(super_) {\n return function(options) {\n super_.call(this, options);\n\n this.bookId = options.bookId;\n this.defaults = options.defaults;\n\n this.locationPollId = null;\n this.oldLocationHash = null;\n this.oldUserHash = null;\n };\n})(BookReader.prototype.setup);\n\n/** @override */\nBookReader.prototype.init = (function(super_) {\n return function() {\n\n if (this.options.enableUrlPlugin) {\n this.bind(BookReader.eventNames.PostInit, () => {\n const { updateWindowTitle, urlMode } = this.options;\n if (updateWindowTitle) {\n document.title = this.shortTitle(this.bookTitle, 50);\n }\n if (urlMode === 'hash') {\n this.urlStartLocationPolling();\n }\n });\n\n this.bind(BookReader.eventNames.fragmentChange,\n this.urlUpdateFragment.bind(this),\n );\n }\n super_.call(this);\n };\n})(BookReader.prototype.init);\n\n/**\n * Returns a shortened version of the title with the maximum number of characters\n * @param {number} maximumCharacters\n * @return {string}\n */\nBookReader.prototype.shortTitle = function(maximumCharacters) {\n if (this.bookTitle.length < maximumCharacters) {\n return this.bookTitle;\n }\n\n const title = `${this.bookTitle.substr(0, maximumCharacters - 3)}...`;\n return title;\n};\n\n/**\n * Starts polling of window.location to see hash fragment changes\n */\nBookReader.prototype.urlStartLocationPolling = function() {\n this.oldLocationHash = this.urlReadFragment();\n\n if (this.locationPollId) {\n clearInterval(this.locationPollId);\n this.locationPollId = null;\n }\n\n const updateHash = () => {\n const newFragment = this.urlReadFragment();\n const hasFragmentChange = (newFragment != this.oldLocationHash) && (newFragment != this.oldUserHash);\n\n if (!hasFragmentChange) { return; }\n\n const params = this.paramsFromFragment(newFragment);\n\n const updateParams = () => this.updateFromParams(params);\n\n this.trigger(BookReader.eventNames.stop);\n if (this.animating) {\n // Queue change if animating\n this.plugins.autoplay?.stop();\n this.animationFinishedCallback = updateParams;\n } else {\n // update immediately\n updateParams();\n }\n this.oldUserHash = newFragment;\n };\n\n this.locationPollId = setInterval(updateHash, 500);\n};\n\n/**\n * Update URL from the current parameters.\n * Call this instead of manually using window.location.replace\n */\nBookReader.prototype.urlUpdateFragment = function() {\n const allParams = this.paramsFromCurrent();\n const { urlTrackIndex0, urlTrackedParams } = this.options;\n\n if (!urlTrackIndex0\n && (typeof(allParams.index) !== 'undefined')\n && allParams.index === 0) {\n delete allParams.index;\n delete allParams.page;\n }\n\n const params = urlTrackedParams.reduce((validParams, paramName) => {\n if (paramName in allParams) {\n validParams[paramName] = allParams[paramName];\n }\n return validParams;\n }, {});\n\n // eg 'page/3/mode/2up'; no query params (in hash mode, it might have /search/term)\n const newFragment = this.fragmentFromParams(params, this.options.urlMode);\n const newFragmentWithSlash = newFragment === '' ? '' : `/${newFragment}`;\n // eg 'page/3/mode/2up'; no query params\n const currFragment = this.urlReadFragment();\n // This should have both ?q=foo&text=bar (and any other params) as an encoded string\n const currQueryString = this.getLocationSearch();\n // Eg ?q=foo&text=bar; only query params, no fragment\n const newQueryString = this.queryStringFromParams(params, currQueryString, this.options.urlMode);\n // Avoid infinite loop if there are no changes\n if (currFragment === newFragment && currQueryString === newQueryString) {\n return;\n }\n\n if (this.options.urlMode === 'history') {\n if (!window.history || !window.history.replaceState) {\n this.options.urlMode = 'hash';\n } else {\n const baseWithoutSlash = this.options.urlHistoryBasePath.replace(/\\/+$/, '');\n const newUrlPath = `${baseWithoutSlash}${newFragmentWithSlash}${newQueryString}`;\n\n try {\n window.history.replaceState({}, null, newUrlPath);\n this.oldLocationHash = newFragment + newQueryString;\n } catch (e) {\n // DOMException on Chrome when in sandboxed iframe\n this.options.urlMode = 'hash';\n }\n }\n }\n\n if (this.options.urlMode === 'hash') {\n const newQueryStringSearch = this.urlParamsFiltersOnlySearch(this.readQueryString());\n // Built from location.href so a <base href> on the page can't change\n // the pathname, and replace() so page flips don't add history entries.\n const [baseHref] = window.location.href.split('#');\n window.location.replace(`${baseHref}#${newFragment}${newQueryStringSearch}`);\n this.oldLocationHash = newFragment + newQueryStringSearch;\n }\n};\n\n/**\n * @private\n * Filtering query parameters to select only book search param (?q=foo)\n This needs to be updated/URL system modified if future query params are to be added\n * @param {string} url\n * @return {string}\n * */\nBookReader.prototype.urlParamsFiltersOnlySearch = function(url) {\n const params = new URLSearchParams(url);\n return params.has('q') ? `?${new URLSearchParams({ q: params.get('q') })}` : '';\n};\n\n\n/**\n * Will read either the hash or URL and return the bookreader fragment\n * @return {string}\n */\nBookReader.prototype.urlReadFragment = function() {\n const { urlMode, urlHistoryBasePath } = this.options;\n if (urlMode === 'history') {\n return window.location.pathname.substr(urlHistoryBasePath.length);\n } else {\n return this.urlPlugin.getHash();\n }\n};\n\n/**\n * Will read the hash return the bookreader fragment\n * @return {string}\n */\nBookReader.prototype.urlReadHashFragment = function() {\n return window.location.hash.substr(1);\n};\nexport class BookreaderUrlPlugin extends BookReader {\n init() {\n if (this.options.enableUrlPlugin) {\n this.urlPlugin = new UrlPlugin(this.options);\n\n this.on(BookReader.eventNames.PostInit, () => {\n if (this.options.urlMode === 'hash') {\n this.urlPlugin.listenForHashChanges();\n }\n });\n }\n\n super.init();\n }\n}\n\nwindow.BookReader = BookreaderUrlPlugin;\nexport default BookreaderUrlPlugin;\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/url-constructor-detection');\nvar globalThis = require('../internals/global-this');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar percentCoding = require('../internals/url-percent-coding');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar percentDecode = percentCoding.decode;\nvar percentEncode = percentCoding.encode;\n\nvar NativeURL = globalThis.URL;\nvar TypeError = globalThis.TypeError;\nvar parseInt = globalThis.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar fromCharCode = String.fromCharCode;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.1.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\nvar ALPHANUMERIC_PLUS_MINUS_DOT = /[\\d+\\-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\n// https://url.spec.whatwg.org/#forbidden-domain-code-point\nvar FORBIDDEN_DOMAIN_CODE_POINT = /[\\u0000-\\u0020#%/:<>?@[\\\\\\]^|\\u007F]/;\n// https://url.spec.whatwg.org/#forbidden-host-code-point\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+/;\nvar TRAILING_C0_CONTROL_OR_SPACE = /(^|[^\\u0000-\\u0020])[\\u0000-\\u0020]+$/;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\nvar NON_ASCII = /[^\\u0000-\\u007F]/;\n/* eslint-enable regexp/no-control-character -- safe */\n// UTS#46 maps these onto a string containing a forbidden domain code point, so a domain\n// holding one is rejected - listing them is far smaller than shipping the mapping table\nvar MAPPED_ONTO_FORBIDDEN = '\\u00A8\\u00AF\\u00B4\\u00B8\\u02D8\\u02D9\\u02DA\\u02DB\\u02DC\\u02DD\\u037A\\u0384\\u0385\\u1FBD\\u1FBF\\u1FC0'\n + '\\u1FC1\\u1FCD\\u1FCE\\u1FCF\\u1FDD\\u1FDE\\u1FDF\\u1FED\\u1FEE\\u1FFD\\u1FFE\\u2017\\u203E\\u2047\\u2048\\u2049'\n + '\\u2100\\u2101\\u2105\\u2106\\u2A74\\u309B\\u309C\\uFC5E\\uFC5F\\uFC60\\uFC61\\uFC62\\uFC63\\uFDFA\\uFDFB\\uFE13'\n + '\\uFE16\\uFE47\\uFE48\\uFE49\\uFE4A\\uFE4B\\uFE4C\\uFE55\\uFE56\\uFE5F\\uFE64\\uFE65\\uFE68\\uFE6A\\uFE6B\\uFE70'\n + '\\uFE72\\uFE74\\uFE76\\uFE78\\uFE7A\\uFE7C\\uFE7E\\uFFE3';\n// eslint-disable-next-line no-unassigned-vars -- expected `undefined` value\nvar EOF;\n\n// https://www.unicode.org/reports/tr46/#IDNA_Mapping_Table\nvar isIgnoredCodePoint = function (code) {\n return code === 0xAD || code === 0x34F || code === 0x200B || code === 0x3164\n || code === 0xFEFF || code === 0xFFA0\n || (code >= 0x115F && code <= 0x1160)\n || (code >= 0x17B4 && code <= 0x17B5)\n || (code >= 0x180B && code <= 0x180F)\n || (code >= 0x2060 && code <= 0x2064) || (code >= 0x206A && code <= 0x206F)\n || (code >= 0xFE00 && code <= 0xFE0F)\n || (code >= 0xE0100 && code <= 0xE01EF);\n};\n\nvar isDisallowedCodePoint = function (code) {\n return code === 0xFFFD\n // lone surrogate - a matched pair is a single code point and never lands here\n || (code >= 0xD800 && code <= 0xDFFF)\n // C1 controls\n || (code >= 0x80 && code <= 0x9F)\n // line and paragraph separators, bidirectional formatting characters\n || (code >= 0x200E && code <= 0x200F) || (code >= 0x2028 && code <= 0x2029)\n || (code >= 0x202A && code <= 0x202E) || (code >= 0x2065 && code <= 0x2069)\n // noncharacters\n || (code >= 0xFDD0 && code <= 0xFDEF) || (code & 0xFFFE) === 0xFFFE\n // private use\n || (code >= 0xE000 && code <= 0xF8FF) || (code >= 0xF0000 && code <= 0x10FFFD);\n};\n\nvar mapCodePoint = function (code) {\n // full-width forms\n if (code >= 0xFF01 && code <= 0xFF5E) return code - 0xFEE0;\n // spaces and the listed code points collapse onto a forbidden domain code point; a space\n // stands in for the real mapping since either way the domain is rejected\n if (code === 0xA0 || code === 0x1680 || code === 0x202F || code === 0x205F || code === 0x3000) return 0x20;\n if (code >= 0x2000 && code <= 0x200A) return 0x20;\n // the list holds no supplementary code point, and `fromCharCode` would truncate one\n if (code <= 0xFFFF && stringIndexOf(MAPPED_ONTO_FORBIDDEN, fromCharCode(code)) > -1) return 0x20;\n return code;\n};\n\n// https://url.spec.whatwg.org/#concept-domain-to-ascii\n// A subset of UTS#46 processing - the full mapping table is too large to ship. Covered are the\n// entries cheap to express: the ignored and disallowed code points, full-width forms, and the\n// code points mapping onto a forbidden domain code point. Not covered, so such domains are\n// punycoded rather than mapped or rejected: unassigned code points, half-width forms,\n// compatibility decompositions, NFC, CheckJoiners, CheckBidi, and labels that already arrive\n// punycoded - those are not decoded back for validation.\nvar domainToASCII = function (domain) {\n // every mapped, ignored and disallowed code point is non-ASCII, so an ASCII domain\n // needs the punycode step only - this keeps the common case off the slow path\n if (!exec(NON_ASCII, domain)) return domain === '' ? null : toASCII(domain);\n var codePoints = arrayFrom(domain);\n var result = '';\n var index, code, mapped;\n for (index = 0; index < codePoints.length; index++) {\n code = codeAt(codePoints[index], 0);\n if (isDisallowedCodePoint(code)) return null;\n if (isIgnoredCodePoint(code)) continue;\n mapped = mapCodePoint(code);\n result += mapped === code ? codePoints[index] : fromCharCode(mapped);\n }\n return result === '' ? null : toASCII(result);\n};\n\n// https://url.spec.whatwg.org/#ends-in-a-number-checker\nvar endsInNumber = function (input) {\n var parts = split(input, '.');\n var last, hexPart;\n if (parts[parts.length - 1] === '') {\n if (parts.length === 1) return false;\n parts.length--;\n }\n last = parts[parts.length - 1];\n if (exec(DEC, last)) return true;\n if (exec(HEX_START, last)) {\n hexPart = stringSlice(last, 2);\n return hexPart === '' || !!exec(HEX, hexPart);\n }\n return false;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv4-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] === '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return null;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part === '') return null;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) === '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix === 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix === 10 ? DEC : radix === 8 ? OCT : HEX, part)) return null;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index === partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() === ':') {\n if (charAt(input, 1) !== ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex === 8) return;\n if (chr() === ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() === '.') {\n if (length === 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() === '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece === 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen === 2 || numbersSeen === 4) pieceIndex++;\n }\n if (numbersSeen !== 4) return;\n break;\n } else if (chr() === ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex !== 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex !== 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n return currLength > maxLength ? currStart : maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n }\n return join(result, '.');\n }\n\n // ipv6\n if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n }\n\n return host;\n};\n\n// https://url.spec.whatwg.org/#c0-control-percent-encode-set\n// empty because the set is the code points outside U+0020..U+007E, which the range\n// check below already covers; the sets extending it only add code points inside it\nvar C0ControlPercentEncodeSet = {};\nvar queryPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '#': 1, '<': 1, '>': 1\n});\nvar specialQueryPercentEncodeSet = assign({}, queryPercentEncodeSet, {\n \"'\": 1\n});\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1, '^': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\n// https://url.spec.whatwg.org/#string-utf-8-percent-encode\nvar utf8PercentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n // percent-encoding leaves ' alone, but it belongs to the special-query percent-encode set\n return code >= 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : chr === \"'\" && hasOwn(set, chr) ? '%27' : percentEncode(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length === 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) === ':' || (!normalized && second === '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length === 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw new TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw new TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_C0_CONTROL_OR_SPACE, '');\n input = replace(input, TRAILING_C0_CONTROL_OR_SPACE, '$1');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && exec(ALPHANUMERIC_PLUS_MINUS_DOT, chr)) {\n buffer += toLowerCase(chr);\n } else if (chr === ':') {\n if (stateOverride && (\n (url.isSpecial() !== hasOwn(specialSchemes, buffer)) ||\n (buffer === 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme === 'file' && url.host === '')\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] === url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme === 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme === url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] === '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr !== '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr === '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme === 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr === '/' && codePoints[pointer + 1] === '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr === '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr === EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr === '/' || (chr === '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr === '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n if (url.path.length) url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr === '/' || chr === '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr === '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr !== '/' || codePoints[pointer + 1] !== '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr !== '/' && chr !== '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr === '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint === ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = utf8PercentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer === '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme === 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr === ':' && !seenBracket) {\n if (buffer === '') return INVALID_HOST;\n if (stateOverride === HOSTNAME) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer === '') return INVALID_HOST;\n if (stateOverride && buffer === '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr === '[') seenBracket = true;\n else if (chr === ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr === EOF || chr === '/' || chr === '?' || chr === '#' ||\n (chr === '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer !== '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n url.host = '';\n if (chr === '/' || chr === '\\\\') state = FILE_SLASH;\n else if (base && base.scheme === 'file') {\n switch (chr) {\n case EOF:\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n break;\n case '?':\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n break;\n case '#':\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n break;\n default:\n url.host = base.host;\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr === '/' || chr === '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme === 'file') {\n url.host = base.host;\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))\n && isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr === EOF || chr === '/' || chr === '\\\\' || chr === '?' || chr === '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer === '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host === 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr !== '/' && chr !== '\\\\') continue;\n } else if (!stateOverride && chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n state = PATH;\n if (chr !== '/') continue;\n } break;\n\n case PATH:\n if (\n chr === EOF || chr === '/' ||\n (chr === '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr === '?' || chr === '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr !== '/' && !(chr === '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme === 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n // eslint-disable-next-line max-depth -- ok\n if (url.host !== null && url.host !== '') url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme === 'file' && (chr === EOF || chr === '?' || chr === '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += utf8PercentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr === '?') {\n url.query = '';\n state = QUERY;\n } else if (chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n if (chr === ' ') {\n url.path[0] += codePoints[pointer + 1] === '?' || codePoints[pointer + 1] === '#' ? '%20' : ' ';\n } else {\n url.path[0] += utf8PercentEncode(chr, C0ControlPercentEncodeSet);\n }\n } break;\n\n case QUERY:\n if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n url.query += utf8PercentEncode(chr, url.isSpecial() ? specialQueryPercentEncodeSet : queryPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr !== EOF) url.fragment += utf8PercentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) === '[') {\n if (charAt(input, input.length - 1) !== ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += utf8PercentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = domainToASCII(percentDecode(input));\n if (input === null || exec(FORBIDDEN_DOMAIN_CODE_POINT, input)) return INVALID_HOST;\n if (endsInNumber(input)) {\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n } else {\n this.host = input;\n }\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return this.host === null || this.host === '' || this.cannotBeABaseURL || this.scheme === 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username !== '' || this.password !== '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme !== 'file' || pathSize !== 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme === 'file') output += '//';\n if (host === null && !url.cannotBeABaseURL && path.length > 1 && path[0] === '') output += '/.';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw new TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme === 'blob') try {\n return new URLConstructor(this.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme === 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += utf8PercentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += utf8PercentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port === '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search === '') {\n this.query = null;\n } else {\n if (charAt(search, 0) === '?') search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash === '') {\n this.fragment = null;\n return;\n }\n if (charAt(hash, 0) === '#') hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar getBuiltInPrototypeMethod = require('../internals/get-built-in-prototype-method');\n\nvar toString = getBuiltInPrototypeMethod('URL', 'toString');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n toJSON: function toJSON() {\n return call(toString, this);\n }\n});\n","/**\n * @typedef {Object} UrlSchemaEntry\n * @property {string} name\n * @property {'path' | 'query_param'} position\n * @property {string} [default]\n * @property {string} [deprecated_for]\n * @property {boolean} [readOnly] - If true, the param is read from the URL but never written back\n */\n\nexport class UrlPlugin {\n constructor(options = {}) {\n this.bookReaderOptions = options;\n\n // the canonical order of elements is important in the path and query string\n /** @type {UrlSchemaEntry[]} */\n this.urlSchema = [\n { name: 'page', position: 'path', default: 'n0' },\n { name: 'mode', position: 'path', default: '2up' },\n { name: 'search', position: 'path', deprecated_for: 'q' },\n { name: 'q', position: 'query_param' },\n { name: 'sort', position: 'query_param' },\n { name: 'view', position: 'query_param' },\n { name: 'admin', position: 'query_param' },\n { name: 'focus', position: 'query_param', readOnly: true },\n ];\n\n this.urlState = {};\n this.urlMode = this.bookReaderOptions.urlMode || 'hash';\n this.urlHistoryBasePath = this.bookReaderOptions.urlHistoryBasePath || '/';\n this.urlLocationPollId = null;\n this.oldLocationHash = null;\n this.oldUserHash = null;\n }\n\n /**\n * Parse JSON object URL state to string format\n * Arrange path names in an order that it is positioned on the urlSchema\n * @param {Object} urlState\n * @returns {string}\n */\n urlStateToUrlString(urlState) {\n const searchParams = new URLSearchParams();\n const pathParams = {};\n\n Object.keys(urlState).forEach(key => {\n let schema = this.urlSchema.find(schema => schema.name === key);\n if (schema?.deprecated_for) {\n schema = this.urlSchema.find(schemaKey => schemaKey.name === schema.deprecated_for);\n }\n if (schema?.readOnly) return;\n if (schema?.position == 'path') {\n pathParams[schema?.name] = urlState[key];\n } else {\n searchParams.append(schema?.name || key, urlState[key]);\n }\n });\n\n const strPathParams = this.urlSchema\n .filter(s => s.position == 'path')\n .map(schema => pathParams[schema.name] ? `${schema.name}/${encodeURIComponent(pathParams[schema.name])}` : '')\n .join('/');\n\n // replace consecutive slashes with a single slash + remove trailing slashes\n const strStrippedTrailingSlash = `${strPathParams.replace(/\\/+/g, '/').replace(/\\/+$/, '')}`;\n const concatenatedPath = `${strStrippedTrailingSlash}?${searchParams.toString()}`;\n return searchParams.toString() ? concatenatedPath : `${strStrippedTrailingSlash}`;\n }\n\n /**\n * Parse string URL and add it in the current urlState\n * Example:\n * /page/n7/mode/2up => {page: 'n7', mode: '2up'}\n * /page/n7/mode/2up/search/hello => {page: 'n7', mode: '2up', q: 'hello'}\n * @param {string} urlString\n * @returns {object}\n */\n urlStringToUrlState(urlString) {\n const urlState = {};\n\n // Fetch searchParams from given {str}\n // Note: whole URL path is needed for URL parsing\n const urlPath = new URL(urlString, 'http://example.com');\n const urlSearchParamsObj = Object.fromEntries(urlPath.searchParams.entries());\n const splitUrlMatches = urlPath.pathname.match(/[^\\\\/]+\\/[^\\\\/]+/g);\n const urlStrSplitSlashObj = splitUrlMatches ? Object.fromEntries(splitUrlMatches.map(x => x.split('/'))) : {};\n\n const doesKeyExists = (_object, _key) => {\n return Object.keys(_object).some(value => value == _key);\n };\n\n // Add path objects to urlState\n this.urlSchema\n .filter(schema => schema.position == 'path')\n .forEach(schema => {\n const hasPropertyKey = doesKeyExists(urlStrSplitSlashObj, schema.name);\n const hasDeprecatedKey = doesKeyExists(schema, 'deprecated_for') && hasPropertyKey;\n\n // Not in the URL\n if (!hasPropertyKey && !hasDeprecatedKey) {\n return;\n }\n\n const urlStateParam = hasDeprecatedKey ? schema.deprecated_for : schema.name;\n urlState[urlStateParam] = decodeURIComponent(urlStrSplitSlashObj[schema.name]);\n });\n\n // Add searchParams to urlState\n Object.entries(urlSearchParamsObj).forEach(([key, value]) => {\n urlState[key] = value;\n });\n\n return urlState;\n }\n\n /**\n * Add or update key-value to the urlState\n * @param {string} key\n * @param {string} val\n */\n setUrlParam(key, value) {\n this.urlState[key] = value;\n\n this.pushToAddressBar();\n }\n\n /**\n * Delete key-value to the urlState\n * @param {string} key\n */\n removeUrlParam(key) {\n delete this.urlState[key];\n\n this.pushToAddressBar();\n }\n\n /**\n * Get key-value from the urlState\n * @param {string} key\n * @return {string}\n */\n getUrlParam(key) {\n return this.urlState[key];\n }\n\n /**\n * Push URL params to addressbar\n */\n pushToAddressBar() {\n const urlStrPath = this.urlStateToUrlString(this.urlState);\n const concatenatedPath = urlStrPath !== '/' ? urlStrPath : '';\n if (this.urlMode == 'history') {\n if (!window.history || !window.history.replaceState) {\n this.options.urlMode = 'hash';\n } else {\n const newUrlPath = `${this.urlHistoryBasePath}${concatenatedPath}`.trim().replace(/(\\/+)/g, '/');\n try {\n window.history.replaceState({}, null, newUrlPath);\n } catch (e) {\n // DOMException on Chrome when in sandboxed iframe\n this.urlMode = 'hash';\n }\n }\n }\n\n if (this.urlMode == 'hash') {\n // Built from location.href so a <base href> on the page can't change\n // the pathname, and replace() so page flips don't add history entries.\n const [baseHref] = window.location.href.split('#');\n window.location.replace(`${baseHref}#${concatenatedPath}`);\n }\n this.oldLocationHash = urlStrPath;\n }\n\n /**\n * Get the url and check if it has changed\n * If it was changeed, update the urlState\n */\n listenForHashChanges() {\n this.oldLocationHash = this.getHash();\n if (this.urlLocationPollId) {\n clearInterval(this.urlLocationPollId);\n this.urlLocationPollId = null;\n }\n\n // check if the URL changes\n const updateHash = () => {\n const newFragment = this.getHash();\n const hasFragmentChange = newFragment != this.oldLocationHash;\n\n if (!hasFragmentChange) { return; }\n\n this.urlState = this.urlStringToUrlState(newFragment);\n };\n this.urlLocationPollId = setInterval(updateHash, 500);\n }\n\n /**\n * Will read either the hash or URL and return the bookreader fragment\n */\n pullFromAddressBar(location = window.location) {\n const path = this.urlMode === 'history'\n ? (location.pathname.substr(this.urlHistoryBasePath.length) + location.search)\n : location.hash.substr(1);\n this.urlState = this.urlStringToUrlState(path);\n }\n\n /**\n * Get the hash out of the current URL\n */\n getHash() {\n return window.location.hash.slice(1);\n }\n}\n"],"names":["bind","__webpack_require__","call","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","isConstructor","lengthOfArrayLike","createProperty","setArrayLength","getIterator","getIteratorMethod","iteratorClose","doesNotExceedSafeInteger","$Array","Array","module","exports","arrayLike","IS_CONSTRUCTOR","this","argumentsLength","arguments","length","mapfn","undefined","mapping","result","step","iterator","next","value","O","iteratorMethod","index","done","error","DESCRIPTORS","isArray","$TypeError","TypeError","getOwnPropertyDescriptor","Object","SILENT_ON_NON_WRITABLE_LENGTH_SET","defineProperty","writable","anObject","fn","ENTRIES","globalThis","CONSTRUCTOR","METHOD","Constructor","Prototype","prototype","uncurryThis","fails","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","IndexedObject","$assign","assign","concat","b","enumerable","get","A","B","symbol","Symbol","alphabet","split","forEach","chr","join","target","source","T","getOwnPropertySymbols","f","propertyIsEnumerable","key","S","keys","j","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","$RangeError","RangeError","exec","floor","Math","fromCharCode","String","charCodeAt","push","replace","toLowerCase","digitToBasic","digit","adapt","delta","numPoints","firstTime","k","baseMinusTMin","base","encode","input","output","string","counter","extra","ucs2decode","i","currentValue","inputLength","n","bias","basicLength","handledCPCount","m","handledCPCountPlusOne","q","t","qMinusT","baseMinusT","label","encoded","labels","PROPER_FUNCTION_NAME","whitespaces","METHOD_NAME","name","requireObjectCoercible","toString","ltrim","RegExp","rtrim","createMethod","TYPE","$this","start","end","Bq","$","iterate","stat","fromEntries","iterable","obj","v","AS_ENTRIES","$trim","proto","forced","forcedStringTrimMethod","trim","super_","charAt","string_multibyte_namespaceFn","to_string_namespaceFn","InternalStateModule","internal_state_namespaceFn","defineIterator","createIterResultObject","STRING_ITERATOR","setInternalState","set","getInternalState","getterFor","iterated","type","point","state","es_string_iterator_namespaceFn","EOF","export_namespaceFn","USE_NATIVE_URL","defineBuiltIn","defineBuiltInAccessor","anInstance","hasOwn","arrayFrom","arraySlice","codeAt","toASCII","percentCoding","$toString","setToStringTag","validateArgumentsLength","URLSearchParamsModule","getInternalURLState","URLSearchParams","getInternalSearchParamsState","getState","percentDecode","decode","percentEncode","NativeURL","URL","parseInt","pow","numberToString","pop","shift","stringIndexOf","indexOf","stringSlice","slice","unshift","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC_PLUS_MINUS_DOT","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_DOMAIN_CODE_POINT","FORBIDDEN_HOST_CODE_POINT","LEADING_C0_CONTROL_OR_SPACE","TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","NON_ASCII","isIgnoredCodePoint","code","isDisallowedCodePoint","mapCodePoint","serializeHost","host","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","queryPercentEncodeSet","specialQueryPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","utf8PercentEncode","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","second","startsWithWindowsDriveLetter","third","isSingleDot","segment","isDoubleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","url","isBase","baseState","failure","searchParams","urlString","parse","bindURL","stateOverride","codePoints","bufferCodePoints","pointer","buffer","seenAt","seenBracket","seenPasswordToken","scheme","username","password","port","path","query","fragment","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","number","swaps","swap","address","pieceIndex","parseIPv6","domain","mapped","domainToASCII","last","hexPart","parts","endsInNumber","partsLength","numbers","part","radix","ipv4","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","serialize","setHref","href","update","getOrigin","URLConstructor","origin","getProtocol","setProtocol","protocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","pathname","getSearch","setSearch","search","getSearchParams","facade","getHash","setHash","hash","that","URLPrototype","accessorDescriptor","getter","setter","configurable","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","global","constructor","sham","web_url_constructor_namespaceFn","getBuiltInPrototypeMethod","toJSON","UrlPlugin","options","bookReaderOptions","urlSchema","position","default","deprecated_for","readOnly","urlState","urlMode","urlHistoryBasePath","urlLocationPollId","oldLocationHash","oldUserHash","urlStateToUrlString","pathParams","_schema","_schema2","_schema3","schema","find","_schema4","_schema5","schemaKey","append","strPathParams","filter","s","map","encodeURIComponent","strStrippedTrailingSlash","concatenatedPath","urlStringToUrlState","urlPath","urlSearchParamsObj","entries","splitUrlMatches","match","urlStrSplitSlashObj","x","doesKeyExists","_object","_key","some","hasPropertyKey","hasDeprecatedKey","urlStateParam","decodeURIComponent","_ref","_ref2","_slicedToArray","setUrlParam","pushToAddressBar","removeUrlParam","getUrlParam","urlStrPath","window","history","replaceState","newUrlPath","e","baseHref","location","listenForHashChanges","clearInterval","setInterval","updateHash","newFragment","pullFromAddressBar","substr","extend","BookReader","defaultOptions","enableUrlPlugin","bookId","defaults","updateWindowTitle","urlTrackedParams","urlTrackIndex0","setup","locationPollId","init","eventNames","PostInit","_this$options","document","title","shortTitle","bookTitle","urlStartLocationPolling","fragmentChange","urlUpdateFragment","maximumCharacters","urlReadFragment","params","paramsFromFragment","updateParams","updateFromParams","_this$plugins$autopla","trigger","stop","animating","plugins","autoplay","animationFinishedCallback","allParams","paramsFromCurrent","_this$options2","page","reduce","validParams","paramName","fragmentFromParams","newFragmentWithSlash","currFragment","currQueryString","getLocationSearch","newQueryString","queryStringFromParams","baseWithoutSlash","newQueryStringSearch","urlParamsFiltersOnlySearch","readQueryString","has","_this$options3","urlPlugin","urlReadHashFragment","BookreaderUrlPlugin","on","super","plugin_url"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ export const __webpack_esm_ids__=[466];export const __webpack_esm_modules__={706:(e,t,n)=>{var o=n(350).PROPER,r=n(9039),l=n(7452);e.exports=function(e){return r(function(){return!!l[e]()||"​…᠎"!=="​…᠎"[e]()||o&&l[e].name!==e})}},3802:(e,t,n)=>{var o=n(9504),r=n(7750),l=n(655),s=n(7452),i=o("".replace),u=RegExp("^["+s+"]+"),c=RegExp("(^|[^"+s+"])["+s+"]+$"),a=function(e){return function(t){var n=l(r(t));return 1&e&&(n=i(n,u,"")),2&e&&(n=i(n,c,"$1")),n}};e.exports={start:a(1),end:a(2),Bq:a(3)}},7452:e=>{e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},2762:(e,t,n)=>{var o=n(6518),r=n(3802).Bq;o({target:"String",proto:!0,forced:n(706)("trim")},{trim:function(){return r(this)}})},8884:(e,t,n)=>{n.d(t,{Eh:()=>u,Fr:()=>p,Kn:()=>s,OL:()=>i,Zx:()=>d,lh:()=>c,wB:()=>a}),n(2762);var o,r=n(1669),l=n(1669);if(!p()){const e=".bookreader_vendor-fullscreen";r.extend(BookReader.defaultOptions,{enableVendorFullscreenPlugin:!0}),BookReader.prototype.setup=(o=BookReader.prototype.setup,function(e){o.call(this,e),this.isVendorFullscreenActive=!1}),BookReader.prototype.getInitialMode=function(e){return function(t){let n=e.call(this,t);return this.isVendorFullscreenActive&&(n=this.constMode1up),n}}(BookReader.prototype.getInitialMode),BookReader.prototype.init=function(e){return function(){e.call(this),a()&&d(this,e=>{e.data.resize(),e.data.updateBrClasses();const t=l("#cboxOverlay"),n=l("#colorbox");i()?l(s()).append(t).append(n):l(document.body).append(t).append(n)})}}(BookReader.prototype.init),BookReader.prototype.enterFullWindow=function(){this.refs.$brContainer.css("opacity",0),l(window).width()<=this.onePageMinBreakpoint&&this.switchMode(this.constMode1up),this.isVendorFullscreenActive=!0,this.updateBrClasses(),this.resize(),this.jumpToIndex(this.currentIndex()),this.refs.$brContainer.animate({opacity:1},400,"linear"),l(document).on("keyup.".concat(e),e=>{27===e.keyCode&&this.exitFullScreen()})},BookReader.prototype.exitFullWindow=function(){this.refs.$brContainer.css("opacity",0),l(document).off("keyup"+e),this.isFullscreenActive=!1,this.updateBrClasses(),this.resize(),this.refs.$brContainer.animate({opacity:1},400,"linear")},BookReader.prototype.isFullscreen=function(){return i()||this.isVendorFullscreenActive},BookReader.prototype.toggleFullscreen=function(){this.isFullscreen()?a()?u():this.exitFullWindow():a()?c(this.refs.$br[0]):this.enterFullWindow()},BookReader.util.isMobile=p,BookReader.util.getFullscreenElement=s,BookReader.util.bindFullscreenChangeListener=d,BookReader.util.fullscreenAllowed=a,BookReader.util.requestFullscreen=c,BookReader.util.exitFullscreen=u,BookReader.util.isFullscreenActive=i}function s(){return document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement}function i(){return null!=s()}function u(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()}function c(e){e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()}function a(){return document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullScreenEnabled}function d(e,t){const n="fullscreenchange ",o=(n+["webkit","moz","ms"].join(n)+n).trim();l(document).on(o,e,t)}function p(){return void 0!==window.orientation||-1!==navigator.userAgent.indexOf("IEMobile")}}};import{__webpack_require__ as e}from"../ia-bookreader.js";e.C({__webpack_esm_ids__,__webpack_esm_modules__});var t=e(8884);const n=t.Zx,o=t.Eh,r=t.wB,l=t.Kn,s=t.OL,i=t.Fr,u=t.lh;export{n as bindFullscreenChangeListener,o as exitFullscreen,r as fullscreenAllowed,l as getFullscreenElement,s as isFullscreenActive,i as isMobile,u as requestFullscreen};
2
+ //# sourceMappingURL=plugin.vendor-fullscreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins/plugin.vendor-fullscreen.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/whitespaces.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.vendor-fullscreen.js"],"sourcesContent":["'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '$1');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","'use strict';\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","/* global BookReader */\n\n/**\n * Toggles browser's native fullscreen mode if available device is not mobile\n */\nif (!isMobile()) {\n const EVENT_NAMESPACE = '.bookreader_vendor-fullscreen';\n\n jQuery.extend(BookReader.defaultOptions, {\n /** @type {boolean} */\n enableVendorFullscreenPlugin: true,\n });\n\n /** @override */\n BookReader.prototype.setup = (function(super_) {\n return function(options) {\n super_.call(this, options);\n\n this.isVendorFullscreenActive = false;\n };\n })(BookReader.prototype.setup);\n\n /** @override */\n BookReader.prototype.getInitialMode = (function(super_) {\n return function(params) {\n let nextMode = super_.call(this, params);\n if (this.isVendorFullscreenActive) {\n nextMode = this.constMode1up;\n }\n return nextMode;\n };\n })(BookReader.prototype.getInitialMode);\n\n /** @override */\n BookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n\n if (!fullscreenAllowed()) {\n return;\n }\n // In fullscreen mode the colorbox and overlay need to be inside the fullscreen element to display properly.\n bindFullscreenChangeListener(this, (e) => {\n e.data.resize();\n e.data.updateBrClasses();\n const cboxOverlay = $('#cboxOverlay');\n const cbox = $('#colorbox');\n if (isFullscreenActive()) {\n // In full screen mode, the colorbox and overlay need\n // to be children of the fullscreen element to display properly.\n const $fullscreen = $(getFullscreenElement());\n $fullscreen.append(cboxOverlay).append(cbox);\n } else {\n // In non-fullscreen mode, the colorbox and overlay need\n // to be children of the main document body.\n $(document.body).append(cboxOverlay).append(cbox);\n }\n });\n };\n })(BookReader.prototype.init);\n\n /**\n * Start fullscreen mode\n */\n BookReader.prototype.enterFullWindow = function() {\n this.refs.$brContainer.css('opacity', 0);\n\n const windowWidth = $(window).width();\n if (windowWidth <= this.onePageMinBreakpoint) {\n this.switchMode(this.constMode1up);\n }\n\n this.isVendorFullscreenActive = true;\n this.updateBrClasses();\n\n this.resize();\n this.jumpToIndex(this.currentIndex());\n\n this.refs.$brContainer.animate({ opacity: 1 }, 400, 'linear');\n\n $(document).on(`keyup.${EVENT_NAMESPACE}`, e => {\n if (e.keyCode === 27) this.exitFullScreen();\n });\n };\n\n /**\n * Exit from fullscreen mode\n */\n BookReader.prototype.exitFullWindow = function() {\n this.refs.$brContainer.css('opacity', 0);\n\n $(document).off('keyup' + EVENT_NAMESPACE);\n\n this.isFullscreenActive = false;\n this.updateBrClasses();\n\n this.resize();\n this.refs.$brContainer.animate({ opacity: 1 }, 400, 'linear');\n };\n\n /**\n * Returns true if fullscreen mode is enabled\n *\n * @returns {boolean}\n */\n BookReader.prototype.isFullscreen = function() {\n return isFullscreenActive() || this.isVendorFullscreenActive;\n };\n\n /**\n * Toggle screen\n */\n BookReader.prototype.toggleFullscreen = function() {\n if (this.isFullscreen()) {\n if (fullscreenAllowed()) {\n exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n } else {\n if (fullscreenAllowed()) {\n requestFullscreen(this.refs.$br[0]);\n } else {\n this.enterFullWindow();\n }\n }\n };\n\n /** @deprecated */\n BookReader.util.isMobile = isMobile;\n\n /** @deprecated */\n BookReader.util.getFullscreenElement = getFullscreenElement;\n\n /** @deprecated */\n BookReader.util.bindFullscreenChangeListener = bindFullscreenChangeListener;\n\n /** @deprecated */\n BookReader.util.fullscreenAllowed = fullscreenAllowed;\n\n /** @deprecated */\n BookReader.util.requestFullscreen = requestFullscreen;\n\n /** @deprecated */\n BookReader.util.exitFullscreen = exitFullscreen;\n\n /** @deprecated */\n BookReader.util.isFullscreenActive = isFullscreenActive;\n}\n\n\n/**\n * Returns the DOM element being used for fullscreen.\n *\n * @returns {HTMLElement}\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/fullscreenElement\n */\nexport function getFullscreenElement() {\n return document.fullscreenElement ||\n document.webkitFullscreenElement ||\n document.mozFullScreenElement ||\n document.msFullscreenElement;\n}\n\n/**\n * Returns true if the document is in fullscreen mode.\n *\n * @returns {boolean}\n */\nexport function isFullscreenActive() {\n const fullscreenElement = getFullscreenElement();\n return fullscreenElement !== null && fullscreenElement !== undefined;\n}\n\n/**\n * Exits fullscreen mode.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/exitFullscreen\n */\nexport function exitFullscreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n}\n\n/**\n * Requests fullscreen mode for the given element\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullscreen\n */\nexport function requestFullscreen(element) {\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n}\n\n/**\n * Returns true if fullscreen mode is allowed on this device and document.\n *\n * @returns {boolean}\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/fullscreenEnabled\n */\nexport function fullscreenAllowed() {\n return (document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullScreenEnabled);\n}\n\n/**\n * jQuery-style binding to a fullscreenchange event.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/fullscreenchange_event\n */\nexport function bindFullscreenChangeListener(\n data, fullscreenchangeListener,\n) {\n const event = 'fullscreenchange ';\n const vendor_prefixes = [\n 'webkit',\n 'moz',\n 'ms',\n ];\n const all_events = (event + vendor_prefixes.join(event) + event).trim();\n $(document).on(all_events, data, fullscreenchangeListener);\n}\n\n/**\n * Returns true if current device is mobile\n *\n * @returns {boolean}\n */\nexport function isMobile() {\n return (typeof window.orientation !== 'undefined') || (navigator.userAgent.indexOf('IEMobile') !== -1);\n}\n"],"names":["PROPER_FUNCTION_NAME","__webpack_require__","fails","whitespaces","module","exports","METHOD_NAME","name","uncurryThis","requireObjectCoercible","toString","replace","ltrim","RegExp","rtrim","createMethod","TYPE","$this","string","start","end","Bq","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","this","super_","isMobile","EVENT_NAMESPACE","jQuery","extend","BookReader","defaultOptions","enableVendorFullscreenPlugin","prototype","setup","options","call","isVendorFullscreenActive","getInitialMode","params","nextMode","constMode1up","init","fullscreenAllowed","bindFullscreenChangeListener","e","data","resize","updateBrClasses","cboxOverlay","cbox","isFullscreenActive","getFullscreenElement","append","document","body","enterFullWindow","refs","$brContainer","css","window","width","onePageMinBreakpoint","switchMode","jumpToIndex","currentIndex","animate","opacity","on","concat","keyCode","exitFullScreen","exitFullWindow","off","isFullscreen","toggleFullscreen","exitFullscreen","requestFullscreen","$br","util","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","element","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullScreenEnabled","fullscreenchangeListener","event","all_events","join","orientation","navigator","userAgent","indexOf"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@internetarchive/bookreader",
3
- "version": "5.0.0-118-alpha2",
3
+ "version": "5.0.0-119",
4
4
  "description": "The Internet Archive BookReader.",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "BookReader/",
8
+ "dist/",
8
9
  "src/",
9
10
  "jsconfig.json"
10
11
  ],
@@ -15,7 +16,12 @@
15
16
  "publishConfig": {
16
17
  "access": "public"
17
18
  },
18
- "module": "src/ia-bookreader/ia-bookreader.js",
19
+ "module": "dist/esm/ia-bookreader.js",
20
+ "exports": {
21
+ ".": "./dist/esm/ia-bookreader.js",
22
+ "./esm/*": "./dist/esm/*",
23
+ "./*": "./*"
24
+ },
19
25
  "keywords": [
20
26
  "online",
21
27
  "bookreader",
@@ -60,37 +66,37 @@
60
66
  },
61
67
  "devDependencies": {
62
68
  "@babel/core": "7.29.7",
63
- "@babel/eslint-parser": "7.29.7",
69
+ "@babel/eslint-parser": "7.29.9",
64
70
  "@babel/plugin-proposal-class-properties": "7.18.6",
65
71
  "@babel/plugin-proposal-decorators": "7.29.7",
66
72
  "@babel/preset-env": "7.29.7",
67
73
  "@iiif/presentation-2": "1.0.4",
68
- "@iiif/presentation-3": "2.2.3",
74
+ "@iiif/presentation-3": "2.2.4",
69
75
  "@open-wc/testing-helpers": "3.0.1",
70
76
  "@types/jest": "30.0.0",
71
77
  "@webcomponents/webcomponentsjs": "2.6.0",
72
78
  "babel-loader": "10.1.1",
73
79
  "concurrently": "10.0.5",
74
80
  "core-js": "3.50.0",
75
- "cpx2": "9.0.0",
76
- "css-loader": "7.1.4",
81
+ "cpx2": "9.0.3",
82
+ "css-loader": "7.1.5",
77
83
  "eslint": "7.32.0",
78
84
  "eslint-plugin-no-jquery": "2.7.0",
79
85
  "eslint-plugin-testcafe": "0.2.1",
80
86
  "http-server": "14.1.1",
81
87
  "hypothesis": "1.1766.0",
82
- "jest": "30.4.2",
83
- "jest-environment-jsdom": "30.4.1",
88
+ "jest": "30.5.2",
89
+ "jest-environment-jsdom": "30.5.2",
84
90
  "live-server": "1.2.2",
85
91
  "regenerator-runtime": "0.14.1",
86
- "sass": "1.103.1",
87
- "sass-loader": "17.0.0",
92
+ "sass": "1.105.1",
93
+ "sass-loader": "17.0.1",
88
94
  "sinon": "22.1.0",
89
95
  "svgo": "4.1.0",
90
96
  "testcafe": "3.7.6",
91
97
  "testcafe-browser-provider-browserstack": "1.15.2",
92
- "webpack": "5.109.2",
93
- "webpack-cli": "7.2.2"
98
+ "webpack": "5.111.1",
99
+ "webpack-cli": "7.2.3"
94
100
  },
95
101
  "jest": {
96
102
  "testEnvironment": "jsdom",
@@ -125,7 +131,7 @@
125
131
  "build-js:watch": "npx webpack --mode=development --watch",
126
132
  "build-css": "npx sass --silence-deprecation=import --no-source-map ./src/css/BookReader.scss ./BookReader/BookReader.css",
127
133
  "build-css:watch": "npx sass --silence-deprecation=import --watch --no-source-map ./src/css/BookReader.scss ./BookReader/BookReader.css",
128
- "clean": "rm -r BookReader/ || true",
134
+ "clean": "rm -rf BookReader/ dist/",
129
135
  "lint": "npx eslint src/ tests/ *.js *.cjs",
130
136
  "lint:fix": "npx eslint --fix src/ tests/ *.js *.cjs",
131
137
  "serve": "npx http-server . --port=8000",
@@ -202,6 +202,8 @@ export class Navbar {
202
202
  * Switch navbar controls on mobile and desktop
203
203
  */
204
204
  switchNavbarControls() {
205
+ // `$root` is null when `showNavbar` is off
206
+ if (!this.$root) return;
205
207
  // we don't want navbar controls switching with liner-notes
206
208
  if (this.br.options.bookType !== 'linerNotes') {
207
209
  if (this.br.refs.$brContainer.prop('clientWidth') < 640) {
@@ -218,15 +220,12 @@ export class Navbar {
218
220
  */
219
221
  showMobileControls() {
220
222
  this.minimumControls.forEach((control) => {
221
- const element = document.querySelector(`.BRnavMain .controls .${control}`);
222
- if (element) element.classList.remove('hide');
223
+ this.$root.find(`.BRnavMain .controls .${control}`).removeClass('hide');
223
224
  });
224
225
  this.maximumControls.forEach((control) => {
225
- const element = document.querySelector(`.BRnavMain .controls .${control}`);
226
- if (element) element.classList.add('hide');
226
+ this.$root.find(`.BRnavMain .controls .${control}`).addClass('hide');
227
227
  });
228
- const mobileNav = document.querySelector(`.BRnavMobile`);
229
- if (mobileNav) mobileNav.classList.remove('hide');
228
+ this.$root.find('.BRnavMobile').removeClass('hide');
230
229
  }
231
230
 
232
231
  /**
@@ -235,15 +234,12 @@ export class Navbar {
235
234
  */
236
235
  showDesktopControls() {
237
236
  this.maximumControls.forEach((control) => {
238
- const element = document.querySelector(`.BRnavMain .controls .${control}`);
239
- if (element) element.classList.remove('hide');
237
+ this.$root.find(`.BRnavMain .controls .${control}`).removeClass('hide');
240
238
  });
241
239
  this.minimumControls.forEach((control) => {
242
- const element = document.querySelector(`.BRnavMain .controls .${control}`);
243
- if (element) element.classList.add('hide');
240
+ this.$root.find(`.BRnavMain .controls .${control}`).addClass('hide');
244
241
  });
245
- const mobileNav = document.querySelector(`.BRnavMobile`);
246
- if (mobileNav) mobileNav.classList.add('hide');
242
+ this.$root.find('.BRnavMobile').addClass('hide');
247
243
  }
248
244
 
249
245
  /**
@@ -128,7 +128,7 @@ export const DEFAULT_OPTIONS = {
128
128
  enableExperimentalControls: false,
129
129
 
130
130
  /** CSS selectors */
131
- /** Where BookReader mounts to */
131
+ /** @type {string | HTMLElement} Where BookReader mounts to; a CSS selector or an element */
132
132
  el: '#BookReader',
133
133
 
134
134
  /** @type {'lr' | 'rl'} Page progression */
@@ -1,4 +1,20 @@
1
1
  // @ts-check
2
+ /**
3
+ * Like `Selection.isCollapsed`, but checks the ranges too. WebKit reports
4
+ * `isCollapsed` as true for any selection inside a shadow root, even when
5
+ * it has text.
6
+ * https://bugs.webkit.org/show_bug.cgi?id=281587
7
+ * @param {Selection} selection
8
+ * @returns {boolean}
9
+ */
10
+ export function isSelectionCollapsed(selection) {
11
+ if (!selection.isCollapsed) return false;
12
+ for (let i = 0; i < selection.rangeCount; i++) {
13
+ if (!selection.getRangeAt(i).collapsed) return false;
14
+ }
15
+ return true;
16
+ }
17
+
2
18
  export class SelectionObserver {
3
19
  selecting = false;
4
20
  startedInSelector = false;
@@ -31,6 +47,7 @@ export class SelectionObserver {
31
47
  _onSelectionChange = () => {
32
48
  const sel = window.getSelection();
33
49
  if (!sel) return;
50
+ const isCollapsed = isSelectionCollapsed(sel);
34
51
 
35
52
  if (!this.selecting && sel.toString()) {
36
53
  const target = $(sel.anchorNode).closest(this.selector)[0];
@@ -41,12 +58,12 @@ export class SelectionObserver {
41
58
  this.handler('started', this.target);
42
59
  }
43
60
 
44
- if (this.selecting && this.lastKnownFocusNode != sel.focusNode && sel.toString() && !sel.isCollapsed) {
61
+ if (this.selecting && this.lastKnownFocusNode != sel.focusNode && sel.toString() && !isCollapsed) {
45
62
  this.lastKnownFocusNode = sel.focusNode;
46
63
  this.handler('changed', this.target);
47
64
  }
48
65
 
49
- if (this.selecting && (sel.isCollapsed || !sel.toString() || !$(sel.anchorNode).closest(this.selector)[0])) {
66
+ if (this.selecting && (isCollapsed || !sel.toString() || !$(sel.anchorNode).closest(this.selector)[0])) {
50
67
  this.selecting = false;
51
68
  this.lastKnownFocusNode = null;
52
69
  this.handler('cleared', this.target);
@@ -7,6 +7,8 @@
7
7
 
8
8
  import { LitElement, html, css } from 'lit';
9
9
 
10
+ // Loads the BookReader core (defines window.BookReader), so this is the one entrypoint
11
+ import '../BookReader.js';
10
12
  import '@internetarchive/ia-item-navigator';
11
13
  import '@internetarchive/modal-manager';
12
14
  import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
@@ -229,6 +231,8 @@ export class IaBookReader extends LitElement {
229
231
  /** Creates modal DOM & attaches to `<body>` */
230
232
  setModalManager() {
231
233
  /** @type {ModalManager} */
234
+ // modal-manager is a page-wide singleton appended to <body>, so a document-level lookup is intended
235
+ // eslint-disable-next-line no-restricted-properties
232
236
  let modalManager = document.querySelector('modal-manager');
233
237
  if (!modalManager) {
234
238
  modalManager = /** @type {ModalManager} */(document.createElement('modal-manager'));
@@ -340,7 +344,7 @@ export class IaBookReader extends LitElement {
340
344
 
341
345
  /** gets element that houses the bookreader in light dom */
342
346
  get mainBRContainer() {
343
- return document.querySelector(this.bookreader?.el);
347
+ return this.bookreader?.refs?.$br?.[0];
344
348
  }
345
349
 
346
350
  get baseProviderConfig() {
@@ -618,10 +622,15 @@ export class IaBookReader extends LitElement {
618
622
  min-height: unset;
619
623
  }
620
624
 
621
- div[slot="header"],
625
+ div[slot="header"] {
626
+ display: flex;
627
+ width: 100%;
628
+ }
629
+
622
630
  div[slot="main"] {
623
631
  display: flex;
624
632
  width: 100%;
633
+ height: 100%;
625
634
  }
626
635
 
627
636
  slot {
@@ -632,7 +641,7 @@ export class IaBookReader extends LitElement {
632
641
  slot,
633
642
  slot > * {
634
643
  display: block;
635
- height: inherit;
644
+ height: 100%;
636
645
  width: inherit;
637
646
  }
638
647
  .placeholder {
@@ -331,7 +331,7 @@ class SearchView {
331
331
  const modal = document.createElement('div');
332
332
  modal.classList.add('BRprogresspopup', 'search_modal');
333
333
  modal.innerHTML = messageHTML;
334
- document.querySelector(this.br.el).append(modal);
334
+ this.br.refs.$br[0].append(modal);
335
335
  }
336
336
 
337
337
  /**