@internetarchive/bookreader 5.0.0-88-alpha.10 → 5.0.0-88

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 (215) hide show
  1. package/BookReader/BookReader.css +3 -3
  2. package/BookReader/BookReader.js +1 -1
  3. package/BookReader/BookReader.js.map +1 -1
  4. package/BookReader/ia-bookreader-bundle.js +87 -108
  5. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  6. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  7. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  8. package/BookReader/plugins/plugin.search.js +1 -1
  9. package/BookReader/plugins/plugin.search.js.map +1 -1
  10. package/BookReader/plugins/plugin.text_selection.js +1 -1
  11. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  12. package/BookReader/plugins/plugin.tts.js +1 -1
  13. package/BookReader/plugins/plugin.tts.js.map +1 -1
  14. package/BookReader/plugins/plugin.url.js +1 -1
  15. package/BookReader/plugins/plugin.url.js.map +1 -1
  16. package/CHANGELOG.md +4 -0
  17. package/babel.config.js +12 -30
  18. package/jsconfig.json +1 -3
  19. package/package.json +14 -16
  20. package/src/BookNavigator/search/search-results.js +1 -1
  21. package/src/BookReader/Mode1UpLit.js +56 -86
  22. package/src/BookReader/Mode2UpLit.js +2 -3
  23. package/src/BookReader/Navbar/Navbar.js +53 -11
  24. package/src/BookReader/options.js +3 -0
  25. package/src/BookReader.js +49 -1
  26. package/src/BookReaderPlugin.js +28 -0
  27. package/src/css/_BRnav.scss +0 -3
  28. package/src/css/_controls.scss +4 -0
  29. package/src/plugins/plugin.archive_analytics.js +84 -78
  30. package/src/plugins/plugin.chapters.js +17 -22
  31. package/src/plugins/plugin.text_selection.js +1 -1
  32. package/src/plugins/tts/plugin.tts.js +2 -2
  33. package/tests/jest/BookReader/Navbar/Navbar.test.js +16 -3
  34. package/tests/jest/plugins/plugin.archive_analytics.test.js +8 -11
  35. package/dist/esm/BookNavigator/assets/bookmark-colors.js +0 -4
  36. package/dist/esm/BookNavigator/assets/button-base.js +0 -4
  37. package/dist/esm/BookNavigator/assets/ia-logo.js +0 -4
  38. package/dist/esm/BookNavigator/assets/icon_checkmark.js +0 -8
  39. package/dist/esm/BookNavigator/assets/icon_close.js +0 -4
  40. package/dist/esm/BookNavigator/book-navigator.js +0 -612
  41. package/dist/esm/BookNavigator/bookmarks/bookmark-button.js +0 -35
  42. package/dist/esm/BookNavigator/bookmarks/bookmark-edit.js +0 -78
  43. package/dist/esm/BookNavigator/bookmarks/bookmarks-list.js +0 -160
  44. package/dist/esm/BookNavigator/bookmarks/bookmarks-loginCTA.js +0 -24
  45. package/dist/esm/BookNavigator/bookmarks/bookmarks-provider.js +0 -55
  46. package/dist/esm/BookNavigator/bookmarks/ia-bookmarks.js +0 -521
  47. package/dist/esm/BookNavigator/delete-modal-actions.js +0 -29
  48. package/dist/esm/BookNavigator/downloads/downloads-provider.js +0 -84
  49. package/dist/esm/BookNavigator/downloads/downloads.js +0 -69
  50. package/dist/esm/BookNavigator/search/search-provider.js +0 -238
  51. package/dist/esm/BookNavigator/search/search-results.js +0 -161
  52. package/dist/esm/BookNavigator/sharing.js +0 -26
  53. package/dist/esm/BookNavigator/viewable-files.js +0 -94
  54. package/dist/esm/BookNavigator/visual-adjustments/visual-adjustments-provider.js +0 -83
  55. package/dist/esm/BookNavigator/visual-adjustments/visual-adjustments.js +0 -131
  56. package/dist/esm/BookReader/BookModel.js +0 -575
  57. package/dist/esm/BookReader/DragScrollable.js +0 -224
  58. package/dist/esm/BookReader/ImageCache.js +0 -122
  59. package/dist/esm/BookReader/Mode1Up.js +0 -114
  60. package/dist/esm/BookReader/Mode1UpLit.js +0 -579
  61. package/dist/esm/BookReader/Mode2Up.js +0 -106
  62. package/dist/esm/BookReader/Mode2UpLit.js +0 -1020
  63. package/dist/esm/BookReader/ModeCoordinateSpace.js +0 -28
  64. package/dist/esm/BookReader/ModeSmoothZoom.js +0 -318
  65. package/dist/esm/BookReader/ModeThumb.js +0 -366
  66. package/dist/esm/BookReader/Navbar/Navbar.js +0 -253
  67. package/dist/esm/BookReader/PageContainer.js +0 -165
  68. package/dist/esm/BookReader/ReduceSet.js +0 -27
  69. package/dist/esm/BookReader/Toolbar/Toolbar.js +0 -242
  70. package/dist/esm/BookReader/events.js +0 -20
  71. package/dist/esm/BookReader/options.js +0 -331
  72. package/dist/esm/BookReader/utils/HTMLDimensionsCacher.js +0 -48
  73. package/dist/esm/BookReader/utils/ScrollClassAdder.js +0 -31
  74. package/dist/esm/BookReader/utils/SelectionObserver.js +0 -42
  75. package/dist/esm/BookReader/utils/classes.js +0 -37
  76. package/dist/esm/BookReader/utils.js +0 -315
  77. package/dist/esm/BookReader.js +0 -1827
  78. package/dist/esm/assets/icons/1up.svg +0 -12
  79. package/dist/esm/assets/icons/2up.svg +0 -15
  80. package/dist/esm/assets/icons/advance.svg +0 -26
  81. package/dist/esm/assets/icons/chevron-right.svg +0 -1
  82. package/dist/esm/assets/icons/close-circle-dark.svg +0 -1
  83. package/dist/esm/assets/icons/close-circle.svg +0 -1
  84. package/dist/esm/assets/icons/fullscreen.svg +0 -17
  85. package/dist/esm/assets/icons/fullscreen_exit.svg +0 -17
  86. package/dist/esm/assets/icons/hamburger.svg +0 -15
  87. package/dist/esm/assets/icons/left-arrow.svg +0 -12
  88. package/dist/esm/assets/icons/magnify-minus.svg +0 -12
  89. package/dist/esm/assets/icons/magnify-plus.svg +0 -13
  90. package/dist/esm/assets/icons/magnify.svg +0 -15
  91. package/dist/esm/assets/icons/pause.svg +0 -23
  92. package/dist/esm/assets/icons/play.svg +0 -22
  93. package/dist/esm/assets/icons/playback-speed.svg +0 -34
  94. package/dist/esm/assets/icons/read-aloud.svg +0 -22
  95. package/dist/esm/assets/icons/review.svg +0 -22
  96. package/dist/esm/assets/icons/thumbnails.svg +0 -17
  97. package/dist/esm/assets/icons/voice.svg +0 -1
  98. package/dist/esm/assets/icons/volume-full.svg +0 -22
  99. package/dist/esm/assets/images/BRicons.png +0 -0
  100. package/dist/esm/assets/images/BRicons.svg +0 -94
  101. package/dist/esm/assets/images/BRicons_ia.png +0 -0
  102. package/dist/esm/assets/images/back_pages.png +0 -0
  103. package/dist/esm/assets/images/book_bottom_icon.png +0 -0
  104. package/dist/esm/assets/images/book_down_icon.png +0 -0
  105. package/dist/esm/assets/images/book_left_icon.png +0 -0
  106. package/dist/esm/assets/images/book_leftmost_icon.png +0 -0
  107. package/dist/esm/assets/images/book_right_icon.png +0 -0
  108. package/dist/esm/assets/images/book_rightmost_icon.png +0 -0
  109. package/dist/esm/assets/images/book_top_icon.png +0 -0
  110. package/dist/esm/assets/images/book_up_icon.png +0 -0
  111. package/dist/esm/assets/images/books_graphic.svg +0 -177
  112. package/dist/esm/assets/images/booksplit.png +0 -0
  113. package/dist/esm/assets/images/control_pause_icon.png +0 -0
  114. package/dist/esm/assets/images/control_play_icon.png +0 -0
  115. package/dist/esm/assets/images/embed_icon.png +0 -0
  116. package/dist/esm/assets/images/icon-home-ia.png +0 -0
  117. package/dist/esm/assets/images/icon_OL-logo-xs.png +0 -0
  118. package/dist/esm/assets/images/icon_alert-xs.png +0 -0
  119. package/dist/esm/assets/images/icon_book.svg +0 -12
  120. package/dist/esm/assets/images/icon_bookmark.svg +0 -12
  121. package/dist/esm/assets/images/icon_close-pop.png +0 -0
  122. package/dist/esm/assets/images/icon_download.png +0 -0
  123. package/dist/esm/assets/images/icon_gear.svg +0 -14
  124. package/dist/esm/assets/images/icon_hamburger.svg +0 -20
  125. package/dist/esm/assets/images/icon_home.png +0 -0
  126. package/dist/esm/assets/images/icon_home.svg +0 -21
  127. package/dist/esm/assets/images/icon_home_ia.png +0 -0
  128. package/dist/esm/assets/images/icon_indicator.png +0 -0
  129. package/dist/esm/assets/images/icon_info.svg +0 -11
  130. package/dist/esm/assets/images/icon_one_page.svg +0 -8
  131. package/dist/esm/assets/images/icon_pause.svg +0 -1
  132. package/dist/esm/assets/images/icon_play.svg +0 -1
  133. package/dist/esm/assets/images/icon_playback-rate.svg +0 -15
  134. package/dist/esm/assets/images/icon_return.png +0 -0
  135. package/dist/esm/assets/images/icon_search_button.svg +0 -8
  136. package/dist/esm/assets/images/icon_share.svg +0 -9
  137. package/dist/esm/assets/images/icon_skip-ahead.svg +0 -6
  138. package/dist/esm/assets/images/icon_skip-back.svg +0 -13
  139. package/dist/esm/assets/images/icon_speaker.svg +0 -18
  140. package/dist/esm/assets/images/icon_speaker_open.svg +0 -10
  141. package/dist/esm/assets/images/icon_thumbnails.svg +0 -12
  142. package/dist/esm/assets/images/icon_toc.svg +0 -5
  143. package/dist/esm/assets/images/icon_two_pages.svg +0 -9
  144. package/dist/esm/assets/images/icon_zoomer.png +0 -0
  145. package/dist/esm/assets/images/loading.gif +0 -0
  146. package/dist/esm/assets/images/logo_icon.png +0 -0
  147. package/dist/esm/assets/images/marker_chap-off.png +0 -0
  148. package/dist/esm/assets/images/marker_chap-off.svg +0 -11
  149. package/dist/esm/assets/images/marker_chap-off_ia.png +0 -0
  150. package/dist/esm/assets/images/marker_chap-on.png +0 -0
  151. package/dist/esm/assets/images/marker_chap-on.svg +0 -11
  152. package/dist/esm/assets/images/marker_srch-on.svg +0 -11
  153. package/dist/esm/assets/images/marker_srchchap-off.png +0 -0
  154. package/dist/esm/assets/images/marker_srchchap-on.png +0 -0
  155. package/dist/esm/assets/images/nav_control-dn.png +0 -0
  156. package/dist/esm/assets/images/nav_control-dn_ia.png +0 -0
  157. package/dist/esm/assets/images/nav_control-up.png +0 -0
  158. package/dist/esm/assets/images/nav_control-up_ia.png +0 -0
  159. package/dist/esm/assets/images/nav_control.png +0 -0
  160. package/dist/esm/assets/images/one_page_mode_icon.png +0 -0
  161. package/dist/esm/assets/images/paper-badge.png +0 -0
  162. package/dist/esm/assets/images/print_icon.png +0 -0
  163. package/dist/esm/assets/images/progressbar.gif +0 -0
  164. package/dist/esm/assets/images/right_edges.png +0 -0
  165. package/dist/esm/assets/images/slider.png +0 -0
  166. package/dist/esm/assets/images/slider_ia.png +0 -0
  167. package/dist/esm/assets/images/thumbnail_mode_icon.png +0 -0
  168. package/dist/esm/assets/images/transparent.png +0 -0
  169. package/dist/esm/assets/images/two_page_mode_icon.png +0 -0
  170. package/dist/esm/assets/images/unviewable_page.png +0 -0
  171. package/dist/esm/assets/images/zoom_in_icon.png +0 -0
  172. package/dist/esm/assets/images/zoom_out_icon.png +0 -0
  173. package/dist/esm/css/BookReader.scss +0 -85
  174. package/dist/esm/css/_BRBookmarks.scss +0 -29
  175. package/dist/esm/css/_BRComponent.scss +0 -13
  176. package/dist/esm/css/_BRfloat.scss +0 -197
  177. package/dist/esm/css/_BRicon.scss +0 -54
  178. package/dist/esm/css/_BRmain.scss +0 -262
  179. package/dist/esm/css/_BRnav.scss +0 -354
  180. package/dist/esm/css/_BRpages.scss +0 -213
  181. package/dist/esm/css/_BRsearch.scss +0 -268
  182. package/dist/esm/css/_BRtoolbar.scss +0 -84
  183. package/dist/esm/css/_BRvendor.scss +0 -5
  184. package/dist/esm/css/_TextSelection.scss +0 -108
  185. package/dist/esm/css/_colorbox.scss +0 -52
  186. package/dist/esm/css/_controls.scss +0 -257
  187. package/dist/esm/css/_icons.scss +0 -121
  188. package/dist/esm/ia-bookreader/ia-bookreader.js +0 -141
  189. package/dist/esm/jquery-wrapper.js +0 -3
  190. package/dist/esm/plugins/plugin.archive_analytics.js +0 -72
  191. package/dist/esm/plugins/plugin.autoplay.js +0 -119
  192. package/dist/esm/plugins/plugin.chapters.js +0 -288
  193. package/dist/esm/plugins/plugin.iframe.js +0 -44
  194. package/dist/esm/plugins/plugin.iiif.js +0 -146
  195. package/dist/esm/plugins/plugin.resume.js +0 -66
  196. package/dist/esm/plugins/plugin.text_selection.js +0 -621
  197. package/dist/esm/plugins/plugin.vendor-fullscreen.js +0 -227
  198. package/dist/esm/plugins/search/plugin.search.js +0 -499
  199. package/dist/esm/plugins/search/utils.js +0 -42
  200. package/dist/esm/plugins/search/view.js +0 -360
  201. package/dist/esm/plugins/tts/AbstractTTSEngine.js +0 -282
  202. package/dist/esm/plugins/tts/FestivalTTSEngine.js +0 -192
  203. package/dist/esm/plugins/tts/PageChunk.js +0 -105
  204. package/dist/esm/plugins/tts/PageChunkIterator.js +0 -155
  205. package/dist/esm/plugins/tts/WebTTSEngine.js +0 -364
  206. package/dist/esm/plugins/tts/plugin.tts.js +0 -315
  207. package/dist/esm/plugins/tts/tooltip_dict.js +0 -14
  208. package/dist/esm/plugins/tts/utils.js +0 -79
  209. package/dist/esm/plugins/url/UrlPlugin.js +0 -197
  210. package/dist/esm/plugins/url/plugin.url.js +0 -212
  211. package/dist/esm/util/browserSniffing.js +0 -56
  212. package/dist/esm/util/debouncer.js +0 -25
  213. package/dist/esm/util/docCookies.js +0 -75
  214. package/dist/esm/util/strings.js +0 -34
  215. package/index.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.url.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/plugins/url/UrlPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/url/plugin.url.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/modules/es.object.entries.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/./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"],"sourcesContent":["export 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 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 ];\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?.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 window.location.replace('#' + 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 = window.location.hash.substr(1);\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 = window.location.hash.substr(1);\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","/* global BookReader */\n\nimport { UrlPlugin } from \"./UrlPlugin\";\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'],\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 if (this.autoStop) this.autoStop();\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 const newFragment = this.fragmentFromParams(params, this.options.urlMode);\n const currFragment = this.urlReadFragment();\n const currQueryString = this.getLocationSearch();\n const newQueryString = this.queryStringFromParams(params, currQueryString, this.options.urlMode);\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 newFragmentWithSlash = newFragment === '' ? '' : `/${newFragment}`;\n\n const newUrlPath = `${baseWithoutSlash}${newFragmentWithSlash}${newQueryString}`;\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 window.location.replace('#' + 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 window.location.hash.substr(1);\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 this.bind(BookReader.eventNames.PostInit, () => {\n const { urlMode } = this.options;\n\n if (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';\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 $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\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://github.com/tc39/proposal-object-from-entries\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","'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 $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;\n\nvar NativeURL = globalThis.URL;\nvar TypeError = globalThis.TypeError;\nvar parseInt = globalThis.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\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;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\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 */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\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;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-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 input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part === '') return input;\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 input;\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\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(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, chr) || chr === '+' || chr === '-' || 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 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 !== '/' || charAt(buffer, 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 = percentEncode(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 failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride === HOSTNAME) return;\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 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 if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\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' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\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 if (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 += percentEncode(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 url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr === '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr !== EOF) url.fragment += percentEncode(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_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !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 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(scheme.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 += percentEncode(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 += percentEncode(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');\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(URL.prototype.toString, this);\n }\n});\n"],"names":["super_","UrlPlugin","options","arguments","length","undefined","_classCallCheck","this","bookReaderOptions","urlSchema","name","position","default","deprecated_for","urlState","urlMode","urlHistoryBasePath","urlLocationPollId","oldLocationHash","oldUserHash","key","value","_this","searchParams","URLSearchParams","pathParams","Object","keys","forEach","_schema","_schema2","_schema3","_schema4","schema","find","schemaKey","append","strPathParams","filter","s","map","concat","encodeURIComponent","join","strStrippedTrailingSlash","replace","concatenatedPath","toString","urlString","urlPath","URL","urlSearchParamsObj","fromEntries","entries","splitUrlMatches","pathname","match","urlStrSplitSlashObj","x","split","doesKeyExists","_object","_key","some","hasPropertyKey","hasDeprecatedKey","urlStateParam","decodeURIComponent","_ref","_ref2","_slicedToArray","pushToAddressBar","urlStrPath","urlStateToUrlString","window","history","replaceState","newUrlPath","trim","e","location","_this2","hash","substr","clearInterval","setInterval","newFragment","urlStringToUrlState","path","search","extend","BookReader","defaultOptions","enableUrlPlugin","bookId","defaults","updateWindowTitle","urlTrackedParams","urlTrackIndex0","prototype","setup","call","locationPollId","init","bind","eventNames","PostInit","_this$options","document","title","shortTitle","bookTitle","urlStartLocationPolling","fragmentChange","urlUpdateFragment","maximumCharacters","urlReadFragment","params","paramsFromFragment","updateParams","updateFromParams","trigger","stop","animating","autoStop","animationFinishedCallback","allParams","paramsFromCurrent","_this$options2","index","page","reduce","validParams","paramName","fragmentFromParams","currFragment","currQueryString","getLocationSearch","newQueryString","queryStringFromParams","baseWithoutSlash","newFragmentWithSlash","newQueryStringSearch","urlParamsFiltersOnlySearch","readQueryString","url","has","q","get","_this$options3","urlReadHashFragment","BookreaderUrlPlugin","_BookReader","_callSuper","_inherits","_this3","urlPlugin","listenForHashChanges","uncurryThis","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","$RangeError","RangeError","exec","floor","Math","fromCharCode","String","charCodeAt","push","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","t","qMinusT","baseMinusT","module","exports","label","encoded","labels","PROPER_FUNCTION_NAME","fails","whitespaces","METHOD_NAME","$","$entries","target","stat","O","iterate","createProperty","iterable","obj","v","AS_ENTRIES","$trim","proto","forced","forcedStringTrimMethod","EOF","DESCRIPTORS","USE_NATIVE_URL","globalThis","defineBuiltIn","defineBuiltInAccessor","anInstance","hasOwn","assign","arrayFrom","arraySlice","codeAt","toASCII","$toString","setToStringTag","validateArgumentsLength","URLSearchParamsModule","InternalStateModule","setInternalState","set","getInternalURLState","getterFor","getInternalSearchParamsState","getState","NativeURL","TypeError","parseInt","pow","charAt","numberToString","pop","shift","stringSlice","slice","unshift","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_C0_CONTROL_OR_SPACE","TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","host","result","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","chr","code","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","second","startsWithWindowsDriveLetter","third","isSingleDot","segment","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","isBase","baseState","failure","parse","bindURL","type","stateOverride","codePoints","bufferCodePoints","state","pointer","buffer","seenAt","seenBracket","seenPasswordToken","scheme","username","password","port","query","fragment","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","number","swaps","swap","address","pieceIndex","parseIPv6","partsLength","numbers","part","radix","ipv4","parts","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","serialize","setHref","href","update","getOrigin","URLConstructor","origin","error","getProtocol","setProtocol","protocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","facade","getHash","setHash","that","URLPrototype","accessorDescriptor","getter","setter","configurable","enumerable","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","global","constructor","sham","toJSON"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.url.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/plugins/url/UrlPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/url/plugin.url.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/modules/es.object.from-entries.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.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"],"sourcesContent":["export 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 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 ];\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?.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 window.location.replace('#' + 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 = window.location.hash.substr(1);\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 = window.location.hash.substr(1);\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","/* global BookReader */\n\nimport { UrlPlugin } from \"./UrlPlugin\";\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'],\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 if (this.autoStop) this.autoStop();\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 const newFragment = this.fragmentFromParams(params, this.options.urlMode);\n const currFragment = this.urlReadFragment();\n const currQueryString = this.getLocationSearch();\n const newQueryString = this.queryStringFromParams(params, currQueryString, this.options.urlMode);\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 newFragmentWithSlash = newFragment === '' ? '' : `/${newFragment}`;\n\n const newUrlPath = `${baseWithoutSlash}${newFragmentWithSlash}${newQueryString}`;\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 window.location.replace('#' + 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 window.location.hash.substr(1);\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 this.bind(BookReader.eventNames.PostInit, () => {\n const { urlMode } = this.options;\n\n if (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';\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 $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\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","'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 $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;\n\nvar NativeURL = globalThis.URL;\nvar TypeError = globalThis.TypeError;\nvar parseInt = globalThis.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\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;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\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 */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\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;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-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 input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part === '') return input;\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 input;\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\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(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, chr) || chr === '+' || chr === '-' || 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 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 !== '/' || charAt(buffer, 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 = percentEncode(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 failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride === HOSTNAME) return;\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 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 if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\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' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\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 if (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 += percentEncode(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 url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr === '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr !== EOF) {\n if (chr === \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr === '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr !== EOF) url.fragment += percentEncode(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_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !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 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(scheme.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 += percentEncode(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 += percentEncode(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');\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(URL.prototype.toString, this);\n }\n});\n"],"names":["super_","UrlPlugin","options","arguments","length","undefined","_classCallCheck","this","bookReaderOptions","urlSchema","name","position","default","deprecated_for","urlState","urlMode","urlHistoryBasePath","urlLocationPollId","oldLocationHash","oldUserHash","key","value","_this","searchParams","URLSearchParams","pathParams","Object","keys","forEach","_schema","_schema2","_schema3","_schema4","schema","find","schemaKey","append","strPathParams","filter","s","map","concat","encodeURIComponent","join","strStrippedTrailingSlash","replace","concatenatedPath","toString","urlString","urlPath","URL","urlSearchParamsObj","fromEntries","entries","splitUrlMatches","pathname","match","urlStrSplitSlashObj","x","split","doesKeyExists","_object","_key","some","hasPropertyKey","hasDeprecatedKey","urlStateParam","decodeURIComponent","_ref","_ref2","_slicedToArray","pushToAddressBar","urlStrPath","urlStateToUrlString","window","history","replaceState","newUrlPath","trim","e","location","_this2","hash","substr","clearInterval","setInterval","newFragment","urlStringToUrlState","path","search","extend","BookReader","defaultOptions","enableUrlPlugin","bookId","defaults","updateWindowTitle","urlTrackedParams","urlTrackIndex0","prototype","setup","call","locationPollId","init","bind","eventNames","PostInit","_this$options","document","title","shortTitle","bookTitle","urlStartLocationPolling","fragmentChange","urlUpdateFragment","maximumCharacters","urlReadFragment","params","paramsFromFragment","updateParams","updateFromParams","trigger","stop","animating","autoStop","animationFinishedCallback","allParams","paramsFromCurrent","_this$options2","index","page","reduce","validParams","paramName","fragmentFromParams","currFragment","currQueryString","getLocationSearch","newQueryString","queryStringFromParams","baseWithoutSlash","newFragmentWithSlash","newQueryStringSearch","urlParamsFiltersOnlySearch","readQueryString","url","has","q","get","_this$options3","urlReadHashFragment","BookreaderUrlPlugin","_BookReader","_callSuper","_inherits","_this3","urlPlugin","listenForHashChanges","uncurryThis","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","$RangeError","RangeError","exec","floor","Math","fromCharCode","String","charCodeAt","push","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","t","qMinusT","baseMinusT","module","exports","label","encoded","labels","PROPER_FUNCTION_NAME","fails","whitespaces","METHOD_NAME","$","iterate","createProperty","target","stat","iterable","obj","v","AS_ENTRIES","$trim","proto","forced","forcedStringTrimMethod","EOF","DESCRIPTORS","USE_NATIVE_URL","globalThis","defineBuiltIn","defineBuiltInAccessor","anInstance","hasOwn","assign","arrayFrom","arraySlice","codeAt","toASCII","$toString","setToStringTag","validateArgumentsLength","URLSearchParamsModule","InternalStateModule","setInternalState","set","getInternalURLState","getterFor","getInternalSearchParamsState","getState","NativeURL","TypeError","parseInt","pow","charAt","numberToString","pop","shift","stringSlice","slice","unshift","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_C0_CONTROL_OR_SPACE","TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","host","result","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","chr","code","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","second","startsWithWindowsDriveLetter","third","isSingleDot","segment","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","isBase","baseState","failure","parse","bindURL","type","stateOverride","codePoints","bufferCodePoints","state","pointer","buffer","seenAt","seenBracket","seenPasswordToken","scheme","username","password","port","query","fragment","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","number","swaps","swap","address","pieceIndex","parseIPv6","partsLength","numbers","part","radix","ipv4","parts","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","serialize","setHref","href","update","getOrigin","URLConstructor","origin","error","getProtocol","setProtocol","protocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","facade","getHash","setHash","that","URLPrototype","accessorDescriptor","getter","setter","configurable","enumerable","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","global","constructor","sham","toJSON"],"sourceRoot":""}
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 5.0.0-88
2
+ - Fix: Switch to new page number display format @pezvi
3
+ - Fix: Introduce BookReaderPlugin abstraction and apply to ArchiveAnalyticsPlugin @cdrini
4
+
1
5
  # 5.0.0-87
2
6
  - Fix: turn on autoplay option @cdrini
3
7
 
package/babel.config.js CHANGED
@@ -1,38 +1,20 @@
1
- /* eslint-disable */
2
1
  module.exports = {
3
2
  presets: [
4
3
  [
5
- '@babel/preset-env',
6
- process.env.BABEL_ENV === 'esm'
7
- ? {
8
- targets: {
9
- esmodules: true,
10
- },
11
- modules: false,
12
- }
13
- : process.env.NODE_ENV == 'test'
14
- ? { targets: { node: process.version } }
15
- : process.env.NODE_ENV == 'development'
16
- ? {
17
- targets:
18
- 'last 2 Chrome versions, last 2 Firefox versions, last 2 Safari versions, last 2 Edge versions',
19
- }
20
- : {
21
- targets:
22
- '> 2%, edge >= 14, samsung > 9, UCAndroid > 12, Safari >= 10',
23
- useBuiltIns: 'usage',
24
- corejs: 3,
25
- },
4
+ "@babel/preset-env",
5
+ process.env.NODE_ENV == "test" ? { targets: { node: process.version } } :
6
+ process.env.NODE_ENV == "development" ? { targets: "last 2 Chrome versions, last 2 Firefox versions, last 2 Safari versions, last 2 Edge versions" } : {
7
+ targets: "> 2%, ie 11, edge 14, samsung > 9, OperaMini all, UCAndroid > 12, Safari >= 9",
8
+ useBuiltIns: "usage",
9
+ corejs: 3,
10
+ },
26
11
  ],
27
12
  ],
28
13
  plugins: [
29
- [
30
- '@babel/plugin-proposal-decorators',
31
- {
32
- version: '2018-09',
33
- decoratorsBeforeExport: true,
34
- },
35
- ],
36
- ['@babel/plugin-proposal-class-properties'],
14
+ ["@babel/plugin-proposal-decorators", {
15
+ version: "2018-09",
16
+ decoratorsBeforeExport: true,
17
+ }],
18
+ ["@babel/plugin-proposal-class-properties"],
37
19
  ],
38
20
  };
package/jsconfig.json CHANGED
@@ -9,13 +9,11 @@
9
9
  }
10
10
  },
11
11
  "include": [
12
- "index.js",
13
12
  "src/**/*.js",
14
13
  "tests/**/*.js",
15
- "dist/**/*.js"
16
14
  ],
17
15
  "exclude": [
18
16
  "node_modules",
19
17
  "BookReader"
20
18
  ]
21
- }
19
+ }