@internetarchive/bookreader 5.0.0-100 → 5.0.0-102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BookReader/474.js +1 -1
- package/BookReader/474.js.map +1 -1
- package/BookReader/BookReader.css +79 -8
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.LICENSE.txt +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +52 -52
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -1
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/icons/1up.svg +1 -1
- package/BookReader/icons/2up.svg +1 -1
- package/BookReader/icons/advance.svg +1 -1
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -1
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -1
- package/BookReader/icons/fullscreen_exit.svg +1 -1
- package/BookReader/icons/hamburger.svg +1 -1
- package/BookReader/icons/left-arrow.svg +1 -1
- package/BookReader/icons/magnify-minus.svg +1 -1
- package/BookReader/icons/magnify-plus.svg +1 -1
- package/BookReader/icons/magnify.svg +1 -1
- package/BookReader/icons/pause.svg +1 -1
- package/BookReader/icons/play.svg +1 -1
- package/BookReader/icons/playback-speed.svg +1 -1
- package/BookReader/icons/read-aloud.svg +1 -1
- package/BookReader/icons/review.svg +1 -1
- package/BookReader/icons/slider-toggle.svg +1 -0
- package/BookReader/icons/thumbnails.svg +1 -1
- package/BookReader/icons/voice.svg +1 -1
- package/BookReader/icons/volume-full.svg +1 -1
- package/BookReader/images/BRicons.svg +2 -2
- package/BookReader/images/books_graphic.svg +1 -1
- package/BookReader/images/icon_book.svg +1 -1
- package/BookReader/images/icon_bookmark.svg +1 -1
- package/BookReader/images/icon_gear.svg +1 -1
- package/BookReader/images/icon_hamburger.svg +1 -1
- package/BookReader/images/icon_home.svg +1 -1
- package/BookReader/images/icon_info.svg +1 -1
- package/BookReader/images/icon_one_page.svg +1 -1
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -1
- package/BookReader/images/icon_search_button.svg +1 -1
- package/BookReader/images/icon_share.svg +1 -1
- package/BookReader/images/icon_skip-back.svg +1 -1
- package/BookReader/images/icon_speaker.svg +1 -1
- package/BookReader/images/icon_speaker_open.svg +1 -1
- package/BookReader/images/icon_thumbnails.svg +1 -1
- package/BookReader/images/icon_toc.svg +1 -1
- package/BookReader/images/icon_two_pages.svg +1 -1
- package/BookReader/images/marker_chap-off.svg +1 -1
- package/BookReader/images/marker_chap-on.svg +1 -1
- package/BookReader/images/marker_srch-on.svg +1 -1
- package/BookReader/images/translate.svg +1 -1
- package/BookReader/jquery-3.js +1 -1
- package/BookReader/plugins/plugin.archive_analytics.js +1 -1
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -1
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +2 -2
- package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.experiments.js +1 -1
- package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.experiments.js.map +1 -1
- package/BookReader/plugins/plugin.iframe.js +1 -1
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.iiif.js +1 -1
- package/BookReader/plugins/plugin.iiif.js.map +1 -1
- package/BookReader/plugins/plugin.resume.js +1 -1
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +1 -1
- package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +1 -1
- package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.translate.js +4 -4
- package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.translate.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -1
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/plugins/translator-worker.js +1 -1
- package/BookReader/plugins/translator-worker.js.map +1 -1
- package/BookReader/webcomponents-bundle.js +1 -1
- package/BookReader/webcomponents-bundle.js.map +1 -1
- package/package.json +20 -20
- package/src/BookNavigator/search/search-results.js +84 -63
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +4 -4
- package/src/BookNavigator/visual-adjustments/visual-adjustments.js +77 -59
- package/src/BookReader/Navbar/Navbar.js +54 -71
- package/src/BookReader/options.js +6 -0
- package/src/BookReader.js +12 -0
- package/src/assets/icons/slider-toggle.svg +1 -0
- package/src/css/_BRnav.scss +57 -4
- package/src/css/_BRpages.scss +9 -0
- package/src/css/_icons.scss +7 -0
- package/src/plugins/plugin.text_selection.js +9 -0
- package/src/plugins/search/plugin.search.js +4 -0
- package/src/plugins/search/utils.js +8 -1
- package/src/plugins/search/view.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/plugin.text_selection.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.text_selection.js","webpack://@internetarchive/bookreader/./node_modules/iso-language-codes/dist/index.mjs","webpack://@internetarchive/bookreader/./src/plugins/tts/utils.js","webpack://@internetarchive/bookreader/./src/BookReader/utils/SelectionObserver.js","webpack://@internetarchive/bookreader/./src/util/TextSelectionManager.js","webpack://@internetarchive/bookreader/./src/util/cache.js","webpack://@internetarchive/bookreader/./src/util/strings.js"],"sourcesContent":["'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = 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","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","//@ts-check\nimport { createDIVPageLayer } from '../BookReader/PageContainer.js';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport { applyVariables } from '../util/strings.js';\nimport { Cache } from '../util/cache.js';\nimport { toISO6391 } from './tts/utils.js';\nimport { TextSelectionManager } from '../util/TextSelectionManager.js';\n/** @typedef {import('../util/strings.js').StringWithVars} StringWithVars */\n/** @typedef {import('../BookReader/PageContainer.js').PageContainer} PageContainer */\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\n\nexport class TextSelectionPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** @type {StringWithVars} The URL to fetch the entire DJVU xml. Supports options.vars */\n fullDjvuXmlUrl: null,\n /** @type {StringWithVars} The URL to fetch a single page of the DJVU xml. Supports options.vars. Also has {{pageIndex}} */\n singlePageDjvuXmlUrl: null,\n /** Whether to fetch the XML as a jsonp */\n jsonp: false,\n /** Mox words that can be selected when the text layer is protected */\n maxProtectedWords: 200,\n }\n\n /**@type {PromiseLike<JQuery<HTMLElement>|undefined>} */\n djvuPagesPromise = null;\n\n /** @type {Cache<{index: number, response: any}>} */\n pageTextCache = new Cache();\n\n /**\n * Sometimes there are too many words on a page, and the browser becomes near\n * unusable. For now don't render text layer for pages with too many words.\n */\n maxWordRendered = 2500;\n\n /**\n * @param {import('../BookReader.js').default} br\n */\n constructor(br) {\n super(br);\n // In the future this should be in the ocr file\n // since a book being right to left doesn't mean the ocr is right to left. But for\n // now we do make that assumption.\n /** Whether the book is right-to-left */\n this.rtl = this.br.pageProgression === 'rl';\n this.textSelectionManager = new TextSelectionManager('.BRtextLayer', this.br, {selectionElement: ['.BRwordElement', '.BRspace']}, this.options.maxProtectedWords);\n }\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.loadData();\n this.textSelectionManager.init();\n }\n\n /**\n * @override\n * @param {PageContainer} pageContainer\n * @returns {PageContainer}\n */\n _configurePageContainer(pageContainer) {\n // Disable if thumb mode; it's too janky\n // .page can be null for \"pre-cover\" region\n if (this.br.mode !== this.br.constModeThumb && pageContainer.page) {\n this.createTextLayer(pageContainer);\n }\n return pageContainer;\n }\n\n loadData() {\n // Only fetch the full djvu xml if the single page url isn't there\n if (this.options.singlePageDjvuXmlUrl) return;\n this.djvuPagesPromise = $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.fullDjvuXmlUrl, this.br.options.vars),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n error: (e) => undefined,\n }).then((res) => {\n try {\n const xmlMap = $.parseXML(res);\n return xmlMap && $(xmlMap).find(\"OBJECT\");\n } catch (e) {\n return undefined;\n }\n });\n }\n\n /**\n * @param {number} index\n * @returns {Promise<HTMLElement|undefined>}\n */\n async getPageText(index) {\n if (this.options.singlePageDjvuXmlUrl) {\n const cachedEntry = this.pageTextCache.entries.find(x => x.index == index);\n if (cachedEntry) {\n return cachedEntry.response;\n }\n const res = await $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.singlePageDjvuXmlUrl, this.br.options.vars, { pageIndex: index }),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n error: (e) => undefined,\n });\n try {\n const xmlDoc = $.parseXML(res);\n const result = xmlDoc && $(xmlDoc).find(\"OBJECT\")[0];\n this.pageTextCache.add({ index, response: result });\n return result;\n } catch (e) {\n return undefined;\n }\n } else {\n const XMLpagesArr = await this.djvuPagesPromise;\n if (XMLpagesArr) return XMLpagesArr[index];\n }\n }\n\n /**\n * @param {PageContainer} pageContainer\n */\n async createTextLayer(pageContainer) {\n const pageIndex = pageContainer.page.index;\n const $container = pageContainer.$container;\n const $textLayers = $container.find('.BRtextLayer');\n if ($textLayers.length) return;\n const XMLpage = await this.getPageText(pageIndex);\n if (!XMLpage) return;\n recursivelyAddCoords(XMLpage);\n\n const totalWords = $(XMLpage).find(\"WORD\").length;\n if (totalWords > this.maxWordRendered) {\n console.log(`Page ${pageIndex} has too many words (${totalWords} > ${this.maxWordRendered}). Not rendering text layer.`);\n return;\n }\n\n const textLayer = createDIVPageLayer(pageContainer.page, 'BRtextLayer');\n // Have to wait to make sure the page container is actually rendered,\n // otherwise width/height are unset after a mode change.\n await Promise.resolve();\n const ratioW = parseFloat(pageContainer.$container[0].style.width) / pageContainer.page.width;\n const ratioH = parseFloat(pageContainer.$container[0].style.height) / pageContainer.page.height;\n textLayer.style.transform = `scale(${ratioW}, ${ratioH})`;\n const bookLangCode = toISO6391(this.br.options.bookLanguage);\n if (bookLangCode) {\n textLayer.setAttribute(\"lang\", bookLangCode);\n }\n textLayer.setAttribute(\"dir\", this.rtl ? \"rtl\" : \"ltr\");\n\n const ocrParagraphs = $(XMLpage).find(\"PARAGRAPH[coords]\").toArray();\n const paragEls = ocrParagraphs.map(p => {\n const el = this.renderParagraph(p);\n textLayer.appendChild(el);\n return el;\n });\n\n // Fix up paragraph positions\n const paragraphRects = determineRealRects(textLayer, '.BRparagraphElement');\n let yAdded = 0;\n for (const [ocrParagraph, paragEl] of zip(ocrParagraphs, paragEls)) {\n const ocrParagBounds = $(ocrParagraph).attr(\"coords\").split(\",\").map(parseFloat);\n const realRect = paragraphRects.get(paragEl);\n const [ocrLeft, , ocrRight, ocrTop] = ocrParagBounds;\n const newStartMargin = this.rtl ? (realRect.right - ocrRight) : (ocrLeft - realRect.left);\n const newTop = ocrTop - (realRect.top + yAdded);\n\n paragEl.style[this.rtl ? 'marginRight' : 'marginLeft'] = `${newStartMargin}px`;\n paragEl.style.marginTop = `${newTop}px`;\n yAdded += newTop;\n textLayer.appendChild(paragEl);\n }\n $container.append(textLayer);\n this.textSelectionManager.stopPageFlip($container);\n this.br.trigger('textLayerRendered', {\n pageIndex,\n pageContainer,\n });\n }\n\n /**\n * @param {HTMLElement} ocrParagraph\n * @returns {HTMLParagraphElement}\n */\n renderParagraph(ocrParagraph) {\n const paragEl = document.createElement('p');\n paragEl.classList.add('BRparagraphElement');\n if (ocrParagraph.getAttribute(\"x-role\")) {\n paragEl.classList.add('ocr-role-header-footer');\n paragEl.ariaHidden = \"true\";\n }\n const [paragLeft, paragBottom, paragRight, paragTop] = $(ocrParagraph).attr(\"coords\").split(\",\").map(parseFloat);\n const wordHeightArr = [];\n const lines = $(ocrParagraph).find(\"LINE[coords]\").toArray();\n if (!lines.length) return paragEl;\n\n\n for (const [prevLine, line, nextLine] of lookAroundWindow(genMap(lines, augmentLine))) {\n const isLastLineOfParagraph = line.ocrElement == lines[lines.length - 1];\n const lineEl = document.createElement('span');\n lineEl.classList.add('BRlineElement');\n\n for (const [wordIndex, currWord] of line.words.entries()) {\n const [, bottom, right, top] = $(currWord).attr(\"coords\").split(',').map(parseFloat);\n const wordHeight = bottom - top;\n wordHeightArr.push(wordHeight);\n\n if (wordIndex == 0 && prevLine?.lastWord.textContent.trim().endsWith('-')) {\n // ideally prefer the next line to determine the left position,\n // since the previous line could be the first line of the paragraph\n // and hence have an incorrectly indented first word.\n // E.g. https://archive.org/details/driitaleofdaring00bachuoft/page/360/mode/2up\n const [newLeft, , , ] = $((nextLine || prevLine).firstWord).attr(\"coords\").split(',').map(parseFloat);\n $(currWord).attr(\"coords\", `${newLeft},${bottom},${right},${top}`);\n }\n\n const wordEl = document.createElement('span');\n wordEl.setAttribute(\"class\", \"BRwordElement\");\n wordEl.textContent = currWord.textContent.trim();\n\n if (wordIndex > 0) {\n const space = document.createElement('span');\n space.classList.add('BRspace');\n space.textContent = ' ';\n lineEl.append(space);\n\n // Edge ignores empty elements (like BRspace), so add another\n // space to ensure Edge's ReadAloud works correctly.\n lineEl.appendChild(document.createTextNode(' '));\n }\n\n lineEl.appendChild(wordEl);\n }\n\n const hasHyphen = line.lastWord.textContent.trim().endsWith('-');\n const lastWordEl = lineEl.children[lineEl.children.length - 1];\n if (hasHyphen && !isLastLineOfParagraph) {\n lastWordEl.textContent = lastWordEl.textContent.trim().slice(0, -1);\n lastWordEl.classList.add('BRwordElement--hyphen');\n }\n\n paragEl.appendChild(lineEl);\n if (!isLastLineOfParagraph && !hasHyphen) {\n // Edge does not correctly have spaces between the lines.\n paragEl.appendChild(document.createTextNode(' '));\n }\n }\n\n wordHeightArr.sort((a, b) => a - b);\n const paragWordHeight = wordHeightArr[Math.floor(wordHeightArr.length * 0.85)] + 4;\n paragEl.style.left = `${paragLeft}px`;\n paragEl.style.top = `${paragTop}px`;\n paragEl.style.width = `${paragRight - paragLeft}px`;\n paragEl.style.height = `${paragBottom - paragTop}px`;\n paragEl.style.fontSize = `${paragWordHeight}px`;\n\n // Fix up sizes - stretch/crush words as necessary using letter spacing\n let wordRects = determineRealRects(paragEl, '.BRwordElement');\n const ocrWords = $(ocrParagraph).find(\"WORD\").toArray();\n const wordEls = paragEl.querySelectorAll('.BRwordElement');\n for (const [ocrWord, wordEl] of zip(ocrWords, wordEls)) {\n const realRect = wordRects.get(wordEl);\n const [left, , right ] = $(ocrWord).attr(\"coords\").split(',').map(parseFloat);\n let ocrWidth = right - left;\n // Some books (eg theworksofplato01platiala) have a space _inside_ the <WORD>\n // element. That makes it impossible to determine the correct positining\n // of everything, but to avoid the BRspace's being width 0, which makes selection\n // janky on Chrome Android, assume the space is the same width as one of the\n // letters.\n if (ocrWord.textContent.endsWith(' ')) {\n ocrWidth = ocrWidth * (ocrWord.textContent.length - 1) / ocrWord.textContent.length;\n }\n const diff = ocrWidth - realRect.width;\n wordEl.style.letterSpacing = `${diff / (ocrWord.textContent.length - 1)}px`;\n }\n\n // Stretch/crush lines as necessary using line spacing\n // Recompute rects after letter spacing\n wordRects = determineRealRects(paragEl, '.BRwordElement');\n const spaceRects = determineRealRects(paragEl, '.BRspace');\n\n const ocrLines = $(ocrParagraph).find(\"LINE[coords]\").toArray();\n const lineEls = Array.from(paragEl.querySelectorAll('.BRlineElement'));\n\n let ySoFar = paragTop;\n for (const [ocrLine, lineEl] of zip(ocrLines, lineEls)) {\n // shift words using marginLeft to align with the correct x position\n const words = $(ocrLine).find(\"WORD\").toArray();\n // const ocrLineLeft = Math.min(...words.map(w => parseFloat($(w).attr(\"coords\").split(',')[0])));\n let xSoFar = this.rtl ? paragRight : paragLeft;\n for (const [ocrWord, wordEl] of zip(words, lineEl.querySelectorAll('.BRwordElement'))) {\n // start of line, need to compute the offset relative to the OCR words\n const wordRect = wordRects.get(wordEl);\n const [ocrLeft, , ocrRight ] = $(ocrWord).attr(\"coords\").split(',').map(parseFloat);\n const diff = (this.rtl ? -(ocrRight - xSoFar) : ocrLeft - xSoFar);\n\n if (wordEl.previousElementSibling) {\n const space = wordEl.previousElementSibling;\n space.style.letterSpacing = `${diff - spaceRects.get(space).width}px`;\n } else {\n wordEl.style[this.rtl ? 'paddingRight' : 'paddingLeft'] = `${diff}px`;\n }\n if (this.rtl) xSoFar -= diff + wordRect.width;\n else xSoFar += diff + wordRect.width;\n }\n // And also fix y position\n const ocrLineTop = Math.min(...words.map(w => parseFloat($(w).attr(\"coords\").split(',')[3])));\n const diff = ocrLineTop - ySoFar;\n if (lineEl.previousElementSibling) {\n lineEl.previousElementSibling.style.lineHeight = `${diff}px`;\n ySoFar += diff;\n }\n }\n\n // The last line will have a line height subtracting from the paragraph height\n lineEls[lineEls.length - 1].style.lineHeight = `${paragBottom - ySoFar}px`;\n\n // Edge does not include a newline for some reason when copying/pasting the <p> els\n paragEl.appendChild(document.createElement('br'));\n return paragEl;\n }\n}\n\nBookReader?.registerPlugin('textSelection', TextSelectionPlugin);\n\n\n/**\n * @param {HTMLElement} parentEl\n * @param {string} selector\n * @returns {Map<Element, Rect>}\n */\nfunction determineRealRects(parentEl, selector) {\n const initals = {\n position: parentEl.style.position,\n visibility: parentEl.style.visibility,\n top: parentEl.style.top,\n left: parentEl.style.left,\n transform: parentEl.style.transform,\n };\n parentEl.style.position = 'absolute';\n parentEl.style.visibility = 'hidden';\n parentEl.style.top = '0';\n parentEl.style.left = '0';\n parentEl.style.transform = 'none';\n document.body.appendChild(parentEl);\n const rects = new Map(\n Array.from(parentEl.querySelectorAll(selector))\n .map(wordEl => {\n const origRect = wordEl.getBoundingClientRect();\n return [wordEl, new Rect(\n origRect.left + window.scrollX,\n origRect.top + window.scrollY,\n origRect.width,\n origRect.height,\n )];\n }),\n );\n document.body.removeChild(parentEl);\n Object.assign(parentEl.style, initals);\n return rects;\n}\n\n/**\n * @param {HTMLElement} line\n */\nfunction augmentLine(line) {\n const words = $(line).find(\"WORD\").toArray();\n return {\n ocrElement: line,\n words,\n firstWord: words[0],\n lastWord: words[words.length - 1],\n };\n}\n\n/**\n * @template T\n * Get the i-th element of an iterable\n * @param {Iterable<T>} iterable\n * @param {number} index\n */\nexport function genAt(iterable, index) {\n let i = 0;\n for (const x of iterable) {\n if (i == index) return x;\n i++;\n }\n return undefined;\n}\n\n/**\n * @template T\n * Generator version of filter\n * @param {Iterable<T>} iterable\n * @param {function(T): boolean} fn\n */\nexport function* genFilter(iterable, fn) {\n for (const x of iterable) {\n if (fn(x)) yield x;\n }\n}\n\n/**\n * @template TFrom, TTo\n * Generator version of map\n * @param {Iterable<TFrom>} gen\n * @param {function(TFrom): TTo} fn\n * @returns {Iterable<TTo>}\n */\nexport function* genMap(gen, fn) {\n for (const x of gen) yield fn(x);\n}\n\n/**\n * @template T\n * Generator that provides a sliding window of 3 elements,\n * prev, current, and next.\n * @param {Iterable<T>} gen\n * @returns {Iterable<[T | undefined, T, T | undefined]>}\n */\nexport function* lookAroundWindow(gen) {\n let prev = undefined;\n let cur = undefined;\n let next = undefined;\n for (const x of gen) {\n if (typeof cur !== 'undefined') {\n next = x;\n yield [prev, cur, next];\n }\n prev = cur;\n cur = x;\n next = undefined;\n }\n\n if (typeof cur !== 'undefined') {\n yield [prev, cur, next];\n }\n}\n\n/**\n * @template T1, T2\n * Lazy zip implementation to avoid importing lodash\n * Expects iterators to be of the same length\n * @param {Iterable<T1>} gen1\n * @param {Iterable<T2>} gen2\n * @returns {Iterable<[T1, T2]>}\n */\nexport function* zip(gen1, gen2) {\n const it1 = gen1[Symbol.iterator]();\n const it2 = gen2[Symbol.iterator]();\n while (true) {\n const r1 = it1.next();\n const r2 = it2.next();\n if (r1.done && r2.done) {\n return;\n }\n if (r1.done || r2.done) {\n throw new Error('zip: one of the iterators is done');\n }\n yield [r1.value, r2.value];\n }\n}\n\n/**\n * [left, bottom, right, top]\n * @param {Array<[number, number, number, number]>} bounds\n * @returns {[number, number, number, number]}\n */\nfunction determineBounds(bounds) {\n let leftMost = Infinity;\n let bottomMost = -Infinity;\n let rightMost = -Infinity;\n let topMost = Infinity;\n\n for (const [left, bottom, right, top] of bounds) {\n leftMost = Math.min(leftMost, left);\n bottomMost = Math.max(bottomMost, bottom);\n rightMost = Math.max(rightMost, right);\n topMost = Math.min(topMost, top);\n }\n\n return [leftMost, bottomMost, rightMost, topMost];\n}\n\n/**\n * Recursively traverses the XML tree and adds coords\n * which are the bounding box of all child coords\n * @param {Element} xmlEl\n */\nfunction recursivelyAddCoords(xmlEl) {\n if ($(xmlEl).attr('coords') || !xmlEl.children) {\n return;\n }\n\n const children = $(xmlEl).children().toArray();\n if (children.length === 0) {\n return;\n }\n\n for (const child of children) {\n recursivelyAddCoords(child);\n }\n\n const childCoords = [];\n\n for (const child of children) {\n if (!$(child).attr('coords')) continue;\n childCoords.push($(child).attr('coords').split(',').map(parseFloat));\n }\n\n const boundingCoords = determineBounds(childCoords);\n if (Math.abs(boundingCoords[0]) != Infinity) {\n $(xmlEl).attr('coords', boundingCoords.join(','));\n }\n}\n\n/**\n * Basically a polyfill for the native DOMRect class\n */\nclass Rect {\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n constructor(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n get right() { return this.x + this.width; }\n get bottom() { return this.y + this.height; }\n get top() { return this.y; }\n get left() { return this.x; }\n}\n\n/**\n * Depth traverse the DOM tree starting at `start`, and ending at `end`.\n * @param {Node} start\n * @param {Node} end\n * @returns {Generator<Node>}\n */\nexport function* walkBetweenNodes(start, end) {\n let done = false;\n\n /**\n * @param {Node} node\n */\n function* walk(node, {children = true, parents = true, siblings = true} = {}) {\n if (node === end) {\n done = true;\n yield node;\n return;\n }\n\n // yield self\n yield node;\n\n // First iterate children (depth-first traversal)\n if (children && node.firstChild) {\n yield* walk(node.firstChild, {children: true, parents: false, siblings: true});\n if (done) return;\n }\n\n // Then iterate siblings\n if (siblings) {\n for (let sib = node.nextSibling; sib; sib = sib.nextSibling) {\n yield* walk(sib, {children: true, parents: false, siblings: false});\n if (done) return;\n }\n }\n\n // Finally, move up the tree\n if (parents && node.parentNode) {\n yield* walk(node.parentNode, {children: false, parents: true, siblings: true});\n if (done) return;\n }\n }\n\n yield* walk(start);\n}\n","// src/data.ts\nvar data_default = [\n [\"Serbian\", \"\\u0441\\u0440\\u043F\\u0441\\u043A\\u0438 \\u0458\\u0435\\u0437\\u0438\\u043A\", \"sr\", \"srp\", \"srp\"],\n [\"Romanian, Moldavian, Moldovan\", \"Rom\\xE2n\\u0103\", \"ro\", \"ron\", \"rum\"],\n [\"Sichuan Yi, Nuosu\", \"\\uA188\\uA320\\uA4BF Nuosuhxop\", \"ii\", \"iii\", \"iii\"],\n [\"Tahitian\", \"Reo Tahiti\", \"ty\", \"tah\", \"tah\"],\n [\"Tagalog\", \"Wikang Tagalog\", \"tl\", \"tgl\", \"tgl\"],\n [\"Yiddish\", \"\\u05D9\\u05D9\\u05B4\\u05D3\\u05D9\\u05E9\", \"yi\", \"yid\", \"yid\"],\n [\"Akan\", \"Akan\", \"ak\", \"aka\", \"aka\"],\n [\"Malay\", \"Bahasa Melayu, \\u0628\\u0647\\u0627\\u0633 \\u0645\\u0644\\u0627\\u064A\\u0648\", \"ms\", \"msa\", \"may\"],\n [\"Arabic\", \"\\u0627\\u0644\\u0639\\u0631\\u0628\\u064A\\u0629\", \"ar\", \"ara\", \"ara\"],\n [\"Norwegian\", \"Norsk\", \"no\", \"nor\", \"nor\"],\n [\"Ojibwa\", \"\\u140A\\u14C2\\u1511\\u14C8\\u142F\\u14A7\\u140E\\u14D0\", \"oj\", \"oji\", \"oji\"],\n [\"Fulah\", \"Fulfulde, Pulaar, Pular\", \"ff\", \"ful\", \"ful\"],\n [\"Persian\", \"\\u0641\\u0627\\u0631\\u0633\\u06CC\", \"fa\", \"fas\", \"per\"],\n [\"Albanian\", \"Shqip\", \"sq\", \"sqi\", \"alb\"],\n [\"Aymara\", \"aymar aru\", \"ay\", \"aym\", \"aym\"],\n [\"Azerbaijani\", \"az\\u0259rbaycan dili\", \"az\", \"aze\", \"aze\"],\n [\"Chinese\", \"\\u4E2D\\u6587 (Zh\\u014Dngw\\xE9n), \\u6C49\\u8BED, \\u6F22\\u8A9E\", \"zh\", \"zho\", \"chi\"],\n [\"Cree\", \"\\u14C0\\u1426\\u1403\\u152D\\u140D\\u140F\\u1423\", \"cr\", \"cre\", \"cre\"],\n [\"Estonian\", \"eesti, eesti keel\", \"et\", \"est\", \"est\"],\n [\"Guaran\\xED\", \"Ava\\xF1e'\\u1EBD\", \"gn\", \"grn\", \"grn\"],\n [\"Inupiaq\", \"I\\xF1upiaq, I\\xF1upiatun\", \"ik\", \"ipk\", \"ipk\"],\n [\"Inuktitut\", \"\\u1403\\u14C4\\u1483\\u144E\\u1450\\u1466\", \"iu\", \"iku\", \"iku\"],\n [\"Kanuri\", \"Kanuri\", \"kr\", \"kau\", \"kau\"],\n [\"Komi\", \"\\u043A\\u043E\\u043C\\u0438 \\u043A\\u044B\\u0432\", \"kv\", \"kom\", \"kom\"],\n [\"Kongo\", \"Kikongo\", \"kg\", \"kon\", \"kon\"],\n [\"Kurdish\", \"Kurd\\xEE, \\u0623\\u06C7\\u0632\\u0628\\u06D0\\u0643\", \"ku\", \"kur\", \"kur\"],\n [\"Latvian\", \"latvie\\u0161u valoda\", \"lv\", \"lav\", \"lav\"],\n [\"Malagasy\", \"fiteny malagasy\", \"mg\", \"mlg\", \"mlg\"],\n [\"Mongolian\", \"\\u041C\\u043E\\u043D\\u0433\\u043E\\u043B \\u0445\\u044D\\u043B\", \"mn\", \"mon\", \"mon\"],\n [\"Oromo\", \"Afaan Oromoo\", \"om\", \"orm\", \"orm\"],\n [\"Pashto, Pushto\", \"\\u067E\\u069A\\u062A\\u0648\", \"ps\", \"pus\", \"pus\"],\n [\"Quechua\", \"Runa Simi, Kichwa\", \"qu\", \"que\", \"que\"],\n [\"Sardinian\", \"sardu\", \"sc\", \"srd\", \"srd\"],\n [\"Swahili\", \"Kiswahili\", \"sw\", \"swa\", \"swa\"],\n [\"Uzbek\", \"O\\u02BBzbek, \\u040E\\u0437\\u0431\\u0435\\u043A, \", \"uz\", \"uzb\", \"uzb\"],\n [\"Zhuang, Chuang\", \"Sa\\u026F cue\\u014B\\u0185, Saw cuengh\", \"za\", \"zha\", \"zha\"],\n [\"Bislama\", \"Bislama\", \"bi\", \"bis\", \"bis\"],\n [\"Norwegian Bokm\\xE5l\", \"Norsk Bokm\\xE5l\", \"nb\", \"nob\", \"nob\"],\n [\"Norwegian Nynorsk\", \"Norsk Nynorsk\", \"nn\", \"nno\", \"nno\"],\n [\"Indonesian\", \"Bahasa Indonesia\", \"id\", \"ind\", \"ind\"],\n [\"Twi\", \"Twi\", \"tw\", \"twi\", \"twi\"],\n [\"Esperanto\", \"Esperanto\", \"eo\", \"epo\", \"epo\"],\n [\"Interlingua\", \"Interlingua\", \"ia\", \"ina\", \"ina\"],\n [\"Interlingue\", \"Originally called Occidental; then Interlingue after WWII\", \"ie\", \"ile\", \"ile\"],\n [\"Ido\", \"Ido\", \"io\", \"ido\", \"ido\"],\n [\"Volap\\xFCk\", \"Volap\\xFCk\", \"vo\", \"vol\", \"vol\"],\n [\"Bihari languages\", \"\\u092D\\u094B\\u091C\\u092A\\u0941\\u0930\\u0940\", \"bh\", \"bih\", \"bih\"],\n [\"Hebrew (modern)\", \"\\u05E2\\u05D1\\u05E8\\u05D9\\u05EA\", \"he\", \"heb\", \"heb\"],\n [\"Sanskrit\", \"\\u0938\\u0902\\u0938\\u094D\\u0915\\u0943\\u0924\\u092E\\u094D\", \"sa\", \"san\", \"san\"],\n [\"Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian\", \"\\u0469\\u0437\\u044B\\u043A\\u044A \\u0441\\u043B\\u043E\\u0432\\u0463\\u043D\\u044C\\u0441\\u043A\\u044A\", \"cu\", \"chu\", \"chu\"],\n [\"Pali\", \"\\u092A\\u093E\\u0934\\u093F\", \"pi\", \"pli\", \"pli\"],\n [\"Avestan\", \"avesta\", \"ae\", \"ave\", \"ave\"],\n [\"Latin\", \"latine, lingua latina\", \"la\", \"lat\", \"lat\"],\n [\"Armenian\", \"\\u0540\\u0561\\u0575\\u0565\\u0580\\u0565\\u0576\", \"hy\", \"hye\", \"arm\"],\n [\"Swati\", \"SiSwati\", \"ss\", \"ssw\", \"ssw\"],\n [\"Tibetan\", \"\\u0F56\\u0F7C\\u0F51\\u0F0B\\u0F61\\u0F72\\u0F42\", \"bo\", \"bod\", \"tib\"],\n [\"South Ndebele\", \"isiNdebele\", \"nr\", \"nbl\", \"nbl\"],\n [\"Slovene\", \"Slovenski Jezik, Sloven\\u0161\\u010Dina\", \"sl\", \"slv\", \"slv\"],\n [\"Oriya\", \"\\u0B13\\u0B21\\u0B3C\\u0B3F\\u0B06\", \"or\", \"ori\", \"ori\"],\n [\"North Ndebele\", \"isiNdebele\", \"nd\", \"nde\", \"nde\"],\n [\"Nauru\", \"Dorerin Naoero\", \"na\", \"nau\", \"nau\"],\n [\"Maori\", \"te reo M\\u0101ori\", \"mi\", \"mri\", \"mao\"],\n [\"Marathi\", \"\\u092E\\u0930\\u093E\\u0920\\u0940\", \"mr\", \"mar\", \"mar\"],\n [\"Luba-Katanga\", \"Kiluba\", \"lu\", \"lub\", \"lub\"],\n [\"Rundi\", \"Ikirundi\", \"rn\", \"run\", \"run\"],\n [\"Central Khmer\", \"\\u1781\\u17D2\\u1798\\u17C2\\u179A, \\u1781\\u17C1\\u1798\\u179A\\u1797\\u17B6\\u179F\\u17B6, \\u1797\\u17B6\\u179F\\u17B6\\u1781\\u17D2\\u1798\\u17C2\\u179A\", \"km\", \"khm\", \"khm\"],\n [\"Western Frisian\", \"Frysk\", \"fy\", \"fry\", \"fry\"],\n [\"Bengali\", \"\\u09AC\\u09BE\\u0982\\u09B2\\u09BE\", \"bn\", \"ben\", \"ben\"],\n [\"Avaric\", \"\\u0430\\u0432\\u0430\\u0440 \\u043C\\u0430\\u0446\\u04C0, \\u043C\\u0430\\u0433\\u04C0\\u0430\\u0440\\u0443\\u043B \\u043C\\u0430\\u0446\\u04C0\", \"av\", \"ava\", \"ava\"],\n [\"Abkhazian\", \"\\u0430\\u04A7\\u0441\\u0443\\u0430 \\u0431\\u044B\\u0437\\u0448\\u04D9\\u0430, \\u0430\\u04A7\\u0441\\u0448\\u04D9\\u0430\", \"ab\", \"abk\", \"abk\"],\n [\"Afar\", \"Afaraf\", \"aa\", \"aar\", \"aar\"],\n [\"Afrikaans\", \"Afrikaans\", \"af\", \"afr\", \"afr\"],\n [\"Amharic\", \"\\u12A0\\u121B\\u122D\\u129B\", \"am\", \"amh\", \"amh\"],\n [\"Aragonese\", \"aragon\\xE9s\", \"an\", \"arg\", \"arg\"],\n [\"Assamese\", \"\\u0985\\u09B8\\u09AE\\u09C0\\u09AF\\u09BC\\u09BE\", \"as\", \"asm\", \"asm\"],\n [\"Bambara\", \"bamanankan\", \"bm\", \"bam\", \"bam\"],\n [\"Bashkir\", \"\\u0431\\u0430\\u0448\\u04A1\\u043E\\u0440\\u0442 \\u0442\\u0435\\u043B\\u0435\", \"ba\", \"bak\", \"bak\"],\n [\"Basque\", \"euskara, euskera\", \"eu\", \"eus\", \"baq\"],\n [\"Belarusian\", \"\\u0431\\u0435\\u043B\\u0430\\u0440\\u0443\\u0441\\u043A\\u0430\\u044F \\u043C\\u043E\\u0432\\u0430\", \"be\", \"bel\", \"bel\"],\n [\"Bosnian\", \"bosanski jezik\", \"bs\", \"bos\", \"bos\"],\n [\"Breton\", \"brezhoneg\", \"br\", \"bre\", \"bre\"],\n [\"Bulgarian\", \"\\u0431\\u044A\\u043B\\u0433\\u0430\\u0440\\u0441\\u043A\\u0438 \\u0435\\u0437\\u0438\\u043A\", \"bg\", \"bul\", \"bul\"],\n [\"Burmese\", \"\\u1017\\u1019\\u102C\\u1005\\u102C\", \"my\", \"mya\", \"bur\"],\n [\"Catalan, Valencian\", \"catal\\xE0, valenci\\xE0\", \"ca\", \"cat\", \"cat\"],\n [\"Chamorro\", \"Chamoru\", \"ch\", \"cha\", \"cha\"],\n [\"Chechen\", \"\\u043D\\u043E\\u0445\\u0447\\u0438\\u0439\\u043D \\u043C\\u043E\\u0442\\u0442\", \"ce\", \"che\", \"che\"],\n [\"Chichewa, Chewa, Nyanja\", \"chiChe\\u0175a, chinyanja\", \"ny\", \"nya\", \"nya\"],\n [\"Chuvash\", \"\\u0447\\u04D1\\u0432\\u0430\\u0448 \\u0447\\u04D7\\u043B\\u0445\\u0438\", \"cv\", \"chv\", \"chv\"],\n [\"Cornish\", \"Kernewek\", \"kw\", \"cor\", \"cor\"],\n [\"Corsican\", \"corsu, lingua corsa\", \"co\", \"cos\", \"cos\"],\n [\"Croatian\", \"hrvatski jezik\", \"hr\", \"hrv\", \"hrv\"],\n [\"Czech\", \"\\u010De\\u0161tina, \\u010Desk\\xFD jazyk\", \"cs\", \"ces\", \"cze\"],\n [\"Danish\", \"dansk\", \"da\", \"dan\", \"dan\"],\n [\"Divehi, Dhivehi, Maldivian\", \"\\u078B\\u07A8\\u0788\\u07AC\\u0780\\u07A8\", \"dv\", \"div\", \"div\"],\n [\"Dutch, Flemish\", \"Nederlands, Vlaams\", \"nl\", \"nld\", \"dut\"],\n [\"Dzongkha\", \"\\u0F62\\u0FAB\\u0F7C\\u0F44\\u0F0B\\u0F41\", \"dz\", \"dzo\", \"dzo\"],\n [\"English\", \"English\", \"en\", \"eng\", \"eng\"],\n [\"Ewe\", \"E\\u028Begbe\", \"ee\", \"ewe\", \"ewe\"],\n [\"Faroese\", \"f\\xF8royskt\", \"fo\", \"fao\", \"fao\"],\n [\"Fijian\", \"vosa Vakaviti\", \"fj\", \"fij\", \"fij\"],\n [\"Finnish\", \"suomi, suomen kieli\", \"fi\", \"fin\", \"fin\"],\n [\"French\", \"fran\\xE7ais, langue fran\\xE7aise\", \"fr\", \"fra\", \"fre\"],\n [\"Galician\", \"Galego\", \"gl\", \"glg\", \"glg\"],\n [\"Georgian\", \"\\u10E5\\u10D0\\u10E0\\u10D7\\u10E3\\u10DA\\u10D8\", \"ka\", \"kat\", \"geo\"],\n [\"German\", \"Deutsch\", \"de\", \"deu\", \"ger\"],\n [\"Greek (modern)\", \"\\u03B5\\u03BB\\u03BB\\u03B7\\u03BD\\u03B9\\u03BA\\u03AC\", \"el\", \"ell\", \"gre\"],\n [\"Gujarati\", \"\\u0A97\\u0AC1\\u0A9C\\u0AB0\\u0ABE\\u0AA4\\u0AC0\", \"gu\", \"guj\", \"guj\"],\n [\"Haitian, Haitian Creole\", \"Krey\\xF2l ayisyen\", \"ht\", \"hat\", \"hat\"],\n [\"Hausa\", \"(Hausa) \\u0647\\u064E\\u0648\\u064F\\u0633\\u064E\", \"ha\", \"hau\", \"hau\"],\n [\"Herero\", \"Otjiherero\", \"hz\", \"her\", \"her\"],\n [\"Hindi\", \"\\u0939\\u093F\\u0928\\u094D\\u0926\\u0940, \\u0939\\u093F\\u0902\\u0926\\u0940\", \"hi\", \"hin\", \"hin\"],\n [\"Hiri Motu\", \"Hiri Motu\", \"ho\", \"hmo\", \"hmo\"],\n [\"Hungarian\", \"magyar\", \"hu\", \"hun\", \"hun\"],\n [\"Irish\", \"Gaeilge\", \"ga\", \"gle\", \"gle\"],\n [\"Igbo\", \"As\\u1EE5s\\u1EE5 Igbo\", \"ig\", \"ibo\", \"ibo\"],\n [\"Icelandic\", \"\\xCDslenska\", \"is\", \"isl\", \"ice\"],\n [\"Italian\", \"Italiano\", \"it\", \"ita\", \"ita\"],\n [\"Japanese\", \"\\u65E5\\u672C\\u8A9E (\\u306B\\u307B\\u3093\\u3054)\", \"ja\", \"jpn\", \"jpn\"],\n [\"Javanese\", \"\\uA9A7\\uA9B1\\uA997\\uA9AE, Basa Jawa\", \"jv\", \"jav\", \"jav\"],\n [\"Kalaallisut, Greenlandic\", \"kalaallisut, kalaallit oqaasii\", \"kl\", \"kal\", \"kal\"],\n [\"Kannada\", \"\\u0C95\\u0CA8\\u0CCD\\u0CA8\\u0CA1\", \"kn\", \"kan\", \"kan\"],\n [\"Kashmiri\", \"\\u0915\\u0936\\u094D\\u092E\\u0940\\u0930\\u0940, \\u0643\\u0634\\u0645\\u064A\\u0631\\u064A\", \"ks\", \"kas\", \"kas\"],\n [\"Kazakh\", \"\\u049B\\u0430\\u0437\\u0430\\u049B \\u0442\\u0456\\u043B\\u0456\", \"kk\", \"kaz\", \"kaz\"],\n [\"Kikuyu, Gikuyu\", \"G\\u0129k\\u0169y\\u0169\", \"ki\", \"kik\", \"kik\"],\n [\"Kinyarwanda\", \"Ikinyarwanda\", \"rw\", \"kin\", \"kin\"],\n [\"Kirghiz, Kyrgyz\", \"\\u041A\\u044B\\u0440\\u0433\\u044B\\u0437\\u0447\\u0430, \\u041A\\u044B\\u0440\\u0433\\u044B\\u0437 \\u0442\\u0438\\u043B\\u0438\", \"ky\", \"kir\", \"kir\"],\n [\"Korean\", \"\\uD55C\\uAD6D\\uC5B4\", \"ko\", \"kor\", \"kor\"],\n [\"Kuanyama, Kwanyama\", \"Kuanyama\", \"kj\", \"kua\", \"kua\"],\n [\"Luxembourgish, Letzeburgesch\", \"L\\xEBtzebuergesch\", \"lb\", \"ltz\", \"ltz\"],\n [\"Ganda\", \"Luganda\", \"lg\", \"lug\", \"lug\"],\n [\"Limburgan, Limburger, Limburgish\", \"Limburgs\", \"li\", \"lim\", \"lim\"],\n [\"Lingala\", \"Ling\\xE1la\", \"ln\", \"lin\", \"lin\"],\n [\"Lao\", \"\\u0E9E\\u0EB2\\u0EAA\\u0EB2\\u0EA5\\u0EB2\\u0EA7\", \"lo\", \"lao\", \"lao\"],\n [\"Lithuanian\", \"lietuvi\\u0173 kalba\", \"lt\", \"lit\", \"lit\"],\n [\"Manx\", \"Gaelg, Gailck\", \"gv\", \"glv\", \"glv\"],\n [\"Macedonian\", \"\\u043C\\u0430\\u043A\\u0435\\u0434\\u043E\\u043D\\u0441\\u043A\\u0438 \\u0458\\u0430\\u0437\\u0438\\u043A\", \"mk\", \"mkd\", \"mac\"],\n [\"Malayalam\", \"\\u0D2E\\u0D32\\u0D2F\\u0D3E\\u0D33\\u0D02\", \"ml\", \"mal\", \"mal\"],\n [\"Maltese\", \"Malti\", \"mt\", \"mlt\", \"mlt\"],\n [\"Marshallese\", \"Kajin M\\u0327aje\\u013C\", \"mh\", \"mah\", \"mah\"],\n [\"Navajo, Navaho\", \"Din\\xE9 bizaad\", \"nv\", \"nav\", \"nav\"],\n [\"Nepali\", \"\\u0928\\u0947\\u092A\\u093E\\u0932\\u0940\", \"ne\", \"nep\", \"nep\"],\n [\"Ndonga\", \"Owambo\", \"ng\", \"ndo\", \"ndo\"],\n [\"Occitan\", \"occitan, lenga d'\\xF2c\", \"oc\", \"oci\", \"oci\"],\n [\"Ossetian, Ossetic\", \"\\u0438\\u0440\\u043E\\u043D \\xE6\\u0432\\u0437\\u0430\\u0433\", \"os\", \"oss\", \"oss\"],\n [\"Panjabi, Punjabi\", \"\\u0A2A\\u0A70\\u0A1C\\u0A3E\\u0A2C\\u0A40\", \"pa\", \"pan\", \"pan\"],\n [\"Polish\", \"j\\u0119zyk polski, polszczyzna\", \"pl\", \"pol\", \"pol\"],\n [\"Portuguese\", \"Portugu\\xEAs\", \"pt\", \"por\", \"por\"],\n [\"Romansh\", \"Rumantsch Grischun\", \"rm\", \"roh\", \"roh\"],\n [\"Russian\", \"\\u0440\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\", \"ru\", \"rus\", \"rus\"],\n [\"Sindhi\", \"\\u0938\\u093F\\u0928\\u094D\\u0927\\u0940, \\u0633\\u0646\\u068C\\u064A\\u060C \\u0633\\u0646\\u062F\\u06BE\\u06CC\", \"sd\", \"snd\", \"snd\"],\n [\"Northern Sami\", \"Davvis\\xE1megiella\", \"se\", \"sme\", \"sme\"],\n [\"Samoan\", \"gagana fa'a Samoa\", \"sm\", \"smo\", \"smo\"],\n [\"Sango\", \"y\\xE2ng\\xE2 t\\xEE s\\xE4ng\\xF6\", \"sg\", \"sag\", \"sag\"],\n [\"Gaelic, Scottish Gaelic\", \"G\\xE0idhlig\", \"gd\", \"gla\", \"gla\"],\n [\"Shona\", \"chiShona\", \"sn\", \"sna\", \"sna\"],\n [\"Sinhala, Sinhalese\", \"\\u0DC3\\u0DD2\\u0D82\\u0DC4\\u0DBD\", \"si\", \"sin\", \"sin\"],\n [\"Slovak\", \"Sloven\\u010Dina, Slovensk\\xFD Jazyk\", \"sk\", \"slk\", \"slo\"],\n [\"Somali\", \"Soomaaliga, af Soomaali\", \"so\", \"som\", \"som\"],\n [\"Southern Sotho\", \"Sesotho\", \"st\", \"sot\", \"sot\"],\n [\"Spanish, Castilian\", \"Espa\\xF1ol\", \"es\", \"spa\", \"spa\"],\n [\"Sundanese\", \"Basa Sunda\", \"su\", \"sun\", \"sun\"],\n [\"Swedish\", \"Svenska\", \"sv\", \"swe\", \"swe\"],\n [\"Tamil\", \"\\u0BA4\\u0BAE\\u0BBF\\u0BB4\\u0BCD\", \"ta\", \"tam\", \"tam\"],\n [\"Telugu\", \"\\u0C24\\u0C46\\u0C32\\u0C41\\u0C17\\u0C41\", \"te\", \"tel\", \"tel\"],\n [\"Tajik\", \"\\u0442\\u043E\\u04B7\\u0438\\u043A\\u04E3, to\\xE7ik\\u012B, \\u062A\\u0627\\u062C\\u06CC\\u06A9\\u06CC\", \"tg\", \"tgk\", \"tgk\"],\n [\"Thai\", \"\\u0E44\\u0E17\\u0E22\", \"th\", \"tha\", \"tha\"],\n [\"Tigrinya\", \"\\u1275\\u130D\\u122D\\u129B\", \"ti\", \"tir\", \"tir\"],\n [\"Turkmen\", \"T\\xFCrkmen, \\u0422\\u04AF\\u0440\\u043A\\u043C\\u0435\\u043D\", \"tk\", \"tuk\", \"tuk\"],\n [\"Tswana\", \"Setswana\", \"tn\", \"tsn\", \"tsn\"],\n [\"Tongan (Tonga Islands)\", \"Faka Tonga\", \"to\", \"ton\", \"ton\"],\n [\"Turkish\", \"T\\xFCrk\\xE7e\", \"tr\", \"tur\", \"tur\"],\n [\"Tsonga\", \"Xitsonga\", \"ts\", \"tso\", \"tso\"],\n [\"Tatar\", \"\\u0442\\u0430\\u0442\\u0430\\u0440 \\u0442\\u0435\\u043B\\u0435, tatar tele\", \"tt\", \"tat\", \"tat\"],\n [\"Uighur, Uyghur\", \"\\u0626\\u06C7\\u064A\\u063A\\u06C7\\u0631\\u0686\\u06D5, Uyghurche\", \"ug\", \"uig\", \"uig\"],\n [\"Ukrainian\", \"\\u0423\\u043A\\u0440\\u0430\\u0457\\u043D\\u0441\\u044C\\u043A\\u0430\", \"uk\", \"ukr\", \"ukr\"],\n [\"Urdu\", \"\\u0627\\u0631\\u062F\\u0648\", \"ur\", \"urd\", \"urd\"],\n [\"Venda\", \"Tshiven\\u1E13a\", \"ve\", \"ven\", \"ven\"],\n [\"Vietnamese\", \"Ti\\u1EBFng Vi\\u1EC7t\", \"vi\", \"vie\", \"vie\"],\n [\"Walloon\", \"Walon\", \"wa\", \"wln\", \"wln\"],\n [\"Welsh\", \"Cymraeg\", \"cy\", \"cym\", \"wel\"],\n [\"Wolof\", \"Wollof\", \"wo\", \"wol\", \"wol\"],\n [\"Xhosa\", \"isiXhosa\", \"xh\", \"xho\", \"xho\"],\n [\"Yoruba\", \"Yor\\xF9b\\xE1\", \"yo\", \"yor\", \"yor\"],\n [\"Zulu\", \"isiZulu\", \"zu\", \"zul\", \"zul\"]\n];\n\n// src/index.ts\nvar codes = [];\nvar by639_1 = {};\nvar by639_2T = {};\nvar by639_2B = {};\ndata_default.forEach((row) => {\n var code = {\n name: row[0],\n nativeName: row[1],\n iso639_1: row[2],\n iso639_2T: row[3],\n iso639_2B: row[4]\n };\n by639_1[row[2]] = by639_2T[row[3]] = by639_2B[row[4]] = code;\n codes.push(code);\n});\nvar src_default = codes;\nexport {\n by639_1,\n by639_2B,\n by639_2T,\n codes,\n src_default as default\n};\n//# sourceMappingURL=index.mjs.map","import langs from 'iso-language-codes';\n\n/**\n * Use regex to approximate word count in a string\n * @param {string} text\n * @return {number}\n */\nexport function approximateWordCount(text) {\n const m = text.match(/\\S+/g);\n return m ? m.length : 0;\n}\n\n/**\n * Checks whether the current browser is on android\n * @param {string} [userAgent]\n * @return {boolean}\n */\nexport function isAndroid(userAgent = navigator.userAgent) {\n return /android/i.test(userAgent);\n}\n\n/** @type {{[lang: string]: string}} */\n// Handle odd one-off language pairs that might show up over time\nconst specialLangs = {\n \"zh-hans\": \"中文 (Zhōngwén)\",\n};\n/**\n * @typedef {string} ISO6391\n * Language code in ISO 639-1 format. e.g. en, fr, zh\n * Can also retrieve language native name + ISO 639-1 code\n **/\n\n/**\n * @param {string} language in some format\n * @param {boolean?} getName gets Native Name + language code if true\n * @return {ISO6391?}\n */\nexport function toISO6391(language, getName = false) {\n if (!language) return null;\n language = language.toLowerCase();\n\n return searchForISO6391(language, ['iso639_1'], getName) ||\n searchForISO6391(language, ['iso639_2T'], getName) ||\n searchForISO6391(language, ['iso639_2B', 'nativeName', 'name'], getName);\n}\n\n/**\n * Searches for the given long in the given columns.\n * @param {string} language\n * @param {Array<keyof import('iso-language-codes').Code>} columnsToSearch\n * @param {boolean?} getName\n * @return {ISO6391?}\n */\nfunction searchForISO6391(language, columnsToSearch, getName) {\n for (const lang of langs) {\n for (const colName of columnsToSearch) {\n if (lang[colName].split(', ').map(x => x.toLowerCase()).indexOf(language) != -1) {\n if (getName) return `${lang.nativeName.split(\", \")[0]} (${lang.iso639_1})`;\n return lang.iso639_1;\n }\n }\n }\n if (specialLangs[language]) return `${specialLangs[language]} (${language})`;\n return null;\n}\n\n/**\n * Checks whether the current browser supports localStorage or\n * if the current context has access to it.\n * @return {boolean}\n */\nexport function hasLocalStorage() {\n try {\n return !!window.localStorage;\n } catch (e) {\n // Will throw in sandboxed iframe\n // DOMException: Window.localStorage getter: Forbidden in a sandboxed document without the 'allow-same-origin' flag.\n return false;\n }\n}\n\nexport const DEBUG_READ_ALOUD = location.toString().indexOf('_debugReadAloud=true') != -1;\n\nexport async function checkIfFiresPause() {\n // Pick some random text so that if it accidentally speaks, it's not too annoying\n const u = new SpeechSynthesisUtterance(\"Loading\");\n let calledPause = false;\n u.addEventListener('pause', () => calledPause = true);\n speechSynthesis.speak(u);\n await new Promise(res => setTimeout(res, 10));\n speechSynthesis.pause();\n return calledPause;\n}\n","// @ts-check\nexport class SelectionObserver {\n selecting = false;\n startedInSelector = false;\n /** @type {HTMLElement} */\n target = null;\n\n /**\n * @param {string} selector\n * @param {function('started' | 'cleared', HTMLElement): any} handler\n */\n constructor(selector, handler) {\n this.selector = selector;\n this.handler = handler;\n }\n\n attach() {\n // We can't just use selectstart, because safari on iOS just\n // randomly decides when to fire it 😤\n // document.addEventListener(\"selectstart\", this._onSelectStart);\n // This has to be on document :/\n document.addEventListener(\"selectionchange\", this._onSelectionChange);\n }\n\n detach() {\n document.removeEventListener(\"selectionchange\", this._onSelectionChange);\n }\n\n _onSelectionChange = () => {\n const sel = window.getSelection();\n\n if (!this.selecting && sel.toString()) {\n const target = $(sel.anchorNode).closest(this.selector)[0];\n if (!target) return;\n this.target = target;\n this.selecting = true;\n this.handler('started', this.target);\n }\n\n if (this.selecting && (sel.isCollapsed || !sel.toString() || !$(sel.anchorNode).closest(this.selector)[0])) {\n this.selecting = false;\n this.handler('cleared', this.target);\n }\n };\n}\n","// @ts-check\nimport { SelectionObserver } from \"../BookReader/utils/SelectionObserver.js\";\n\nexport class TextSelectionManager {\n options = {\n // Current Translation plugin implementation does not have words, will limit to one BRlineElement for now\n maxProtectedWords: 200,\n }\n\n /**\n * @param {string} layer Selector for the text layer to manage\n * @param {import('../BookReader.js').default} br\n * @param {Object} options\n * @param {string[]} options.selectionElement CSS selector for elements that count as \"words\" for selection limiting\n * @param {number} [maxWords] Maximum number of words allowed to be selected\n */\n constructor (layer, br, { selectionElement }, maxWords) {\n /** @type {string} */\n this.layer = layer;\n /** @type {import('../BookReader.js').default} */\n this.br = br;\n /** @type {string[]} */\n this.selectionElement = selectionElement;\n this.selectionObserver = new SelectionObserver(this.layer, this._onSelectionChange);\n this.options.maxProtectedWords = maxWords ? maxWords : 200;\n }\n\n init() {\n this.attach();\n new SelectionObserver(this.layer, (selectEvent) => {\n // Track how often selection is used\n if (selectEvent == 'started') {\n this.br.plugins.archiveAnalytics?.sendEvent('BookReader', 'SelectStart');\n\n // Set a class on the page to avoid hiding it when zooming/etc\n this.br.refs.$br.find('.BRpagecontainer--hasSelection').removeClass('BRpagecontainer--hasSelection');\n $(window.getSelection().anchorNode).closest('.BRpagecontainer').addClass('BRpagecontainer--hasSelection');\n }\n }).attach();\n }\n\n // Need attach + detach methods to toggle w/ Translation plugin\n attach() {\n this.selectionObserver.attach();\n if (this.br.protected) {\n document.addEventListener('selectionchange', this._limitSelection);\n // Prevent right clicking when selected text\n $(document.body).on('contextmenu dragstart copy', (e) => {\n const selection = document.getSelection();\n if (selection?.toString()) {\n const intersectsTextLayer = $(this.layer)\n .toArray()\n .some(el => selection.containsNode(el, true));\n if (intersectsTextLayer) {\n e.preventDefault();\n return false;\n }\n }\n });\n }\n }\n\n detach() {\n this.selectionObserver.detach();\n if (this.br.protected) {\n document.removeEventListener('selectionchange', this._limitSelection);\n }\n }\n\n /**\n * @param {'started' | 'cleared'} type\n * @param {HTMLElement} target\n */\n _onSelectionChange = (type, target) => {\n if (type === 'started') {\n this.textSelectingMode(target);\n } else if (type === 'cleared') {\n this.defaultMode(target);\n } else {\n throw new Error(`Unknown type ${type}`);\n }\n }\n\n /**\n * Intercept copied text to remove any styling applied to it\n * @param {JQuery} $container\n */\n interceptCopy ($container) {\n $container[0].addEventListener('copy', (event) => {\n const selection = document.getSelection();\n event.clipboardData.setData('text/plain', selection.toString());\n event.preventDefault();\n });\n }\n\n /**\n * Initializes text selection modes if there is a text layer on the page\n * @param {JQuery} $container\n */\n stopPageFlip($container) {\n /** @type {JQuery<HTMLElement>} */\n const $textLayer = $container.find(this.layer);\n if (!$textLayer.length) return;\n $textLayer.each((i, s) => this.defaultMode(s));\n if (!this.br.protected) {\n this.interceptCopy($container);\n }\n }\n\n /**\n * Applies mouse events when in default mode\n * @param {HTMLElement} textLayer\n */\n defaultMode (textLayer) {\n const $pageContainer = $(textLayer).closest('.BRpagecontainer');\n textLayer.style.pointerEvents = \"none\";\n $pageContainer.find(\"img\").css(\"pointer-events\", \"auto\");\n\n $(textLayer).off(\".textSelectPluginHandler\");\n const startedMouseDown = this.mouseIsDown;\n let skipNextMouseup = this.mouseIsDown;\n if (startedMouseDown) {\n textLayer.style.pointerEvents = \"auto\";\n }\n\n // Need to stop propagation to prevent DragScrollable from\n // blocking selection\n $(textLayer).on(\"mousedown.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = true;\n if ($(event.target).is(this.selectionElement.join(\", \"))) {\n event.stopPropagation();\n }\n });\n\n $(textLayer).on(\"mouseup.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = false;\n textLayer.style.pointerEvents = \"none\";\n if (skipNextMouseup) {\n skipNextMouseup = false;\n event.stopPropagation();\n }\n });\n }\n\n /**\n * This mode is active while there is a selection on the given textLayer\n * @param {HTMLElement} textLayer\n */\n textSelectingMode(textLayer) {\n const $pageContainer = $(textLayer).closest('.BRpagecontainer');\n // Make text layer consume all events\n textLayer.style.pointerEvents = \"all\";\n // Block img from getting long-press to save while selecting\n $pageContainer.find(\"img\").css(\"pointer-events\", \"none\");\n\n $(textLayer).off(\".textSelectPluginHandler\");\n\n $(textLayer).on(\"mousedown.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = true;\n event.stopPropagation();\n });\n\n // Prevent page flip on click\n $(textLayer).on('mouseup.textSelectPluginHandler', (event) => {\n this.mouseIsDown = false;\n event.stopPropagation();\n });\n }\n\n\n _limitSelection = () => {\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n\n // Check if range.startContainer is inside the sub-tree of .BRContainer\n const startInBr = !!range.startContainer.parentElement.closest('.BRcontainer');\n const endInBr = !!range.endContainer.parentElement.closest('.BRcontainer');\n if (!startInBr && !endInBr) return;\n if (!startInBr || !endInBr) {\n // weird case, just clear the selection\n selection.removeAllRanges();\n return;\n }\n\n // Find the last allowed word in the selection\n const lastAllowedWord = genAt(\n genFilter(\n walkBetweenNodes(range.startContainer, range.endContainer),\n (node) => node.classList?.contains(\n this.selectionElement[0].replace(\".\", \"\"),\n ),\n ),\n this.options.maxProtectedWords - 1,\n );\n\n if (!lastAllowedWord || range.endContainer.parentNode == lastAllowedWord) return;\n\n const newRange = document.createRange();\n newRange.setStart(range.startContainer, range.startOffset);\n newRange.setEnd(lastAllowedWord.firstChild, lastAllowedWord.textContent.length);\n\n selection.removeAllRanges();\n selection.addRange(newRange);\n };\n}\n\n/**\n * @template T\n * Get the i-th element of an iterable\n * @param {Iterable<T>} iterable\n * @param {number} index\n */\nexport function genAt(iterable, index) {\n let i = 0;\n for (const x of iterable) {\n if (i == index) {\n return x;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * @template T\n * Generator version of filter\n * @param {Iterable<T>} iterable\n * @param {function(T): boolean} fn\n */\nexport function* genFilter(iterable, fn) {\n for (const x of iterable) {\n if (fn(x)) yield x;\n }\n}\n\n/**\n * Depth traverse the DOM tree starting at `start`, and ending at `end`.\n * @param {Node} start\n * @param {Node} end\n * @returns {Generator<Node>}\n */\nexport function* walkBetweenNodes(start, end) {\n let done = false;\n\n /**\n * @param {Node} node\n */\n function* walk(node, {children = true, parents = true, siblings = true} = {}) {\n if (node === end) {\n done = true;\n yield node;\n return;\n }\n\n // yield self\n yield node;\n\n // First iterate children (depth-first traversal)\n if (children && node.firstChild) {\n yield* walk(node.firstChild, {children: true, parents: false, siblings: true});\n if (done) return;\n }\n\n // Then iterate siblings\n if (siblings) {\n for (let sib = node.nextSibling; sib; sib = sib.nextSibling) {\n yield* walk(sib, {children: true, parents: false, siblings: false});\n if (done) return;\n }\n }\n\n // Finally, move up the tree\n if (parents && node.parentNode) {\n yield* walk(node.parentNode, {children: false, parents: true, siblings: true});\n if (done) return;\n }\n }\n\n yield* walk(start);\n}\n","/**\n * @template T\n */\nexport class Cache {\n constructor(maxSize = 10) {\n this.maxSize = maxSize;\n /** @type {T[]} */\n this.entries = [];\n }\n\n /**\n * @param {T} entry\n */\n add(entry) {\n if (this.entries.length >= this.maxSize) {\n this.entries.shift();\n }\n this.entries.push(entry);\n }\n}\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n"],"names":["PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","name","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","this","BookReaderPlugin","br","_classCallCheck","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","_marked2","_regeneratorRuntime","mark","genMap","_marked3","lookAroundWindow","_marked4","zip","_slicedToArray","r","e","Array","isArray","_arrayWithHoles","l","t","Symbol","iterator","n","i","u","a","f","o","call","next","done","push","length","return","_iterableToArrayLimit","_unsupportedIterableToArray","TypeError","_nonIterableRest","_createForOfIteratorHelper","_n","F","s","_arrayLikeToArray","toString","slice","constructor","from","test","prototype","hasOwnProperty","defineProperty","c","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","h","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","bind","_setPrototypeOf","_defineProperty","toPrimitive","String","_toPrimitive","BookReader","window","TextSelectionPlugin","_BookReaderPlugin","_this","enabled","fullDjvuXmlUrl","singlePageDjvuXmlUrl","jsonp","maxProtectedWords","Cache","rtl","pageProgression","textSelectionManager","TextSelectionManager","selectionElement","_inherits","loadData","init","mode","constModeThumb","page","createTextLayer","djvuPagesPromise","ajax","url","applyVariables","vars","dataType","cache","xhrFields","withCredentials","protected","error","res","xmlMap","parseXML","find","_getPageText","_callee","index","cachedEntry","xmlDoc","result","XMLpagesArr","_context","pageTextCache","entries","x","response","pageIndex","add","t0","undefined","_x","_createTextLayer","_callee2","$container","XMLpage","totalWords","textLayer","ratioW","ratioH","bookLangCode","ocrParagraphs","paragEls","paragraphRects","yAdded","_iterator","_step","_step$value","ocrParagraph","paragEl","ocrParagBounds","realRect","_ocrParagBounds","ocrLeft","ocrRight","ocrTop","newStartMargin","newTop","_this2","_context2","getPageText","recursivelyAddCoords","maxWordRendered","console","log","concat","createDIVPageLayer","parseFloat","style","width","height","transform","toISO6391","bookLanguage","setAttribute","toArray","map","el","renderParagraph","appendChild","determineRealRects","attr","split","get","right","left","top","marginTop","err","append","stopPageFlip","trigger","_x2","document","createElement","classList","getAttribute","ariaHidden","_$$attr$split$map2","paragLeft","paragBottom","paragRight","paragTop","wordHeightArr","lines","_step2","_iterator2","augmentLine","_step2$value","prevLine","line","nextLine","isLastLineOfParagraph","ocrElement","lineEl","_step5","_iterator5","words","_step5$value","wordIndex","currWord","_$$attr$split$map4","bottom","wordHeight","lastWord","textContent","endsWith","newLeft","firstWord","wordEl","space","createTextNode","hasHyphen","lastWordEl","children","sort","b","paragWordHeight","Math","floor","fontSize","_step3","wordRects","_iterator3","querySelectorAll","_step3$value","ocrWord","_$$attr$split$map8","ocrWidth","diff","letterSpacing","_step4","spaceRects","ocrLines","lineEls","ySoFar","_iterator4","_step6","_step4$value","ocrLine","xSoFar","_iterator6","_step6$value","wordRect","_$$attr$split$map10","previousElementSibling","min","_arrayWithoutHoles","w","_iterableToArray","_nonIterableSpread","lineHeight","parentEl","selector","initals","position","visibility","body","rects","Map","origRect","getBoundingClientRect","Rect","scrollX","scrollY","removeChild","gen","fn","_iterator9","_step9","_context4","cur","_iterator10","_step10","_context5","gen1","gen2","it1","it2","r1","r2","_context6","xmlEl","_step12","_iterator12","_step13","childCoords","_iterator13","child","boundingCoords","bounds","_step11","leftMost","Infinity","bottomMost","rightMost","topMost","_iterator11","_step11$value","max","determineBounds","abs","join","registerPlugin","codes","by639_1","by639_2T","by639_2B","row","code","nativeName","iso639_1","iso639_2T","iso639_2B","src_default","approximateWordCount","text","m","match","isAndroid","userAgent","navigator","specialLangs","language","getName","searchForISO6391","toLowerCase","columnsToSearch","langs","lang","indexOf","hasLocalStorage","localStorage","DEBUG_READ_ALOUD","location","SelectionObserver","handler","sel","getSelection","selecting","anchorNode","closest","isCollapsed","addEventListener","_onSelectionChange","removeEventListener","_marked","genFilter","walkBetweenNodes","layer","_ref","maxWords","textSelectingMode","defaultMode","selection","rangeCount","range","getRangeAt","startInBr","startContainer","parentElement","endInBr","endContainer","lastAllowedWord","iterable","genAt","node","_node$classList","contains","replace","parentNode","newRange","createRange","setStart","startOffset","setEnd","firstChild","removeAllRanges","addRange","selectionObserver","attach","selectEvent","_this2$br$plugins$arc","plugins","archiveAnalytics","sendEvent","refs","$br","removeClass","addClass","_this3","_limitSelection","on","some","containsNode","preventDefault","detach","event","clipboardData","setData","_this4","$textLayer","each","interceptCopy","_this5","$pageContainer","pointerEvents","css","off","startedMouseDown","mouseIsDown","skipNextMouseup","is","stopPropagation","_this6","start","end","walk","_context3","_ref2","_ref2$children","_ref2$parents","parents","_ref2$siblings","siblings","sib","nextSibling","maxSize","entry","shift","template","overrides","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","varName","filterNames","reduce","acc","urlencode","encodeURIComponent"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"plugins/plugin.text_selection.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.text_selection.js","webpack://@internetarchive/bookreader/./src/BookReader/utils/SelectionObserver.js","webpack://@internetarchive/bookreader/./src/util/TextSelectionManager.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/./node_modules/iso-language-codes/dist/index.mjs","webpack://@internetarchive/bookreader/./src/plugins/tts/utils.js","webpack://@internetarchive/bookreader/./src/util/cache.js","webpack://@internetarchive/bookreader/./src/util/strings.js"],"sourcesContent":["//@ts-check\nimport { createDIVPageLayer } from '../BookReader/PageContainer.js';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport { applyVariables } from '../util/strings.js';\nimport { Cache } from '../util/cache.js';\nimport { toISO6391 } from './tts/utils.js';\nimport { TextSelectionManager } from '../util/TextSelectionManager.js';\n/** @typedef {import('../util/strings.js').StringWithVars} StringWithVars */\n/** @typedef {import('../BookReader/PageContainer.js').PageContainer} PageContainer */\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\n\nexport class TextSelectionPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** @type {StringWithVars} The URL to fetch the entire DJVU xml. Supports options.vars */\n fullDjvuXmlUrl: null,\n /** @type {StringWithVars} The URL to fetch a single page of the DJVU xml. Supports options.vars. Also has {{pageIndex}} */\n singlePageDjvuXmlUrl: null,\n /** Whether to fetch the XML as a jsonp */\n jsonp: false,\n /** Mox words that can be selected when the text layer is protected */\n maxProtectedWords: 200,\n }\n\n /**@type {PromiseLike<JQuery<HTMLElement>|undefined>} */\n djvuPagesPromise = null;\n\n /** @type {Cache<{index: number, response: any}>} */\n pageTextCache = new Cache();\n\n /**\n * Sometimes there are too many words on a page, and the browser becomes near\n * unusable. For now don't render text layer for pages with too many words.\n */\n maxWordRendered = 2500;\n\n /**\n * @param {import('../BookReader.js').default} br\n */\n constructor(br) {\n super(br);\n // In the future this should be in the ocr file\n // since a book being right to left doesn't mean the ocr is right to left. But for\n // now we do make that assumption.\n /** Whether the book is right-to-left */\n this.rtl = this.br.pageProgression === 'rl';\n this.textSelectionManager = new TextSelectionManager('.BRtextLayer', this.br, {selectionElement: ['.BRwordElement', '.BRspace']}, this.options.maxProtectedWords);\n }\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.loadData();\n this.textSelectionManager.init();\n }\n\n /**\n * @override\n * @param {PageContainer} pageContainer\n * @returns {PageContainer}\n */\n _configurePageContainer(pageContainer) {\n // Disable if thumb mode; it's too janky\n // .page can be null for \"pre-cover\" region\n if (this.br.mode !== this.br.constModeThumb && pageContainer.page) {\n this.createTextLayer(pageContainer);\n }\n return pageContainer;\n }\n\n loadData() {\n // Only fetch the full djvu xml if the single page url isn't there\n if (this.options.singlePageDjvuXmlUrl) return;\n this.djvuPagesPromise = $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.fullDjvuXmlUrl, this.br.options.vars),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n error: (e) => undefined,\n }).then((res) => {\n try {\n const xmlMap = $.parseXML(res);\n return xmlMap && $(xmlMap).find(\"OBJECT\");\n } catch (e) {\n return undefined;\n }\n });\n }\n\n /**\n * @param {number} index\n * @returns {Promise<HTMLElement|undefined>}\n */\n async getPageText(index) {\n if (this.options.singlePageDjvuXmlUrl) {\n const cachedEntry = this.pageTextCache.entries.find(x => x.index == index);\n if (cachedEntry) {\n return cachedEntry.response;\n }\n const res = await $.ajax({\n type: \"GET\",\n url: applyVariables(this.options.singlePageDjvuXmlUrl, this.br.options.vars, { pageIndex: index }),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n error: (e) => undefined,\n });\n try {\n const xmlDoc = $.parseXML(res);\n const result = xmlDoc && $(xmlDoc).find(\"OBJECT\")[0];\n this.pageTextCache.add({ index, response: result });\n return result;\n } catch (e) {\n return undefined;\n }\n } else {\n const XMLpagesArr = await this.djvuPagesPromise;\n if (XMLpagesArr) return XMLpagesArr[index];\n }\n }\n\n /**\n * @param {PageContainer} pageContainer\n */\n async createTextLayer(pageContainer) {\n const pageIndex = pageContainer.page.index;\n const $container = pageContainer.$container;\n const $textLayers = $container.find('.BRtextLayer');\n if ($textLayers.length) return;\n const XMLpage = await this.getPageText(pageIndex);\n if (!XMLpage) return;\n // Seeing some 0 left and 0 top coordinates in OCR, remove it entirely to prevent odd rendering\n // eg https://archive.org/details/illustratedbooko00robe/page/n11/mode/2up\n $(XMLpage).find(\"WORD\").filter((_, ele) => {\n const [left, , , top] = ele.getAttribute('coords').split(\",\").map(parseFloat);\n if (left == 0 && top == 0) {\n console.error(\"Found invalid ocr word coordinates\");\n return true;\n }\n }).remove();\n recursivelyAddCoords(XMLpage);\n\n const totalWords = $(XMLpage).find(\"WORD\").length;\n if (totalWords > this.maxWordRendered) {\n console.log(`Page ${pageIndex} has too many words (${totalWords} > ${this.maxWordRendered}). Not rendering text layer.`);\n return;\n }\n\n const textLayer = createDIVPageLayer(pageContainer.page, 'BRtextLayer');\n // Have to wait to make sure the page container is actually rendered,\n // otherwise width/height are unset after a mode change.\n await Promise.resolve();\n const ratioW = parseFloat(pageContainer.$container[0].style.width) / pageContainer.page.width;\n const ratioH = parseFloat(pageContainer.$container[0].style.height) / pageContainer.page.height;\n textLayer.style.transform = `scale(${ratioW}, ${ratioH})`;\n const bookLangCode = toISO6391(this.br.options.bookLanguage);\n if (bookLangCode) {\n textLayer.setAttribute(\"lang\", bookLangCode);\n }\n textLayer.setAttribute(\"dir\", this.rtl ? \"rtl\" : \"ltr\");\n\n const ocrParagraphs = $(XMLpage).find(\"PARAGRAPH[coords]\").toArray();\n const paragEls = ocrParagraphs.map(p => {\n const el = this.renderParagraph(p);\n textLayer.appendChild(el);\n return el;\n });\n\n // Fix up paragraph positions\n const paragraphRects = determineRealRects(textLayer, '.BRparagraphElement');\n let yAdded = 0;\n for (const [ocrParagraph, paragEl] of zip(ocrParagraphs, paragEls)) {\n const ocrParagBounds = $(ocrParagraph).attr(\"coords\").split(\",\").map(parseFloat);\n const realRect = paragraphRects.get(paragEl);\n const [ocrLeft, , ocrRight, ocrTop] = ocrParagBounds;\n const newStartMargin = this.rtl ? (realRect.right - ocrRight) : (ocrLeft - realRect.left);\n const newTop = ocrTop - (realRect.top + yAdded);\n\n paragEl.style[this.rtl ? 'marginRight' : 'marginLeft'] = `${newStartMargin}px`;\n paragEl.style.marginTop = `${newTop}px`;\n yAdded += newTop;\n textLayer.appendChild(paragEl);\n }\n $container.append(textLayer);\n this.textSelectionManager.stopPageFlip($container);\n this.br.trigger('textLayerRendered', {\n pageIndex,\n pageContainer,\n });\n }\n\n /**\n * @param {HTMLElement} ocrParagraph\n * @returns {HTMLParagraphElement}\n */\n renderParagraph(ocrParagraph) {\n const paragEl = document.createElement('p');\n paragEl.classList.add('BRparagraphElement');\n if (ocrParagraph.getAttribute(\"x-role\")) {\n paragEl.classList.add('ocr-role-header-footer');\n paragEl.ariaHidden = \"true\";\n }\n const [paragLeft, paragBottom, paragRight, paragTop] = $(ocrParagraph).attr(\"coords\").split(\",\").map(parseFloat);\n const wordHeightArr = [];\n const lines = $(ocrParagraph).find(\"LINE[coords]\").toArray();\n if (!lines.length) return paragEl;\n\n\n for (const [prevLine, line, nextLine] of lookAroundWindow(genMap(lines, augmentLine))) {\n const isLastLineOfParagraph = line.ocrElement == lines[lines.length - 1];\n const lineEl = document.createElement('span');\n lineEl.classList.add('BRlineElement');\n\n for (const [wordIndex, currWord] of line.words.entries()) {\n const [, bottom, right, top] = $(currWord).attr(\"coords\").split(',').map(parseFloat);\n const wordHeight = bottom - top;\n wordHeightArr.push(wordHeight);\n\n if (wordIndex == 0 && prevLine?.lastWord.textContent.trim().endsWith('-')) {\n // ideally prefer the next line to determine the left position,\n // since the previous line could be the first line of the paragraph\n // and hence have an incorrectly indented first word.\n // E.g. https://archive.org/details/driitaleofdaring00bachuoft/page/360/mode/2up\n const [newLeft, , , ] = $((nextLine || prevLine).firstWord).attr(\"coords\").split(',').map(parseFloat);\n $(currWord).attr(\"coords\", `${newLeft},${bottom},${right},${top}`);\n }\n\n const wordEl = document.createElement('span');\n wordEl.setAttribute(\"class\", \"BRwordElement\");\n wordEl.textContent = currWord.textContent.trim();\n\n if (wordIndex > 0) {\n const space = document.createElement('span');\n space.classList.add('BRspace');\n space.textContent = ' ';\n lineEl.append(space);\n\n // Edge ignores empty elements (like BRspace), so add another\n // space to ensure Edge's ReadAloud works correctly.\n lineEl.appendChild(document.createTextNode(' '));\n }\n\n lineEl.appendChild(wordEl);\n }\n\n const hasHyphen = line.lastWord.textContent.trim().endsWith('-');\n const lastWordEl = lineEl.children[lineEl.children.length - 1];\n if (hasHyphen && !isLastLineOfParagraph) {\n lastWordEl.textContent = lastWordEl.textContent.trim().slice(0, -1);\n lastWordEl.classList.add('BRwordElement--hyphen');\n }\n\n paragEl.appendChild(lineEl);\n if (!isLastLineOfParagraph && !hasHyphen) {\n // Edge does not correctly have spaces between the lines.\n paragEl.appendChild(document.createTextNode(' '));\n }\n }\n\n wordHeightArr.sort((a, b) => a - b);\n const paragWordHeight = wordHeightArr[Math.floor(wordHeightArr.length * 0.85)] + 4;\n paragEl.style.left = `${paragLeft}px`;\n paragEl.style.top = `${paragTop}px`;\n paragEl.style.width = `${paragRight - paragLeft}px`;\n paragEl.style.height = `${paragBottom - paragTop}px`;\n paragEl.style.fontSize = `${paragWordHeight}px`;\n\n // Fix up sizes - stretch/crush words as necessary using letter spacing\n let wordRects = determineRealRects(paragEl, '.BRwordElement');\n const ocrWords = $(ocrParagraph).find(\"WORD\").toArray();\n const wordEls = paragEl.querySelectorAll('.BRwordElement');\n for (const [ocrWord, wordEl] of zip(ocrWords, wordEls)) {\n const realRect = wordRects.get(wordEl);\n const [left, , right ] = $(ocrWord).attr(\"coords\").split(',').map(parseFloat);\n let ocrWidth = right - left;\n // Some books (eg theworksofplato01platiala) have a space _inside_ the <WORD>\n // element. That makes it impossible to determine the correct positining\n // of everything, but to avoid the BRspace's being width 0, which makes selection\n // janky on Chrome Android, assume the space is the same width as one of the\n // letters.\n if (ocrWord.textContent.endsWith(' ')) {\n ocrWidth = ocrWidth * (ocrWord.textContent.length - 1) / ocrWord.textContent.length;\n }\n const diff = ocrWidth - realRect.width;\n wordEl.style.letterSpacing = `${diff / (ocrWord.textContent.length - 1)}px`;\n }\n\n // Stretch/crush lines as necessary using line spacing\n // Recompute rects after letter spacing\n wordRects = determineRealRects(paragEl, '.BRwordElement');\n const spaceRects = determineRealRects(paragEl, '.BRspace');\n\n const ocrLines = $(ocrParagraph).find(\"LINE[coords]\").toArray();\n const lineEls = Array.from(paragEl.querySelectorAll('.BRlineElement'));\n\n let ySoFar = paragTop;\n for (const [ocrLine, lineEl] of zip(ocrLines, lineEls)) {\n // shift words using marginLeft to align with the correct x position\n const words = $(ocrLine).find(\"WORD\").toArray();\n // const ocrLineLeft = Math.min(...words.map(w => parseFloat($(w).attr(\"coords\").split(',')[0])));\n let xSoFar = this.rtl ? paragRight : paragLeft;\n for (const [ocrWord, wordEl] of zip(words, lineEl.querySelectorAll('.BRwordElement'))) {\n // start of line, need to compute the offset relative to the OCR words\n const wordRect = wordRects.get(wordEl);\n const [ocrLeft, , ocrRight ] = $(ocrWord).attr(\"coords\").split(',').map(parseFloat);\n const diff = (this.rtl ? -(ocrRight - xSoFar) : ocrLeft - xSoFar);\n\n if (wordEl.previousElementSibling) {\n const space = wordEl.previousElementSibling;\n space.style.letterSpacing = `${diff - spaceRects.get(space).width}px`;\n } else {\n wordEl.style[this.rtl ? 'paddingRight' : 'paddingLeft'] = `${diff}px`;\n }\n if (this.rtl) xSoFar -= diff + wordRect.width;\n else xSoFar += diff + wordRect.width;\n }\n // And also fix y position\n const ocrLineTop = Math.min(...words.map(w => parseFloat($(w).attr(\"coords\").split(',')[3])));\n const diff = ocrLineTop - ySoFar;\n if (lineEl.previousElementSibling) {\n lineEl.previousElementSibling.style.lineHeight = `${diff}px`;\n ySoFar += diff;\n }\n }\n\n // The last line will have a line height subtracting from the paragraph height\n lineEls[lineEls.length - 1].style.lineHeight = `${paragBottom - ySoFar}px`;\n\n // Edge does not include a newline for some reason when copying/pasting the <p> els\n paragEl.appendChild(document.createElement('br'));\n return paragEl;\n }\n}\n\nBookReader?.registerPlugin('textSelection', TextSelectionPlugin);\n\n\n/**\n * @param {HTMLElement} parentEl\n * @param {string} selector\n * @returns {Map<Element, Rect>}\n */\nfunction determineRealRects(parentEl, selector) {\n const initals = {\n position: parentEl.style.position,\n visibility: parentEl.style.visibility,\n top: parentEl.style.top,\n left: parentEl.style.left,\n transform: parentEl.style.transform,\n };\n parentEl.style.position = 'absolute';\n parentEl.style.visibility = 'hidden';\n parentEl.style.top = '0';\n parentEl.style.left = '0';\n parentEl.style.transform = 'none';\n document.body.appendChild(parentEl);\n const rects = new Map(\n Array.from(parentEl.querySelectorAll(selector))\n .map(wordEl => {\n const origRect = wordEl.getBoundingClientRect();\n return [wordEl, new Rect(\n origRect.left + window.scrollX,\n origRect.top + window.scrollY,\n origRect.width,\n origRect.height,\n )];\n }),\n );\n document.body.removeChild(parentEl);\n Object.assign(parentEl.style, initals);\n return rects;\n}\n\n/**\n * @param {HTMLElement} line\n */\nfunction augmentLine(line) {\n const words = $(line).find(\"WORD\").toArray();\n return {\n ocrElement: line,\n words,\n firstWord: words[0],\n lastWord: words[words.length - 1],\n };\n}\n\n/**\n * @template T\n * Get the i-th element of an iterable\n * @param {Iterable<T>} iterable\n * @param {number} index\n */\nexport function genAt(iterable, index) {\n let i = 0;\n for (const x of iterable) {\n if (i == index) return x;\n i++;\n }\n return undefined;\n}\n\n/**\n * @template T\n * Generator version of filter\n * @param {Iterable<T>} iterable\n * @param {function(T): boolean} fn\n */\nexport function* genFilter(iterable, fn) {\n for (const x of iterable) {\n if (fn(x)) yield x;\n }\n}\n\n/**\n * @template TFrom, TTo\n * Generator version of map\n * @param {Iterable<TFrom>} gen\n * @param {function(TFrom): TTo} fn\n * @returns {Iterable<TTo>}\n */\nexport function* genMap(gen, fn) {\n for (const x of gen) yield fn(x);\n}\n\n/**\n * @template T\n * Generator that provides a sliding window of 3 elements,\n * prev, current, and next.\n * @param {Iterable<T>} gen\n * @returns {Iterable<[T | undefined, T, T | undefined]>}\n */\nexport function* lookAroundWindow(gen) {\n let prev = undefined;\n let cur = undefined;\n let next = undefined;\n for (const x of gen) {\n if (typeof cur !== 'undefined') {\n next = x;\n yield [prev, cur, next];\n }\n prev = cur;\n cur = x;\n next = undefined;\n }\n\n if (typeof cur !== 'undefined') {\n yield [prev, cur, next];\n }\n}\n\n/**\n * @template T1, T2\n * Lazy zip implementation to avoid importing lodash\n * Expects iterators to be of the same length\n * @param {Iterable<T1>} gen1\n * @param {Iterable<T2>} gen2\n * @returns {Iterable<[T1, T2]>}\n */\nexport function* zip(gen1, gen2) {\n const it1 = gen1[Symbol.iterator]();\n const it2 = gen2[Symbol.iterator]();\n while (true) {\n const r1 = it1.next();\n const r2 = it2.next();\n if (r1.done && r2.done) {\n return;\n }\n if (r1.done || r2.done) {\n throw new Error('zip: one of the iterators is done');\n }\n yield [r1.value, r2.value];\n }\n}\n\n/**\n * [left, bottom, right, top]\n * @param {Array<[number, number, number, number]>} bounds\n * @returns {[number, number, number, number]}\n */\nfunction determineBounds(bounds) {\n let leftMost = Infinity;\n let bottomMost = -Infinity;\n let rightMost = -Infinity;\n let topMost = Infinity;\n\n for (const [left, bottom, right, top] of bounds) {\n leftMost = Math.min(leftMost, left);\n bottomMost = Math.max(bottomMost, bottom);\n rightMost = Math.max(rightMost, right);\n topMost = Math.min(topMost, top);\n }\n\n return [leftMost, bottomMost, rightMost, topMost];\n}\n\n/**\n * Recursively traverses the XML tree and adds coords\n * which are the bounding box of all child coords\n * @param {Element} xmlEl\n */\nfunction recursivelyAddCoords(xmlEl) {\n if ($(xmlEl).attr('coords') || !xmlEl.children) {\n return;\n }\n\n const children = $(xmlEl).children().toArray();\n if (children.length === 0) {\n return;\n }\n\n for (const child of children) {\n recursivelyAddCoords(child);\n }\n\n const childCoords = [];\n\n for (const child of children) {\n if (!$(child).attr('coords')) continue;\n childCoords.push($(child).attr('coords').split(',').map(parseFloat));\n }\n\n const boundingCoords = determineBounds(childCoords);\n if (Math.abs(boundingCoords[0]) != Infinity) {\n $(xmlEl).attr('coords', boundingCoords.join(','));\n }\n}\n\n/**\n * Basically a polyfill for the native DOMRect class\n */\nclass Rect {\n /**\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n */\n constructor(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n get right() { return this.x + this.width; }\n get bottom() { return this.y + this.height; }\n get top() { return this.y; }\n get left() { return this.x; }\n}\n\n/**\n * Depth traverse the DOM tree starting at `start`, and ending at `end`.\n * @param {Node} start\n * @param {Node} end\n * @returns {Generator<Node>}\n */\nexport function* walkBetweenNodes(start, end) {\n let done = false;\n\n /**\n * @param {Node} node\n */\n function* walk(node, {children = true, parents = true, siblings = true} = {}) {\n if (node === end) {\n done = true;\n yield node;\n return;\n }\n\n // yield self\n yield node;\n\n // First iterate children (depth-first traversal)\n if (children && node.firstChild) {\n yield* walk(node.firstChild, {children: true, parents: false, siblings: true});\n if (done) return;\n }\n\n // Then iterate siblings\n if (siblings) {\n for (let sib = node.nextSibling; sib; sib = sib.nextSibling) {\n yield* walk(sib, {children: true, parents: false, siblings: false});\n if (done) return;\n }\n }\n\n // Finally, move up the tree\n if (parents && node.parentNode) {\n yield* walk(node.parentNode, {children: false, parents: true, siblings: true});\n if (done) return;\n }\n }\n\n yield* walk(start);\n}\n","// @ts-check\nexport class SelectionObserver {\n selecting = false;\n startedInSelector = false;\n /** @type {HTMLElement} */\n target = null;\n\n /**\n * @param {string} selector\n * @param {function('started' | 'cleared', HTMLElement): any} handler\n */\n constructor(selector, handler) {\n this.selector = selector;\n this.handler = handler;\n }\n\n attach() {\n // We can't just use selectstart, because safari on iOS just\n // randomly decides when to fire it 😤\n // document.addEventListener(\"selectstart\", this._onSelectStart);\n // This has to be on document :/\n document.addEventListener(\"selectionchange\", this._onSelectionChange);\n }\n\n detach() {\n document.removeEventListener(\"selectionchange\", this._onSelectionChange);\n }\n\n _onSelectionChange = () => {\n const sel = window.getSelection();\n\n if (!this.selecting && sel.toString()) {\n const target = $(sel.anchorNode).closest(this.selector)[0];\n if (!target) return;\n this.target = target;\n this.selecting = true;\n this.handler('started', this.target);\n }\n\n if (this.selecting && (sel.isCollapsed || !sel.toString() || !$(sel.anchorNode).closest(this.selector)[0])) {\n this.selecting = false;\n this.handler('cleared', this.target);\n }\n };\n}\n","// @ts-check\nimport { SelectionObserver } from \"../BookReader/utils/SelectionObserver.js\";\n\nexport class TextSelectionManager {\n options = {\n // Current Translation plugin implementation does not have words, will limit to one BRlineElement for now\n maxProtectedWords: 200,\n }\n\n /**\n * @param {string} layer Selector for the text layer to manage\n * @param {import('../BookReader.js').default} br\n * @param {Object} options\n * @param {string[]} options.selectionElement CSS selector for elements that count as \"words\" for selection limiting\n * @param {number} [maxWords] Maximum number of words allowed to be selected\n */\n constructor (layer, br, { selectionElement }, maxWords) {\n /** @type {string} */\n this.layer = layer;\n /** @type {import('../BookReader.js').default} */\n this.br = br;\n /** @type {string[]} */\n this.selectionElement = selectionElement;\n this.selectionObserver = new SelectionObserver(this.layer, this._onSelectionChange);\n this.options.maxProtectedWords = maxWords ? maxWords : 200;\n }\n\n init() {\n this.attach();\n new SelectionObserver(this.layer, (selectEvent) => {\n // Track how often selection is used\n if (selectEvent == 'started') {\n this.br.plugins.archiveAnalytics?.sendEvent('BookReader', 'SelectStart');\n\n // Set a class on the page to avoid hiding it when zooming/etc\n this.br.refs.$br.find('.BRpagecontainer--hasSelection').removeClass('BRpagecontainer--hasSelection');\n $(window.getSelection().anchorNode).closest('.BRpagecontainer').addClass('BRpagecontainer--hasSelection');\n }\n }).attach();\n }\n\n // Need attach + detach methods to toggle w/ Translation plugin\n attach() {\n this.selectionObserver.attach();\n if (this.br.protected) {\n document.addEventListener('selectionchange', this._limitSelection);\n // Prevent right clicking when selected text\n $(document.body).on('contextmenu dragstart copy', (e) => {\n const selection = document.getSelection();\n if (selection?.toString()) {\n const intersectsTextLayer = $(this.layer)\n .toArray()\n .some(el => selection.containsNode(el, true));\n if (intersectsTextLayer) {\n e.preventDefault();\n return false;\n }\n }\n });\n }\n }\n\n detach() {\n this.selectionObserver.detach();\n if (this.br.protected) {\n document.removeEventListener('selectionchange', this._limitSelection);\n }\n }\n\n /**\n * @param {'started' | 'cleared'} type\n * @param {HTMLElement} target\n */\n _onSelectionChange = (type, target) => {\n if (type === 'started') {\n this.textSelectingMode(target);\n } else if (type === 'cleared') {\n this.defaultMode(target);\n } else {\n throw new Error(`Unknown type ${type}`);\n }\n }\n\n /**\n * Intercept copied text to remove any styling applied to it\n * @param {JQuery} $container\n */\n interceptCopy ($container) {\n $container[0].addEventListener('copy', (event) => {\n const selection = document.getSelection();\n event.clipboardData.setData('text/plain', selection.toString());\n event.preventDefault();\n });\n }\n\n /**\n * Initializes text selection modes if there is a text layer on the page\n * @param {JQuery} $container\n */\n stopPageFlip($container) {\n /** @type {JQuery<HTMLElement>} */\n const $textLayer = $container.find(this.layer);\n if (!$textLayer.length) return;\n $textLayer.each((i, s) => this.defaultMode(s));\n if (!this.br.protected) {\n this.interceptCopy($container);\n }\n }\n\n /**\n * Applies mouse events when in default mode\n * @param {HTMLElement} textLayer\n */\n defaultMode (textLayer) {\n const $pageContainer = $(textLayer).closest('.BRpagecontainer');\n textLayer.style.pointerEvents = \"none\";\n $pageContainer.find(\"img\").css(\"pointer-events\", \"auto\");\n\n $(textLayer).off(\".textSelectPluginHandler\");\n const startedMouseDown = this.mouseIsDown;\n let skipNextMouseup = this.mouseIsDown;\n if (startedMouseDown) {\n textLayer.style.pointerEvents = \"auto\";\n }\n\n // Need to stop propagation to prevent DragScrollable from\n // blocking selection\n $(textLayer).on(\"mousedown.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = true;\n if ($(event.target).is(this.selectionElement.join(\", \"))) {\n event.stopPropagation();\n }\n });\n\n $(textLayer).on(\"mouseup.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = false;\n textLayer.style.pointerEvents = \"none\";\n if (skipNextMouseup) {\n skipNextMouseup = false;\n event.stopPropagation();\n }\n });\n }\n\n /**\n * This mode is active while there is a selection on the given textLayer\n * @param {HTMLElement} textLayer\n */\n textSelectingMode(textLayer) {\n const $pageContainer = $(textLayer).closest('.BRpagecontainer');\n // Make text layer consume all events\n textLayer.style.pointerEvents = \"all\";\n // Block img from getting long-press to save while selecting\n $pageContainer.find(\"img\").css(\"pointer-events\", \"none\");\n\n $(textLayer).off(\".textSelectPluginHandler\");\n\n $(textLayer).on(\"mousedown.textSelectPluginHandler\", (event) => {\n this.mouseIsDown = true;\n event.stopPropagation();\n });\n\n // Prevent page flip on click\n $(textLayer).on('mouseup.textSelectPluginHandler', (event) => {\n this.mouseIsDown = false;\n event.stopPropagation();\n });\n }\n\n\n _limitSelection = () => {\n const selection = window.getSelection();\n if (!selection.rangeCount) return;\n\n const range = selection.getRangeAt(0);\n\n // Check if range.startContainer is inside the sub-tree of .BRContainer\n const startInBr = !!range.startContainer.parentElement.closest('.BRcontainer');\n const endInBr = !!range.endContainer.parentElement.closest('.BRcontainer');\n if (!startInBr && !endInBr) return;\n if (!startInBr || !endInBr) {\n // weird case, just clear the selection\n selection.removeAllRanges();\n return;\n }\n\n // Find the last allowed word in the selection\n const lastAllowedWord = genAt(\n genFilter(\n walkBetweenNodes(range.startContainer, range.endContainer),\n (node) => node.classList?.contains(\n this.selectionElement[0].replace(\".\", \"\"),\n ),\n ),\n this.options.maxProtectedWords - 1,\n );\n\n if (!lastAllowedWord || range.endContainer.parentNode == lastAllowedWord) return;\n\n const newRange = document.createRange();\n newRange.setStart(range.startContainer, range.startOffset);\n newRange.setEnd(lastAllowedWord.firstChild, lastAllowedWord.textContent.length);\n\n selection.removeAllRanges();\n selection.addRange(newRange);\n };\n}\n\n/**\n * @template T\n * Get the i-th element of an iterable\n * @param {Iterable<T>} iterable\n * @param {number} index\n */\nexport function genAt(iterable, index) {\n let i = 0;\n for (const x of iterable) {\n if (i == index) {\n return x;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * @template T\n * Generator version of filter\n * @param {Iterable<T>} iterable\n * @param {function(T): boolean} fn\n */\nexport function* genFilter(iterable, fn) {\n for (const x of iterable) {\n if (fn(x)) yield x;\n }\n}\n\n/**\n * Depth traverse the DOM tree starting at `start`, and ending at `end`.\n * @param {Node} start\n * @param {Node} end\n * @returns {Generator<Node>}\n */\nexport function* walkBetweenNodes(start, end) {\n let done = false;\n\n /**\n * @param {Node} node\n */\n function* walk(node, {children = true, parents = true, siblings = true} = {}) {\n if (node === end) {\n done = true;\n yield node;\n return;\n }\n\n // yield self\n yield node;\n\n // First iterate children (depth-first traversal)\n if (children && node.firstChild) {\n yield* walk(node.firstChild, {children: true, parents: false, siblings: true});\n if (done) return;\n }\n\n // Then iterate siblings\n if (siblings) {\n for (let sib = node.nextSibling; sib; sib = sib.nextSibling) {\n yield* walk(sib, {children: true, parents: false, siblings: false});\n if (done) return;\n }\n }\n\n // Finally, move up the tree\n if (parents && node.parentNode) {\n yield* walk(node.parentNode, {children: false, parents: true, siblings: true});\n if (done) return;\n }\n }\n\n yield* walk(start);\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","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\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","// src/data.ts\nvar data_default = [\n [\"Serbian\", \"\\u0441\\u0440\\u043F\\u0441\\u043A\\u0438 \\u0458\\u0435\\u0437\\u0438\\u043A\", \"sr\", \"srp\", \"srp\"],\n [\"Romanian, Moldavian, Moldovan\", \"Rom\\xE2n\\u0103\", \"ro\", \"ron\", \"rum\"],\n [\"Sichuan Yi, Nuosu\", \"\\uA188\\uA320\\uA4BF Nuosuhxop\", \"ii\", \"iii\", \"iii\"],\n [\"Tahitian\", \"Reo Tahiti\", \"ty\", \"tah\", \"tah\"],\n [\"Tagalog\", \"Wikang Tagalog\", \"tl\", \"tgl\", \"tgl\"],\n [\"Yiddish\", \"\\u05D9\\u05D9\\u05B4\\u05D3\\u05D9\\u05E9\", \"yi\", \"yid\", \"yid\"],\n [\"Akan\", \"Akan\", \"ak\", \"aka\", \"aka\"],\n [\"Malay\", \"Bahasa Melayu, \\u0628\\u0647\\u0627\\u0633 \\u0645\\u0644\\u0627\\u064A\\u0648\", \"ms\", \"msa\", \"may\"],\n [\"Arabic\", \"\\u0627\\u0644\\u0639\\u0631\\u0628\\u064A\\u0629\", \"ar\", \"ara\", \"ara\"],\n [\"Norwegian\", \"Norsk\", \"no\", \"nor\", \"nor\"],\n [\"Ojibwa\", \"\\u140A\\u14C2\\u1511\\u14C8\\u142F\\u14A7\\u140E\\u14D0\", \"oj\", \"oji\", \"oji\"],\n [\"Fulah\", \"Fulfulde, Pulaar, Pular\", \"ff\", \"ful\", \"ful\"],\n [\"Persian\", \"\\u0641\\u0627\\u0631\\u0633\\u06CC\", \"fa\", \"fas\", \"per\"],\n [\"Albanian\", \"Shqip\", \"sq\", \"sqi\", \"alb\"],\n [\"Aymara\", \"aymar aru\", \"ay\", \"aym\", \"aym\"],\n [\"Azerbaijani\", \"az\\u0259rbaycan dili\", \"az\", \"aze\", \"aze\"],\n [\"Chinese\", \"\\u4E2D\\u6587 (Zh\\u014Dngw\\xE9n), \\u6C49\\u8BED, \\u6F22\\u8A9E\", \"zh\", \"zho\", \"chi\"],\n [\"Cree\", \"\\u14C0\\u1426\\u1403\\u152D\\u140D\\u140F\\u1423\", \"cr\", \"cre\", \"cre\"],\n [\"Estonian\", \"eesti, eesti keel\", \"et\", \"est\", \"est\"],\n [\"Guaran\\xED\", \"Ava\\xF1e'\\u1EBD\", \"gn\", \"grn\", \"grn\"],\n [\"Inupiaq\", \"I\\xF1upiaq, I\\xF1upiatun\", \"ik\", \"ipk\", \"ipk\"],\n [\"Inuktitut\", \"\\u1403\\u14C4\\u1483\\u144E\\u1450\\u1466\", \"iu\", \"iku\", \"iku\"],\n [\"Kanuri\", \"Kanuri\", \"kr\", \"kau\", \"kau\"],\n [\"Komi\", \"\\u043A\\u043E\\u043C\\u0438 \\u043A\\u044B\\u0432\", \"kv\", \"kom\", \"kom\"],\n [\"Kongo\", \"Kikongo\", \"kg\", \"kon\", \"kon\"],\n [\"Kurdish\", \"Kurd\\xEE, \\u0623\\u06C7\\u0632\\u0628\\u06D0\\u0643\", \"ku\", \"kur\", \"kur\"],\n [\"Latvian\", \"latvie\\u0161u valoda\", \"lv\", \"lav\", \"lav\"],\n [\"Malagasy\", \"fiteny malagasy\", \"mg\", \"mlg\", \"mlg\"],\n [\"Mongolian\", \"\\u041C\\u043E\\u043D\\u0433\\u043E\\u043B \\u0445\\u044D\\u043B\", \"mn\", \"mon\", \"mon\"],\n [\"Oromo\", \"Afaan Oromoo\", \"om\", \"orm\", \"orm\"],\n [\"Pashto, Pushto\", \"\\u067E\\u069A\\u062A\\u0648\", \"ps\", \"pus\", \"pus\"],\n [\"Quechua\", \"Runa Simi, Kichwa\", \"qu\", \"que\", \"que\"],\n [\"Sardinian\", \"sardu\", \"sc\", \"srd\", \"srd\"],\n [\"Swahili\", \"Kiswahili\", \"sw\", \"swa\", \"swa\"],\n [\"Uzbek\", \"O\\u02BBzbek, \\u040E\\u0437\\u0431\\u0435\\u043A, \", \"uz\", \"uzb\", \"uzb\"],\n [\"Zhuang, Chuang\", \"Sa\\u026F cue\\u014B\\u0185, Saw cuengh\", \"za\", \"zha\", \"zha\"],\n [\"Bislama\", \"Bislama\", \"bi\", \"bis\", \"bis\"],\n [\"Norwegian Bokm\\xE5l\", \"Norsk Bokm\\xE5l\", \"nb\", \"nob\", \"nob\"],\n [\"Norwegian Nynorsk\", \"Norsk Nynorsk\", \"nn\", \"nno\", \"nno\"],\n [\"Indonesian\", \"Bahasa Indonesia\", \"id\", \"ind\", \"ind\"],\n [\"Twi\", \"Twi\", \"tw\", \"twi\", \"twi\"],\n [\"Esperanto\", \"Esperanto\", \"eo\", \"epo\", \"epo\"],\n [\"Interlingua\", \"Interlingua\", \"ia\", \"ina\", \"ina\"],\n [\"Interlingue\", \"Originally called Occidental; then Interlingue after WWII\", \"ie\", \"ile\", \"ile\"],\n [\"Ido\", \"Ido\", \"io\", \"ido\", \"ido\"],\n [\"Volap\\xFCk\", \"Volap\\xFCk\", \"vo\", \"vol\", \"vol\"],\n [\"Bihari languages\", \"\\u092D\\u094B\\u091C\\u092A\\u0941\\u0930\\u0940\", \"bh\", \"bih\", \"bih\"],\n [\"Hebrew (modern)\", \"\\u05E2\\u05D1\\u05E8\\u05D9\\u05EA\", \"he\", \"heb\", \"heb\"],\n [\"Sanskrit\", \"\\u0938\\u0902\\u0938\\u094D\\u0915\\u0943\\u0924\\u092E\\u094D\", \"sa\", \"san\", \"san\"],\n [\"Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian\", \"\\u0469\\u0437\\u044B\\u043A\\u044A \\u0441\\u043B\\u043E\\u0432\\u0463\\u043D\\u044C\\u0441\\u043A\\u044A\", \"cu\", \"chu\", \"chu\"],\n [\"Pali\", \"\\u092A\\u093E\\u0934\\u093F\", \"pi\", \"pli\", \"pli\"],\n [\"Avestan\", \"avesta\", \"ae\", \"ave\", \"ave\"],\n [\"Latin\", \"latine, lingua latina\", \"la\", \"lat\", \"lat\"],\n [\"Armenian\", \"\\u0540\\u0561\\u0575\\u0565\\u0580\\u0565\\u0576\", \"hy\", \"hye\", \"arm\"],\n [\"Swati\", \"SiSwati\", \"ss\", \"ssw\", \"ssw\"],\n [\"Tibetan\", \"\\u0F56\\u0F7C\\u0F51\\u0F0B\\u0F61\\u0F72\\u0F42\", \"bo\", \"bod\", \"tib\"],\n [\"South Ndebele\", \"isiNdebele\", \"nr\", \"nbl\", \"nbl\"],\n [\"Slovene\", \"Slovenski Jezik, Sloven\\u0161\\u010Dina\", \"sl\", \"slv\", \"slv\"],\n [\"Oriya\", \"\\u0B13\\u0B21\\u0B3C\\u0B3F\\u0B06\", \"or\", \"ori\", \"ori\"],\n [\"North Ndebele\", \"isiNdebele\", \"nd\", \"nde\", \"nde\"],\n [\"Nauru\", \"Dorerin Naoero\", \"na\", \"nau\", \"nau\"],\n [\"Maori\", \"te reo M\\u0101ori\", \"mi\", \"mri\", \"mao\"],\n [\"Marathi\", \"\\u092E\\u0930\\u093E\\u0920\\u0940\", \"mr\", \"mar\", \"mar\"],\n [\"Luba-Katanga\", \"Kiluba\", \"lu\", \"lub\", \"lub\"],\n [\"Rundi\", \"Ikirundi\", \"rn\", \"run\", \"run\"],\n [\"Central Khmer\", \"\\u1781\\u17D2\\u1798\\u17C2\\u179A, \\u1781\\u17C1\\u1798\\u179A\\u1797\\u17B6\\u179F\\u17B6, \\u1797\\u17B6\\u179F\\u17B6\\u1781\\u17D2\\u1798\\u17C2\\u179A\", \"km\", \"khm\", \"khm\"],\n [\"Western Frisian\", \"Frysk\", \"fy\", \"fry\", \"fry\"],\n [\"Bengali\", \"\\u09AC\\u09BE\\u0982\\u09B2\\u09BE\", \"bn\", \"ben\", \"ben\"],\n [\"Avaric\", \"\\u0430\\u0432\\u0430\\u0440 \\u043C\\u0430\\u0446\\u04C0, \\u043C\\u0430\\u0433\\u04C0\\u0430\\u0440\\u0443\\u043B \\u043C\\u0430\\u0446\\u04C0\", \"av\", \"ava\", \"ava\"],\n [\"Abkhazian\", \"\\u0430\\u04A7\\u0441\\u0443\\u0430 \\u0431\\u044B\\u0437\\u0448\\u04D9\\u0430, \\u0430\\u04A7\\u0441\\u0448\\u04D9\\u0430\", \"ab\", \"abk\", \"abk\"],\n [\"Afar\", \"Afaraf\", \"aa\", \"aar\", \"aar\"],\n [\"Afrikaans\", \"Afrikaans\", \"af\", \"afr\", \"afr\"],\n [\"Amharic\", \"\\u12A0\\u121B\\u122D\\u129B\", \"am\", \"amh\", \"amh\"],\n [\"Aragonese\", \"aragon\\xE9s\", \"an\", \"arg\", \"arg\"],\n [\"Assamese\", \"\\u0985\\u09B8\\u09AE\\u09C0\\u09AF\\u09BC\\u09BE\", \"as\", \"asm\", \"asm\"],\n [\"Bambara\", \"bamanankan\", \"bm\", \"bam\", \"bam\"],\n [\"Bashkir\", \"\\u0431\\u0430\\u0448\\u04A1\\u043E\\u0440\\u0442 \\u0442\\u0435\\u043B\\u0435\", \"ba\", \"bak\", \"bak\"],\n [\"Basque\", \"euskara, euskera\", \"eu\", \"eus\", \"baq\"],\n [\"Belarusian\", \"\\u0431\\u0435\\u043B\\u0430\\u0440\\u0443\\u0441\\u043A\\u0430\\u044F \\u043C\\u043E\\u0432\\u0430\", \"be\", \"bel\", \"bel\"],\n [\"Bosnian\", \"bosanski jezik\", \"bs\", \"bos\", \"bos\"],\n [\"Breton\", \"brezhoneg\", \"br\", \"bre\", \"bre\"],\n [\"Bulgarian\", \"\\u0431\\u044A\\u043B\\u0433\\u0430\\u0440\\u0441\\u043A\\u0438 \\u0435\\u0437\\u0438\\u043A\", \"bg\", \"bul\", \"bul\"],\n [\"Burmese\", \"\\u1017\\u1019\\u102C\\u1005\\u102C\", \"my\", \"mya\", \"bur\"],\n [\"Catalan, Valencian\", \"catal\\xE0, valenci\\xE0\", \"ca\", \"cat\", \"cat\"],\n [\"Chamorro\", \"Chamoru\", \"ch\", \"cha\", \"cha\"],\n [\"Chechen\", \"\\u043D\\u043E\\u0445\\u0447\\u0438\\u0439\\u043D \\u043C\\u043E\\u0442\\u0442\", \"ce\", \"che\", \"che\"],\n [\"Chichewa, Chewa, Nyanja\", \"chiChe\\u0175a, chinyanja\", \"ny\", \"nya\", \"nya\"],\n [\"Chuvash\", \"\\u0447\\u04D1\\u0432\\u0430\\u0448 \\u0447\\u04D7\\u043B\\u0445\\u0438\", \"cv\", \"chv\", \"chv\"],\n [\"Cornish\", \"Kernewek\", \"kw\", \"cor\", \"cor\"],\n [\"Corsican\", \"corsu, lingua corsa\", \"co\", \"cos\", \"cos\"],\n [\"Croatian\", \"hrvatski jezik\", \"hr\", \"hrv\", \"hrv\"],\n [\"Czech\", \"\\u010De\\u0161tina, \\u010Desk\\xFD jazyk\", \"cs\", \"ces\", \"cze\"],\n [\"Danish\", \"dansk\", \"da\", \"dan\", \"dan\"],\n [\"Divehi, Dhivehi, Maldivian\", \"\\u078B\\u07A8\\u0788\\u07AC\\u0780\\u07A8\", \"dv\", \"div\", \"div\"],\n [\"Dutch, Flemish\", \"Nederlands, Vlaams\", \"nl\", \"nld\", \"dut\"],\n [\"Dzongkha\", \"\\u0F62\\u0FAB\\u0F7C\\u0F44\\u0F0B\\u0F41\", \"dz\", \"dzo\", \"dzo\"],\n [\"English\", \"English\", \"en\", \"eng\", \"eng\"],\n [\"Ewe\", \"E\\u028Begbe\", \"ee\", \"ewe\", \"ewe\"],\n [\"Faroese\", \"f\\xF8royskt\", \"fo\", \"fao\", \"fao\"],\n [\"Fijian\", \"vosa Vakaviti\", \"fj\", \"fij\", \"fij\"],\n [\"Finnish\", \"suomi, suomen kieli\", \"fi\", \"fin\", \"fin\"],\n [\"French\", \"fran\\xE7ais, langue fran\\xE7aise\", \"fr\", \"fra\", \"fre\"],\n [\"Galician\", \"Galego\", \"gl\", \"glg\", \"glg\"],\n [\"Georgian\", \"\\u10E5\\u10D0\\u10E0\\u10D7\\u10E3\\u10DA\\u10D8\", \"ka\", \"kat\", \"geo\"],\n [\"German\", \"Deutsch\", \"de\", \"deu\", \"ger\"],\n [\"Greek (modern)\", \"\\u03B5\\u03BB\\u03BB\\u03B7\\u03BD\\u03B9\\u03BA\\u03AC\", \"el\", \"ell\", \"gre\"],\n [\"Gujarati\", \"\\u0A97\\u0AC1\\u0A9C\\u0AB0\\u0ABE\\u0AA4\\u0AC0\", \"gu\", \"guj\", \"guj\"],\n [\"Haitian, Haitian Creole\", \"Krey\\xF2l ayisyen\", \"ht\", \"hat\", \"hat\"],\n [\"Hausa\", \"(Hausa) \\u0647\\u064E\\u0648\\u064F\\u0633\\u064E\", \"ha\", \"hau\", \"hau\"],\n [\"Herero\", \"Otjiherero\", \"hz\", \"her\", \"her\"],\n [\"Hindi\", \"\\u0939\\u093F\\u0928\\u094D\\u0926\\u0940, \\u0939\\u093F\\u0902\\u0926\\u0940\", \"hi\", \"hin\", \"hin\"],\n [\"Hiri Motu\", \"Hiri Motu\", \"ho\", \"hmo\", \"hmo\"],\n [\"Hungarian\", \"magyar\", \"hu\", \"hun\", \"hun\"],\n [\"Irish\", \"Gaeilge\", \"ga\", \"gle\", \"gle\"],\n [\"Igbo\", \"As\\u1EE5s\\u1EE5 Igbo\", \"ig\", \"ibo\", \"ibo\"],\n [\"Icelandic\", \"\\xCDslenska\", \"is\", \"isl\", \"ice\"],\n [\"Italian\", \"Italiano\", \"it\", \"ita\", \"ita\"],\n [\"Japanese\", \"\\u65E5\\u672C\\u8A9E (\\u306B\\u307B\\u3093\\u3054)\", \"ja\", \"jpn\", \"jpn\"],\n [\"Javanese\", \"\\uA9A7\\uA9B1\\uA997\\uA9AE, Basa Jawa\", \"jv\", \"jav\", \"jav\"],\n [\"Kalaallisut, Greenlandic\", \"kalaallisut, kalaallit oqaasii\", \"kl\", \"kal\", \"kal\"],\n [\"Kannada\", \"\\u0C95\\u0CA8\\u0CCD\\u0CA8\\u0CA1\", \"kn\", \"kan\", \"kan\"],\n [\"Kashmiri\", \"\\u0915\\u0936\\u094D\\u092E\\u0940\\u0930\\u0940, \\u0643\\u0634\\u0645\\u064A\\u0631\\u064A\", \"ks\", \"kas\", \"kas\"],\n [\"Kazakh\", \"\\u049B\\u0430\\u0437\\u0430\\u049B \\u0442\\u0456\\u043B\\u0456\", \"kk\", \"kaz\", \"kaz\"],\n [\"Kikuyu, Gikuyu\", \"G\\u0129k\\u0169y\\u0169\", \"ki\", \"kik\", \"kik\"],\n [\"Kinyarwanda\", \"Ikinyarwanda\", \"rw\", \"kin\", \"kin\"],\n [\"Kirghiz, Kyrgyz\", \"\\u041A\\u044B\\u0440\\u0433\\u044B\\u0437\\u0447\\u0430, \\u041A\\u044B\\u0440\\u0433\\u044B\\u0437 \\u0442\\u0438\\u043B\\u0438\", \"ky\", \"kir\", \"kir\"],\n [\"Korean\", \"\\uD55C\\uAD6D\\uC5B4\", \"ko\", \"kor\", \"kor\"],\n [\"Kuanyama, Kwanyama\", \"Kuanyama\", \"kj\", \"kua\", \"kua\"],\n [\"Luxembourgish, Letzeburgesch\", \"L\\xEBtzebuergesch\", \"lb\", \"ltz\", \"ltz\"],\n [\"Ganda\", \"Luganda\", \"lg\", \"lug\", \"lug\"],\n [\"Limburgan, Limburger, Limburgish\", \"Limburgs\", \"li\", \"lim\", \"lim\"],\n [\"Lingala\", \"Ling\\xE1la\", \"ln\", \"lin\", \"lin\"],\n [\"Lao\", \"\\u0E9E\\u0EB2\\u0EAA\\u0EB2\\u0EA5\\u0EB2\\u0EA7\", \"lo\", \"lao\", \"lao\"],\n [\"Lithuanian\", \"lietuvi\\u0173 kalba\", \"lt\", \"lit\", \"lit\"],\n [\"Manx\", \"Gaelg, Gailck\", \"gv\", \"glv\", \"glv\"],\n [\"Macedonian\", \"\\u043C\\u0430\\u043A\\u0435\\u0434\\u043E\\u043D\\u0441\\u043A\\u0438 \\u0458\\u0430\\u0437\\u0438\\u043A\", \"mk\", \"mkd\", \"mac\"],\n [\"Malayalam\", \"\\u0D2E\\u0D32\\u0D2F\\u0D3E\\u0D33\\u0D02\", \"ml\", \"mal\", \"mal\"],\n [\"Maltese\", \"Malti\", \"mt\", \"mlt\", \"mlt\"],\n [\"Marshallese\", \"Kajin M\\u0327aje\\u013C\", \"mh\", \"mah\", \"mah\"],\n [\"Navajo, Navaho\", \"Din\\xE9 bizaad\", \"nv\", \"nav\", \"nav\"],\n [\"Nepali\", \"\\u0928\\u0947\\u092A\\u093E\\u0932\\u0940\", \"ne\", \"nep\", \"nep\"],\n [\"Ndonga\", \"Owambo\", \"ng\", \"ndo\", \"ndo\"],\n [\"Occitan\", \"occitan, lenga d'\\xF2c\", \"oc\", \"oci\", \"oci\"],\n [\"Ossetian, Ossetic\", \"\\u0438\\u0440\\u043E\\u043D \\xE6\\u0432\\u0437\\u0430\\u0433\", \"os\", \"oss\", \"oss\"],\n [\"Panjabi, Punjabi\", \"\\u0A2A\\u0A70\\u0A1C\\u0A3E\\u0A2C\\u0A40\", \"pa\", \"pan\", \"pan\"],\n [\"Polish\", \"j\\u0119zyk polski, polszczyzna\", \"pl\", \"pol\", \"pol\"],\n [\"Portuguese\", \"Portugu\\xEAs\", \"pt\", \"por\", \"por\"],\n [\"Romansh\", \"Rumantsch Grischun\", \"rm\", \"roh\", \"roh\"],\n [\"Russian\", \"\\u0440\\u0443\\u0441\\u0441\\u043A\\u0438\\u0439\", \"ru\", \"rus\", \"rus\"],\n [\"Sindhi\", \"\\u0938\\u093F\\u0928\\u094D\\u0927\\u0940, \\u0633\\u0646\\u068C\\u064A\\u060C \\u0633\\u0646\\u062F\\u06BE\\u06CC\", \"sd\", \"snd\", \"snd\"],\n [\"Northern Sami\", \"Davvis\\xE1megiella\", \"se\", \"sme\", \"sme\"],\n [\"Samoan\", \"gagana fa'a Samoa\", \"sm\", \"smo\", \"smo\"],\n [\"Sango\", \"y\\xE2ng\\xE2 t\\xEE s\\xE4ng\\xF6\", \"sg\", \"sag\", \"sag\"],\n [\"Gaelic, Scottish Gaelic\", \"G\\xE0idhlig\", \"gd\", \"gla\", \"gla\"],\n [\"Shona\", \"chiShona\", \"sn\", \"sna\", \"sna\"],\n [\"Sinhala, Sinhalese\", \"\\u0DC3\\u0DD2\\u0D82\\u0DC4\\u0DBD\", \"si\", \"sin\", \"sin\"],\n [\"Slovak\", \"Sloven\\u010Dina, Slovensk\\xFD Jazyk\", \"sk\", \"slk\", \"slo\"],\n [\"Somali\", \"Soomaaliga, af Soomaali\", \"so\", \"som\", \"som\"],\n [\"Southern Sotho\", \"Sesotho\", \"st\", \"sot\", \"sot\"],\n [\"Spanish, Castilian\", \"Espa\\xF1ol\", \"es\", \"spa\", \"spa\"],\n [\"Sundanese\", \"Basa Sunda\", \"su\", \"sun\", \"sun\"],\n [\"Swedish\", \"Svenska\", \"sv\", \"swe\", \"swe\"],\n [\"Tamil\", \"\\u0BA4\\u0BAE\\u0BBF\\u0BB4\\u0BCD\", \"ta\", \"tam\", \"tam\"],\n [\"Telugu\", \"\\u0C24\\u0C46\\u0C32\\u0C41\\u0C17\\u0C41\", \"te\", \"tel\", \"tel\"],\n [\"Tajik\", \"\\u0442\\u043E\\u04B7\\u0438\\u043A\\u04E3, to\\xE7ik\\u012B, \\u062A\\u0627\\u062C\\u06CC\\u06A9\\u06CC\", \"tg\", \"tgk\", \"tgk\"],\n [\"Thai\", \"\\u0E44\\u0E17\\u0E22\", \"th\", \"tha\", \"tha\"],\n [\"Tigrinya\", \"\\u1275\\u130D\\u122D\\u129B\", \"ti\", \"tir\", \"tir\"],\n [\"Turkmen\", \"T\\xFCrkmen, \\u0422\\u04AF\\u0440\\u043A\\u043C\\u0435\\u043D\", \"tk\", \"tuk\", \"tuk\"],\n [\"Tswana\", \"Setswana\", \"tn\", \"tsn\", \"tsn\"],\n [\"Tongan (Tonga Islands)\", \"Faka Tonga\", \"to\", \"ton\", \"ton\"],\n [\"Turkish\", \"T\\xFCrk\\xE7e\", \"tr\", \"tur\", \"tur\"],\n [\"Tsonga\", \"Xitsonga\", \"ts\", \"tso\", \"tso\"],\n [\"Tatar\", \"\\u0442\\u0430\\u0442\\u0430\\u0440 \\u0442\\u0435\\u043B\\u0435, tatar tele\", \"tt\", \"tat\", \"tat\"],\n [\"Uighur, Uyghur\", \"\\u0626\\u06C7\\u064A\\u063A\\u06C7\\u0631\\u0686\\u06D5, Uyghurche\", \"ug\", \"uig\", \"uig\"],\n [\"Ukrainian\", \"\\u0423\\u043A\\u0440\\u0430\\u0457\\u043D\\u0441\\u044C\\u043A\\u0430\", \"uk\", \"ukr\", \"ukr\"],\n [\"Urdu\", \"\\u0627\\u0631\\u062F\\u0648\", \"ur\", \"urd\", \"urd\"],\n [\"Venda\", \"Tshiven\\u1E13a\", \"ve\", \"ven\", \"ven\"],\n [\"Vietnamese\", \"Ti\\u1EBFng Vi\\u1EC7t\", \"vi\", \"vie\", \"vie\"],\n [\"Walloon\", \"Walon\", \"wa\", \"wln\", \"wln\"],\n [\"Welsh\", \"Cymraeg\", \"cy\", \"cym\", \"wel\"],\n [\"Wolof\", \"Wollof\", \"wo\", \"wol\", \"wol\"],\n [\"Xhosa\", \"isiXhosa\", \"xh\", \"xho\", \"xho\"],\n [\"Yoruba\", \"Yor\\xF9b\\xE1\", \"yo\", \"yor\", \"yor\"],\n [\"Zulu\", \"isiZulu\", \"zu\", \"zul\", \"zul\"]\n];\n\n// src/index.ts\nvar codes = [];\nvar by639_1 = {};\nvar by639_2T = {};\nvar by639_2B = {};\ndata_default.forEach((row) => {\n var code = {\n name: row[0],\n nativeName: row[1],\n iso639_1: row[2],\n iso639_2T: row[3],\n iso639_2B: row[4]\n };\n by639_1[row[2]] = by639_2T[row[3]] = by639_2B[row[4]] = code;\n codes.push(code);\n});\nvar src_default = codes;\nexport {\n by639_1,\n by639_2B,\n by639_2T,\n codes,\n src_default as default\n};\n//# sourceMappingURL=index.mjs.map","import langs from 'iso-language-codes';\n\n/**\n * Use regex to approximate word count in a string\n * @param {string} text\n * @return {number}\n */\nexport function approximateWordCount(text) {\n const m = text.match(/\\S+/g);\n return m ? m.length : 0;\n}\n\n/**\n * Checks whether the current browser is on android\n * @param {string} [userAgent]\n * @return {boolean}\n */\nexport function isAndroid(userAgent = navigator.userAgent) {\n return /android/i.test(userAgent);\n}\n\n/** @type {{[lang: string]: string}} */\n// Handle odd one-off language pairs that might show up over time\nconst specialLangs = {\n \"zh-hans\": \"中文 (Zhōngwén)\",\n};\n/**\n * @typedef {string} ISO6391\n * Language code in ISO 639-1 format. e.g. en, fr, zh\n * Can also retrieve language native name + ISO 639-1 code\n **/\n\n/**\n * @param {string} language in some format\n * @param {boolean?} getName gets Native Name + language code if true\n * @return {ISO6391?}\n */\nexport function toISO6391(language, getName = false) {\n if (!language) return null;\n language = language.toLowerCase();\n\n return searchForISO6391(language, ['iso639_1'], getName) ||\n searchForISO6391(language, ['iso639_2T'], getName) ||\n searchForISO6391(language, ['iso639_2B', 'nativeName', 'name'], getName);\n}\n\n/**\n * Searches for the given long in the given columns.\n * @param {string} language\n * @param {Array<keyof import('iso-language-codes').Code>} columnsToSearch\n * @param {boolean?} getName\n * @return {ISO6391?}\n */\nfunction searchForISO6391(language, columnsToSearch, getName) {\n for (const lang of langs) {\n for (const colName of columnsToSearch) {\n if (lang[colName].split(', ').map(x => x.toLowerCase()).indexOf(language) != -1) {\n if (getName) return `${lang.nativeName.split(\", \")[0]} (${lang.iso639_1})`;\n return lang.iso639_1;\n }\n }\n }\n if (specialLangs[language]) return `${specialLangs[language]} (${language})`;\n return null;\n}\n\n/**\n * Checks whether the current browser supports localStorage or\n * if the current context has access to it.\n * @return {boolean}\n */\nexport function hasLocalStorage() {\n try {\n return !!window.localStorage;\n } catch (e) {\n // Will throw in sandboxed iframe\n // DOMException: Window.localStorage getter: Forbidden in a sandboxed document without the 'allow-same-origin' flag.\n return false;\n }\n}\n\nexport const DEBUG_READ_ALOUD = location.toString().indexOf('_debugReadAloud=true') != -1;\n\nexport async function checkIfFiresPause() {\n // Pick some random text so that if it accidentally speaks, it's not too annoying\n const u = new SpeechSynthesisUtterance(\"Loading\");\n let calledPause = false;\n u.addEventListener('pause', () => calledPause = true);\n speechSynthesis.speak(u);\n await new Promise(res => setTimeout(res, 10));\n speechSynthesis.pause();\n return calledPause;\n}\n","/**\n * @template T\n */\nexport class Cache {\n constructor(maxSize = 10) {\n this.maxSize = maxSize;\n /** @type {T[]} */\n this.entries = [];\n }\n\n /**\n * @param {T} entry\n */\n add(entry) {\n if (this.entries.length >= this.maxSize) {\n this.entries.shift();\n }\n this.entries.push(entry);\n }\n}\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n"],"names":["_marked2","_regenerator","m","genMap","_marked3","lookAroundWindow","_marked4","zip","_toConsumableArray","r","Array","isArray","_arrayLikeToArray","_arrayWithoutHoles","Symbol","iterator","from","_iterableToArray","_unsupportedIterableToArray","TypeError","_nonIterableSpread","_createForOfIteratorHelper","e","t","length","_n","F","s","n","done","value","f","o","a","u","call","next","return","_slicedToArray","_arrayWithHoles","l","i","Object","push","_iterableToArrayLimit","_nonIterableRest","toString","slice","constructor","name","test","toStringTag","c","prototype","Generator","create","_regeneratorDefine2","p","y","G","v","d","bind","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","w","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_classCallCheck","_defineProperties","_toPropertyKey","key","_createClass","_isNativeReflectConstruct","Boolean","valueOf","Reflect","construct","_getPrototypeOf","_setPrototypeOf","_defineProperty","_typeof","toPrimitive","String","_toPrimitive","BookReader","window","TextSelectionPlugin","_BookReaderPlugin","br","_this","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","enabled","fullDjvuXmlUrl","singlePageDjvuXmlUrl","jsonp","maxProtectedWords","Cache","rtl","pageProgression","textSelectionManager","TextSelectionManager","selectionElement","options","_inherits","this","loadData","init","pageContainer","mode","constModeThumb","page","createTextLayer","djvuPagesPromise","$","ajax","type","url","applyVariables","vars","dataType","cache","xhrFields","withCredentials","protected","error","res","xmlMap","parseXML","find","_getPageText","_callee","index","cachedEntry","xmlDoc","result","XMLpagesArr","_context","pageTextCache","entries","x","response","pageIndex","add","undefined","_x","_createTextLayer","_callee2","$container","XMLpage","totalWords","textLayer","ratioW","ratioH","bookLangCode","ocrParagraphs","paragEls","paragraphRects","yAdded","_iterator","_step","_step$value","ocrParagraph","paragEl","ocrParagBounds","realRect","_ocrParagBounds","ocrLeft","ocrRight","ocrTop","newStartMargin","newTop","_this2","_context2","getPageText","filter","_","ele","_ele$getAttribute$spl2","getAttribute","split","map","parseFloat","left","top","console","remove","recursivelyAddCoords","maxWordRendered","log","concat","createDIVPageLayer","style","width","height","transform","toISO6391","bookLanguage","setAttribute","toArray","el","renderParagraph","appendChild","determineRealRects","attr","get","right","marginTop","err","append","stopPageFlip","trigger","_x2","document","createElement","classList","ariaHidden","_$$attr$split$map2","paragLeft","paragBottom","paragRight","paragTop","wordHeightArr","lines","_step2","_iterator2","augmentLine","_step2$value","prevLine","line","nextLine","isLastLineOfParagraph","ocrElement","lineEl","_step5","_iterator5","words","_step5$value","wordIndex","currWord","_$$attr$split$map4","bottom","wordHeight","lastWord","textContent","trim","endsWith","newLeft","firstWord","wordEl","space","createTextNode","hasHyphen","lastWordEl","children","sort","b","paragWordHeight","Math","floor","fontSize","_step3","wordRects","_iterator3","querySelectorAll","_step3$value","ocrWord","_$$attr$split$map8","ocrWidth","diff","letterSpacing","_step4","spaceRects","ocrLines","lineEls","ySoFar","_iterator4","_step6","_step4$value","ocrLine","xSoFar","_iterator6","_step6$value","wordRect","_$$attr$split$map0","previousElementSibling","min","lineHeight","BookReaderPlugin","parentEl","selector","initals","position","visibility","body","rects","Map","origRect","getBoundingClientRect","Rect","scrollX","scrollY","removeChild","assign","gen","fn","_iterator9","_step9","_t3","_context4","prev","cur","_iterator0","_step0","_t4","_context5","gen1","gen2","it1","it2","r1","r2","_context6","Error","xmlEl","_step10","_iterator10","_step11","childCoords","_iterator11","child","boundingCoords","bounds","_step1","leftMost","Infinity","bottomMost","rightMost","topMost","_iterator1","_step1$value","max","determineBounds","abs","join","registerPlugin","SelectionObserver","handler","sel","getSelection","selecting","target","anchorNode","closest","isCollapsed","addEventListener","_onSelectionChange","removeEventListener","_marked","genFilter","walkBetweenNodes","layer","_ref","maxWords","textSelectingMode","defaultMode","selection","rangeCount","range","getRangeAt","startInBr","startContainer","parentElement","endInBr","endContainer","lastAllowedWord","iterable","genAt","node","_node$classList","contains","replace","parentNode","newRange","createRange","setStart","startOffset","setEnd","firstChild","removeAllRanges","addRange","selectionObserver","attach","selectEvent","_this2$br$plugins$arc","plugins","archiveAnalytics","sendEvent","refs","$br","removeClass","addClass","_this3","_limitSelection","on","some","containsNode","preventDefault","detach","event","clipboardData","setData","_this4","$textLayer","each","interceptCopy","_this5","$pageContainer","pointerEvents","css","off","startedMouseDown","mouseIsDown","skipNextMouseup","is","stopPropagation","_this6","_t","start","end","walk","_context3","_ref2","_ref2$children","_ref2$parents","parents","_ref2$siblings","siblings","sib","_regeneratorValues","nextSibling","PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","$toolbarElement","$navBar","$trim","proto","forced","forcedStringTrimMethod","codes","by639_1","by639_2T","by639_2B","forEach","row","code","nativeName","iso639_1","iso639_2T","iso639_2B","src_default","approximateWordCount","text","match","isAndroid","userAgent","navigator","specialLangs","language","getName","searchForISO6391","toLowerCase","columnsToSearch","langs","lang","indexOf","hasLocalStorage","localStorage","DEBUG_READ_ALOUD","location","maxSize","entry","shift","template","overrides","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","varName","filterNames","reduce","acc","urlencode","encodeURIComponent"],"sourceRoot":""}
|