@internetarchive/bookreader 5.0.0-84 → 5.0.0-86

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.text_selection.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReader/utils/SelectionObserver.js","webpack://@internetarchive/bookreader/./src/util/strings.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.text_selection.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js"],"sourcesContent":["// @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","/**\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 */\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","//@ts-check\nimport { createDIVPageLayer } from '../BookReader/PageContainer.js';\nimport { SelectionObserver } from '../BookReader/utils/SelectionObserver.js';\nimport { applyVariables } from '../util/strings.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\nexport const DEFAULT_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};\n/** @typedef {typeof DEFAULT_OPTIONS} TextSelectionPluginOptions */\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\nexport class TextSelectionPlugin {\n /**\n * @param {'lr' | 'rl'} pageProgression 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 */\n constructor(options = DEFAULT_OPTIONS, optionVariables, pageProgression = 'lr') {\n this.options = options;\n this.optionVariables = optionVariables;\n /**@type {PromiseLike<JQuery<HTMLElement>|undefined>} */\n this.djvuPagesPromise = null;\n /** Whether the book is right-to-left */\n this.rtl = pageProgression === 'rl';\n\n /** @type {Cache<{index: number, response: any}>} */\n this.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 this.maxWordRendered = 2500;\n\n this.selectionObserver = new SelectionObserver('.BRtextLayer', this._onSelectionChange);\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 init() {\n this.selectionObserver.attach();\n\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.optionVariables),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\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.optionVariables, { pageIndex: index }),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\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 * 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 * 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(\".BRwordElement, .BRspace\")) {\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 * 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('.BRtextLayer');\n if (!$textLayer.length) return;\n $textLayer.each((i, s) => this.defaultMode(s));\n this.interceptCopy($container);\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 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 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.stopPageFlip($container);\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 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\nexport class BookreaderWithTextSelection extends BookReader {\n init() {\n const options = Object.assign({}, DEFAULT_OPTIONS, this.options.plugins.textSelection);\n if (options.enabled) {\n this.textSelectionPlugin = new TextSelectionPlugin(options, this.options.vars, this.pageProgression);\n // Write this back; this way the plugin is the source of truth, and BR just\n // contains a reference to it.\n this.options.plugins.textSelection = options;\n this.textSelectionPlugin.init();\n\n new SelectionObserver('.BRtextLayer', (selectEvent) => {\n // Track how often selection is used\n if (selectEvent == 'started') {\n this.archiveAnalyticsSendEvent?.('BookReader', 'SelectStart');\n\n // Set a class on the page to avoid hiding it when zooming/etc\n this.refs.$br.find('.BRpagecontainer--hasSelection').removeClass('BRpagecontainer--hasSelection');\n $(window.getSelection().anchorNode).closest('.BRpagecontainer').addClass('BRpagecontainer--hasSelection');\n }\n }).attach();\n }\n\n super.init();\n }\n\n /**\n * @param {number} index\n */\n _createPageContainer(index) {\n const pageContainer = super._createPageContainer(index);\n // Disable if thumb mode; it's too janky\n // .page can be null for \"pre-cover\" region\n if (this.mode !== this.constModeThumb && pageContainer.page) {\n this.textSelectionPlugin?.createTextLayer(pageContainer);\n }\n return pageContainer;\n }\n}\nwindow.BookReader = BookreaderWithTextSelection;\nexport default BookreaderWithTextSelection;\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 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","'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"],"names":["SelectionObserver","selector","handler","_this","_classCallCheck","_defineProperty","sel","window","getSelection","selecting","toString","target","$","anchorNode","closest","isCollapsed","this","key","value","document","addEventListener","_onSelectionChange","removeEventListener","applyVariables","template","vars","overrides","arguments","length","undefined","possibleFilters","APPLY_FILTERS","replace","$0","$1","_expression$split$map2","split","map","x","trim","varName","filterNames","slice","n","reduce","acc","cur","urlencode","encodeURIComponent","genMap","_marked2","_regeneratorRuntime","mark","lookAroundWindow","_marked3","zip","_callSuper","t","o","e","_getPrototypeOf","_typeof","TypeError","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","_superPropGet","r","p","_get","get","bind","hasOwnProperty","_superPropBase","Object","getOwnPropertyDescriptor","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_slicedToArray","Array","isArray","_arrayWithHoles","l","Symbol","iterator","i","u","a","f","next","done","push","return","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_createForOfIteratorHelper","_n","F","s","_arrayLikeToArray","name","from","test","defineProperty","c","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","h","y","GeneratorFunction","GeneratorFunctionPrototype","d","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","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","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_createClass","toPrimitive","String","_toPrimitive","BookReader","DEFAULT_OPTIONS","enabled","fullDjvuXmlUrl","singlePageDjvuXmlUrl","jsonp","Cache","maxSize","entries","entry","shift","TextSelectionPlugin","options","optionVariables","pageProgression","textSelectingMode","concat","defaultMode","djvuPagesPromise","rtl","pageTextCache","maxWordRendered","selectionObserver","attach","ajax","url","dataType","cache","error","res","xmlMap","parseXML","find","_getPageText","_callee","index","cachedEntry","xmlDoc","result","XMLpagesArr","_context","response","pageIndex","add","t0","_x","$container","event","selection","clipboardData","setData","preventDefault","textLayer","_this2","$pageContainer","style","pointerEvents","css","off","startedMouseDown","mouseIsDown","skipNextMouseup","on","is","stopPropagation","_this3","_this4","$textLayer","each","interceptCopy","_createTextLayer","_callee2","pageContainer","XMLpage","totalWords","ratioW","ratioH","ocrParagraphs","paragEls","paragraphRects","yAdded","_iterator","_step","_step$value","ocrParagraph","paragEl","ocrParagBounds","realRect","_ocrParagBounds","ocrLeft","ocrRight","ocrTop","newStartMargin","newTop","_this5","_context2","page","getPageText","recursivelyAddCoords","console","log","createDIVPageLayer","parseFloat","width","height","transform","setAttribute","toArray","el","renderParagraph","appendChild","determineRealRects","attr","right","left","top","marginTop","err","append","stopPageFlip","_x2","createElement","classList","_$$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","BookreaderWithTextSelection","_BookReader","_inherits","_this6","assign","plugins","textSelection","textSelectionPlugin","init","selectEvent","_this6$archiveAnalyti","archiveAnalyticsSendEvent","refs","$br","removeClass","addClass","_this$textSelectionPl","mode","constModeThumb","createTextLayer","parentEl","initals","position","visibility","body","rects","Map","origRect","getBoundingClientRect","Rect","scrollX","scrollY","removeChild","gen","fn","_iterator7","_step7","_context3","_marked","_iterator8","_step8","_context4","gen1","gen2","it1","it2","r1","r2","_context5","xmlEl","_step10","_iterator10","_step11","childCoords","_iterator11","child","boundingCoords","bounds","_step9","leftMost","Infinity","bottomMost","rightMost","topMost","_iterator9","_step9$value","max","determineBounds","abs","join","PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","$trim","proto","forced","forcedStringTrimMethod"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.text_selection.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReader/utils/SelectionObserver.js","webpack://@internetarchive/bookreader/./src/util/strings.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.text_selection.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js"],"sourcesContent":["// @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","/**\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 */\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","//@ts-check\nimport { createDIVPageLayer } from '../BookReader/PageContainer.js';\nimport { SelectionObserver } from '../BookReader/utils/SelectionObserver.js';\nimport { applyVariables } from '../util/strings.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\nexport const DEFAULT_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};\n/** @typedef {typeof DEFAULT_OPTIONS} TextSelectionPluginOptions */\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\nexport class TextSelectionPlugin {\n /**\n * @param {'lr' | 'rl'} pageProgression 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 */\n constructor(options = DEFAULT_OPTIONS, optionVariables, pageProgression = 'lr') {\n this.options = options;\n this.optionVariables = optionVariables;\n /**@type {PromiseLike<JQuery<HTMLElement>|undefined>} */\n this.djvuPagesPromise = null;\n /** Whether the book is right-to-left */\n this.rtl = pageProgression === 'rl';\n\n /** @type {Cache<{index: number, response: any}>} */\n this.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 this.maxWordRendered = 2500;\n\n this.selectionObserver = new SelectionObserver('.BRtextLayer', this._onSelectionChange);\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 init() {\n this.selectionObserver.attach();\n\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.optionVariables),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: window.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.optionVariables, { pageIndex: index }),\n dataType: this.options.jsonp ? \"jsonp\" : \"html\",\n cache: true,\n xhrFields: {\n withCredentials: window.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 * 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 * 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(\".BRwordElement, .BRspace\")) {\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 * 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('.BRtextLayer');\n if (!$textLayer.length) return;\n $textLayer.each((i, s) => this.defaultMode(s));\n this.interceptCopy($container);\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 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 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.stopPageFlip($container);\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 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\nexport class BookreaderWithTextSelection extends BookReader {\n init() {\n const options = Object.assign({}, DEFAULT_OPTIONS, this.options.plugins.textSelection);\n if (options.enabled) {\n this.textSelectionPlugin = new TextSelectionPlugin(options, this.options.vars, this.pageProgression);\n // Write this back; this way the plugin is the source of truth, and BR just\n // contains a reference to it.\n this.options.plugins.textSelection = options;\n this.textSelectionPlugin.init();\n\n new SelectionObserver('.BRtextLayer', (selectEvent) => {\n // Track how often selection is used\n if (selectEvent == 'started') {\n this.archiveAnalyticsSendEvent?.('BookReader', 'SelectStart');\n\n // Set a class on the page to avoid hiding it when zooming/etc\n this.refs.$br.find('.BRpagecontainer--hasSelection').removeClass('BRpagecontainer--hasSelection');\n $(window.getSelection().anchorNode).closest('.BRpagecontainer').addClass('BRpagecontainer--hasSelection');\n }\n }).attach();\n }\n\n super.init();\n }\n\n /**\n * @param {number} index\n */\n _createPageContainer(index) {\n const pageContainer = super._createPageContainer(index);\n // Disable if thumb mode; it's too janky\n // .page can be null for \"pre-cover\" region\n if (this.mode !== this.constModeThumb && pageContainer.page) {\n this.textSelectionPlugin?.createTextLayer(pageContainer);\n }\n return pageContainer;\n }\n}\nwindow.BookReader = BookreaderWithTextSelection;\nexport default BookreaderWithTextSelection;\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 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","'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"],"names":["SelectionObserver","selector","handler","_this","_classCallCheck","_defineProperty","sel","window","getSelection","selecting","toString","target","$","anchorNode","closest","isCollapsed","this","key","value","document","addEventListener","_onSelectionChange","removeEventListener","applyVariables","template","vars","overrides","arguments","length","undefined","possibleFilters","APPLY_FILTERS","replace","$0","$1","_expression$split$map2","split","map","x","trim","varName","filterNames","slice","n","reduce","acc","cur","urlencode","encodeURIComponent","genMap","_marked2","_regeneratorRuntime","mark","lookAroundWindow","_marked3","zip","_callSuper","t","o","e","_getPrototypeOf","_typeof","TypeError","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","_superPropGet","r","p","_get","get","bind","hasOwnProperty","_superPropBase","Object","getOwnPropertyDescriptor","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_slicedToArray","Array","isArray","_arrayWithHoles","l","Symbol","iterator","i","u","a","f","next","done","push","return","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_createForOfIteratorHelper","_n","F","s","_arrayLikeToArray","name","from","test","defineProperty","c","asyncIterator","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","h","y","GeneratorFunction","GeneratorFunctionPrototype","d","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","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","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","_defineProperties","_toPropertyKey","_createClass","toPrimitive","String","_toPrimitive","BookReader","DEFAULT_OPTIONS","enabled","fullDjvuXmlUrl","singlePageDjvuXmlUrl","jsonp","Cache","maxSize","entries","entry","shift","TextSelectionPlugin","options","optionVariables","pageProgression","textSelectingMode","concat","defaultMode","djvuPagesPromise","rtl","pageTextCache","maxWordRendered","selectionObserver","attach","ajax","url","dataType","cache","xhrFields","withCredentials","br","protected","error","res","xmlMap","parseXML","find","_getPageText","_callee","index","cachedEntry","xmlDoc","result","XMLpagesArr","_context","response","pageIndex","add","t0","_x","$container","event","selection","clipboardData","setData","preventDefault","textLayer","_this2","$pageContainer","style","pointerEvents","css","off","startedMouseDown","mouseIsDown","skipNextMouseup","on","is","stopPropagation","_this3","_this4","$textLayer","each","interceptCopy","_createTextLayer","_callee2","pageContainer","XMLpage","totalWords","ratioW","ratioH","ocrParagraphs","paragEls","paragraphRects","yAdded","_iterator","_step","_step$value","ocrParagraph","paragEl","ocrParagBounds","realRect","_ocrParagBounds","ocrLeft","ocrRight","ocrTop","newStartMargin","newTop","_this5","_context2","page","getPageText","recursivelyAddCoords","console","log","createDIVPageLayer","parseFloat","width","height","transform","setAttribute","toArray","el","renderParagraph","appendChild","determineRealRects","attr","right","left","top","marginTop","err","append","stopPageFlip","_x2","createElement","classList","_$$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","BookreaderWithTextSelection","_BookReader","_inherits","_this6","assign","plugins","textSelection","textSelectionPlugin","init","selectEvent","_this6$archiveAnalyti","archiveAnalyticsSendEvent","refs","$br","removeClass","addClass","_this$textSelectionPl","mode","constModeThumb","createTextLayer","parentEl","initals","position","visibility","body","rects","Map","origRect","getBoundingClientRect","Rect","scrollX","scrollY","removeChild","gen","fn","_iterator7","_step7","_context3","_marked","_iterator8","_step8","_context4","gen1","gen2","it1","it2","r1","r2","_context5","xmlEl","_step10","_iterator10","_step11","childCoords","_iterator11","child","boundingCoords","bounds","_step9","leftMost","Infinity","bottomMost","rightMost","topMost","_iterator9","_step9$value","max","determineBounds","abs","join","PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","$trim","proto","forced","forcedStringTrimMethod"],"sourceRoot":""}