@internetarchive/bookreader 5.0.0-102 → 5.0.0-103
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/BookReader.js +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +141 -102
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +6 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +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.map +1 -1
- package/BookReader/plugins/plugin.search.js +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.map +1 -1
- package/BookReader/plugins/plugin.translate.js +2 -2
- package/BookReader/plugins/plugin.translate.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/package.json +2 -2
- package/src/BookNavigator/assets/button-base.js +0 -1
- package/src/BookNavigator/bookmarks/bookmarks-provider.js +1 -1
- package/src/BookNavigator/downloads/downloads-provider.js +1 -1
- package/src/BookNavigator/search/search-provider.js +5 -1
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +1 -1
- package/src/BookReader/Navbar/Navbar.js +10 -5
- package/src/plugins/plugin.chapters.js +1 -1
- package/src/plugins/plugin.experiments.js +1 -1
- package/src/plugins/translate/TranslationManager.js +6 -4
- package/src/plugins/tts/utils.js +43 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/plugin.search.js","mappings":"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","sources":["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/plugins/search/view.js","webpack://@internetarchive/bookreader/./src/plugins/search/utils.js","webpack://@internetarchive/bookreader/./src/plugins/search/plugin.search.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","// @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","// @ts-check\n/** @typedef {import('@/src/BookReader.js').default} BookReader */\n\nclass SearchView {\n /**\n * @param {object} params\n * @param {BookReader} params.br The BookReader instance\n * @param {function} params.searchCancelledCallback callback when a user wants to cancel search\n *\n * @event BookReader:SearchResultsCleared - when the search results nav gets cleared\n * @event BookReader:ToggleSearchMenu - when search results menu should toggle\n */\n constructor({ br, searchCancelledCallback = () => {} }) {\n /** @type {BookReader} */\n this.br = br;\n this.matches = [];\n this.cacheDOMElements();\n this.cancelSearch = searchCancelledCallback;\n }\n\n init() {\n this.bindEvents();\n }\n\n cacheDOMElements() {\n this.dom = {};\n // Search input within the top toolbar. Will be removed once the mobile menu is replaced.\n this.dom.toolbarSearch = this.buildToolbarSearch();\n }\n\n /**\n * @param {string} query\n */\n setQuery(query) {\n this.br.$('[name=\"query\"]').val(query);\n }\n\n emptyMatches() {\n this.matches = [];\n }\n\n removeResultPins() {\n this.br.$('.BRnavpos .BRsearch').remove();\n }\n\n clearSearchFieldAndResults(dispatchEventWhenComplete = true) {\n this.br.plugins.search.removeSearchResults();\n this.removeResultPins();\n this.emptyMatches();\n this.setQuery('');\n this.teardownSearchNavigation();\n if (dispatchEventWhenComplete) {\n this.br.trigger('SearchResultsCleared');\n }\n }\n\n toggleSidebar() {\n this.br.trigger('ToggleSearchMenu');\n }\n\n renderSearchNavigation() {\n const selector = 'BRsearch-navigation';\n $('.BRnav.BRnavMain').before(`\n <div class=\"${selector}\">\n <button class=\"toggle-sidebar\">\n <h4>\n <span class=\"icon icon-search\"></span> Results\n </h4>\n </button>\n <div class=\"pagination\">\n <button class=\"prev\" title=\"Previous result\"><span class=\"icon icon-chevron hflip\"></span></button>\n <span data-id=\"resultsCount\">${this.resultsPosition()}</span>\n <button class=\"next\" title=\"Next result\"><span class=\"icon icon-chevron\"></button>\n </div>\n <button class=\"clear\" title=\"Clear search results\">\n <span class=\"icon icon-close\"></span>\n </button>\n </div>\n `);\n this.dom.searchNavigation = $(`.${selector}`);\n }\n\n resultsPosition() {\n let positionMessage = `${this.matches.length} result${this.matches.length === 1 ? '' : 's'}`;\n if (~this.currentMatchIndex) {\n positionMessage = `${this.currentMatchIndex + 1} / ${this.matches.length}`;\n }\n return positionMessage;\n }\n\n bindSearchNavigationEvents() {\n if (!this.dom.searchNavigation) { return; }\n const namespace = 'searchNavigation';\n\n this.dom.searchNavigation\n .on(`click.${namespace}`, '.clear', this.clearSearchFieldAndResults.bind(this))\n .on(`click.${namespace}`, '.prev', this.showPrevResult.bind(this))\n .on(`click.${namespace}`, '.next', this.showNextResult.bind(this))\n .on(`click.${namespace}`, '.toggle-sidebar', this.toggleSidebar.bind(this))\n .on(`click.${namespace}`, false);\n }\n\n showPrevResult() {\n if (this.currentMatchIndex === 0) { return; }\n if (this.br.mode === this.br.constModeThumb) { this.br.switchMode(this.br.constMode1up); }\n if (!~this.currentMatchIndex) {\n this.currentMatchIndex = this.getClosestMatchIndex((start, end, comparator) => end[0] > comparator) + 1;\n }\n this.br.$('.BRnavline .BRsearch').eq(--this.currentMatchIndex).click();\n this.updateResultsPosition();\n this.updateSearchNavigationButtons();\n }\n\n showNextResult() {\n if (this.currentMatchIndex + 1 === this.matches.length) { return; }\n if (this.br.mode === this.br.constModeThumb) { this.br.switchMode(this.br.constMode1up); }\n if (!~this.currentMatchIndex) {\n this.currentMatchIndex = this.getClosestMatchIndex((start, end, comparator) => start[start.length - 1] > comparator) - 1;\n }\n this.br.$('.BRnavline .BRsearch').eq(++this.currentMatchIndex).click();\n this.updateResultsPosition();\n this.updateSearchNavigationButtons();\n }\n\n /**\n * Obtains closest match based on the logical comparison function passed in.\n * When the comparison function returns true, the starting (left) half of the\n * matches array is used in the binary split, else the ending (right) half is\n * used. A recursive call is made to perform the same split and comparison\n * on the winning half of the matches. This is traditionally known as binary\n * search (https://en.wikipedia.org/wiki/Binary_search_algorithm), and in\n * most cases (medium to large search result arrays) should outperform\n * traversing the array from start to finish. In the case of small arrays,\n * the speed difference is negligible.\n *\n * @param {function} comparisonFn\n * @return {number} matchIndex\n */\n getClosestMatchIndex(comparisonFn) {\n const matchPages = this.matches.map((m) => m.par[0].page);\n const currentPage = this.br.currentIndex() + 1;\n const closestTo = (pool, comparator) => {\n if (pool.length === 1) { return pool[0]; }\n const start = pool.slice(0, pool.length / 2);\n const end = pool.slice(pool.length / 2);\n return closestTo((comparisonFn(start, end, comparator) ? start : end), comparator);\n };\n\n const closestPage = closestTo(matchPages, currentPage);\n return this.matches.indexOf(this.matches.find((m) => m.par[0].page === closestPage));\n }\n\n updateResultsPosition() {\n if (!this.dom.searchNavigation) return;\n this.dom.searchNavigation.find('[data-id=resultsCount]').text(this.resultsPosition());\n }\n\n updateSearchNavigationButtons() {\n if (!this.dom.searchNavigation) return;\n this.dom.searchNavigation.find('.prev').attr('disabled', !this.currentMatchIndex);\n this.dom.searchNavigation.find('.next').attr('disabled', this.currentMatchIndex + 1 === this.matches.length);\n }\n\n teardownSearchNavigation() {\n if (!this.dom.searchNavigation) {\n this.dom.searchNavigation = $('.BRsearch-navigation');\n }\n if (!this.dom.searchNavigation.length) { return; }\n\n this.dom.searchNavigation.off('.searchNavigation').remove();\n this.dom.searchNavigation = null;\n this.br.resize();\n }\n\n setCurrentMatchIndex() {\n let matchingSearchResult;\n if (this.br.mode === this.br.constModeThumb) {\n this.currentMatchIndex = -1;\n return;\n }\n if (this.br.mode === this.br.constMode2up) {\n matchingSearchResult = this.find2upMatchingSearchResult();\n }\n else {\n matchingSearchResult = this.find1upMatchingSearchResult();\n }\n this.currentMatchIndex = this.matches.indexOf(matchingSearchResult);\n }\n\n find1upMatchingSearchResult() {\n return this.matches.find((m) => this.br.currentIndex() === m.par[0].page - 1);\n }\n\n find2upMatchingSearchResult() {\n return this.matches.find((m) => this.br._isIndexDisplayed(m.par[0].page - 1));\n }\n\n updateSearchNavigation() {\n if (!this.matches.length) { return; }\n\n this.setCurrentMatchIndex();\n this.updateResultsPosition();\n this.updateSearchNavigationButtons();\n }\n\n /**\n * @param {boolean} bool\n */\n togglePinsFor(bool) {\n const pinsVisibleState = bool ? 'visible' : 'hidden';\n this.br.refs.$BRfooter.find('.BRsearch').css({ visibility: pinsVisibleState });\n }\n\n buildToolbarSearch() {\n const toolbarSearch = document.createElement('span');\n toolbarSearch.classList.add('BRtoolbarSection', 'BRtoolbarSectionSearch');\n toolbarSearch.innerHTML = `\n <form class=\"BRbooksearch desktop\">\n <input type=\"search\" name=\"query\" class=\"BRsearchInput\" value=\"\" placeholder=\"Search inside\"/>\n <button type=\"submit\" class=\"BRsearchSubmit\">\n <img src=\"${this.br.options.imagesBaseURL}icon_search_button.svg\" />\n </button>\n </form>\n `;\n return toolbarSearch;\n }\n\n /**\n * @param {array} matches\n */\n renderPins(matches) {\n matches.forEach((match) => {\n const pageIndex = this.br.book.leafNumToIndex(match.par[0].page);\n const uiStringSearch = \"Search result\"; // i18n\n const percentThrough = this.br.constructor.util.cssPercentage(pageIndex, this.br.book.getNumLeafs() - 1);\n\n let html = match.html;\n if (html.length > 200) {\n const start = Math.max(0, html.indexOf('<mark>') - 100);\n if (start != 0) {\n html = '…' + match.html\n .substring(start)\n // Make sure at word boundary though\n .replace(/^\\S+/, '');\n }\n }\n // draw marker\n $('<div>')\n .addClass('BRsearch')\n .css({\n left: percentThrough,\n })\n .attr('title', uiStringSearch)\n .append(`\n <div class=\"BRquery\">\n <main>${html}</main>\n <footer>Page ${match.displayPageNumber}</footer>\n </div>\n `)\n .appendTo(this.br.$('.BRnavline'))\n .on(\"mouseenter\", (event) => {\n // remove from other markers then turn on just for this\n // XXX should be done when nav slider moves\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('.BRquery');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n $('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", (event) => $(event.target).removeClass('front'))\n .on(\"click\", () => { this.br.plugins.search.jumpToMatch(match.matchIndex); });\n });\n }\n\n /**\n * @param {boolean} show\n */\n toggleSearchPending(show = false) {\n if (show) {\n this.br.showProgressPopup(\"Search results will appear below...\", () => this.progressPopupClosed());\n }\n else {\n this.br.removeProgressPopup();\n }\n }\n\n /**\n * Primary callback when user cancels search popup\n */\n progressPopupClosed() {\n this.toggleSearchPending();\n this.cancelSearch();\n }\n\n renderErrorModal(textIsProcessing = false) {\n const errorDetails = `${!textIsProcessing ? 'The text may still be processing. ' : ''}Please try again.`;\n this.renderModalMessage(`\n Sorry, there was an error with your search.\n <br />\n ${errorDetails}\n `);\n this.delayModalRemovalFor(4000);\n }\n\n renderBookNotIndexedModal() {\n this.renderModalMessage(`\n <p>\n This book hasn't been indexed for searching yet.\n We've just started indexing it, so search should be available soon.\n <br />\n Please try again later. Thanks!\n </p>\n `);\n this.delayModalRemovalFor(5000);\n }\n\n renderResultsEmptyModal() {\n this.renderModalMessage('No matches were found.');\n this.delayModalRemovalFor(2000);\n }\n\n /**\n * @param {string} messageHTML The innerHTML string used to popupate the modal contents\n */\n renderModalMessage(messageHTML) {\n const modal = document.createElement('div');\n modal.classList.add('BRprogresspopup', 'search_modal');\n modal.innerHTML = messageHTML;\n document.querySelector(this.br.el).append(modal);\n }\n\n /**\n * @param {number} timeoutMS\n */\n delayModalRemovalFor(timeoutMS) {\n setTimeout(this.br.removeProgressPopup.bind(this.br), timeoutMS);\n }\n\n /**\n * @param {Event} e\n */\n submitHandler(e) {\n e.preventDefault();\n const query = e.target.querySelector('[name=\"query\"]').value;\n if (!query.length) { return false; }\n this.br.search(query);\n this.emptyMatches();\n this.toggleSearchPending(true);\n return false;\n }\n\n /**\n * @param {Event} e\n * @param {object} properties\n * @param {object} properties.results\n * @param {object} properties.options\n */\n handleSearchCallback(e, { results, options }) {\n this.matches = results.matches;\n this.setCurrentMatchIndex();\n this.teardownSearchNavigation();\n this.renderSearchNavigation();\n this.bindSearchNavigationEvents();\n this.renderPins(results.matches);\n this.toggleSearchPending(false);\n if (options.goToFirstResult) {\n $(document).one('BookReader:pageChanged', () => {\n this.br.resize();\n });\n } else {\n this.br.resize();\n }\n }\n\n handleSearchStarted() {\n this.emptyMatches();\n this.br.plugins.search.removeSearchHilites();\n this.removeResultPins();\n this.toggleSearchPending(true);\n this.teardownSearchNavigation();\n this.setQuery(this.br.plugins.search.searchTerm);\n }\n\n /**\n * Event listener for: `BookReader:SearchCallbackError`\n * @param {CustomEvent} event\n */\n handleSearchCallbackError(event = {}) {\n this.toggleSearchPending(false);\n const isIndexed = event?.detail?.props?.results?.indexed;\n this.renderErrorModal(isIndexed);\n }\n\n handleSearchCallbackBookNotIndexed() {\n this.toggleSearchPending(false);\n this.renderBookNotIndexedModal();\n }\n\n handleSearchCallbackEmpty() {\n this.toggleSearchPending(false);\n this.renderResultsEmptyModal();\n }\n\n bindEvents() {\n const namespace = 'BookReader:';\n\n window.addEventListener(`${namespace}SearchCallbackError`, this.handleSearchCallbackError.bind(this));\n $(document).on(`${namespace}SearchCallback`, this.handleSearchCallback.bind(this))\n .on(`${namespace}SearchStarted`, this.handleSearchStarted.bind(this))\n .on(`${namespace}SearchCallbackBookNotIndexed`, this.handleSearchCallbackBookNotIndexed.bind(this))\n .on(`${namespace}SearchCallbackEmpty`, this.handleSearchCallbackEmpty.bind(this))\n .on(`${namespace}pageChanged`, this.updateSearchNavigation.bind(this));\n\n this.dom.toolbarSearch.querySelector('form').addEventListener('submit', this.submitHandler.bind(this));\n }\n}\n\nexport default SearchView;\n","// @ts-check\nimport { escapeHTML, escapeRegExp } from '../../BookReader/utils.js';\n/** @typedef {import('@/src/plugins/search/plugin.search.js').SearchInsideResults} SearchInsideResults */\n/** @typedef {import('@/src/plugins/search/plugin.search.js').LeafNum} LeafNum */\n/** @typedef {import('@/src/plugins/search/plugin.search.js').PageNumString} PageNumString */\n\n/**\n * @param {string} match\n * @param {string} preTag\n * @param {string} postTag\n * @returns {string}\n */\nexport function renderMatch(match, preTag, postTag) {\n // Search results are returned as a text blob with the hits wrapped in\n // triple mustaches. Hits occasionally include text beyond the search\n // term, so everything within the staches is captured and wrapped.\n const preTagRe = escapeRegExp(escapeHTML(preTag));\n const postTagRe = escapeRegExp(escapeHTML(postTag));\n // [^] matches any character, including line breaks\n const regex = new RegExp(`${preTagRe}([^]+?)${postTagRe}`, 'g');\n return escapeHTML(match)\n .replace(regex, '<mark>$1</mark>')\n // Fix trailing hyphens. This over-corrects but is net useful.\n .replace(/(\\b)- /g, '$1');\n}\n\n/**\n * Attach some fields to search inside results\n * @param {SearchInsideResults} results\n * @param {(pageNum: LeafNum) => PageNumString} displayPageNumberFn\n * @param {string} preTag\n * @param {string} postTag\n * @param {string | null} bookLanguage The ISO 639-1 language code of the book\n */\nexport function marshallSearchResults(results, displayPageNumberFn, preTag, postTag, bookLanguage) {\n // Attach matchIndex to a few things to make it easier to identify\n // an active/selected match\n\n for (const [index, match] of results.matches.entries()) {\n match.matchIndex = index;\n match.displayPageNumber = displayPageNumberFn(match.par[0].page);\n match.html = renderMatch(match.text, preTag, postTag);\n match.lang = bookLanguage;\n for (const par of match.par) {\n for (const box of par.boxes) {\n box.matchIndex = index;\n }\n }\n }\n}\n","// @ts-check\n/**\n * Plugin for Archive.org book search\n * Events fired at various points throughout search processing are published\n * on the document DOM element. These can be subscribed to using jQuery's event\n * binding method `$.fn.on`. All of the events are prefixed with a BookReader\n * namespace. The events are:\n *\n * @event BookReader:SearchStarted - When a search form is submitted, immediately\n * before an AJAX call is made to request search results\n * @event BookReader:SearchCallback - When the search AJAX call is returned and at\n * least one result is returned. The event callback receives an object\n * with the `results`, plugin `options`, and the BookReader `instance`\n * @event BookReader:SearchCallbackError - When the AJAX request returns an error.\n * Receives the `results` and `instance`\n * @event BookReader:SearchCallbackNotIndexed - When a message is received that\n * the book has not had OCR text indexed yet. Receives `instance`\n * @event BookReader:SearchCallbackEmpty - When no results found. Receives\n * `instance`\n * @event BookReader:SearchCanceled - When no results found. Receives\n * `instance`\n */\nimport { poll } from '../../BookReader/utils.js';\nimport { renderBoxesInPageContainerLayer } from '../../BookReader/PageContainer.js';\nimport SearchView from './view.js';\nimport { marshallSearchResults } from './utils.js';\nimport { BookReaderPlugin } from '../../BookReaderPlugin.js';\nimport { applyVariables } from '../../util/strings.js';\nimport { toISO6391 } from '../tts/utils.js';\n/** @typedef {import('../../BookReader/PageContainer').PageContainer} PageContainer */\n/** @typedef {import('../../BookReader/BookModel').PageIndex} PageIndex */\n/** @typedef {import('../../BookReader/BookModel').LeafNum} LeafNum */\n/** @typedef {import('../../BookReader/BookModel').PageNumString} PageNumString */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nexport class SearchPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n preTag: '{{{',\n postTag: '}}}',\n /**\n * @type {import('@/src/util/strings.js').StringWithVars}\n * Provides the variables: `query`, `preTag`, and `postTag` (from these options)\n */\n searchInsideUrl: '/fulltext/inside.php?' + [\n 'q={{query|urlencode}}',\n 'pre_tag={{preTag|urlencode}}',\n 'post_tag={{postTag|urlencode}}',\n ].join('&'),\n /** @type {string} */\n initialSearchTerm: null,\n goToFirstResult: false,\n }\n\n /**\n * @override\n * @param {Partial<SearchPlugin['options']>} options\n **/\n setup(options) {\n super.setup(options);\n\n this.searchTerm = '';\n /** @type {SearchInsideResults | null} */\n this.searchResults = null;\n this.searchInsideUrl = this.options.searchInsideUrl;\n this.enabled = this.options.enabled;\n this.searchXHR = null;\n\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n this._searchBoxesByIndex = {};\n\n if (this.enabled) {\n this.searchView = new SearchView({\n br: this.br,\n searchCancelledCallback: () => {\n this._cancelSearch();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n },\n });\n } else {\n this.searchView = null;\n }\n }\n\n /** @override */\n init() {\n super.init();\n\n if (!this.enabled) return;\n\n this.searchView.init();\n if (this.options.initialSearchTerm) {\n /**\n * this.search() take two parameter\n * 1. this.options.initialSearchTerm - search term\n * 2. {\n * goToFirstResult: this.options.goToFirstResult,\n * suppressFragmentChange: false // always want to change fragment in URL\n * }\n */\n this.search(\n this.options.initialSearchTerm,\n { goToFirstResult: this.options.goToFirstResult, suppressFragmentChange: false },\n );\n }\n }\n\n /**\n * @override\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n if (!this.enabled) { return; }\n if (this.searchView.dom.toolbarSearch) {\n $toolbarElement.find('.BRtoolbarSectionInfo').after(this.searchView.dom.toolbarSearch);\n }\n return $toolbarElement;\n }\n\n /**\n * @override\n * @param {import (\"@/src/BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n if (this.enabled && pageContainer.page && pageContainer.page.index in this._searchBoxesByIndex) {\n const pageIndex = pageContainer.page.index;\n const boxes = this._searchBoxesByIndex[pageIndex];\n renderBoxesInPageContainerLayer(\n 'searchHiliteLayer',\n boxes,\n pageContainer.page,\n pageContainer.$container[0],\n boxes.map(b => `match-index-${b.matchIndex}`),\n );\n }\n return pageContainer;\n }\n\n /**\n * Submits search request\n *\n * @param {string} term\n * @param {Partial<SearchOptions>} overrides\n */\n async search(term = '', overrides = {}) {\n /** @type {SearchOptions} */\n const defaultOptions = {\n goToFirstResult: false, /* jump to the first result (default=false) */\n disablePopup: false, /* don't show the modal progress (default=false) */\n suppressFragmentChange: false, /* don't change the URL on initial load */\n error: null, /* optional error handler (default=null) */\n success: null, /* optional success handler (default=null) */\n\n };\n const options = jQuery.extend({}, defaultOptions, overrides);\n this.suppressFragmentChange = options.suppressFragmentChange;\n this.searchCancelled = false;\n\n // strip slashes, since this goes in the url\n this.searchTerm = term.replace(/\\//g, ' ');\n\n if (!options.suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n\n // Add quotes to the term. This is to compenstate for the backends default OR query\n // term = term.replace(/['\"]+/g, '');\n // term = '\"' + term + '\"';\n\n const url = applyVariables(this.options.searchInsideUrl, this.br.options.vars, {\n query: term,\n preTag: this.options.preTag,\n postTag: this.options.postTag,\n });\n\n const callSearchResultsCallback = (searchInsideResults) => {\n if (this.searchCancelled) {\n return;\n }\n const responseHasError = searchInsideResults.error || !searchInsideResults.matches.length;\n const hasCustomError = typeof options.error === 'function';\n const hasCustomSuccess = typeof options.success === 'function';\n\n if (responseHasError) {\n console.error('Search Inside Response Error', searchInsideResults.error || 'matches.length == 0');\n hasCustomError\n ? options.error.call(this, searchInsideResults, options)\n : this.BRSearchCallbackError(searchInsideResults);\n } else {\n hasCustomSuccess\n ? options.success.call(this, searchInsideResults, options)\n : this.BRSearchCallback(searchInsideResults, options);\n }\n };\n\n this.br.trigger('SearchStarted', { term: this.searchTerm, instance: this.br });\n callSearchResultsCallback(await $.ajax({\n url: url,\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n beforeSend: xhr => { this.searchXHR = xhr; },\n }));\n }\n\n /**\n * cancels AJAX Call\n * emits custom event\n */\n _cancelSearch() {\n this.searchXHR?.abort();\n this.searchView.clearSearchFieldAndResults(false);\n this.searchTerm = '';\n this.searchXHR = null;\n this.searchCancelled = true;\n this.searchResults = null;\n }\n\n /**\n * External function to cancel search\n * checks for term & xhr in flight before running\n */\n cancelSearchRequest() {\n this.searchCancelled = true;\n if (this.searchXHR !== null) {\n this._cancelSearch();\n this.searchView.toggleSearchPending();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n }\n }\n\n /**\n * Search Results return handler\n * @param {SearchInsideResults} results\n * @param {object} options\n * @param {boolean} options.goToFirstResult\n */\n BRSearchCallback(results, options) {\n const bookLangCode = toISO6391(this.br.options.bookLanguage);\n marshallSearchResults(\n results,\n pageNum => this.br.book.getPageNum(this.br.book.leafNumToIndex(pageNum)),\n this.options.preTag,\n this.options.postTag,\n bookLangCode,\n );\n this.searchResults = results || null;\n\n this.updateSearchHilites();\n this.br.removeProgressPopup();\n if (options.goToFirstResult) {\n this.jumpToMatch(0);\n }\n this.br.trigger('SearchCallback', { results, options, instance: this.br });\n }\n\n /**\n * Main search results error handler\n * @param {SearchInsideResults} results\n */\n BRSearchCallbackError(results) {\n this._BRSearchCallbackError(results);\n }\n\n /**\n * @private draws search results error\n * @param {SearchInsideResults} results\n */\n _BRSearchCallbackError(results) {\n this.searchResults = results;\n const payload = {\n term: this.searchTerm,\n results,\n instance: this.br,\n };\n if (results.error) {\n this.br.trigger('SearchCallbackError', payload);\n } else if (0 == results.matches.length) {\n if (false === results.indexed) {\n this.br.trigger('SearchCallbackBookNotIndexed', payload);\n return;\n }\n this.br.trigger('SearchCallbackEmpty', payload);\n }\n }\n\n /**\n * updates search on-page highlights controller\n */\n updateSearchHilites() {\n /** @type {SearchInsideMatch[]} */\n const matches = this.searchResults?.matches || [];\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n const boxesByIndex = {};\n\n // Clear any existing svg layers\n this.removeSearchHilites();\n\n // Group by pageIndex\n for (const match of matches) {\n for (const box of match.par[0].boxes) {\n const pageIndex = this.br.book.leafNumToIndex(box.page);\n const pageBoxes = boxesByIndex[pageIndex] || (boxesByIndex[pageIndex] = []);\n pageBoxes.push(box);\n }\n }\n\n // update any already created pages\n for (const [pageIndexString, boxes] of Object.entries(boxesByIndex)) {\n const pageIndex = parseFloat(pageIndexString);\n const page = this.br.book.getPage(pageIndex);\n const pageContainers = this.br.getActivePageContainerElementsForIndex(pageIndex);\n for (const container of pageContainers) {\n renderBoxesInPageContainerLayer('searchHiliteLayer', boxes, page, container, boxes.map(b => `match-index-${b.matchIndex}`));\n }\n }\n\n this._searchBoxesByIndex = boxesByIndex;\n }\n\n /**\n * remove search highlights\n */\n removeSearchHilites() {\n $(this.br.getActivePageContainerElements()).find('.searchHiliteLayer').remove();\n }\n\n /**\n * Goes to the page specified. If the page is not viewable, tries to load the page\n * FIXME Most of this logic is IA specific, and should be less integrated into here\n * or at least more configurable.\n * @param {number} matchIndex\n */\n async jumpToMatch(matchIndex) {\n const match = this.searchResults?.matches[matchIndex];\n const book = this.br.book;\n const pageIndex = book.leafNumToIndex(match.par[0].page);\n const page = book.getPage(pageIndex);\n const onNearbyPage = Math.abs(this.br.currentIndex() - pageIndex) < 3;\n let makeUnviewableAtEnd = false;\n if (!page.isViewable) {\n const resp = await fetch('/services/bookreader/request_page?' + new URLSearchParams({\n id: this.br.options.bookId,\n subprefix: this.br.options.subPrefix,\n leafNum: page.leafNum,\n })).then(r => r.json());\n\n for (const leafNum of resp.value) {\n book.getPage(book.leafNumToIndex(leafNum)).makeViewable();\n }\n\n // not able to show page; make the page viewable anyways so that it can\n // actually open. On IA, it has a fallback to a special error page.\n if (!resp.value.length) {\n book.getPage(pageIndex).makeViewable();\n makeUnviewableAtEnd = true;\n }\n\n // Trigger an update of book\n this.br._modes.mode1Up.mode1UpLit.updatePages();\n if (this.br.activeMode == this.br._modes.mode1Up) {\n await this.br._modes.mode1Up.mode1UpLit.updateComplete;\n }\n }\n /* this updates the URL */\n if (!this.br._isIndexDisplayed(pageIndex)) {\n this.suppressFragmentChange = false;\n this.br.jumpToIndex(pageIndex);\n }\n\n // Reset it to unviewable if it wasn't resolved\n if (makeUnviewableAtEnd) {\n book.getPage(pageIndex).makeViewable(false);\n }\n\n // Scroll/flash in the ui\n const $boxes = await poll(() => $(`rect.match-index-${match.matchIndex}`), { until: result => result.length > 0 });\n if ($boxes.length) {\n $boxes.css('animation', 'none');\n $boxes[0].scrollIntoView({\n // Only vertically center the highlight if we're in 1up or in full screen. In\n // 2up, if we're not fullscreen, the whole body gets scrolled around to try to\n // center the highlight 🙄 See:\n // https://stackoverflow.com/questions/11039885/scrollintoview-causing-the-whole-page-to-move/11041376\n // Note: nearest doesn't quite work great, because the ReadAloud toolbar is now\n // full-width, and covers up the last line of the highlight.\n block: this.br.constMode1up == this.br.mode || this.br.isFullscreenActive ? 'center' : 'nearest',\n inline: 'center',\n behavior: onNearbyPage ? 'smooth' : 'auto',\n });\n // wait for animation to start\n await new Promise(resolve => setTimeout(resolve, 100));\n $boxes.removeAttr(\"style\");\n }\n }\n\n /**\n * Removes all search pins\n */\n removeSearchResults(suppressFragmentChange = false) {\n this.removeSearchHilites(); //be sure to set all box.divs to null\n this.searchTerm = null;\n this.searchResults = null;\n if (!suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n }\n}\nBookReader?.registerPlugin('search', SearchPlugin);\n\n/**\n * @typedef {object} SearchOptions\n * @property {boolean} goToFirstResult\n * @property {boolean} disablePopup\n * @property {boolean} suppressFragmentChange\n * @property {(null|function)} error (deprecated)\n * @property {(null|function)} success (deprecated)\n */\n\n/**\n * @typedef {object} SearchInsideMatchBox\n * @property {number} page\n * @property {number} r\n * @property {number} l\n * @property {number} b\n * @property {number} t\n * @property {HTMLDivElement} [div]\n * @property {number} matchIndex This is a fake field! not part of the API response. The index of the match that contains this box in total search results matches.\n */\n\n/**\n * @typedef {object} SearchInsideMatch\n * @property {number} matchIndex This is a fake field! Not part of the API response. It is added by the JS.\n * @property {string} displayPageNumber (fake field) The page number as it should be displayed in the UI.\n * @property {string} html (computed field) The html-escaped raw html to display in the UI.\n * @property {string} text\n * @property {string} lang (fake field) The ISO 639-1 language code of the book\n * @property {Array<{ page: number, boxes: SearchInsideMatchBox[] }>} par\n */\n\n/**\n * @typedef {object} SearchInsideResults\n * @property {string} q\n * @property {string} error\n * @property {SearchInsideMatch[]} matches\n * @property {boolean} indexed\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","BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","codes","by639_1","by639_2T","by639_2B","forEach","row","code","nativeName","iso639_1","iso639_2T","iso639_2B","push","src_default","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","a","_arrayLikeToArray","toString","call","slice","constructor","from","test","_unsupportedIterableToArray","length","_n","F","s","n","done","f","TypeError","o","u","next","return","approximateWordCount","text","m","match","isAndroid","userAgent","arguments","undefined","navigator","specialLangs","toISO6391","language","getName","searchForISO6391","toLowerCase","columnsToSearch","_step","_iterator","langs","_step2","lang","_iterator2","split","map","x","indexOf","concat","err","hasLocalStorage","window","localStorage","DEBUG_READ_ALOUD","location","SearchView","_ref","_ref$searchCancelledC","searchCancelledCallback","matches","cacheDOMElements","cancelSearch","bindEvents","dom","toolbarSearch","buildToolbarSearch","query","val","remove","dispatchEventWhenComplete","plugins","search","removeSearchResults","removeResultPins","emptyMatches","setQuery","teardownSearchNavigation","trigger","selector","before","resultsPosition","searchNavigation","positionMessage","currentMatchIndex","namespace","on","clearSearchFieldAndResults","bind","showPrevResult","showNextResult","toggleSidebar","mode","constModeThumb","switchMode","constMode1up","getClosestMatchIndex","start","end","comparator","eq","click","updateResultsPosition","updateSearchNavigationButtons","comparisonFn","matchPages","par","page","currentPage","currentIndex","closestTo","pool","closestPage","find","attr","off","resize","matchingSearchResult","constMode2up","find2upMatchingSearchResult","find1upMatchingSearchResult","_this","_this2","_isIndexDisplayed","setCurrentMatchIndex","bool","pinsVisibleState","refs","$BRfooter","css","visibility","document","createElement","classList","add","innerHTML","imagesBaseURL","_this3","pageIndex","book","leafNumToIndex","percentThrough","util","cssPercentage","getNumLeafs","html","Math","max","substring","replace","addClass","left","append","displayPageNumber","appendTo","event","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","style","setProperty","removeClass","jumpToMatch","matchIndex","_this4","showProgressPopup","progressPopupClosed","removeProgressPopup","toggleSearchPending","errorDetails","renderModalMessage","delayModalRemovalFor","messageHTML","modal","el","timeoutMS","setTimeout","preventDefault","_ref2","_this5","results","renderSearchNavigation","bindSearchNavigationEvents","renderPins","goToFirstResult","one","removeSearchHilites","searchTerm","_event$detail","isIndexed","detail","props","indexed","renderErrorModal","renderBookNotIndexedModal","renderResultsEmptyModal","addEventListener","handleSearchCallbackError","handleSearchCallback","handleSearchStarted","handleSearchCallbackBookNotIndexed","handleSearchCallbackEmpty","updateSearchNavigation","submitHandler","renderMatch","preTag","postTag","preTagRe","escapeRegExp","escapeHTML","postTagRe","regex","RegExp","toStringTag","i","c","prototype","Generator","create","_regeneratorDefine2","p","y","G","v","d","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","apply","_next","_throw","_defineProperties","_toPropertyKey","_isNativeReflectConstruct","Boolean","valueOf","Reflect","construct","_superPropGet","_get","_getPrototypeOf","get","hasOwnProperty","_superPropBase","getOwnPropertyDescriptor","_setPrototypeOf","_typeof","toPrimitive","String","_toPrimitive","BookReader","SearchPlugin","_BookReaderPlugin","_len","args","_key","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_callSuper","enabled","searchInsideUrl","join","initialSearchTerm","_inherits","searchResults","searchXHR","_searchBoxesByIndex","searchView","_cancelSearch","term","instance","init","suppressFragmentChange","after","index","boxes","renderBoxesInPageContainerLayer","$container","b","_search","_callee","overrides","defaultOptions","url","callSearchResultsCallback","_t","_args","_context","disablePopup","error","success","jQuery","extend","searchCancelled","eventNames","fragmentChange","applyVariables","vars","searchInsideResults","responseHasError","hasCustomError","hasCustomSuccess","console","BRSearchCallbackError","BRSearchCallback","ajax","cache","xhrFields","withCredentials","protected","beforeSend","xhr","_this$searchXHR","abort","bookLangCode","bookLanguage","displayPageNumberFn","entries","_step$value","_slicedToArray","_step3","_iterator3","marshallSearchResults","pageNum","getPageNum","updateSearchHilites","_BRSearchCallbackError","payload","_this$searchResults","boxesByIndex","box","_i","_Object$entries","_Object$entries$_i","pageIndexString","parseFloat","getPage","getActivePageContainerElementsForIndex","container","getActivePageContainerElements","_jumpToMatch","_callee2","_this$searchResults2","onNearbyPage","makeUnviewableAtEnd","resp","_iterator4","_step4","leafNum","$boxes","_context2","abs","isViewable","fetch","URLSearchParams","id","bookId","subprefix","subPrefix","json","makeViewable","_modes","mode1Up","mode1UpLit","updatePages","activeMode","updateComplete","jumpToIndex","poll","until","result","scrollIntoView","block","isFullscreenActive","inline","behavior","removeAttr","_x","registerPlugin","template","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","varName","filterNames","reduce","acc","cur","urlencode","encodeURIComponent"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"plugins/plugin.search.js","mappings":"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","sources":["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/plugins/search/view.js","webpack://@internetarchive/bookreader/./src/plugins/search/utils.js","webpack://@internetarchive/bookreader/./src/plugins/search/plugin.search.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","// @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","// @ts-check\nimport 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/**\n * @typedef {string} ISO6391\n * Language code in ISO 639-1 format. e.g. en, fr, zh\n **/\n\n/**\n * @param {string} language in some format\n * @return {ISO6391?}\n */\nexport function toISO6391(language) {\n if (!language) return null;\n language = language.toLocaleLowerCase();\n if (specialLangs[language]) {\n return language;\n }\n const codeObj = (\n findLanguage(language, ['iso639_1']) ||\n findLanguage(language, ['iso639_2T']) ||\n findLanguage(language, ['iso639_2B', 'name', 'nativeName'])\n );\n if (codeObj) return codeObj.iso639_1;\n return null;\n}\n\n/**\n *\n * @param {string} language\n * @returns {string}\n */\nexport function toNativeName(language) {\n if (!language) return null;\n language = language.toLocaleLowerCase();\n if (specialLangs[language]) {\n return specialLangs[language];\n }\n const codeObj = (\n findLanguage(language, ['iso639_1']) ||\n findLanguage(language, ['iso639_2T']) ||\n findLanguage(language, ['iso639_2B', 'name', 'nativeName'])\n );\n if (codeObj?.nativeName) return codeObj.nativeName.split(\", \")[0];\n return null;\n}\n\n/** @typedef {import('iso-language-codes').Code} Code */\n\n/**\n * @param {string} language\n * @param {Array<'iso639_1' | 'iso639_2T' | 'iso639_2B' | 'nativeName' | 'name'>} fields\n * @returns {Code | null}\n */\nfunction findLanguage(language, fields) {\n if (!language) return null;\n language = language.toLowerCase();\n for (const lang of langs) {\n for (const codeType of fields) {\n if (lang[codeType]?.toLowerCase().split(\", \").includes(language)) {\n return lang;\n }\n }\n }\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\n/** @typedef {import('@/src/BookReader.js').default} BookReader */\n\nclass SearchView {\n /**\n * @param {object} params\n * @param {BookReader} params.br The BookReader instance\n * @param {function} params.searchCancelledCallback callback when a user wants to cancel search\n *\n * @event BookReader:SearchResultsCleared - when the search results nav gets cleared\n * @event BookReader:ToggleSearchMenu - when search results menu should toggle\n */\n constructor({ br, searchCancelledCallback = () => {} }) {\n /** @type {BookReader} */\n this.br = br;\n this.matches = [];\n this.cacheDOMElements();\n this.cancelSearch = searchCancelledCallback;\n }\n\n init() {\n this.bindEvents();\n }\n\n cacheDOMElements() {\n this.dom = {};\n // Search input within the top toolbar. Will be removed once the mobile menu is replaced.\n this.dom.toolbarSearch = this.buildToolbarSearch();\n }\n\n /**\n * @param {string} query\n */\n setQuery(query) {\n this.br.$('[name=\"query\"]').val(query);\n }\n\n emptyMatches() {\n this.matches = [];\n }\n\n removeResultPins() {\n this.br.$('.BRnavpos .BRsearch').remove();\n }\n\n clearSearchFieldAndResults(dispatchEventWhenComplete = true) {\n this.br.plugins.search.removeSearchResults();\n this.removeResultPins();\n this.emptyMatches();\n this.setQuery('');\n this.teardownSearchNavigation();\n if (dispatchEventWhenComplete) {\n this.br.trigger('SearchResultsCleared');\n }\n }\n\n toggleSidebar() {\n this.br.trigger('ToggleSearchMenu');\n }\n\n renderSearchNavigation() {\n const selector = 'BRsearch-navigation';\n $('.BRnav.BRnavMain').before(`\n <div class=\"${selector}\">\n <button class=\"toggle-sidebar\">\n <h4>\n <span class=\"icon icon-search\"></span> Results\n </h4>\n </button>\n <div class=\"pagination\">\n <button class=\"prev\" title=\"Previous result\"><span class=\"icon icon-chevron hflip\"></span></button>\n <span data-id=\"resultsCount\">${this.resultsPosition()}</span>\n <button class=\"next\" title=\"Next result\"><span class=\"icon icon-chevron\"></button>\n </div>\n <button class=\"clear\" title=\"Clear search results\">\n <span class=\"icon icon-close\"></span>\n </button>\n </div>\n `);\n this.dom.searchNavigation = $(`.${selector}`);\n }\n\n resultsPosition() {\n let positionMessage = `${this.matches.length} result${this.matches.length === 1 ? '' : 's'}`;\n if (~this.currentMatchIndex) {\n positionMessage = `${this.currentMatchIndex + 1} / ${this.matches.length}`;\n }\n return positionMessage;\n }\n\n bindSearchNavigationEvents() {\n if (!this.dom.searchNavigation) { return; }\n const namespace = 'searchNavigation';\n\n this.dom.searchNavigation\n .on(`click.${namespace}`, '.clear', this.clearSearchFieldAndResults.bind(this))\n .on(`click.${namespace}`, '.prev', this.showPrevResult.bind(this))\n .on(`click.${namespace}`, '.next', this.showNextResult.bind(this))\n .on(`click.${namespace}`, '.toggle-sidebar', this.toggleSidebar.bind(this))\n .on(`click.${namespace}`, false);\n }\n\n showPrevResult() {\n if (this.currentMatchIndex === 0) { return; }\n if (this.br.mode === this.br.constModeThumb) { this.br.switchMode(this.br.constMode1up); }\n if (!~this.currentMatchIndex) {\n this.currentMatchIndex = this.getClosestMatchIndex((start, end, comparator) => end[0] > comparator) + 1;\n }\n this.br.$('.BRnavline .BRsearch').eq(--this.currentMatchIndex).click();\n this.updateResultsPosition();\n this.updateSearchNavigationButtons();\n }\n\n showNextResult() {\n if (this.currentMatchIndex + 1 === this.matches.length) { return; }\n if (this.br.mode === this.br.constModeThumb) { this.br.switchMode(this.br.constMode1up); }\n if (!~this.currentMatchIndex) {\n this.currentMatchIndex = this.getClosestMatchIndex((start, end, comparator) => start[start.length - 1] > comparator) - 1;\n }\n this.br.$('.BRnavline .BRsearch').eq(++this.currentMatchIndex).click();\n this.updateResultsPosition();\n this.updateSearchNavigationButtons();\n }\n\n /**\n * Obtains closest match based on the logical comparison function passed in.\n * When the comparison function returns true, the starting (left) half of the\n * matches array is used in the binary split, else the ending (right) half is\n * used. A recursive call is made to perform the same split and comparison\n * on the winning half of the matches. This is traditionally known as binary\n * search (https://en.wikipedia.org/wiki/Binary_search_algorithm), and in\n * most cases (medium to large search result arrays) should outperform\n * traversing the array from start to finish. In the case of small arrays,\n * the speed difference is negligible.\n *\n * @param {function} comparisonFn\n * @return {number} matchIndex\n */\n getClosestMatchIndex(comparisonFn) {\n const matchPages = this.matches.map((m) => m.par[0].page);\n const currentPage = this.br.currentIndex() + 1;\n const closestTo = (pool, comparator) => {\n if (pool.length === 1) { return pool[0]; }\n const start = pool.slice(0, pool.length / 2);\n const end = pool.slice(pool.length / 2);\n return closestTo((comparisonFn(start, end, comparator) ? start : end), comparator);\n };\n\n const closestPage = closestTo(matchPages, currentPage);\n return this.matches.indexOf(this.matches.find((m) => m.par[0].page === closestPage));\n }\n\n updateResultsPosition() {\n if (!this.dom.searchNavigation) return;\n this.dom.searchNavigation.find('[data-id=resultsCount]').text(this.resultsPosition());\n }\n\n updateSearchNavigationButtons() {\n if (!this.dom.searchNavigation) return;\n this.dom.searchNavigation.find('.prev').attr('disabled', !this.currentMatchIndex);\n this.dom.searchNavigation.find('.next').attr('disabled', this.currentMatchIndex + 1 === this.matches.length);\n }\n\n teardownSearchNavigation() {\n if (!this.dom.searchNavigation) {\n this.dom.searchNavigation = $('.BRsearch-navigation');\n }\n if (!this.dom.searchNavigation.length) { return; }\n\n this.dom.searchNavigation.off('.searchNavigation').remove();\n this.dom.searchNavigation = null;\n this.br.resize();\n }\n\n setCurrentMatchIndex() {\n let matchingSearchResult;\n if (this.br.mode === this.br.constModeThumb) {\n this.currentMatchIndex = -1;\n return;\n }\n if (this.br.mode === this.br.constMode2up) {\n matchingSearchResult = this.find2upMatchingSearchResult();\n }\n else {\n matchingSearchResult = this.find1upMatchingSearchResult();\n }\n this.currentMatchIndex = this.matches.indexOf(matchingSearchResult);\n }\n\n find1upMatchingSearchResult() {\n return this.matches.find((m) => this.br.currentIndex() === m.par[0].page - 1);\n }\n\n find2upMatchingSearchResult() {\n return this.matches.find((m) => this.br._isIndexDisplayed(m.par[0].page - 1));\n }\n\n updateSearchNavigation() {\n if (!this.matches.length) { return; }\n\n this.setCurrentMatchIndex();\n this.updateResultsPosition();\n this.updateSearchNavigationButtons();\n }\n\n /**\n * @param {boolean} bool\n */\n togglePinsFor(bool) {\n const pinsVisibleState = bool ? 'visible' : 'hidden';\n this.br.refs.$BRfooter.find('.BRsearch').css({ visibility: pinsVisibleState });\n }\n\n buildToolbarSearch() {\n const toolbarSearch = document.createElement('span');\n toolbarSearch.classList.add('BRtoolbarSection', 'BRtoolbarSectionSearch');\n toolbarSearch.innerHTML = `\n <form class=\"BRbooksearch desktop\">\n <input type=\"search\" name=\"query\" class=\"BRsearchInput\" value=\"\" placeholder=\"Search inside\"/>\n <button type=\"submit\" class=\"BRsearchSubmit\">\n <img src=\"${this.br.options.imagesBaseURL}icon_search_button.svg\" />\n </button>\n </form>\n `;\n return toolbarSearch;\n }\n\n /**\n * @param {array} matches\n */\n renderPins(matches) {\n matches.forEach((match) => {\n const pageIndex = this.br.book.leafNumToIndex(match.par[0].page);\n const uiStringSearch = \"Search result\"; // i18n\n const percentThrough = this.br.constructor.util.cssPercentage(pageIndex, this.br.book.getNumLeafs() - 1);\n\n let html = match.html;\n if (html.length > 200) {\n const start = Math.max(0, html.indexOf('<mark>') - 100);\n if (start != 0) {\n html = '…' + match.html\n .substring(start)\n // Make sure at word boundary though\n .replace(/^\\S+/, '');\n }\n }\n // draw marker\n $('<div>')\n .addClass('BRsearch')\n .css({\n left: percentThrough,\n })\n .attr('title', uiStringSearch)\n .append(`\n <div class=\"BRquery\">\n <main>${html}</main>\n <footer>Page ${match.displayPageNumber}</footer>\n </div>\n `)\n .appendTo(this.br.$('.BRnavline'))\n .on(\"mouseenter\", (event) => {\n // remove from other markers then turn on just for this\n // XXX should be done when nav slider moves\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('.BRquery');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n $('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", (event) => $(event.target).removeClass('front'))\n .on(\"click\", () => { this.br.plugins.search.jumpToMatch(match.matchIndex); });\n });\n }\n\n /**\n * @param {boolean} show\n */\n toggleSearchPending(show = false) {\n if (show) {\n this.br.showProgressPopup(\"Search results will appear below...\", () => this.progressPopupClosed());\n }\n else {\n this.br.removeProgressPopup();\n }\n }\n\n /**\n * Primary callback when user cancels search popup\n */\n progressPopupClosed() {\n this.toggleSearchPending();\n this.cancelSearch();\n }\n\n renderErrorModal(textIsProcessing = false) {\n const errorDetails = `${!textIsProcessing ? 'The text may still be processing. ' : ''}Please try again.`;\n this.renderModalMessage(`\n Sorry, there was an error with your search.\n <br />\n ${errorDetails}\n `);\n this.delayModalRemovalFor(4000);\n }\n\n renderBookNotIndexedModal() {\n this.renderModalMessage(`\n <p>\n This book hasn't been indexed for searching yet.\n We've just started indexing it, so search should be available soon.\n <br />\n Please try again later. Thanks!\n </p>\n `);\n this.delayModalRemovalFor(5000);\n }\n\n renderResultsEmptyModal() {\n this.renderModalMessage('No matches were found.');\n this.delayModalRemovalFor(2000);\n }\n\n /**\n * @param {string} messageHTML The innerHTML string used to popupate the modal contents\n */\n renderModalMessage(messageHTML) {\n const modal = document.createElement('div');\n modal.classList.add('BRprogresspopup', 'search_modal');\n modal.innerHTML = messageHTML;\n document.querySelector(this.br.el).append(modal);\n }\n\n /**\n * @param {number} timeoutMS\n */\n delayModalRemovalFor(timeoutMS) {\n setTimeout(this.br.removeProgressPopup.bind(this.br), timeoutMS);\n }\n\n /**\n * @param {Event} e\n */\n submitHandler(e) {\n e.preventDefault();\n const query = e.target.querySelector('[name=\"query\"]').value;\n if (!query.length) { return false; }\n this.br.search(query);\n this.emptyMatches();\n this.toggleSearchPending(true);\n return false;\n }\n\n /**\n * @param {Event} e\n * @param {object} properties\n * @param {object} properties.results\n * @param {object} properties.options\n */\n handleSearchCallback(e, { results, options }) {\n this.matches = results.matches;\n this.setCurrentMatchIndex();\n this.teardownSearchNavigation();\n this.renderSearchNavigation();\n this.bindSearchNavigationEvents();\n this.renderPins(results.matches);\n this.toggleSearchPending(false);\n if (options.goToFirstResult) {\n $(document).one('BookReader:pageChanged', () => {\n this.br.resize();\n });\n } else {\n this.br.resize();\n }\n }\n\n handleSearchStarted() {\n this.emptyMatches();\n this.br.plugins.search.removeSearchHilites();\n this.removeResultPins();\n this.toggleSearchPending(true);\n this.teardownSearchNavigation();\n this.setQuery(this.br.plugins.search.searchTerm);\n }\n\n /**\n * Event listener for: `BookReader:SearchCallbackError`\n * @param {CustomEvent} event\n */\n handleSearchCallbackError(event = {}) {\n this.toggleSearchPending(false);\n const isIndexed = event?.detail?.props?.results?.indexed;\n this.renderErrorModal(isIndexed);\n }\n\n handleSearchCallbackBookNotIndexed() {\n this.toggleSearchPending(false);\n this.renderBookNotIndexedModal();\n }\n\n handleSearchCallbackEmpty() {\n this.toggleSearchPending(false);\n this.renderResultsEmptyModal();\n }\n\n bindEvents() {\n const namespace = 'BookReader:';\n\n window.addEventListener(`${namespace}SearchCallbackError`, this.handleSearchCallbackError.bind(this));\n $(document).on(`${namespace}SearchCallback`, this.handleSearchCallback.bind(this))\n .on(`${namespace}SearchStarted`, this.handleSearchStarted.bind(this))\n .on(`${namespace}SearchCallbackBookNotIndexed`, this.handleSearchCallbackBookNotIndexed.bind(this))\n .on(`${namespace}SearchCallbackEmpty`, this.handleSearchCallbackEmpty.bind(this))\n .on(`${namespace}pageChanged`, this.updateSearchNavigation.bind(this));\n\n this.dom.toolbarSearch.querySelector('form').addEventListener('submit', this.submitHandler.bind(this));\n }\n}\n\nexport default SearchView;\n","// @ts-check\nimport { escapeHTML, escapeRegExp } from '../../BookReader/utils.js';\n/** @typedef {import('@/src/plugins/search/plugin.search.js').SearchInsideResults} SearchInsideResults */\n/** @typedef {import('@/src/plugins/search/plugin.search.js').LeafNum} LeafNum */\n/** @typedef {import('@/src/plugins/search/plugin.search.js').PageNumString} PageNumString */\n\n/**\n * @param {string} match\n * @param {string} preTag\n * @param {string} postTag\n * @returns {string}\n */\nexport function renderMatch(match, preTag, postTag) {\n // Search results are returned as a text blob with the hits wrapped in\n // triple mustaches. Hits occasionally include text beyond the search\n // term, so everything within the staches is captured and wrapped.\n const preTagRe = escapeRegExp(escapeHTML(preTag));\n const postTagRe = escapeRegExp(escapeHTML(postTag));\n // [^] matches any character, including line breaks\n const regex = new RegExp(`${preTagRe}([^]+?)${postTagRe}`, 'g');\n return escapeHTML(match)\n .replace(regex, '<mark>$1</mark>')\n // Fix trailing hyphens. This over-corrects but is net useful.\n .replace(/(\\b)- /g, '$1');\n}\n\n/**\n * Attach some fields to search inside results\n * @param {SearchInsideResults} results\n * @param {(pageNum: LeafNum) => PageNumString} displayPageNumberFn\n * @param {string} preTag\n * @param {string} postTag\n * @param {string | null} bookLanguage The ISO 639-1 language code of the book\n */\nexport function marshallSearchResults(results, displayPageNumberFn, preTag, postTag, bookLanguage) {\n // Attach matchIndex to a few things to make it easier to identify\n // an active/selected match\n\n for (const [index, match] of results.matches.entries()) {\n match.matchIndex = index;\n match.displayPageNumber = displayPageNumberFn(match.par[0].page);\n match.html = renderMatch(match.text, preTag, postTag);\n match.lang = bookLanguage;\n for (const par of match.par) {\n for (const box of par.boxes) {\n box.matchIndex = index;\n }\n }\n }\n}\n","// @ts-check\n/**\n * Plugin for Archive.org book search\n * Events fired at various points throughout search processing are published\n * on the document DOM element. These can be subscribed to using jQuery's event\n * binding method `$.fn.on`. All of the events are prefixed with a BookReader\n * namespace. The events are:\n *\n * @event BookReader:SearchStarted - When a search form is submitted, immediately\n * before an AJAX call is made to request search results\n * @event BookReader:SearchCallback - When the search AJAX call is returned and at\n * least one result is returned. The event callback receives an object\n * with the `results`, plugin `options`, and the BookReader `instance`\n * @event BookReader:SearchCallbackError - When the AJAX request returns an error.\n * Receives the `results` and `instance`\n * @event BookReader:SearchCallbackNotIndexed - When a message is received that\n * the book has not had OCR text indexed yet. Receives `instance`\n * @event BookReader:SearchCallbackEmpty - When no results found. Receives\n * `instance`\n * @event BookReader:SearchCanceled - When no results found. Receives\n * `instance`\n */\nimport { poll } from '../../BookReader/utils.js';\nimport { renderBoxesInPageContainerLayer } from '../../BookReader/PageContainer.js';\nimport SearchView from './view.js';\nimport { marshallSearchResults } from './utils.js';\nimport { BookReaderPlugin } from '../../BookReaderPlugin.js';\nimport { applyVariables } from '../../util/strings.js';\nimport { toISO6391 } from '../tts/utils.js';\n/** @typedef {import('../../BookReader/PageContainer').PageContainer} PageContainer */\n/** @typedef {import('../../BookReader/BookModel').PageIndex} PageIndex */\n/** @typedef {import('../../BookReader/BookModel').LeafNum} LeafNum */\n/** @typedef {import('../../BookReader/BookModel').PageNumString} PageNumString */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nexport class SearchPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n preTag: '{{{',\n postTag: '}}}',\n /**\n * @type {import('@/src/util/strings.js').StringWithVars}\n * Provides the variables: `query`, `preTag`, and `postTag` (from these options)\n */\n searchInsideUrl: '/fulltext/inside.php?' + [\n 'q={{query|urlencode}}',\n 'pre_tag={{preTag|urlencode}}',\n 'post_tag={{postTag|urlencode}}',\n ].join('&'),\n /** @type {string} */\n initialSearchTerm: null,\n goToFirstResult: false,\n }\n\n /**\n * @override\n * @param {Partial<SearchPlugin['options']>} options\n **/\n setup(options) {\n super.setup(options);\n\n this.searchTerm = '';\n /** @type {SearchInsideResults | null} */\n this.searchResults = null;\n this.searchInsideUrl = this.options.searchInsideUrl;\n this.enabled = this.options.enabled;\n this.searchXHR = null;\n\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n this._searchBoxesByIndex = {};\n\n if (this.enabled) {\n this.searchView = new SearchView({\n br: this.br,\n searchCancelledCallback: () => {\n this._cancelSearch();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n },\n });\n } else {\n this.searchView = null;\n }\n }\n\n /** @override */\n init() {\n super.init();\n\n if (!this.enabled) return;\n\n this.searchView.init();\n if (this.options.initialSearchTerm) {\n /**\n * this.search() take two parameter\n * 1. this.options.initialSearchTerm - search term\n * 2. {\n * goToFirstResult: this.options.goToFirstResult,\n * suppressFragmentChange: false // always want to change fragment in URL\n * }\n */\n this.search(\n this.options.initialSearchTerm,\n { goToFirstResult: this.options.goToFirstResult, suppressFragmentChange: false },\n );\n }\n }\n\n /**\n * @override\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n if (!this.enabled) { return; }\n if (this.searchView.dom.toolbarSearch) {\n $toolbarElement.find('.BRtoolbarSectionInfo').after(this.searchView.dom.toolbarSearch);\n }\n return $toolbarElement;\n }\n\n /**\n * @override\n * @param {import (\"@/src/BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n if (this.enabled && pageContainer.page && pageContainer.page.index in this._searchBoxesByIndex) {\n const pageIndex = pageContainer.page.index;\n const boxes = this._searchBoxesByIndex[pageIndex];\n renderBoxesInPageContainerLayer(\n 'searchHiliteLayer',\n boxes,\n pageContainer.page,\n pageContainer.$container[0],\n boxes.map(b => `match-index-${b.matchIndex}`),\n );\n }\n return pageContainer;\n }\n\n /**\n * Submits search request\n *\n * @param {string} term\n * @param {Partial<SearchOptions>} overrides\n */\n async search(term = '', overrides = {}) {\n /** @type {SearchOptions} */\n const defaultOptions = {\n goToFirstResult: false, /* jump to the first result (default=false) */\n disablePopup: false, /* don't show the modal progress (default=false) */\n suppressFragmentChange: false, /* don't change the URL on initial load */\n error: null, /* optional error handler (default=null) */\n success: null, /* optional success handler (default=null) */\n\n };\n const options = jQuery.extend({}, defaultOptions, overrides);\n this.suppressFragmentChange = options.suppressFragmentChange;\n this.searchCancelled = false;\n\n // strip slashes, since this goes in the url\n this.searchTerm = term.replace(/\\//g, ' ');\n\n if (!options.suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n\n // Add quotes to the term. This is to compenstate for the backends default OR query\n // term = term.replace(/['\"]+/g, '');\n // term = '\"' + term + '\"';\n\n const url = applyVariables(this.options.searchInsideUrl, this.br.options.vars, {\n query: term,\n preTag: this.options.preTag,\n postTag: this.options.postTag,\n });\n\n const callSearchResultsCallback = (searchInsideResults) => {\n if (this.searchCancelled) {\n return;\n }\n const responseHasError = searchInsideResults.error || !searchInsideResults.matches.length;\n const hasCustomError = typeof options.error === 'function';\n const hasCustomSuccess = typeof options.success === 'function';\n\n if (responseHasError) {\n console.error('Search Inside Response Error', searchInsideResults.error || 'matches.length == 0');\n hasCustomError\n ? options.error.call(this, searchInsideResults, options)\n : this.BRSearchCallbackError(searchInsideResults);\n } else {\n hasCustomSuccess\n ? options.success.call(this, searchInsideResults, options)\n : this.BRSearchCallback(searchInsideResults, options);\n }\n };\n\n this.br.trigger('SearchStarted', { term: this.searchTerm, instance: this.br });\n callSearchResultsCallback(await $.ajax({\n url: url,\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n beforeSend: xhr => { this.searchXHR = xhr; },\n }));\n }\n\n /**\n * cancels AJAX Call\n * emits custom event\n */\n _cancelSearch() {\n this.searchXHR?.abort();\n this.searchView.clearSearchFieldAndResults(false);\n this.searchTerm = '';\n this.searchXHR = null;\n this.searchCancelled = true;\n this.searchResults = null;\n }\n\n /**\n * External function to cancel search\n * checks for term & xhr in flight before running\n */\n cancelSearchRequest() {\n this.searchCancelled = true;\n if (this.searchXHR !== null) {\n this._cancelSearch();\n this.searchView.toggleSearchPending();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n }\n }\n\n /**\n * Search Results return handler\n * @param {SearchInsideResults} results\n * @param {object} options\n * @param {boolean} options.goToFirstResult\n */\n BRSearchCallback(results, options) {\n const bookLangCode = toISO6391(this.br.options.bookLanguage);\n marshallSearchResults(\n results,\n pageNum => this.br.book.getPageNum(this.br.book.leafNumToIndex(pageNum)),\n this.options.preTag,\n this.options.postTag,\n bookLangCode,\n );\n this.searchResults = results || null;\n\n this.updateSearchHilites();\n this.br.removeProgressPopup();\n if (options.goToFirstResult) {\n this.jumpToMatch(0);\n }\n this.br.trigger('SearchCallback', { results, options, instance: this.br });\n }\n\n /**\n * Main search results error handler\n * @param {SearchInsideResults} results\n */\n BRSearchCallbackError(results) {\n this._BRSearchCallbackError(results);\n }\n\n /**\n * @private draws search results error\n * @param {SearchInsideResults} results\n */\n _BRSearchCallbackError(results) {\n this.searchResults = results;\n const payload = {\n term: this.searchTerm,\n results,\n instance: this.br,\n };\n if (results.error) {\n this.br.trigger('SearchCallbackError', payload);\n } else if (0 == results.matches.length) {\n if (false === results.indexed) {\n this.br.trigger('SearchCallbackBookNotIndexed', payload);\n return;\n }\n this.br.trigger('SearchCallbackEmpty', payload);\n }\n }\n\n /**\n * updates search on-page highlights controller\n */\n updateSearchHilites() {\n /** @type {SearchInsideMatch[]} */\n const matches = this.searchResults?.matches || [];\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n const boxesByIndex = {};\n\n // Clear any existing svg layers\n this.removeSearchHilites();\n\n // Group by pageIndex\n for (const match of matches) {\n for (const box of match.par[0].boxes) {\n const pageIndex = this.br.book.leafNumToIndex(box.page);\n const pageBoxes = boxesByIndex[pageIndex] || (boxesByIndex[pageIndex] = []);\n pageBoxes.push(box);\n }\n }\n\n // update any already created pages\n for (const [pageIndexString, boxes] of Object.entries(boxesByIndex)) {\n const pageIndex = parseFloat(pageIndexString);\n const page = this.br.book.getPage(pageIndex);\n const pageContainers = this.br.getActivePageContainerElementsForIndex(pageIndex);\n for (const container of pageContainers) {\n renderBoxesInPageContainerLayer('searchHiliteLayer', boxes, page, container, boxes.map(b => `match-index-${b.matchIndex}`));\n }\n }\n\n this._searchBoxesByIndex = boxesByIndex;\n }\n\n /**\n * remove search highlights\n */\n removeSearchHilites() {\n $(this.br.getActivePageContainerElements()).find('.searchHiliteLayer').remove();\n }\n\n /**\n * Goes to the page specified. If the page is not viewable, tries to load the page\n * FIXME Most of this logic is IA specific, and should be less integrated into here\n * or at least more configurable.\n * @param {number} matchIndex\n */\n async jumpToMatch(matchIndex) {\n const match = this.searchResults?.matches[matchIndex];\n const book = this.br.book;\n const pageIndex = book.leafNumToIndex(match.par[0].page);\n const page = book.getPage(pageIndex);\n const onNearbyPage = Math.abs(this.br.currentIndex() - pageIndex) < 3;\n let makeUnviewableAtEnd = false;\n if (!page.isViewable) {\n const resp = await fetch('/services/bookreader/request_page?' + new URLSearchParams({\n id: this.br.options.bookId,\n subprefix: this.br.options.subPrefix,\n leafNum: page.leafNum,\n })).then(r => r.json());\n\n for (const leafNum of resp.value) {\n book.getPage(book.leafNumToIndex(leafNum)).makeViewable();\n }\n\n // not able to show page; make the page viewable anyways so that it can\n // actually open. On IA, it has a fallback to a special error page.\n if (!resp.value.length) {\n book.getPage(pageIndex).makeViewable();\n makeUnviewableAtEnd = true;\n }\n\n // Trigger an update of book\n this.br._modes.mode1Up.mode1UpLit.updatePages();\n if (this.br.activeMode == this.br._modes.mode1Up) {\n await this.br._modes.mode1Up.mode1UpLit.updateComplete;\n }\n }\n /* this updates the URL */\n if (!this.br._isIndexDisplayed(pageIndex)) {\n this.suppressFragmentChange = false;\n this.br.jumpToIndex(pageIndex);\n }\n\n // Reset it to unviewable if it wasn't resolved\n if (makeUnviewableAtEnd) {\n book.getPage(pageIndex).makeViewable(false);\n }\n\n // Scroll/flash in the ui\n const $boxes = await poll(() => $(`rect.match-index-${match.matchIndex}`), { until: result => result.length > 0 });\n if ($boxes.length) {\n $boxes.css('animation', 'none');\n $boxes[0].scrollIntoView({\n // Only vertically center the highlight if we're in 1up or in full screen. In\n // 2up, if we're not fullscreen, the whole body gets scrolled around to try to\n // center the highlight 🙄 See:\n // https://stackoverflow.com/questions/11039885/scrollintoview-causing-the-whole-page-to-move/11041376\n // Note: nearest doesn't quite work great, because the ReadAloud toolbar is now\n // full-width, and covers up the last line of the highlight.\n block: this.br.constMode1up == this.br.mode || this.br.isFullscreenActive ? 'center' : 'nearest',\n inline: 'center',\n behavior: onNearbyPage ? 'smooth' : 'auto',\n });\n // wait for animation to start\n await new Promise(resolve => setTimeout(resolve, 100));\n $boxes.removeAttr(\"style\");\n }\n }\n\n /**\n * Removes all search pins\n */\n removeSearchResults(suppressFragmentChange = false) {\n this.removeSearchHilites(); //be sure to set all box.divs to null\n this.searchTerm = null;\n this.searchResults = null;\n if (!suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n }\n}\nBookReader?.registerPlugin('search', SearchPlugin);\n\n/**\n * @typedef {object} SearchOptions\n * @property {boolean} goToFirstResult\n * @property {boolean} disablePopup\n * @property {boolean} suppressFragmentChange\n * @property {(null|function)} error (deprecated)\n * @property {(null|function)} success (deprecated)\n */\n\n/**\n * @typedef {object} SearchInsideMatchBox\n * @property {number} page\n * @property {number} r\n * @property {number} l\n * @property {number} b\n * @property {number} t\n * @property {HTMLDivElement} [div]\n * @property {number} matchIndex This is a fake field! not part of the API response. The index of the match that contains this box in total search results matches.\n */\n\n/**\n * @typedef {object} SearchInsideMatch\n * @property {number} matchIndex This is a fake field! Not part of the API response. It is added by the JS.\n * @property {string} displayPageNumber (fake field) The page number as it should be displayed in the UI.\n * @property {string} html (computed field) The html-escaped raw html to display in the UI.\n * @property {string} text\n * @property {string} lang (fake field) The ISO 639-1 language code of the book\n * @property {Array<{ page: number, boxes: SearchInsideMatchBox[] }>} par\n */\n\n/**\n * @typedef {object} SearchInsideResults\n * @property {string} q\n * @property {string} error\n * @property {SearchInsideMatch[]} matches\n * @property {boolean} indexed\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","BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","codes","by639_1","by639_2T","by639_2B","forEach","row","code","nativeName","iso639_1","iso639_2T","iso639_2B","push","src_default","_createForOfIteratorHelper","r","e","t","Symbol","iterator","Array","isArray","a","_arrayLikeToArray","toString","call","slice","constructor","from","test","_unsupportedIterableToArray","length","_n","F","s","n","done","f","TypeError","o","u","next","return","approximateWordCount","text","m","match","isAndroid","userAgent","arguments","undefined","navigator","specialLangs","toISO6391","language","toLocaleLowerCase","codeObj","findLanguage","toNativeName","split","fields","toLowerCase","_step","_iterator","langs","_step2","lang","_iterator2","_lang$codeType","includes","err","hasLocalStorage","window","localStorage","DEBUG_READ_ALOUD","location","indexOf","SearchView","_ref","_ref$searchCancelledC","searchCancelledCallback","matches","cacheDOMElements","cancelSearch","bindEvents","dom","toolbarSearch","buildToolbarSearch","query","val","remove","dispatchEventWhenComplete","plugins","search","removeSearchResults","removeResultPins","emptyMatches","setQuery","teardownSearchNavigation","trigger","selector","before","concat","resultsPosition","searchNavigation","positionMessage","currentMatchIndex","namespace","on","clearSearchFieldAndResults","bind","showPrevResult","showNextResult","toggleSidebar","mode","constModeThumb","switchMode","constMode1up","getClosestMatchIndex","start","end","comparator","eq","click","updateResultsPosition","updateSearchNavigationButtons","comparisonFn","matchPages","map","par","page","currentPage","currentIndex","closestTo","pool","closestPage","find","attr","off","resize","matchingSearchResult","constMode2up","find2upMatchingSearchResult","find1upMatchingSearchResult","_this","_this2","_isIndexDisplayed","setCurrentMatchIndex","bool","pinsVisibleState","refs","$BRfooter","css","visibility","document","createElement","classList","add","innerHTML","imagesBaseURL","_this3","pageIndex","book","leafNumToIndex","percentThrough","util","cssPercentage","getNumLeafs","html","Math","max","substring","replace","addClass","left","append","displayPageNumber","appendTo","event","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","x","style","setProperty","removeClass","jumpToMatch","matchIndex","_this4","showProgressPopup","progressPopupClosed","removeProgressPopup","toggleSearchPending","errorDetails","renderModalMessage","delayModalRemovalFor","messageHTML","modal","el","timeoutMS","setTimeout","preventDefault","_ref2","_this5","results","renderSearchNavigation","bindSearchNavigationEvents","renderPins","goToFirstResult","one","removeSearchHilites","searchTerm","_event$detail","isIndexed","detail","props","indexed","renderErrorModal","renderBookNotIndexedModal","renderResultsEmptyModal","addEventListener","handleSearchCallbackError","handleSearchCallback","handleSearchStarted","handleSearchCallbackBookNotIndexed","handleSearchCallbackEmpty","updateSearchNavigation","submitHandler","renderMatch","preTag","postTag","preTagRe","escapeRegExp","escapeHTML","postTagRe","regex","RegExp","toStringTag","i","c","prototype","Generator","create","_regeneratorDefine2","p","y","G","v","d","l","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","apply","_next","_throw","_defineProperties","_toPropertyKey","_isNativeReflectConstruct","Boolean","valueOf","Reflect","construct","_superPropGet","_get","_getPrototypeOf","get","hasOwnProperty","_superPropBase","getOwnPropertyDescriptor","_setPrototypeOf","_typeof","toPrimitive","String","_toPrimitive","BookReader","SearchPlugin","_BookReaderPlugin","_len","args","_key","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_callSuper","enabled","searchInsideUrl","join","initialSearchTerm","_inherits","searchResults","searchXHR","_searchBoxesByIndex","searchView","_cancelSearch","term","instance","init","suppressFragmentChange","after","index","boxes","renderBoxesInPageContainerLayer","$container","b","_search","_callee","overrides","defaultOptions","url","callSearchResultsCallback","_t","_args","_context","disablePopup","error","success","jQuery","extend","searchCancelled","eventNames","fragmentChange","applyVariables","vars","searchInsideResults","responseHasError","hasCustomError","hasCustomSuccess","console","BRSearchCallbackError","BRSearchCallback","ajax","cache","xhrFields","withCredentials","protected","beforeSend","xhr","_this$searchXHR","abort","bookLangCode","bookLanguage","displayPageNumberFn","entries","_step$value","_slicedToArray","_step3","_iterator3","marshallSearchResults","pageNum","getPageNum","updateSearchHilites","_BRSearchCallbackError","payload","_this$searchResults","boxesByIndex","box","_i","_Object$entries","_Object$entries$_i","pageIndexString","parseFloat","getPage","getActivePageContainerElementsForIndex","container","getActivePageContainerElements","_jumpToMatch","_callee2","_this$searchResults2","onNearbyPage","makeUnviewableAtEnd","resp","_iterator4","_step4","leafNum","$boxes","_context2","abs","isViewable","fetch","URLSearchParams","id","bookId","subprefix","subPrefix","json","makeViewable","_modes","mode1Up","mode1UpLit","updatePages","activeMode","updateComplete","jumpToIndex","poll","until","result","scrollIntoView","block","isFullscreenActive","inline","behavior","removeAttr","_x","registerPlugin","template","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","varName","filterNames","reduce","acc","cur","urlencode","encodeURIComponent"],"sourceRoot":""}
|