@internetarchive/bookreader 5.0.0-66 → 5.0.0-67
Sign up to get free protection for your applications and to get access to all the features.
- package/BookReader/BookReader.css +16 -28
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +102 -114
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +24 -1
- package/BookReader/plugins/plugin.chapters.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.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReaderDemo/demo-internetarchive.html +41 -3
- package/BookReaderDemo/toggle_controls.html +1 -1
- package/CHANGELOG.md +5 -0
- package/index.html +1 -1
- package/package.json +4 -3
- package/src/BookNavigator/book-navigator.js +4 -3
- package/src/BookReader/BookModel.js +12 -0
- package/src/BookReader/Navbar/Navbar.js +2 -2
- package/src/css/_BRnav.scss +5 -2
- package/src/css/_BRsearch.scss +6 -2
- package/src/css/_MobileNav.scss +0 -26
- package/src/css/_controls.scss +3 -2
- package/src/plugins/plugin.chapters.js +201 -169
- package/src/plugins/tts/plugin.tts.js +1 -1
- package/tests/jest/plugins/plugin.chapters.test.js +93 -76
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugins/plugin.search.js","mappings":";gmCAAMA,EAAU,WASd,SAAAA,EAAAC,GAAwD,IAA1CC,EAAED,EAAFC,GAAEC,EAAAF,EAAEG,wBAAAA,OAAuB,IAAAD,EAAG,WAAO,EAACA,+FAAAE,CAAA,KAAAL,GAClDM,KAAKJ,GAAKA,EACVI,KAAKC,QAAU,GACfD,KAAKE,mBACLF,KAAKG,aACLH,KAAKI,aAAeN,CACtB,SA6YC,SA7YAJ,IAAA,EAAAW,IAAA,mBAAAC,MAED,WACEN,KAAKO,IAAM,CAAC,EAEZP,KAAKO,IAAIC,cAAgBR,KAAKS,oBAChC,GAEA,CAAAJ,IAAA,WAAAC,MAGA,SAASI,GACPV,KAAKJ,GAAGe,EAAE,kBAAkBC,IAAIF,EAClC,GAAC,CAAAL,IAAA,eAAAC,MAED,WACEN,KAAKC,QAAU,EACjB,GAAC,CAAAI,IAAA,mBAAAC,MAED,WACEN,KAAKJ,GAAGe,EAAE,uBAAuBE,QACnC,GAAC,CAAAR,IAAA,6BAAAC,MAED,WAA6D,IAAlCQ,IAAyBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,KAAAA,UAAA,GAClDf,KAAKJ,GAAGsB,sBACRlB,KAAKmB,mBACLnB,KAAKoB,eACLpB,KAAKqB,SAAS,IACdrB,KAAKsB,2BACDR,GACFd,KAAKJ,GAAG2B,QAAQ,uBAEpB,GAAC,CAAAlB,IAAA,gBAAAC,MAED,WACEN,KAAKJ,GAAG2B,QAAQ,mBAClB,GAAC,CAAAlB,IAAA,yBAAAC,MAED,WACE,IAAMkB,EAAW,sBACjBb,EAAE,UAAUc,OAAO,uBAADC,OACFF,EAAQ,yVAAAE,OAQa1B,KAAK2B,kBAAiB,+QAQ3D3B,KAAKO,IAAIqB,iBAAmBjB,EAAE,IAADe,OAAKF,GACpC,GAAC,CAAAnB,IAAA,kBAAAC,MAED,WACE,IAAIuB,EAAkB,GAAHH,OAAM1B,KAAKC,QAAQe,OAAM,WAAAU,OAAkC,IAAxB1B,KAAKC,QAAQe,OAAe,GAAK,KAIvF,OAHKhB,KAAK8B,oBACRD,EAAkB,GAAHH,OAAM1B,KAAK8B,kBAAoB,EAAC,OAAAJ,OAAM1B,KAAKC,QAAQe,SAE7Da,CACT,GAAC,CAAAxB,IAAA,6BAAAC,MAED,WACE,GAAKN,KAAKO,IAAIqB,iBAAd,CACA,IAAMG,EAAY,mBAElB/B,KAAKO,IAAIqB,iBACNI,GAAG,SAADN,OAAUK,GAAa,SAAU/B,KAAKiC,2BAA2BC,KAAKlC,OACxEgC,GAAG,SAADN,OAAUK,GAAa,QAAS/B,KAAKmC,eAAeD,KAAKlC,OAC3DgC,GAAG,SAADN,OAAUK,GAAa,QAAS/B,KAAKoC,eAAeF,KAAKlC,OAC3DgC,GAAG,SAADN,OAAUK,GAAa,kBAAmB/B,KAAKqC,cAAcH,KAAKlC,OACpEgC,GAAG,SAADN,OAAUK,IAAa,EARc,CAS5C,GAAC,CAAA1B,IAAA,iBAAAC,MAED,WACiC,IAA3BN,KAAK8B,oBACL9B,KAAKJ,GAAG0C,OAAStC,KAAKJ,GAAG2C,gBAAkBvC,KAAKJ,GAAG4C,WAAWxC,KAAKJ,GAAG6C,eACpEzC,KAAK8B,oBACT9B,KAAK8B,kBAAoB9B,KAAK0C,sBAAqB,SAACC,EAAOC,EAAKC,GAAU,OAAKD,EAAI,GAAKC,CAAU,IAAI,GAExG7C,KAAKJ,GAAGe,EAAE,wBAAwBmC,KAAK9C,KAAK8B,mBAAmBiB,QAC/D/C,KAAKgD,wBACLhD,KAAKiD,gCACP,GAAC,CAAA5C,IAAA,iBAAAC,MAED,WACMN,KAAK8B,kBAAoB,IAAM9B,KAAKC,QAAQe,SAC5ChB,KAAKJ,GAAG0C,OAAStC,KAAKJ,GAAG2C,gBAAkBvC,KAAKJ,GAAG4C,WAAWxC,KAAKJ,GAAG6C,eACpEzC,KAAK8B,oBACT9B,KAAK8B,kBAAoB9B,KAAK0C,sBAAqB,SAACC,EAAOC,EAAKC,GAAU,OAAKF,EAAMA,EAAM3B,OAAS,GAAK6B,CAAU,IAAI,GAEzH7C,KAAKJ,GAAGe,EAAE,wBAAwBmC,KAAK9C,KAAK8B,mBAAmBiB,QAC/D/C,KAAKgD,wBACLhD,KAAKiD,gCACP,GAEA,CAAA5C,IAAA,uBAAAC,MAcA,SAAqB4C,GACnB,IASMC,EAPY,SAAZC,EAAaC,EAAMR,GACvB,GAAoB,IAAhBQ,EAAKrC,OAAgB,OAAOqC,EAAK,GACrC,IAAMV,EAAQU,EAAKC,MAAM,EAAGD,EAAKrC,OAAS,GACpC4B,EAAMS,EAAKC,MAAMD,EAAKrC,OAAS,GACrC,OAAOoC,EAAWF,EAAaP,EAAOC,EAAKC,GAAcF,EAAQC,EAAMC,EACzE,CAEoBO,CATDpD,KAAKC,QAAQsD,KAAI,SAACC,GAAC,OAAKA,EAAEC,IAAI,GAAGC,IAAI,IACpC1D,KAAKJ,GAAG+D,eAAiB,GAS7C,OAAO3D,KAAKC,QAAQ2D,QAAQ5D,KAAKC,QAAQ4D,MAAK,SAACL,GAAC,OAAKA,EAAEC,IAAI,GAAGC,OAASP,CAAW,IACpF,GAAC,CAAA9C,IAAA,wBAAAC,MAED,WACON,KAAKO,IAAIqB,kBACd5B,KAAKO,IAAIqB,iBAAiBiC,KAAK,0BAA0BC,KAAK9D,KAAK2B,kBACrE,GAAC,CAAAtB,IAAA,gCAAAC,MAED,WACON,KAAKO,IAAIqB,mBACd5B,KAAKO,IAAIqB,iBAAiBiC,KAAK,SAASE,KAAK,YAAa/D,KAAK8B,mBAC/D9B,KAAKO,IAAIqB,iBAAiBiC,KAAK,SAASE,KAAK,WAAY/D,KAAK8B,kBAAoB,IAAM9B,KAAKC,QAAQe,QACvG,GAAC,CAAAX,IAAA,2BAAAC,MAED,WACON,KAAKO,IAAIqB,mBACZ5B,KAAKO,IAAIqB,iBAAmBjB,EAAE,yBAE3BX,KAAKO,IAAIqB,iBAAiBZ,SAE/BhB,KAAKO,IAAIqB,iBAAiBoC,IAAI,qBAAqBnD,SACnDb,KAAKO,IAAIqB,iBAAmB,KAC5B5B,KAAKJ,GAAGqE,SACV,GAAC,CAAA5D,IAAA,uBAAAC,MAED,WACE,IAAI4D,EACAlE,KAAKJ,GAAG0C,OAAStC,KAAKJ,GAAG2C,gBAK3B2B,EADElE,KAAKJ,GAAG0C,OAAStC,KAAKJ,GAAGuE,aACJnE,KAAKoE,8BAGLpE,KAAKqE,8BAE9BrE,KAAK8B,kBAAoB9B,KAAKC,QAAQ2D,QAAQM,IAT5ClE,KAAK8B,mBAAqB,CAU9B,GAAC,CAAAzB,IAAA,8BAAAC,MAED,WAA8B,IAAAgE,EAAA,KAC5B,OAAOtE,KAAKC,QAAQ4D,MAAK,SAACL,GAAC,OAAKc,EAAK1E,GAAG+D,iBAAmBH,EAAEC,IAAI,GAAGC,KAAO,CAAC,GAC9E,GAAC,CAAArD,IAAA,8BAAAC,MAED,WAA8B,IAAAiE,EAAA,KAC5B,OAAOvE,KAAKC,QAAQ4D,MAAK,SAACL,GAAC,OAAKe,EAAK3E,GAAG4E,kBAAkBhB,EAAEC,IAAI,GAAGC,KAAO,EAAE,GAC9E,GAAC,CAAArD,IAAA,yBAAAC,MAED,WACON,KAAKC,QAAQe,SAElBhB,KAAKyE,uBACLzE,KAAKgD,wBACLhD,KAAKiD,gCACP,GAEA,CAAA5C,IAAA,gBAAAC,MAGA,SAAcoE,GACZ,IAAMC,EAAmBD,EAAO,UAAY,SAC5C1E,KAAKJ,GAAGgF,KAAKC,UAAUhB,KAAK,aAAaiB,IAAI,CAAEC,WAAYJ,GAC7D,GAAC,CAAAtE,IAAA,qBAAAC,MAED,WACE,IAAME,EAAgBwE,SAASC,cAAc,QAU7C,OATAzE,EAAc0E,UAAUC,IAAI,mBAAoB,0BAChD3E,EAAc4E,UAAY,mOAAH1D,OAIL1B,KAAKJ,GAAGyF,cAAa,sEAIhC7E,CACT,GAEA,CAAAH,IAAA,aAAAC,MAGA,SAAWL,GAAS,IAAAqF,EAAA,KAClBrF,EAAQsF,SAAQ,SAACC,GACf,IAAMC,EAAYH,EAAK1F,GAAG8F,KAAKC,eAAeH,EAAM/B,IAAI,GAAGC,MAErDkC,EAAiBN,EAAK1F,GAAGiG,YAAYC,KAAKC,cAAcN,EAAWH,EAAK1F,GAAG8F,KAAKM,cAAgB,GAElGC,EAAOT,EAAMS,KACjB,GAAIA,EAAKjF,OAAS,IAAK,CACrB,IAAM2B,EAAQuD,KAAKC,IAAI,EAAGF,EAAKrC,QAAQ,UAAY,KACtC,GAATjB,IACFsD,EAAO,IAAMT,EAAMS,KAChBG,UAAUzD,GAEV0D,QAAQ,OAAQ,IAEvB,CAEA1F,EAAE,SACC2F,SAAS,YACTxB,IAAI,CACHyB,KAAMX,IAEP7B,KAAK,QAnBe,iBAoBpByC,OAAO,wDAAD9E,OAEKuE,EAAI,sCAAAvE,OACG8D,EAAMiB,kBAAiB,0CAGzCC,SAASpB,EAAK1F,GAAGe,EAAE,eACnBqB,GAAG,cAAc,SAAC2E,GAGjB,IAAMC,EAASD,EAAME,cACfC,EAAUF,EAAOG,cAAc,YAC/BC,EAAgBF,EAAQG,wBACxBC,EAAeN,EAAOK,wBACtBE,EAAkE,EAAlDC,SAASC,iBAAiBP,GAASQ,aACrDN,EAAcO,EAAIJ,EAAgB,GACpCL,EAAQU,MAAMC,YAAY,YAAa,eAAF/F,OAAiBwF,EAAaX,KAAOY,EAAa,QAEzFxG,EAAE,wBAAwB+G,YAAY,SACtC/G,EAAEgG,EAAMgB,QAAQrB,SAAS,QAC3B,IACCtE,GAAG,cAAc,SAAC2E,GAAK,OAAKhG,EAAEgG,EAAMgB,QAAQD,YAAY,QAAQ,IAChE1F,GAAG,SAAS,WAAQsD,EAAK1F,GAAGgI,wBAAwBpC,EAAMqC,WAAa,GAC5E,GACF,GAEA,CAAAxH,IAAA,sBAAAC,MAGA,SAAoBoE,GAAM,IAAAoD,EAAA,KACpBpD,EACF1E,KAAKJ,GAAGmI,kBAAkB,uCAAuC,kBAAMD,EAAKE,qBAAqB,IAGjGhI,KAAKJ,GAAGqI,qBAEZ,GAEA,CAAA5H,IAAA,sBAAAC,MAGA,WACEN,KAAKkI,sBACLlI,KAAKI,cACP,GAAC,CAAAC,IAAA,mBAAAC,MAED,WAA2C,IACnC6H,EAAe,GAAHzG,OADaX,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACoD,GAAvC,qCAAyC,qBACrFf,KAAKoI,mBAAmB,4EAAD1G,OAGnByG,EAAY,WAEhBnI,KAAKqI,qBAAqB,IAC5B,GAAC,CAAAhI,IAAA,4BAAAC,MAED,WACEN,KAAKoI,mBAAmB,qOAQxBpI,KAAKqI,qBAAqB,IAC5B,GAAC,CAAAhI,IAAA,0BAAAC,MAED,WACEN,KAAKoI,mBAAmB,0BACxBpI,KAAKqI,qBAAqB,IAC5B,GAEA,CAAAhI,IAAA,qBAAAC,MAGA,SAAmBgI,GACjB,IAAMC,EAAQvD,SAASC,cAAc,OACrCsD,EAAMrD,UAAUC,IAAI,kBAAmB,gBACvCoD,EAAMnD,UAAYkD,EAClBtD,SAAS+B,cAAc/G,KAAKJ,GAAG4I,IAAIhC,OAAO+B,EAC5C,GAEA,CAAAlI,IAAA,uBAAAC,MAGA,SAAqBmI,GACnBC,WAAW1I,KAAKJ,GAAGqI,oBAAoB/F,KAAKlC,KAAKJ,IAAK6I,EACxD,GAEA,CAAApI,IAAA,gBAAAC,MAGA,SAAcqI,GACZA,EAAEC,iBACF,IAAMlI,EAAQiI,EAAEhB,OAAOZ,cAAc,kBAAkBzG,MACvD,QAAKI,EAAMM,SACXhB,KAAKJ,GAAGiJ,OAAOnI,GACfV,KAAKoB,eACLpB,KAAKkI,qBAAoB,IAClB,EACT,GAEA,CAAA7H,IAAA,uBAAAC,MAMA,SAAqBqI,EAACG,GAAwB,IAAAC,EAAA,KAApBC,EAAOF,EAAPE,QAASC,EAAOH,EAAPG,QACjCjJ,KAAKC,QAAU+I,EAAQ/I,QACvBD,KAAKyE,uBACLzE,KAAKsB,2BACLtB,KAAKkJ,yBACLlJ,KAAKmJ,6BACLnJ,KAAKoJ,WAAWJ,EAAQ/I,SACxBD,KAAKkI,qBAAoB,GACrBe,EAAQI,gBACV1I,EAAEqE,UAAUsE,IAAI,0BAA0B,WACxCP,EAAKnJ,GAAGqE,QACV,IAEAjE,KAAKJ,GAAGqE,QAEZ,GAAC,CAAA5D,IAAA,sBAAAC,MAED,WACEN,KAAKoB,eACLpB,KAAKJ,GAAG2J,sBACRvJ,KAAKmB,mBACLnB,KAAKkI,qBAAoB,GACzBlI,KAAKsB,2BACLtB,KAAKqB,SAASrB,KAAKJ,GAAG4J,WACxB,GAEA,CAAAnJ,IAAA,4BAAAC,MAIA,WAAsC,IAAAmJ,EAAZ9C,EAAK5F,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,CAAC,EACjCf,KAAKkI,qBAAoB,GACzB,IAAMwB,EAAY/C,SAAa,QAAR8C,EAAL9C,EAAOgD,cAAM,IAAAF,GAAO,QAAPA,EAAbA,EAAeG,aAAK,IAAAH,GAAS,QAATA,EAApBA,EAAsBT,eAAO,IAAAS,OAAA,EAA7BA,EAA+BI,QACjD7J,KAAK8J,iBAAiBJ,EACxB,GAAC,CAAArJ,IAAA,qCAAAC,MAED,WACEN,KAAKkI,qBAAoB,GACzBlI,KAAK+J,2BACP,GAAC,CAAA1J,IAAA,4BAAAC,MAED,WACEN,KAAKkI,qBAAoB,GACzBlI,KAAKgK,yBACP,GAAC,CAAA3J,IAAA,aAAAC,MAED,WACE,IAAMyB,EAAY,cAElBkI,OAAOC,iBAAiB,GAADxI,OAAIK,EAAS,uBAAuB/B,KAAKmK,0BAA0BjI,KAAKlC,OAC/FW,EAAEqE,UAAUhD,GAAG,GAADN,OAAIK,EAAS,kBAAkB/B,KAAKoK,qBAAqBlI,KAAKlC,OACzEgC,GAAG,GAADN,OAAIK,EAAS,iBAAiB/B,KAAKqK,oBAAoBnI,KAAKlC,OAC9DgC,GAAG,GAADN,OAAIK,EAAS,gCAAgC/B,KAAKsK,mCAAmCpI,KAAKlC,OAC5FgC,GAAG,GAADN,OAAIK,EAAS,uBAAuB/B,KAAKuK,0BAA0BrI,KAAKlC,OAC1EgC,GAAG,GAADN,OAAIK,EAAS,eAAe/B,KAAKwK,uBAAuBtI,KAAKlC,OAElEA,KAAKO,IAAIC,cAAcuG,cAAc,QAAQmD,iBAAiB,SAAUlK,KAAKyK,cAAcvI,KAAKlC,MAClG,2EAACN,CAAA,CA5Za,GA+ZhB,8gCCvZO,SAASgL,EAAYlF,EAAOmF,EAAQC,GAIzC,IAAMC,GAAWC,EAAAA,EAAAA,eAAaC,EAAAA,EAAAA,YAAWJ,IACnCK,GAAYF,EAAAA,EAAAA,eAAaC,EAAAA,EAAAA,YAAWH,IAEpCK,EAAQ,IAAIC,OAAO,GAADxJ,OAAImJ,EAAQ,WAAAnJ,OAAUsJ,GAAa,KAC3D,OAAOD,EAAAA,EAAAA,YAAWvF,GACfa,QAAQ4E,EAAO,mBAEf5E,QAAQ,UAAW,KACxB,aC6BwC8E,mxCAhDxCC,EAAA,kBAAAC,CAAA,MAAAA,EAAA,GAAAC,EAAAC,OAAAC,UAAAC,EAAAH,EAAAI,eAAAC,EAAAJ,OAAAI,gBAAA,SAAAC,EAAAvL,EAAAwL,GAAAD,EAAAvL,GAAAwL,EAAAvL,KAAA,EAAAwL,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAC,EAAAV,EAAAvL,EAAAC,GAAA,OAAAiL,OAAAI,eAAAC,EAAAvL,EAAA,CAAAC,MAAAA,EAAAiM,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAb,EAAAvL,EAAA,KAAAiM,EAAA,aAAAI,GAAAJ,EAAA,SAAAV,EAAAvL,EAAAC,GAAA,OAAAsL,EAAAvL,GAAAC,CAAA,WAAAqM,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,IAAAC,EAAAH,GAAAA,EAAArB,qBAAAyB,EAAAJ,EAAAI,EAAAC,EAAA3B,OAAA4B,OAAAH,EAAAxB,WAAA4B,EAAA,IAAAC,EAAAN,GAAA,WAAApB,EAAAuB,EAAA,WAAA5M,MAAAgN,EAAAV,EAAAE,EAAAM,KAAAF,CAAA,UAAAK,EAAAC,EAAA5B,EAAA6B,GAAA,WAAAC,KAAA,SAAAD,IAAAD,EAAAG,KAAA/B,EAAA6B,GAAA,OAAAf,GAAA,OAAAgB,KAAA,QAAAD,IAAAf,EAAA,EAAArB,EAAAsB,KAAAA,EAAA,IAAAiB,EAAA,YAAAX,IAAA,UAAAY,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAAzB,EAAAyB,EAAA/B,GAAA,8BAAAgC,EAAAzC,OAAA0C,eAAAC,EAAAF,GAAAA,EAAAA,EAAAG,EAAA,MAAAD,GAAAA,IAAA5C,GAAAG,EAAAkC,KAAAO,EAAAlC,KAAA+B,EAAAG,GAAA,IAAAE,EAAAN,EAAAtC,UAAAyB,EAAAzB,UAAAD,OAAA4B,OAAAY,GAAA,SAAAM,EAAA7C,GAAA,0BAAAjG,SAAA,SAAA+I,GAAAhC,EAAAd,EAAA8C,GAAA,SAAAb,GAAA,YAAAc,QAAAD,EAAAb,EAAA,gBAAAe,EAAAtB,EAAAuB,GAAA,SAAAC,EAAAJ,EAAAb,EAAAkB,EAAAC,GAAA,IAAAC,EAAAtB,EAAAL,EAAAoB,GAAApB,EAAAO,GAAA,aAAAoB,EAAAnB,KAAA,KAAAoB,EAAAD,EAAApB,IAAAnN,EAAAwO,EAAAxO,MAAA,OAAAA,GAAA,UAAAyO,EAAAzO,IAAAmL,EAAAkC,KAAArN,EAAA,WAAAmO,EAAAE,QAAArO,EAAA0O,SAAAC,MAAA,SAAA3O,GAAAoO,EAAA,OAAApO,EAAAqO,EAAAC,EAAA,aAAAlC,GAAAgC,EAAA,QAAAhC,EAAAiC,EAAAC,EAAA,IAAAH,EAAAE,QAAArO,GAAA2O,MAAA,SAAAC,GAAAJ,EAAAxO,MAAA4O,EAAAP,EAAAG,EAAA,aAAAK,GAAA,OAAAT,EAAA,QAAAS,EAAAR,EAAAC,EAAA,IAAAA,EAAAC,EAAApB,IAAA,KAAA2B,EAAAzD,EAAA,gBAAArL,MAAA,SAAAgO,EAAAb,GAAA,SAAA4B,IAAA,WAAAZ,GAAA,SAAAE,EAAAC,GAAAF,EAAAJ,EAAAb,EAAAkB,EAAAC,EAAA,WAAAQ,EAAAA,EAAAA,EAAAH,KAAAI,EAAAA,GAAAA,GAAA,aAAA/B,EAAAV,EAAAE,EAAAM,GAAA,IAAAkC,EAAA,iCAAAhB,EAAAb,GAAA,iBAAA6B,EAAA,UAAAC,MAAA,iDAAAD,EAAA,cAAAhB,EAAA,MAAAb,EAAA,OAAAnN,WAAAW,EAAAuO,MAAA,OAAApC,EAAAkB,OAAAA,EAAAlB,EAAAK,IAAAA,IAAA,KAAAgC,EAAArC,EAAAqC,SAAA,GAAAA,EAAA,KAAAC,EAAAC,EAAAF,EAAArC,GAAA,GAAAsC,EAAA,IAAAA,IAAA9B,EAAA,gBAAA8B,CAAA,cAAAtC,EAAAkB,OAAAlB,EAAAwC,KAAAxC,EAAAyC,MAAAzC,EAAAK,SAAA,aAAAL,EAAAkB,OAAA,uBAAAgB,EAAA,MAAAA,EAAA,YAAAlC,EAAAK,IAAAL,EAAA0C,kBAAA1C,EAAAK,IAAA,gBAAAL,EAAAkB,QAAAlB,EAAA2C,OAAA,SAAA3C,EAAAK,KAAA6B,EAAA,gBAAAT,EAAAtB,EAAAX,EAAAE,EAAAM,GAAA,cAAAyB,EAAAnB,KAAA,IAAA4B,EAAAlC,EAAAoC,KAAA,6BAAAX,EAAApB,MAAAG,EAAA,gBAAAtN,MAAAuO,EAAApB,IAAA+B,KAAApC,EAAAoC,KAAA,WAAAX,EAAAnB,OAAA4B,EAAA,YAAAlC,EAAAkB,OAAA,QAAAlB,EAAAK,IAAAoB,EAAApB,IAAA,YAAAkC,EAAAF,EAAArC,GAAA,IAAA4C,EAAA5C,EAAAkB,OAAAA,EAAAmB,EAAAxD,SAAA+D,GAAA,QAAA/O,IAAAqN,EAAA,OAAAlB,EAAAqC,SAAA,eAAAO,GAAAP,EAAAxD,SAAAgE,SAAA7C,EAAAkB,OAAA,SAAAlB,EAAAK,SAAAxM,EAAA0O,EAAAF,EAAArC,GAAA,UAAAA,EAAAkB,SAAA,WAAA0B,IAAA5C,EAAAkB,OAAA,QAAAlB,EAAAK,IAAA,IAAAyC,UAAA,oCAAAF,EAAA,aAAApC,EAAA,IAAAiB,EAAAtB,EAAAe,EAAAmB,EAAAxD,SAAAmB,EAAAK,KAAA,aAAAoB,EAAAnB,KAAA,OAAAN,EAAAkB,OAAA,QAAAlB,EAAAK,IAAAoB,EAAApB,IAAAL,EAAAqC,SAAA,KAAA7B,EAAA,IAAAuC,EAAAtB,EAAApB,IAAA,OAAA0C,EAAAA,EAAAX,MAAApC,EAAAqC,EAAAW,YAAAD,EAAA7P,MAAA8M,EAAAiD,KAAAZ,EAAAa,QAAA,WAAAlD,EAAAkB,SAAAlB,EAAAkB,OAAA,OAAAlB,EAAAK,SAAAxM,GAAAmM,EAAAqC,SAAA,KAAA7B,GAAAuC,GAAA/C,EAAAkB,OAAA,QAAAlB,EAAAK,IAAA,IAAAyC,UAAA,oCAAA9C,EAAAqC,SAAA,KAAA7B,EAAA,UAAA2C,EAAAC,GAAA,IAAAC,EAAA,CAAAC,OAAAF,EAAA,SAAAA,IAAAC,EAAAE,SAAAH,EAAA,SAAAA,IAAAC,EAAAG,WAAAJ,EAAA,GAAAC,EAAAI,SAAAL,EAAA,SAAAM,WAAAC,KAAAN,EAAA,UAAAO,EAAAP,GAAA,IAAA5B,EAAA4B,EAAAQ,YAAA,GAAApC,EAAAnB,KAAA,gBAAAmB,EAAApB,IAAAgD,EAAAQ,WAAApC,CAAA,UAAAxB,EAAAN,GAAA,KAAA+D,WAAA,EAAAJ,OAAA,SAAA3D,EAAAxH,QAAAgL,EAAA,WAAAW,OAAA,YAAA/C,EAAAgD,GAAA,GAAAA,EAAA,KAAAC,EAAAD,EAAAnF,GAAA,GAAAoF,EAAA,OAAAA,EAAAzD,KAAAwD,GAAA,sBAAAA,EAAAd,KAAA,OAAAc,EAAA,IAAAE,MAAAF,EAAAnQ,QAAA,KAAAsQ,GAAA,EAAAjB,EAAA,SAAAA,IAAA,OAAAiB,EAAAH,EAAAnQ,QAAA,GAAAyK,EAAAkC,KAAAwD,EAAAG,GAAA,OAAAjB,EAAA/P,MAAA6Q,EAAAG,GAAAjB,EAAAb,MAAA,EAAAa,EAAA,OAAAA,EAAA/P,WAAAW,EAAAoP,EAAAb,MAAA,EAAAa,CAAA,SAAAA,EAAAA,KAAAA,CAAA,SAAAA,KAAAkB,EAAA,UAAAA,IAAA,OAAAjR,WAAAW,EAAAuO,MAAA,UAAA3B,EAAArC,UAAAsC,EAAAnC,EAAAyC,EAAA,eAAA9N,MAAAwN,EAAAtB,cAAA,IAAAb,EAAAmC,EAAA,eAAAxN,MAAAuN,EAAArB,cAAA,IAAAqB,EAAA2D,YAAAlF,EAAAwB,EAAA1B,EAAA,qBAAAf,EAAAoG,oBAAA,SAAAC,GAAA,IAAAC,EAAA,mBAAAD,GAAAA,EAAA7L,YAAA,QAAA8L,IAAAA,IAAA9D,GAAA,uBAAA8D,EAAAH,aAAAG,EAAAC,MAAA,EAAAvG,EAAAwG,KAAA,SAAAH,GAAA,OAAAnG,OAAAuG,eAAAvG,OAAAuG,eAAAJ,EAAA5D,IAAA4D,EAAAK,UAAAjE,EAAAxB,EAAAoF,EAAAtF,EAAA,sBAAAsF,EAAAlG,UAAAD,OAAA4B,OAAAiB,GAAAsD,CAAA,EAAArG,EAAA2G,MAAA,SAAAvE,GAAA,OAAAuB,QAAAvB,EAAA,EAAAY,EAAAG,EAAAhD,WAAAc,EAAAkC,EAAAhD,UAAAU,GAAA,0BAAAb,EAAAmD,cAAAA,EAAAnD,EAAA4G,MAAA,SAAArF,EAAAC,EAAAC,EAAAC,EAAA0B,QAAA,IAAAA,IAAAA,EAAAyD,SAAA,IAAAC,EAAA,IAAA3D,EAAA7B,EAAAC,EAAAC,EAAAC,EAAAC,GAAA0B,GAAA,OAAApD,EAAAoG,oBAAA5E,GAAAsF,EAAAA,EAAA9B,OAAApB,MAAA,SAAAH,GAAA,OAAAA,EAAAU,KAAAV,EAAAxO,MAAA6R,EAAA9B,MAAA,KAAAhC,EAAAD,GAAA9B,EAAA8B,EAAAhC,EAAA,aAAAE,EAAA8B,EAAApC,GAAA,0BAAAM,EAAA8B,EAAA,qDAAA/C,EAAA+G,KAAA,SAAAxR,GAAA,IAAAyR,EAAA9G,OAAA3K,GAAAwR,EAAA,WAAA/R,KAAAgS,EAAAD,EAAArB,KAAA1Q,GAAA,OAAA+R,EAAAE,UAAA,SAAAjC,IAAA,KAAA+B,EAAApR,QAAA,KAAAX,EAAA+R,EAAAG,MAAA,GAAAlS,KAAAgS,EAAA,OAAAhC,EAAA/P,MAAAD,EAAAgQ,EAAAb,MAAA,EAAAa,CAAA,QAAAA,EAAAb,MAAA,EAAAa,CAAA,GAAAhF,EAAA8C,OAAAA,EAAAd,EAAA7B,UAAA,CAAA3F,YAAAwH,EAAA6D,MAAA,SAAAsB,GAAA,QAAAC,KAAA,OAAApC,KAAA,OAAAT,KAAA,KAAAC,WAAA5O,EAAA,KAAAuO,MAAA,OAAAC,SAAA,UAAAnB,OAAA,YAAAb,SAAAxM,EAAA,KAAA6P,WAAAvL,QAAAyL,IAAAwB,EAAA,QAAAZ,KAAA,WAAAA,EAAAc,OAAA,IAAAjH,EAAAkC,KAAA,KAAAiE,KAAAP,OAAAO,EAAAtO,MAAA,WAAAsO,QAAA3Q,EAAA,EAAA0R,KAAA,gBAAAnD,MAAA,MAAAoD,EAAA,KAAA9B,WAAA,GAAAG,WAAA,aAAA2B,EAAAlF,KAAA,MAAAkF,EAAAnF,IAAA,YAAAoF,IAAA,EAAA/C,kBAAA,SAAAgD,GAAA,QAAAtD,KAAA,MAAAsD,EAAA,IAAA1F,EAAA,cAAA2F,EAAAC,EAAAC,GAAA,OAAApE,EAAAnB,KAAA,QAAAmB,EAAApB,IAAAqF,EAAA1F,EAAAiD,KAAA2C,EAAAC,IAAA7F,EAAAkB,OAAA,OAAAlB,EAAAK,SAAAxM,KAAAgS,CAAA,SAAA3B,EAAA,KAAAR,WAAA9P,OAAA,EAAAsQ,GAAA,IAAAA,EAAA,KAAAb,EAAA,KAAAK,WAAAQ,GAAAzC,EAAA4B,EAAAQ,WAAA,YAAAR,EAAAC,OAAA,OAAAqC,EAAA,UAAAtC,EAAAC,QAAA,KAAA+B,KAAA,KAAAS,EAAAzH,EAAAkC,KAAA8C,EAAA,YAAA0C,EAAA1H,EAAAkC,KAAA8C,EAAA,iBAAAyC,GAAAC,EAAA,SAAAV,KAAAhC,EAAAE,SAAA,OAAAoC,EAAAtC,EAAAE,UAAA,WAAA8B,KAAAhC,EAAAG,WAAA,OAAAmC,EAAAtC,EAAAG,WAAA,SAAAsC,GAAA,QAAAT,KAAAhC,EAAAE,SAAA,OAAAoC,EAAAtC,EAAAE,UAAA,YAAAwC,EAAA,UAAA5D,MAAA,kDAAAkD,KAAAhC,EAAAG,WAAA,OAAAmC,EAAAtC,EAAAG,WAAA,KAAAb,OAAA,SAAArC,EAAAD,GAAA,QAAA6D,EAAA,KAAAR,WAAA9P,OAAA,EAAAsQ,GAAA,IAAAA,EAAA,KAAAb,EAAA,KAAAK,WAAAQ,GAAA,GAAAb,EAAAC,QAAA,KAAA+B,MAAAhH,EAAAkC,KAAA8C,EAAA,oBAAAgC,KAAAhC,EAAAG,WAAA,KAAAwC,EAAA3C,EAAA,OAAA2C,IAAA,UAAA1F,GAAA,aAAAA,IAAA0F,EAAA1C,QAAAjD,GAAAA,GAAA2F,EAAAxC,aAAAwC,EAAA,UAAAvE,EAAAuE,EAAAA,EAAAnC,WAAA,UAAApC,EAAAnB,KAAAA,EAAAmB,EAAApB,IAAAA,EAAA2F,GAAA,KAAA9E,OAAA,YAAA+B,KAAA+C,EAAAxC,WAAAhD,GAAA,KAAAyF,SAAAxE,EAAA,EAAAwE,SAAA,SAAAxE,EAAAgC,GAAA,aAAAhC,EAAAnB,KAAA,MAAAmB,EAAApB,IAAA,gBAAAoB,EAAAnB,MAAA,aAAAmB,EAAAnB,KAAA,KAAA2C,KAAAxB,EAAApB,IAAA,WAAAoB,EAAAnB,MAAA,KAAAmF,KAAA,KAAApF,IAAAoB,EAAApB,IAAA,KAAAa,OAAA,cAAA+B,KAAA,kBAAAxB,EAAAnB,MAAAmD,IAAA,KAAAR,KAAAQ,GAAAjD,CAAA,EAAA0F,OAAA,SAAA1C,GAAA,QAAAU,EAAA,KAAAR,WAAA9P,OAAA,EAAAsQ,GAAA,IAAAA,EAAA,KAAAb,EAAA,KAAAK,WAAAQ,GAAA,GAAAb,EAAAG,aAAAA,EAAA,YAAAyC,SAAA5C,EAAAQ,WAAAR,EAAAI,UAAAG,EAAAP,GAAA7C,CAAA,GAAA2F,MAAA,SAAA7C,GAAA,QAAAY,EAAA,KAAAR,WAAA9P,OAAA,EAAAsQ,GAAA,IAAAA,EAAA,KAAAb,EAAA,KAAAK,WAAAQ,GAAA,GAAAb,EAAAC,SAAAA,EAAA,KAAA7B,EAAA4B,EAAAQ,WAAA,aAAApC,EAAAnB,KAAA,KAAA8F,EAAA3E,EAAApB,IAAAuD,EAAAP,EAAA,QAAA+C,CAAA,YAAAjE,MAAA,0BAAAkE,cAAA,SAAAtC,EAAAf,EAAAE,GAAA,YAAAb,SAAA,CAAAxD,SAAAkC,EAAAgD,GAAAf,WAAAA,EAAAE,QAAAA,GAAA,cAAAhC,SAAA,KAAAb,SAAAxM,GAAA2M,CAAA,GAAAvC,CAAA,UAAAqI,EAAAC,EAAAhF,EAAAC,EAAAgF,EAAAC,EAAAxT,EAAAoN,GAAA,QAAA0C,EAAAwD,EAAAtT,GAAAoN,GAAAnN,EAAA6P,EAAA7P,KAAA,OAAA6O,GAAA,YAAAP,EAAAO,EAAA,CAAAgB,EAAAX,KAAAb,EAAArO,GAAA4R,QAAAvD,QAAArO,GAAA2O,KAAA2E,EAAAC,EAAA,UAAAC,EAAAtG,GAAA,sBAAAV,EAAA,KAAAiH,EAAAhT,UAAA,WAAAmR,SAAA,SAAAvD,EAAAC,GAAA,IAAA+E,EAAAnG,EAAAwG,MAAAlH,EAAAiH,GAAA,SAAAH,EAAAtT,GAAAoT,EAAAC,EAAAhF,EAAAC,EAAAgF,EAAAC,EAAA,OAAAvT,EAAA,UAAAuT,EAAAnH,GAAAgH,EAAAC,EAAAhF,EAAAC,EAAAgF,EAAAC,EAAA,QAAAnH,EAAA,CAAAkH,OAAA3S,EAAA,KAkCAgT,EAAOC,OAAOC,WAAWC,eAAgB,CACvCC,OAAQ,0BACRC,OAAQ,GACRC,UAAW,GACXC,SAAU,GACVC,cAAc,EACdC,qBAAsB,QACtBC,gBAAiB,uBACjBC,mBAAoB,MACpBC,oBAAqB,MACrBC,kBAAmB,OAIrBX,WAAW3I,UAAUuJ,OAAmB5J,EAwBrCgJ,WAAW3I,UAAUuJ,MAvBf,SAAU9L,GACfkC,EAAOwC,KAAK3N,KAAMiJ,GAElBjJ,KAAKwJ,WAAa,GAClBxJ,KAAKgV,cAAgB,KACrBhV,KAAK2U,gBAAkB1L,EAAQ0L,gBAC/B3U,KAAKyU,aAAexL,EAAQwL,aAG5BzU,KAAKsU,OAASrL,EAAQqL,OACtBtU,KAAKqU,OAASpL,EAAQoL,OACtBrU,KAAKuU,UAAYtL,EAAQsL,UACzBvU,KAAKwU,SAAWvL,EAAQuL,SAExBxU,KAAKiV,UAAY,KACjBjV,KAAKkV,cAAchT,KAAKlC,MACxBA,KAAKmV,oBAAoBjT,KAAKlC,MAG9BA,KAAKoV,oBAAsB,CAAC,EAE5BpV,KAAKqV,gBAAapU,CACpB,GAIFkT,WAAW3I,UAAU8J,KAAQ,SAAUnK,GACrC,OAAO,WAAY,IAAA7G,EAAA,KACjB6G,EAAOwC,KAAK3N,MAEZA,KAAKqV,WAAa,IAAI3V,EAAW,CAC/BE,GAAII,KACJF,wBAAyB,WACvBwE,EAAK4Q,gBACL5Q,EAAK/C,QAAQ,iBAAkB,CAAEgU,KAAMjR,EAAKkF,WAAYgM,SAAUlR,GACpE,IAEEtE,KAAKiJ,QAAQwL,cAAgBzU,KAAKiJ,QAAQ6L,mBAS5C9U,KAAK6I,OACH7I,KAAKiJ,QAAQ6L,kBACb,CAAEzL,gBAAiBrJ,KAAKiJ,QAAQI,gBAAiBoM,wBAAwB,GAG/E,CACF,CA1B6B,CA0B1BtB,WAAW3I,UAAU8J,MAGxBnB,WAAW3I,UAAUkK,oBAAuB,SAAUvK,GACpD,OAAO,WACL,IAAMwK,EAAMxK,EAAOwC,KAAK3N,MACxB,GAAKA,KAAKyU,aAIV,OAHIzU,KAAKqV,WAAW9U,IAAIC,eACtBmV,EAAI9R,KAAK,yBAAyB+R,MAAM5V,KAAKqV,WAAW9U,IAAIC,eAEvDmV,CACT,CACF,CAT4C,CASzCxB,WAAW3I,UAAUkK,qBAGxBvB,WAAW3I,UAAUqK,qBAAwB,SAAU1K,GACrD,OAAO,SAAU2K,GACf,IAAMC,EAAgB5K,EAAOwC,KAAK3N,KAAM8V,GACxC,GAAI9V,KAAKyU,cAAgBsB,EAAcrS,MAAQoS,KAAS9V,KAAKoV,oBAAqB,CAChF,IAAM3P,EAAYsQ,EAAcrS,KAAKoS,MAC/BE,EAAQhW,KAAKoV,oBAAoB3P,IACvCwQ,EAAAA,EAAAA,IACE,oBACAD,EACAD,EAAcrS,KACdqS,EAAcG,WAAW,GACzBF,EAAMzS,KAAI,SAAA4S,GAAC,qBAAAzU,OAAmByU,EAAEtO,WAAU,IAE9C,CACA,OAAOkO,CACT,CACF,CAhB6C,CAgB1C5B,WAAW3I,UAAUqK,sBAgBxB1B,WAAW3I,UAAU3C,OAAMiL,EAAA1I,IAAAyG,MAAG,SAAAuE,IAAA,IAAAb,EAAAc,EAAAjC,EAAAnL,EAAAqN,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAtS,EAAA,KAAAuS,EAAA/V,UAAA,OAAAqK,IAAAuB,MAAA,SAAAoK,GAAA,cAAAA,EAAAtE,KAAAsE,EAAA1G,MAAA,OAuEH,OAvEkBkF,EAAIuB,EAAA9V,OAAA,QAAAC,IAAA6V,EAAA,GAAAA,EAAA,GAAG,GAAIT,EAASS,EAAA9V,OAAA,QAAAC,IAAA6V,EAAA,GAAAA,EAAA,GAAG,CAAC,EAE7D1C,EAAiB,CACrB/K,iBAAiB,EACjB2N,cAAc,EACdvB,wBAAwB,EACxBtG,MAAO,KACP8H,QAAS,MAGLhO,EAAUgL,EAAOC,OAAO,CAAC,EAAGE,EAAgBiC,GAClDrW,KAAKyV,uBAAyBxM,EAAQwM,uBACtCzV,KAAKkX,iBAAkB,EAGvBlX,KAAKwJ,WAAa+L,EAAKlP,QAAQ,MAAO,KAEjC4C,EAAQwM,wBACXzV,KAAKuB,QAAQ4S,WAAWgD,WAAWC,gBAQ/Bd,EAAatW,KAAKqU,OAAOhO,QAAQ,MAAO,IACxCkQ,EAAU,GAAH7U,OAAM1B,KAAKiJ,QAAQyL,qBAAoB,OAAAhT,OAAM4U,GAAU5U,OAAG1B,KAAK2U,gBAAe,KAGvF6B,EAAOxW,KAAKwU,SACViC,EAAqB,IAAH/U,OAAO1B,KAAKuU,WAChCvU,KAAKwU,SAASxT,OAAShB,KAAKwU,SAAS6C,YAAYZ,IAAuBA,EAAmBzV,SAC7FwV,EAAOxW,KAAKwU,SAAS8C,OAAO,EAAGtX,KAAKwU,SAASxT,OAASyV,EAAmBzV,SAGrE0V,EAAY,CAChBa,QAASvX,KAAKsU,OACdkD,IAAKxX,KAAKuU,UACViC,KAAAA,EACAiB,EAAGlC,EACHmC,QAAS1X,KAAKiJ,QAAQ2L,mBACtB+C,SAAU3X,KAAKiJ,QAAQ4L,qBAInB8B,EAAWhW,EAAEiX,MAAMlB,GAAWrQ,QAAQ,OAAQ,KAE9CuQ,EAAM,GAAHlV,OAAM6U,GAAO7U,OAAGiV,GAEnBE,EAA4B,SAACgB,GACjC,IAAItT,EAAK2S,gBAAT,CAGA,IAAMY,EAAmBD,EAAoB1I,QAAU0I,EAAoB5X,QAAQe,OAC7E+W,EAA0C,mBAAlB9O,EAAQkG,MAChC6I,EAA8C,mBAApB/O,EAAQgO,QAEpCa,GACFG,QAAQ9I,MAAM,+BAAgC0I,EAAoB1I,OAAS,uBAC3E4I,EACI9O,EAAQkG,MAAMxB,KAAKpJ,EAAMsT,EAAqB5O,GAC9C1E,EAAK2T,sBAAsBL,EAAqB5O,IAEpD+O,EACI/O,EAAQgO,QAAQtJ,KAAKpJ,EAAMsT,EAAqB5O,GAChD1E,EAAK4T,iBAAiBN,EAAqB5O,EAbjD,CAeF,EAEAjJ,KAAKuB,QAAQ,gBAAiB,CAAEgU,KAAMvV,KAAKwJ,WAAYgM,SAAUxV,OAAQ+W,EAAAqB,GACzEvB,EAAyBE,EAAA1G,KAAA,GAAO1P,EAAE0X,KAAK,CACrCzB,IAAKA,EACL0B,SAAU,QACVC,OAAO,EACPC,WAAY,SAAAC,GAASlU,EAAK0Q,UAAYwD,CAAK,IAC3C,QAAA1B,EAAA2B,GAAA3B,EAAAnH,MAAA,EAAAmH,EAAAqB,IAAArB,EAAA2B,IAAA,yBAAA3B,EAAApE,OAAA,GAAAyD,EAAA,UAOJjC,WAAW3I,UAAU0J,cAAgB,WAAY,IAAAyD,EACjC,QAAdA,EAAA3Y,KAAKiV,iBAAS,IAAA0D,GAAdA,EAAgBC,QAChB5Y,KAAKqV,WAAWpT,4BAA2B,GAC3CjC,KAAKwJ,WAAa,GAClBxJ,KAAKiV,UAAY,KACjBjV,KAAKkX,iBAAkB,EACvBlX,KAAKgV,cAAgB,EACvB,EAMAb,WAAW3I,UAAU2J,oBAAsB,WACzCnV,KAAKkX,iBAAkB,EACA,OAAnBlX,KAAKiV,YACPjV,KAAKkV,gBACLlV,KAAKqV,WAAWnN,sBAChBlI,KAAKuB,QAAQ,iBAAkB,CAAEgU,KAAMvV,KAAKwJ,WAAYgM,SAAUxV,OAEtE,EAmCAmU,WAAW3I,UAAU2M,iBAAmB,SAASnP,EAASC,GAAS,IAAA3D,EAAA,MDlQ5D,SAA+B0D,EAAS6P,EAAqBlO,EAAQC,GAE1E,IACsDkO,ECkQpDC,MDnQFC,EAAAC,EAC6BjQ,EAAQ/I,QAAQiZ,WAAS,IAAtD,IAAAF,EAAAG,MAAAL,EAAAE,EAAAI,KAAA5J,MAAwD,KAAA6J,KAAAP,EAAAxY,QAAA,ynBAA5CwV,EAAKuD,EAAA,GAAE7T,EAAK6T,EAAA,GACtB7T,EAAMqC,WAAaiO,EACnBtQ,EAAMiB,mBCgQNsS,EDhQ8CvT,EAAM/B,IAAI,GAAGC,KCgQhD4B,EAAKI,KAAK4T,WAAWhU,EAAKI,KAAKC,eAAeoT,KD/PzDvT,EAAMS,KAAOyE,EAAYlF,EAAM1B,KAAM6G,EAAQC,GAAS,IAC3B2O,EAD2BC,EAAAP,EACpCzT,EAAM/B,KAAG,IAA3B,IAAA+V,EAAAL,MAAAI,EAAAC,EAAAJ,KAAA5J,MAA6B,KACAiK,EADfC,EAAAT,EAAAM,EAAAjZ,MACU0V,OAAK,IAA3B,IAAA0D,EAAAP,MAAAM,EAAAC,EAAAN,KAAA5J,MAAciK,EAAAnZ,MACRuH,WAAaiO,CAClB,OAAApJ,GAAAgN,EAAA/Q,EAAA+D,EAAA,SAAAgN,EAAAC,GAAA,CACH,CAAC,OAAAjN,GAAA8M,EAAA7Q,EAAA+D,EAAA,SAAA8M,EAAAG,GAAA,CACH,CAAC,OAAAjN,GAAAsM,EAAArQ,EAAA+D,EAAA,SAAAsM,EAAAW,GAAA,CACH,CCsPEC,CACE5Q,EACA,EACAhJ,KAAKiJ,QAAQ2L,mBACb5U,KAAKiJ,QAAQ4L,qBAEf7U,KAAKgV,cAAgBhM,GAAW,GAEhChJ,KAAK6Z,sBACL7Z,KAAKiI,sBACDgB,EAAQI,iBACVrJ,KAAK4H,wBAAwB,GAE/B5H,KAAKuB,QAAQ,iBAAkB,CAAEyH,QAAAA,EAASC,QAAAA,EAASuM,SAAUxV,MAC/D,EAOAmU,WAAW3I,UAAU0M,sBAAwB,SAASlP,GACpDhJ,KAAK8Z,uBAAuB9Q,EAC9B,EASAmL,WAAW3I,UAAUsO,uBAAyB,SAAS9Q,GACrDhJ,KAAKgV,cAAgBhM,EACrB,IAAM+Q,EAAc,CAClBxE,KAAMvV,KAAKwJ,WACXgM,SAAUxV,MAEZ,GAAIgJ,EAAQmG,MAAO,CACjB,IAAM6K,EAAUzO,OAAO0O,OAAO,CAAC,EAAGF,EAAa,CAAE/Q,QAAAA,IACjDhJ,KAAKuB,QAAQ,sBAAuByY,EACtC,MAAO,GAAI,GAAKhR,EAAQ/I,QAAQe,OAAQ,CACtC,IAAI,IAAUgI,EAAQa,QAEpB,YADA7J,KAAKuB,QAAQ,+BAAgCwY,GAG/C/Z,KAAKuB,QAAQ,sBAAuBwY,EACtC,CACF,EAKA5F,WAAW3I,UAAUqO,oBAAsB,WAAW,IAAAK,EAE9Cja,GAA4B,QAAlBia,EAAAla,KAAKgV,qBAAa,IAAAkF,OAAA,EAAlBA,EAAoBja,UAAW,GAEzCka,EAAe,CAAC,EAGtBna,KAAKuJ,sBAEL,IAC2BuP,MAD3BE,EAAAC,EACoBhZ,GAAO,IAA3B,IAAA+Y,EAAAG,MAAAL,EAAAE,EAAAI,KAAA5J,MAA6B,KACSiK,EADtBC,EAAAT,EAAAH,EAAAxY,MACUmD,IAAI,GAAGuS,OAAK,IAApC,IAAA0D,EAAAP,MAAAM,EAAAC,EAAAN,KAAA5J,MAAsC,KAA3B4K,EAAGX,EAAAnZ,MACNmF,EAAYzF,KAAK0F,KAAKC,eAAeyU,EAAI1W,OAC7ByW,EAAa1U,KAAe0U,EAAa1U,GAAa,KAC9DsL,KAAKqJ,EACjB,CAAC,OAAA1N,GAAAgN,EAAA/Q,EAAA+D,EAAA,SAAAgN,EAAAC,GAAA,CACH,CAEA,OAAAjN,GAAAsM,EAAArQ,EAAA+D,EAAA,SAAAsM,EAAAW,GAAA,CACA,IAAK,IAALU,EAAA,EAAAC,EAAuC/O,OAAO2N,QAAQiB,GAAaE,EAAAC,EAAAtZ,OAAAqZ,IAAE,CAAhE,IAImCd,EAJnCgB,KAAAD,EAAAD,KAAA,ynBAAOG,EAAeD,EAAA,GAAEvE,EAAKuE,EAAA,GAC1B9U,EAAYgV,WAAWD,GACvB9W,EAAO1D,KAAK0F,KAAKgV,QAAQjV,GAC+C+T,EAAAP,EAAvDjZ,KAAK2a,uCAAuClV,IAC7B,IAAtC,IAAA+T,EAAAL,MAAAI,EAAAC,EAAAJ,KAAA5J,MAAwC,KAA7BoL,EAASrB,EAAAjZ,OAClB2V,EAAAA,EAAAA,IAAgC,oBAAqBD,EAAOtS,EAAMkX,EAAW5E,EAAMzS,KAAI,SAAA4S,GAAC,qBAAAzU,OAAmByU,EAAEtO,WAAU,IACzH,CAAC,OAAA6E,GAAA8M,EAAA7Q,EAAA+D,EAAA,SAAA8M,EAAAG,GAAA,CACH,CAEA3Z,KAAKoV,oBAAsB+E,CAC7B,EAKAhG,WAAW3I,UAAUjC,oBAAsB,WACzC5I,EAAEX,KAAK6a,kCAAkChX,KAAK,sBAAsBhD,QACtE,EASAsT,WAAW3I,UAAU5D,wBAAuB,eAAAkB,EAAAgL,EAAA1I,IAAAyG,MAAG,SAAAiJ,EAAgBjT,GAAU,IAAAkT,EAAAvV,EAAAE,EAAAD,EAAA/B,EAAAsX,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAlQ,IAAAuB,MAAA,SAAA4O,GAAA,cAAAA,EAAA9I,KAAA8I,EAAAlL,MAAA,OAMxC,GALzB7K,EAA0B,QAArBuV,EAAG/a,KAAKgV,qBAAa,IAAA+F,OAAA,EAAlBA,EAAoB9a,QAAQ4H,GACpCnC,EAAO1F,KAAK0F,KACZD,EAAYC,EAAKC,eAAeH,EAAM/B,IAAI,GAAGC,MAC7CA,EAAOgC,EAAKgV,QAAQjV,GACpBuV,EAAe9U,KAAKsV,IAAIxb,KAAK2D,eAAiB8B,GAAa,EAC7DwV,GAAsB,EACrBvX,EAAK+X,WAAY,CAAFF,EAAAlL,KAAA,gBAAAkL,EAAAlL,KAAA,EACCqL,MAAM,qCAAuC,IAAIC,gBAAgB,CAClFC,GAAI5b,KAAKiJ,QAAQqL,OACjBuH,UAAW7b,KAAKiJ,QAAQsL,UACxB8G,QAAS3X,EAAK2X,WACZpM,MAAK,SAAA6M,GAAC,OAAIA,EAAEC,MAAM,IAAC,OAJjBb,EAAIK,EAAA3L,KAAAuL,EAAAlC,EAMYiC,EAAK5a,OAAK,IAAhC,IAAA6a,EAAAhC,MAAAiC,EAAAD,EAAA/B,KAAA5J,MAAW6L,EAAOD,EAAA9a,MAChBoF,EAAKgV,QAAQhV,EAAKC,eAAe0V,IAAUW,cAI7C,OAAAtP,GAAAyO,EAAAxS,EAAA+D,EAAA,SAAAyO,EAAAxB,GAAA,CAO6C,GANxCuB,EAAK5a,MAAMU,SACd0E,EAAKgV,QAAQjV,GAAWuW,eACxBf,GAAsB,GAIxBjb,KAAKic,OAAOC,QAAQC,WAAWC,cAC3Bpc,KAAKqc,YAAcrc,KAAKic,OAAOC,QAAO,CAAAX,EAAAlL,KAAA,gBAAAkL,EAAAlL,KAAA,GAClCrQ,KAAKic,OAAOC,QAAQC,WAAWG,eAAc,QAcvD,OAVKtc,KAAKwE,kBAAkBiB,KAC1BzF,KAAKyV,wBAAyB,EAC9BzV,KAAKuc,YAAY9W,IAIfwV,GACFvV,EAAKgV,QAAQjV,GAAWuW,cAAa,GAGvCT,EAAAlL,KAAA,IACqBmM,EAAAA,EAAAA,OAAK,kBAAM7b,EAAE,oBAADe,OAAqB8D,EAAMqC,YAAa,GAAE,CAAE4U,MAAO,SAAA3N,GAAM,OAAIA,EAAO9N,OAAS,CAAC,IAAG,QAAtG,KAANsa,EAAMC,EAAA3L,MACD5O,OAAQ,CAAFua,EAAAlL,KAAA,SAaf,OAZAiL,EAAOxW,IAAI,YAAa,QACxBwW,EAAO,GAAGoB,eAAe,CAOvBC,MAAO3c,KAAKyC,cAAgBzC,KAAKsC,MAAQtC,KAAK4c,mBAAqB,SAAW,UAC9EC,OAAQ,SACRC,SAAU9B,EAAe,SAAW,SAEtCO,EAAAlL,KAAA,GACM,IAAI6B,SAAQ,SAAAvD,GAAO,OAAIjG,WAAWiG,EAAS,IAAI,IAAC,QACtD2M,EAAOyB,WAAW,SAAS,yBAAAxB,EAAA5I,OAAA,GAAAmI,EAAA,UAE9B,gBAAAkC,GAAA,OAAAlU,EAAAkL,MAAA,KAAAjT,UAAA,EA7D2C,GAkE5CoT,WAAW3I,UAAUtK,oBAAsB,WAAyC,IAAhCuU,EAAsB1U,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GACxEf,KAAKuJ,sBACLvJ,KAAKwJ,WAAa,KAClBxJ,KAAKgV,cAAgB,KAChBS,GACHzV,KAAKuB,QAAQ4S,WAAWgD,WAAWC,eAEvC,EAMAjD,WAAW3I,UAAUyR,uBAAyB,WAAW,IAAAnV,EAAA,KACjDkB,EAAUhJ,KAAKgV,cACjBkI,EAAe,GACnB,GAAI,MAAQlU,EAAS,OAAO,EAE5B,GAAIhJ,KAAKmE,cAAgBnE,KAAKsC,KAC5B4a,EAAe,CAACld,KAAKmd,QAAQC,cAAepd,KAAKmd,QAAQE,mBACpD,IAAIrd,KAAKyC,cAAgBzC,KAAKsC,KAGnC,OAAO,EAFP4a,EAAe,CAACld,KAAK2D,eAGvB,CAWA,OATAqF,EAAQ/I,QAAQqd,MAAK,SAAA9X,GACnB,OAAOA,EAAM/B,IAAI,GAAGuS,MAAMsH,MAAK,SAAAlD,GAC7B,IAAM3U,EAAYqC,EAAKpC,KAAKC,eAAeyU,EAAI1W,MAC/C,GAAIuQ,EAAOsJ,QAAQ9X,EAAWyX,IAAiB,EAC7C,OAAO,CAEX,GACF,KAEO,CACT,wBCxeA,IAAIM,EAAS,EAAQ,MACjBC,EAAQ,EAAQ,MAChBC,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MACnBC,EAAO,aACPC,EAAc,EAAQ,MAEtBnL,EAASgL,EAAY,GAAGhL,QACxBoL,EAAcN,EAAO/C,WACrB1O,EAASyR,EAAOzR,OAChBgS,EAAWhS,GAAUA,EAAOE,SAC5B+R,EAAS,EAAIF,EAAYD,EAAc,QAAU,KAE/CE,IAAaN,GAAM,WAAcK,EAAYvS,OAAOwS,GAAY,IAItEE,EAAO5S,QAAU2S,EAAS,SAAoBE,GAC5C,IAAIC,EAAgBP,EAAKD,EAASO,IAC9BpP,EAASgP,EAAYK,GACzB,OAAkB,IAAXrP,GAA4C,KAA5B4D,EAAOyL,EAAe,IAAa,EAAIrP,CAChE,EAAIgP,wBCrBJ,IAAInd,EAAI,EAAQ,MACZyd,EAAW,gBAIfzd,EAAE,CAAEgH,OAAQ,SAAU0W,MAAM,GAAQ,CAClCnF,QAAS,SAAiBoF,GACxB,OAAOF,EAASE,EAClB,0BCRF,IAAI3d,EAAI,EAAQ,MACZmd,EAAc,EAAQ,MAI1Bnd,EAAE,CAAE6c,QAAQ,EAAMe,OAAQ9D,YAAcqD,GAAe,CACrDrD,WAAYqD","sources":["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/./node_modules/core-js/internals/number-parse-float.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.entries.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.parse-float.js"],"sourcesContent":["class SearchView {\n /**\n * @param {object} params\n * @param {object} params.br The BookReader instance\n * @param {function} params.cancelSearch 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 this.br = br;\n this.matches = [];\n this.cacheDOMElements();\n this.bindEvents();\n this.cancelSearch = searchCancelledCallback;\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.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').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.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._searchPluginGoToResult(match.matchIndex); });\n });\n }\n\n /**\n * @param {boolean} bool\n */\n toggleSearchPending(bool) {\n if (bool) {\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.removeSearchHilites();\n this.removeResultPins();\n this.toggleSearchPending(true);\n this.teardownSearchNavigation();\n this.setQuery(this.br.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","import { escapeHTML, escapeRegExp } from '../../BookReader/utils.js';\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 */\nexport function marshallSearchResults(results, displayPageNumberFn, preTag, postTag) {\n // Attach matchIndex to a few things to make it easier to identify\n // an active/selected match\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 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/* global BookReader */\n/**\n * Plugin for Archive.org book search\n * NOTE: This script must be loaded AFTER `plugin.mobile_nav.js`\n * as it mutates mobile nav drawer\n *\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';\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\njQuery.extend(BookReader.defaultOptions, {\n server: 'ia600609.us.archive.org',\n bookId: '',\n subPrefix: '',\n bookPath: '',\n enableSearch: true,\n searchInsideProtocol: 'https',\n searchInsideUrl: '/fulltext/inside.php',\n searchInsidePreTag: '{{{',\n searchInsidePostTag: '}}}',\n initialSearchTerm: null,\n});\n\n/** @override */\nBookReader.prototype.setup = (function (super_) {\n return function (options) {\n super_.call(this, options);\n\n this.searchTerm = '';\n this.searchResults = null;\n this.searchInsideUrl = options.searchInsideUrl;\n this.enableSearch = options.enableSearch;\n\n // Base server used by some api calls\n this.bookId = options.bookId;\n this.server = options.server;\n this.subPrefix = options.subPrefix;\n this.bookPath = options.bookPath;\n\n this.searchXHR = null;\n this._cancelSearch.bind(this);\n this.cancelSearchRequest.bind(this);\n\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n this._searchBoxesByIndex = {};\n\n this.searchView = undefined;\n };\n})(BookReader.prototype.setup);\n\n/** @override */\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n // give SearchView the most complete bookreader state\n this.searchView = new SearchView({\n br: this,\n searchCancelledCallback: () => {\n this._cancelSearch();\n this.trigger('SearchCanceled', { term: this.searchTerm, instance: this });\n }\n });\n if (this.options.enableSearch && 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})(BookReader.prototype.init);\n\n/** @override */\nBookReader.prototype.buildToolbarElement = (function (super_) {\n return function () {\n const $el = super_.call(this);\n if (!this.enableSearch) { return; }\n if (this.searchView.dom.toolbarSearch) {\n $el.find('.BRtoolbarSectionInfo').after(this.searchView.dom.toolbarSearch);\n }\n return $el;\n };\n})(BookReader.prototype.buildToolbarElement);\n\n/** @override */\nBookReader.prototype._createPageContainer = (function (super_) {\n return function (index) {\n const pageContainer = super_.call(this, index);\n if (this.enableSearch && 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})(BookReader.prototype._createPageContainer);\n\n/**\n * @typedef {object} SearchOptions\n * @property {boolean} goToFirstResult\n * @property {boolean} disablePopup\n * @property {(null|function)} error - @deprecated at v.5.0\n * @property {(null|function)} success - @deprecated at v.5.0\n */\n\n/**\n * Submits search request\n *\n * @param {string} term\n * @param {SearchOptions} overrides\n */\nBookReader.prototype.search = async function(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.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 // Remove the port and userdir\n const serverPath = this.server.replace(/:.+/, '');\n const baseUrl = `${this.options.searchInsideProtocol}://${serverPath}${this.searchInsideUrl}?`;\n\n // Remove subPrefix from end of path\n let path = this.bookPath;\n const subPrefixWithSlash = `/${this.subPrefix}`;\n if (this.bookPath.length - this.bookPath.lastIndexOf(subPrefixWithSlash) == subPrefixWithSlash.length) {\n path = this.bookPath.substr(0, this.bookPath.length - subPrefixWithSlash.length);\n }\n\n const urlParams = {\n item_id: this.bookId,\n doc: this.subPrefix,\n path,\n q: term,\n pre_tag: this.options.searchInsidePreTag,\n post_tag: this.options.searchInsidePostTag,\n };\n\n // NOTE that the API does not expect / (slashes) to be encoded. (%2F) won't work\n const paramStr = $.param(urlParams).replace(/%2F/g, '/');\n\n const url = `${baseUrl}${paramStr}`;\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, options);\n } else {\n hasCustomSuccess\n ? options.success.call(this, searchInsideResults, options)\n : this.BRSearchCallback(searchInsideResults, options);\n }\n };\n\n this.trigger('SearchStarted', { term: this.searchTerm, instance: this });\n callSearchResultsCallback(await $.ajax({\n url: url,\n dataType: 'jsonp',\n cache: true,\n beforeSend: xhr => { this.searchXHR = xhr; },\n }));\n};\n\n/**\n * cancels AJAX Call\n * emits custom event\n */\nBookReader.prototype._cancelSearch = function () {\n this.searchXHR?.abort();\n this.searchView.clearSearchFieldAndResults(false);\n this.searchTerm = '';\n this.searchXHR = null;\n this.searchCancelled = true;\n this.searchResults = [];\n};\n\n/**\n * External function to cancel search\n * checks for term & xhr in flight before running\n */\nBookReader.prototype.cancelSearchRequest = function () {\n this.searchCancelled = true;\n if (this.searchXHR !== null) {\n this._cancelSearch();\n this.searchView.toggleSearchPending();\n this.trigger('SearchCanceled', { term: this.searchTerm, instance: this });\n }\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 {Array<{ page: number, boxes: SearchInsideMatchBox[] }>} par\n */\n\n/**\n * @typedef {object} SearchInsideResults\n * @property {string} error\n * @property {SearchInsideMatch[]} matches\n * @property {boolean} indexed\n */\n\n/**\n * Search Results return handler\n * @param {SearchInsideResults} results\n * @param {object} options\n * @param {boolean} options.goToFirstResult\n */\nBookReader.prototype.BRSearchCallback = function(results, options) {\n marshallSearchResults(\n results,\n pageNum => this.book.getPageNum(this.book.leafNumToIndex(pageNum)),\n this.options.searchInsidePreTag,\n this.options.searchInsidePostTag,\n );\n this.searchResults = results || [];\n\n this.updateSearchHilites();\n this.removeProgressPopup();\n if (options.goToFirstResult) {\n this._searchPluginGoToResult(0);\n }\n this.trigger('SearchCallback', { results, options, instance: this });\n};\n\n/**\n * Main search results error handler\n * @callback\n * @param {SearchInsideResults} results\n */\nBookReader.prototype.BRSearchCallbackError = function(results) {\n this._BRSearchCallbackError(results);\n};\n\n/**\n * @private draws search results error\n * @callback\n * @param {SearchInsideResults} results\n * @param {jQuery} $el\n * @param {boolean} fade\n */\nBookReader.prototype._BRSearchCallbackError = function(results) {\n this.searchResults = results;\n const basePayload = {\n term: this.searchTerm,\n instance: this,\n };\n if (results.error) {\n const payload = Object.assign({}, basePayload, { results });\n this.trigger('SearchCallbackError', payload);\n } else if (0 == results.matches.length) {\n if (false === results.indexed) {\n this.trigger('SearchCallbackBookNotIndexed', basePayload);\n return;\n }\n this.trigger('SearchCallbackEmpty', basePayload);\n }\n};\n\n/**\n * updates search on-page highlights controller\n */\nBookReader.prototype.updateSearchHilites = function() {\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.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.book.getPage(pageIndex);\n const pageContainers = this.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 */\nBookReader.prototype.removeSearchHilites = function() {\n $(this.getActivePageContainerElements()).find('.searchHiliteLayer').remove();\n};\n\n/**\n * @private\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 */\nBookReader.prototype._searchPluginGoToResult = async function (matchIndex) {\n const match = this.searchResults?.matches[matchIndex];\n const book = this.book;\n const pageIndex = book.leafNumToIndex(match.par[0].page);\n const page = book.getPage(pageIndex);\n const onNearbyPage = Math.abs(this.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.options.bookId,\n subprefix: this.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._modes.mode1Up.mode1UpLit.updatePages();\n if (this.activeMode == this._modes.mode1Up) {\n await this._modes.mode1Up.mode1UpLit.updateComplete;\n }\n }\n /* this updates the URL */\n if (!this._isIndexDisplayed(pageIndex)) {\n this.suppressFragmentChange = false;\n this.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.constMode1up == this.mode || this.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 */\nBookReader.prototype.removeSearchResults = function(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.trigger(BookReader.eventNames.fragmentChange);\n }\n};\n\n/**\n * Returns true if a search highlight is currently being displayed\n * @returns {boolean}\n */\nBookReader.prototype.searchHighlightVisible = function() {\n const results = this.searchResults;\n let visiblePages = [];\n if (null == results) return false;\n\n if (this.constMode2up == this.mode) {\n visiblePages = [this.twoPage.currentIndexL, this.twoPage.currentIndexR];\n } else if (this.constMode1up == this.mode) {\n visiblePages = [this.currentIndex()];\n } else {\n return false;\n }\n\n results.matches.some(match => {\n return match.par[0].boxes.some(box => {\n const pageIndex = this.book.leafNumToIndex(box.page);\n if (jQuery.inArray(pageIndex, visiblePages) >= 0) {\n return true;\n }\n });\n });\n\n return false;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar $parseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / $parseFloat(whitespaces + '-0') !== -Infinity\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = $parseFloat(trimmedString);\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n parseFloat: $parseFloat\n});\n"],"names":["SearchView","_ref","br","_ref$searchCancelledC","searchCancelledCallback","_classCallCheck","this","matches","cacheDOMElements","bindEvents","cancelSearch","key","value","dom","toolbarSearch","buildToolbarSearch","query","$","val","remove","dispatchEventWhenComplete","arguments","length","undefined","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","closestPage","closestTo","pool","slice","map","m","par","page","currentIndex","indexOf","find","text","attr","off","resize","matchingSearchResult","constMode2up","find2upMatchingSearchResult","find1upMatchingSearchResult","_this","_this2","_isIndexDisplayed","setCurrentMatchIndex","bool","pinsVisibleState","refs","$BRfooter","css","visibility","document","createElement","classList","add","innerHTML","imagesBaseURL","_this3","forEach","match","pageIndex","book","leafNumToIndex","percentThrough","constructor","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","target","_searchPluginGoToResult","matchIndex","_this4","showProgressPopup","progressPopupClosed","removeProgressPopup","toggleSearchPending","errorDetails","renderModalMessage","delayModalRemovalFor","messageHTML","modal","el","timeoutMS","setTimeout","e","preventDefault","search","_ref2","_this5","results","options","renderSearchNavigation","bindSearchNavigationEvents","renderPins","goToFirstResult","one","removeSearchHilites","searchTerm","_event$detail","isIndexed","detail","props","indexed","renderErrorModal","renderBookNotIndexedModal","renderResultsEmptyModal","window","addEventListener","handleSearchCallbackError","handleSearchCallback","handleSearchStarted","handleSearchCallbackBookNotIndexed","handleSearchCallbackEmpty","updateSearchNavigation","submitHandler","renderMatch","preTag","postTag","preTagRe","escapeRegExp","escapeHTML","postTagRe","regex","RegExp","super_","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","i","doneResult","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","jQuery","extend","BookReader","defaultOptions","server","bookId","subPrefix","bookPath","enableSearch","searchInsideProtocol","searchInsideUrl","searchInsidePreTag","searchInsidePostTag","initialSearchTerm","setup","searchResults","searchXHR","_cancelSearch","cancelSearchRequest","_searchBoxesByIndex","searchView","init","term","instance","suppressFragmentChange","buildToolbarElement","$el","after","_createPageContainer","index","pageContainer","boxes","renderBoxesInPageContainerLayer","$container","b","_callee","overrides","serverPath","baseUrl","path","subPrefixWithSlash","urlParams","paramStr","url","callSearchResultsCallback","_args","_context","disablePopup","success","searchCancelled","eventNames","fragmentChange","lastIndexOf","substr","item_id","doc","q","pre_tag","post_tag","param","searchInsideResults","responseHasError","hasCustomError","hasCustomSuccess","console","BRSearchCallbackError","BRSearchCallback","t0","ajax","dataType","cache","beforeSend","xhr","t1","_this$searchXHR","abort","displayPageNumberFn","_step","pageNum","_iterator","_createForOfIteratorHelper","entries","s","n","_step$value","getPageNum","_step2","_iterator2","_step3","_iterator3","f","marshallSearchResults","updateSearchHilites","_BRSearchCallbackError","basePayload","payload","assign","_this$searchResults","boxesByIndex","box","_i","_Object$entries","_Object$entries$_i","pageIndexString","parseFloat","getPage","getActivePageContainerElementsForIndex","container","getActivePageContainerElements","_callee2","_this$searchResults2","onNearbyPage","makeUnviewableAtEnd","resp","_iterator4","_step4","leafNum","$boxes","_context2","abs","isViewable","fetch","URLSearchParams","id","subprefix","r","json","makeViewable","_modes","mode1Up","mode1UpLit","updatePages","activeMode","updateComplete","jumpToIndex","poll","until","scrollIntoView","block","isFullscreenActive","inline","behavior","removeAttr","_x2","searchHighlightVisible","visiblePages","twoPage","currentIndexL","currentIndexR","some","inArray","global","fails","uncurryThis","toString","trim","whitespaces","$parseFloat","ITERATOR","FORCED","module","string","trimmedString","$entries","stat","O","forced"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"plugins/plugin.search.js","mappings":"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","sources":["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/./node_modules/core-js/modules/es.object.entries.js"],"sourcesContent":["class SearchView {\n /**\n * @param {object} params\n * @param {object} params.br The BookReader instance\n * @param {function} params.cancelSearch 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 this.br = br;\n this.matches = [];\n this.cacheDOMElements();\n this.bindEvents();\n this.cancelSearch = searchCancelledCallback;\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.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').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.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._searchPluginGoToResult(match.matchIndex); });\n });\n }\n\n /**\n * @param {boolean} bool\n */\n toggleSearchPending(bool) {\n if (bool) {\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.removeSearchHilites();\n this.removeResultPins();\n this.toggleSearchPending(true);\n this.teardownSearchNavigation();\n this.setQuery(this.br.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","import { escapeHTML, escapeRegExp } from '../../BookReader/utils.js';\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 */\nexport function marshallSearchResults(results, displayPageNumberFn, preTag, postTag) {\n // Attach matchIndex to a few things to make it easier to identify\n // an active/selected match\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 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/* global BookReader */\n/**\n * Plugin for Archive.org book search\n * NOTE: This script must be loaded AFTER `plugin.mobile_nav.js`\n * as it mutates mobile nav drawer\n *\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';\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\njQuery.extend(BookReader.defaultOptions, {\n server: 'ia600609.us.archive.org',\n bookId: '',\n subPrefix: '',\n bookPath: '',\n enableSearch: true,\n searchInsideProtocol: 'https',\n searchInsideUrl: '/fulltext/inside.php',\n searchInsidePreTag: '{{{',\n searchInsidePostTag: '}}}',\n initialSearchTerm: null,\n});\n\n/** @override */\nBookReader.prototype.setup = (function (super_) {\n return function (options) {\n super_.call(this, options);\n\n this.searchTerm = '';\n this.searchResults = null;\n this.searchInsideUrl = options.searchInsideUrl;\n this.enableSearch = options.enableSearch;\n\n // Base server used by some api calls\n this.bookId = options.bookId;\n this.server = options.server;\n this.subPrefix = options.subPrefix;\n this.bookPath = options.bookPath;\n\n this.searchXHR = null;\n this._cancelSearch.bind(this);\n this.cancelSearchRequest.bind(this);\n\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n this._searchBoxesByIndex = {};\n\n this.searchView = undefined;\n };\n})(BookReader.prototype.setup);\n\n/** @override */\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n // give SearchView the most complete bookreader state\n this.searchView = new SearchView({\n br: this,\n searchCancelledCallback: () => {\n this._cancelSearch();\n this.trigger('SearchCanceled', { term: this.searchTerm, instance: this });\n }\n });\n if (this.options.enableSearch && 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})(BookReader.prototype.init);\n\n/** @override */\nBookReader.prototype.buildToolbarElement = (function (super_) {\n return function () {\n const $el = super_.call(this);\n if (!this.enableSearch) { return; }\n if (this.searchView.dom.toolbarSearch) {\n $el.find('.BRtoolbarSectionInfo').after(this.searchView.dom.toolbarSearch);\n }\n return $el;\n };\n})(BookReader.prototype.buildToolbarElement);\n\n/** @override */\nBookReader.prototype._createPageContainer = (function (super_) {\n return function (index) {\n const pageContainer = super_.call(this, index);\n if (this.enableSearch && 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})(BookReader.prototype._createPageContainer);\n\n/**\n * @typedef {object} SearchOptions\n * @property {boolean} goToFirstResult\n * @property {boolean} disablePopup\n * @property {(null|function)} error - @deprecated at v.5.0\n * @property {(null|function)} success - @deprecated at v.5.0\n */\n\n/**\n * Submits search request\n *\n * @param {string} term\n * @param {SearchOptions} overrides\n */\nBookReader.prototype.search = async function(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.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 // Remove the port and userdir\n const serverPath = this.server.replace(/:.+/, '');\n const baseUrl = `${this.options.searchInsideProtocol}://${serverPath}${this.searchInsideUrl}?`;\n\n // Remove subPrefix from end of path\n let path = this.bookPath;\n const subPrefixWithSlash = `/${this.subPrefix}`;\n if (this.bookPath.length - this.bookPath.lastIndexOf(subPrefixWithSlash) == subPrefixWithSlash.length) {\n path = this.bookPath.substr(0, this.bookPath.length - subPrefixWithSlash.length);\n }\n\n const urlParams = {\n item_id: this.bookId,\n doc: this.subPrefix,\n path,\n q: term,\n pre_tag: this.options.searchInsidePreTag,\n post_tag: this.options.searchInsidePostTag,\n };\n\n // NOTE that the API does not expect / (slashes) to be encoded. (%2F) won't work\n const paramStr = $.param(urlParams).replace(/%2F/g, '/');\n\n const url = `${baseUrl}${paramStr}`;\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, options);\n } else {\n hasCustomSuccess\n ? options.success.call(this, searchInsideResults, options)\n : this.BRSearchCallback(searchInsideResults, options);\n }\n };\n\n this.trigger('SearchStarted', { term: this.searchTerm, instance: this });\n callSearchResultsCallback(await $.ajax({\n url: url,\n dataType: 'jsonp',\n cache: true,\n beforeSend: xhr => { this.searchXHR = xhr; },\n }));\n};\n\n/**\n * cancels AJAX Call\n * emits custom event\n */\nBookReader.prototype._cancelSearch = function () {\n this.searchXHR?.abort();\n this.searchView.clearSearchFieldAndResults(false);\n this.searchTerm = '';\n this.searchXHR = null;\n this.searchCancelled = true;\n this.searchResults = [];\n};\n\n/**\n * External function to cancel search\n * checks for term & xhr in flight before running\n */\nBookReader.prototype.cancelSearchRequest = function () {\n this.searchCancelled = true;\n if (this.searchXHR !== null) {\n this._cancelSearch();\n this.searchView.toggleSearchPending();\n this.trigger('SearchCanceled', { term: this.searchTerm, instance: this });\n }\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 {Array<{ page: number, boxes: SearchInsideMatchBox[] }>} par\n */\n\n/**\n * @typedef {object} SearchInsideResults\n * @property {string} error\n * @property {SearchInsideMatch[]} matches\n * @property {boolean} indexed\n */\n\n/**\n * Search Results return handler\n * @param {SearchInsideResults} results\n * @param {object} options\n * @param {boolean} options.goToFirstResult\n */\nBookReader.prototype.BRSearchCallback = function(results, options) {\n marshallSearchResults(\n results,\n pageNum => this.book.getPageNum(this.book.leafNumToIndex(pageNum)),\n this.options.searchInsidePreTag,\n this.options.searchInsidePostTag,\n );\n this.searchResults = results || [];\n\n this.updateSearchHilites();\n this.removeProgressPopup();\n if (options.goToFirstResult) {\n this._searchPluginGoToResult(0);\n }\n this.trigger('SearchCallback', { results, options, instance: this });\n};\n\n/**\n * Main search results error handler\n * @callback\n * @param {SearchInsideResults} results\n */\nBookReader.prototype.BRSearchCallbackError = function(results) {\n this._BRSearchCallbackError(results);\n};\n\n/**\n * @private draws search results error\n * @callback\n * @param {SearchInsideResults} results\n * @param {jQuery} $el\n * @param {boolean} fade\n */\nBookReader.prototype._BRSearchCallbackError = function(results) {\n this.searchResults = results;\n const basePayload = {\n term: this.searchTerm,\n instance: this,\n };\n if (results.error) {\n const payload = Object.assign({}, basePayload, { results });\n this.trigger('SearchCallbackError', payload);\n } else if (0 == results.matches.length) {\n if (false === results.indexed) {\n this.trigger('SearchCallbackBookNotIndexed', basePayload);\n return;\n }\n this.trigger('SearchCallbackEmpty', basePayload);\n }\n};\n\n/**\n * updates search on-page highlights controller\n */\nBookReader.prototype.updateSearchHilites = function() {\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.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.book.getPage(pageIndex);\n const pageContainers = this.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 */\nBookReader.prototype.removeSearchHilites = function() {\n $(this.getActivePageContainerElements()).find('.searchHiliteLayer').remove();\n};\n\n/**\n * @private\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 */\nBookReader.prototype._searchPluginGoToResult = async function (matchIndex) {\n const match = this.searchResults?.matches[matchIndex];\n const book = this.book;\n const pageIndex = book.leafNumToIndex(match.par[0].page);\n const page = book.getPage(pageIndex);\n const onNearbyPage = Math.abs(this.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.options.bookId,\n subprefix: this.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._modes.mode1Up.mode1UpLit.updatePages();\n if (this.activeMode == this._modes.mode1Up) {\n await this._modes.mode1Up.mode1UpLit.updateComplete;\n }\n }\n /* this updates the URL */\n if (!this._isIndexDisplayed(pageIndex)) {\n this.suppressFragmentChange = false;\n this.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.constMode1up == this.mode || this.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 */\nBookReader.prototype.removeSearchResults = function(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.trigger(BookReader.eventNames.fragmentChange);\n }\n};\n\n/**\n * Returns true if a search highlight is currently being displayed\n * @returns {boolean}\n */\nBookReader.prototype.searchHighlightVisible = function() {\n const results = this.searchResults;\n let visiblePages = [];\n if (null == results) return false;\n\n if (this.constMode2up == this.mode) {\n visiblePages = [this.twoPage.currentIndexL, this.twoPage.currentIndexR];\n } else if (this.constMode1up == this.mode) {\n visiblePages = [this.currentIndex()];\n } else {\n return false;\n }\n\n results.matches.some(match => {\n return match.par[0].boxes.some(box => {\n const pageIndex = this.book.leafNumToIndex(box.page);\n if (jQuery.inArray(pageIndex, visiblePages) >= 0) {\n return true;\n }\n });\n });\n\n return false;\n};\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n"],"names":["SearchView","_ref","br","_ref$searchCancelledC","searchCancelledCallback","_classCallCheck","this","matches","cacheDOMElements","bindEvents","cancelSearch","key","value","dom","toolbarSearch","buildToolbarSearch","query","$","val","remove","dispatchEventWhenComplete","arguments","length","undefined","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","closestPage","closestTo","pool","slice","map","m","par","page","currentIndex","indexOf","find","text","attr","off","resize","matchingSearchResult","constMode2up","find2upMatchingSearchResult","find1upMatchingSearchResult","_this","_this2","_isIndexDisplayed","setCurrentMatchIndex","bool","pinsVisibleState","refs","$BRfooter","css","visibility","document","createElement","classList","add","innerHTML","imagesBaseURL","_this3","forEach","match","pageIndex","book","leafNumToIndex","percentThrough","constructor","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","target","_searchPluginGoToResult","matchIndex","_this4","showProgressPopup","progressPopupClosed","removeProgressPopup","toggleSearchPending","errorDetails","renderModalMessage","delayModalRemovalFor","messageHTML","modal","el","timeoutMS","setTimeout","e","preventDefault","search","_ref2","_this5","results","options","renderSearchNavigation","bindSearchNavigationEvents","renderPins","goToFirstResult","one","removeSearchHilites","searchTerm","_event$detail","isIndexed","detail","props","indexed","renderErrorModal","renderBookNotIndexedModal","renderResultsEmptyModal","window","addEventListener","handleSearchCallbackError","handleSearchCallback","handleSearchStarted","handleSearchCallbackBookNotIndexed","handleSearchCallbackEmpty","updateSearchNavigation","submitHandler","renderMatch","preTag","postTag","preTagRe","escapeRegExp","escapeHTML","postTagRe","regex","RegExp","super_","_regeneratorRuntime","exports","Op","Object","prototype","hasOwn","hasOwnProperty","defineProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","call","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","done","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","i","doneResult","displayName","isGeneratorFunction","genFun","ctor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","apply","jQuery","extend","BookReader","defaultOptions","server","bookId","subPrefix","bookPath","enableSearch","searchInsideProtocol","searchInsideUrl","searchInsidePreTag","searchInsidePostTag","initialSearchTerm","setup","searchResults","searchXHR","_cancelSearch","cancelSearchRequest","_searchBoxesByIndex","searchView","init","term","instance","suppressFragmentChange","buildToolbarElement","$el","after","_createPageContainer","index","pageContainer","boxes","renderBoxesInPageContainerLayer","$container","b","_callee","overrides","serverPath","baseUrl","path","subPrefixWithSlash","urlParams","paramStr","url","callSearchResultsCallback","_args","_context","disablePopup","success","searchCancelled","eventNames","fragmentChange","lastIndexOf","substr","item_id","doc","q","pre_tag","post_tag","param","searchInsideResults","responseHasError","hasCustomError","hasCustomSuccess","console","BRSearchCallbackError","BRSearchCallback","t0","ajax","dataType","cache","beforeSend","xhr","t1","_this$searchXHR","abort","displayPageNumberFn","_step","pageNum","_iterator","_createForOfIteratorHelper","entries","s","n","_step$value","getPageNum","_step2","_iterator2","_step3","_iterator3","f","marshallSearchResults","updateSearchHilites","_BRSearchCallbackError","basePayload","payload","assign","_this$searchResults","boxesByIndex","box","_i","_Object$entries","_Object$entries$_i","pageIndexString","parseFloat","getPage","getActivePageContainerElementsForIndex","container","getActivePageContainerElements","_callee2","_this$searchResults2","onNearbyPage","makeUnviewableAtEnd","resp","_iterator4","_step4","leafNum","$boxes","_context2","abs","isViewable","fetch","URLSearchParams","id","subprefix","r","json","makeViewable","_modes","mode1Up","mode1UpLit","updatePages","activeMode","updateComplete","jumpToIndex","poll","until","scrollIntoView","block","isFullscreenActive","inline","behavior","removeAttr","_x2","searchHighlightVisible","visiblePages","twoPage","currentIndexL","currentIndexR","some","inArray","$entries","stat","O"],"sourceRoot":""}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
/*! For license information please see plugin.text_selection.js.LICENSE.txt */
|
2
|
-
(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[423],{4742:function(t,e,r){"use strict";r(6992),r(1539),r(3948),r(9826),r(9714),r(2222),r(4678),r(8674),r(1249),r(2707),r(1038),r(8783),r(7852),r(3210),r(7042),r(9601),r(1532),r(2165),r(2526),r(1817),r(9600),r(6649),r(6078),r(9653),r(2443),r(3680),r(3706),r(2703),r(489),r(4747),r(8309),r(5069),r(4916),r(2419),r(4819),r(5003);var n=r(9860),o=r(5311);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,l(n.key),n)}}function c(t,e,r){return(e=l(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t){var e=function(t,e){if("object"!==i(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===i(e)?e:String(e)}var u=function(){function t(e,r){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,"selecting",!1),c(this,"startedInSelector",!1),c(this,"target",null),c(this,"_onSelectionChange",(function(){var t=window.getSelection();!n.selecting&&t.toString()&&(n.selecting=!0,n.target=o(t.anchorNode).closest(n.selector)[0],n.handler("started",n.target)),!n.selecting||!t.isCollapsed&&t.toString()&&o(t.anchorNode).closest(n.selector)[0]||(n.selecting=!1,n.handler("cleared",n.target))})),this.selector=e,this.handler=r}var e,r;return e=t,(r=[{key:"attach",value:function(){document.addEventListener("selectionchange",this._onSelectionChange)}},{key:"detach",value:function(){document.removeEventListener("selectionchange",this._onSelectionChange)}}])&&a(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function f(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:h;return null==t?void 0:t.replace(/\{\{([^}]*?)\}\}/g,(function(t,o){if(!o)return t;var i,a=function(t){if(Array.isArray(t))return t}(i=o.split("|").map((function(t){return t.trim()})))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),c=a[0],l=a.slice(1);if(!(c in r)&&!(c in e))return t;var u=c in r?r[c]:c in e?e[c]:null;return l.map((function(t){return n[t]})).reduce((function(t,e){return e(t)}),u&&u.toString())}))}r(5306),r(5827);var h={urlencode:encodeURIComponent},p=r(5311);function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}var y=j().mark(N),v=j().mark(W),g=j().mark(G);function m(){return m="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=w(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},m.apply(this,arguments)}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function w(t){return w=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},w(t)}function x(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(t,e)||E(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=E(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function E(t,e){if(t){if("string"==typeof t)return P(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?P(t,e):void 0}}function P(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function j(){j=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function u(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new O(o||[]);return n(a,"_invoke",{value:S(t,r,c)}),a}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var f={};function h(){}function p(){}function y(){}var v={};l(v,i,(function(){return this}));var g=Object.getPrototypeOf,m=g&&g(g(R([])));m&&m!==e&&r.call(m,i)&&(v=m);var b=y.prototype=h.prototype=Object.create(v);function w(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function o(n,i,a,c){var l=s(t[n],t,i);if("throw"!==l.type){var u=l.arg,f=u.value;return f&&"object"==d(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){u.value=t,a(u)}),(function(t){return o("throw",t,a,c)}))}c(l.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function S(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=E(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=s(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function E(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=s(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function R(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=y,n(b,"constructor",{value:y,configurable:!0}),n(y,"constructor",{value:p,configurable:!0}),p.displayName=l(y,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,l(t,c,"GeneratorFunction")),t.prototype=Object.create(b),t},t.awrap=function(t){return{__await:t}},w(x.prototype),l(x.prototype,a,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new x(u(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(b),l(b,c,"Generator"),l(b,i,(function(){return this})),l(b,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=R,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:R(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function k(t,e,r,n,o,i,a){try{var c=t[i](a),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(n,o)}function O(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){k(i,n,o,a,c,"next",t)}function c(t){k(i,n,o,a,c,"throw",t)}a(void 0)}))}}function R(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function L(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,A(n.key),n)}}function C(t,e,r){return e&&L(t.prototype,e),r&&L(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function A(t){var e=function(t,e){if("object"!==d(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!==d(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===d(e)?e:String(e)}var _=window.BookReader,B={enabled:!0,fullDjvuXmlUrl:null,singlePageDjvuXmlUrl:null,jsonp:!1},T=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;R(this,t),this.maxSize=e,this.entries=[]}return C(t,[{key:"add",value:function(t){this.entries.length>=this.maxSize&&this.entries.shift(),this.entries.push(t)}}]),t}(),I=function(){function t(){var e,r,n,o=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:B,a=arguments.length>1?arguments[1]:void 0,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"lr";R(this,t),e=this,n=function(t,e){if("started"===t)o.textSelectingMode(e);else{if("cleared"!==t)throw new Error("Unknown type ".concat(t));o.defaultMode(e)}},(r=A(r="_onSelectionChange"))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,this.options=i,this.optionVariables=a,this.djvuPagesPromise=null,this.rtl="rl"===c,this.pageTextCache=new T,this.maxWordRendered=2500,this.selectionObserver=new u(".BRtextLayer",this._onSelectionChange)}var e,r;return C(t,[{key:"init",value:function(){this.selectionObserver.attach(),this.options.singlePageDjvuXmlUrl||(this.djvuPagesPromise=p.ajax({type:"GET",url:f(this.options.fullDjvuXmlUrl,this.optionVariables),dataType:this.options.jsonp?"jsonp":"html",cache:!0,error:function(t){}}).then((function(t){try{var e=p.parseXML(t);return e&&p(e).find("OBJECT")}catch(t){return}})))}},{key:"getPageText",value:(r=O(j().mark((function t(e){var r,n,o,i,a;return j().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.options.singlePageDjvuXmlUrl){t.next=19;break}if(!(r=this.pageTextCache.entries.find((function(t){return t.index==e})))){t.next=4;break}return t.abrupt("return",r.response);case 4:return t.next=6,p.ajax({type:"GET",url:f(this.options.singlePageDjvuXmlUrl,this.optionVariables,{pageIndex:e}),dataType:this.options.jsonp?"jsonp":"html",cache:!0,error:function(t){}});case 6:return n=t.sent,t.prev=7,o=p.parseXML(n),i=o&&p(o).find("OBJECT")[0],this.pageTextCache.add({index:e,response:i}),t.abrupt("return",i);case 14:return t.prev=14,t.t0=t.catch(7),t.abrupt("return",void 0);case 17:t.next=24;break;case 19:return t.next=21,this.djvuPagesPromise;case 21:if(!(a=t.sent)){t.next=24;break}return t.abrupt("return",a[e]);case 24:case"end":return t.stop()}}),t,this,[[7,14]])}))),function(t){return r.apply(this,arguments)})},{key:"interceptCopy",value:function(t){t[0].addEventListener("copy",(function(t){var e=document.getSelection();t.clipboardData.setData("text/plain",e.toString()),t.preventDefault()}))}},{key:"defaultMode",value:function(t){var e=this,r=p(t).closest(".BRpagecontainer");t.style.pointerEvents="none",r.find("img").css("pointer-events","auto"),p(t).off(".textSelectPluginHandler");var n=this.mouseIsDown,o=this.mouseIsDown;n&&(t.style.pointerEvents="auto"),p(t).on("mousedown.textSelectPluginHandler",(function(t){e.mouseIsDown=!0,p(t.target).is(".BRwordElement, .BRspace")&&t.stopPropagation()})),p(t).on("mouseup.textSelectPluginHandler",(function(r){e.mouseIsDown=!1,t.style.pointerEvents="none",o&&(o=!1,r.stopPropagation())}))}},{key:"textSelectingMode",value:function(t){var e=this,r=p(t).closest(".BRpagecontainer");t.style.pointerEvents="all",r.find("img").css("pointer-events","none"),p(t).off(".textSelectPluginHandler"),p(t).on("mousedown.textSelectPluginHandler",(function(t){e.mouseIsDown=!0,t.stopPropagation()})),p(t).on("mouseup.textSelectPluginHandler",(function(t){e.mouseIsDown=!1,t.stopPropagation()}))}},{key:"stopPageFlip",value:function(t){var e=this,r=t.find(".BRtextLayer");r.length&&(r.each((function(t,r){return e.defaultMode(r)})),this.interceptCopy(t))}},{key:"createTextLayer",value:(e=O(j().mark((function t(e){var r,o,i,a,c,l,u,s,f,h,d,y,v,g,m,b,w,E,P,k,O,R,L,C,A=this;return j().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.page.index,!(o=e.$container).find(".BRtextLayer").length){t.next=5;break}return t.abrupt("return");case 5:return t.next=7,this.getPageText(r);case 7:if(i=t.sent){t.next=10;break}return t.abrupt("return");case 10:if(U(i),!((a=p(i).find("WORD").length)>this.maxWordRendered)){t.next=15;break}return console.log("Page ".concat(r," has too many words (").concat(a," > ").concat(this.maxWordRendered,"). Not rendering text layer.")),t.abrupt("return");case 15:c=(0,n.RS)(e.page,"BRtextLayer"),l=parseFloat(e.$container[0].style.width)/e.page.width,u=parseFloat(e.$container[0].style.height)/e.page.height,c.style.transform="scale(".concat(l,", ").concat(u,")"),c.setAttribute("dir",this.rtl?"rtl":"ltr"),s=p(i).find("PARAGRAPH[coords]").toArray(),f=s.map((function(t){var e=A.renderParagraph(t);return c.appendChild(e),e})),h=F(c,".BRparagraphElement"),d=0,y=S(G(s,f));try{for(y.s();!(v=y.n()).done;)g=x(v.value,2),m=g[0],b=g[1],w=p(m).attr("coords").split(",").map(parseFloat),E=h.get(b),P=x(w,4),k=P[0],O=P[2],R=P[3],L=this.rtl?E.right-O:k-E.left,C=R-(E.top+d),b.style[this.rtl?"marginRight":"marginLeft"]="".concat(L,"px"),b.style.marginTop="".concat(C,"px"),d+=C,c.appendChild(b)}catch(t){y.e(t)}finally{y.f()}o.append(c),this.stopPageFlip(o);case 28:case"end":return t.stop()}}),t,this)}))),function(t){return e.apply(this,arguments)})},{key:"renderParagraph",value:function(t){var e=document.createElement("p");e.classList.add("BRparagraphElement");var r=x(p(t).attr("coords").split(",").map(parseFloat),4),n=r[0],o=r[1],i=r[2],a=r[3],c=[],l=p(t).find("LINE[coords]").toArray();if(!l.length)return e;var u,s=S(W(N(l,M)));try{for(s.s();!(u=s.n()).done;){var f=x(u.value,3),h=f[0],d=f[1],y=f[2],v=d.ocrElement==l[l.length-1],g=document.createElement("span");g.classList.add("BRlineElement");var m,b=S(d.words.entries());try{for(b.s();!(m=b.n()).done;){var w=x(m.value,2),j=w[0],k=w[1],O=x(p(k).attr("coords").split(",").map(parseFloat),4),R=O[1],L=O[2],C=O[3],A=R-C;if(c.push(A),0==j&&null!=h&&h.lastWord.textContent.trim().endsWith("-")){var _=x(p((y||h).firstWord).attr("coords").split(",").map(parseFloat),3)[0];p(k).attr("coords","".concat(_,",").concat(R,",").concat(L,",").concat(C))}var B=document.createElement("span");if(B.setAttribute("class","BRwordElement"),B.textContent=k.textContent.trim(),j>0){var T=document.createElement("span");T.classList.add("BRspace"),T.textContent=" ",g.append(T),g.appendChild(document.createTextNode(" "))}g.appendChild(B)}}catch(t){b.e(t)}finally{b.f()}var I=d.lastWord.textContent.trim().endsWith("-"),D=g.children[g.children.length-1];I&&!v&&(D.textContent=D.textContent.trim().slice(0,-1),D.classList.add("BRwordElement--hyphen")),e.appendChild(g),v||I||e.appendChild(document.createTextNode(" "))}}catch(t){s.e(t)}finally{s.f()}c.sort((function(t,e){return t-e}));var U=c[Math.floor(.85*c.length)]+4;e.style.left="".concat(n,"px"),e.style.top="".concat(a,"px"),e.style.width="".concat(i-n,"px"),e.style.height="".concat(o-a,"px"),e.style.fontSize="".concat(U,"px");var H,X=F(e,".BRwordElement"),$=S(G(p(t).find("WORD").toArray(),e.querySelectorAll(".BRwordElement")));try{for($.s();!(H=$.n()).done;){var q=x(H.value,2),z=q[0],V=q[1],Y=X.get(V),J=x(p(z).attr("coords").split(",").map(parseFloat),3),K=J[0],Q=J[2]-K;z.textContent.endsWith(" ")&&(Q=Q*(z.textContent.length-1)/z.textContent.length);var Z=Q-Y.width;V.style.letterSpacing="".concat(Z/(z.textContent.length-1),"px")}}catch(t){$.e(t)}finally{$.f()}X=F(e,".BRwordElement");var tt,et,rt=F(e,".BRspace"),nt=p(t).find("LINE[coords]").toArray(),ot=Array.from(e.querySelectorAll(".BRlineElement")),it=a,at=S(G(nt,ot));try{for(at.s();!(tt=at.n()).done;){var ct,lt=x(tt.value,2),ut=lt[0],st=lt[1],ft=p(ut).find("WORD").toArray(),ht=this.rtl?i:n,pt=S(G(ft,st.querySelectorAll(".BRwordElement")));try{for(pt.s();!(ct=pt.n()).done;){var dt=x(ct.value,2),yt=dt[0],vt=dt[1],gt=X.get(vt),mt=x(p(yt).attr("coords").split(",").map(parseFloat),3),bt=mt[0],wt=mt[2],xt=this.rtl?-(wt-ht):bt-ht;if(vt.previousElementSibling){var St=vt.previousElementSibling;St.style.letterSpacing="".concat(xt-rt.get(St).width,"px")}else vt.style[this.rtl?"paddingRight":"paddingLeft"]="".concat(xt,"px");this.rtl?ht-=xt+gt.width:ht+=xt+gt.width}}catch(t){pt.e(t)}finally{pt.f()}var Et=Math.min.apply(Math,function(t){if(Array.isArray(t))return P(t)}(et=ft.map((function(t){return parseFloat(p(t).attr("coords").split(",")[3])})))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(et)||E(et)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())-it;st.previousElementSibling&&(st.previousElementSibling.style.lineHeight="".concat(Et,"px"),it+=Et)}}catch(t){at.e(t)}finally{at.f()}return ot[ot.length-1].style.lineHeight="".concat(o-it,"px"),e.appendChild(document.createElement("br")),e}}]),t}(),D=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&b(t,e)}(o,t);var e,r,n=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=w(e);if(r){var o=w(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return function(t,e){if(e&&("object"===d(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,t)});function o(){return R(this,o),n.apply(this,arguments)}return C(o,[{key:"init",value:function(){var t=this,e=Object.assign({},B,this.options.plugins.textSelection);e.enabled&&(this.textSelectionPlugin=new I(e,this.options.vars,this.pageProgression),this.options.plugins.textSelection=e,this.textSelectionPlugin.init(),new u(".BRtextLayer",(function(e){var r;"started"==e&&(null===(r=t.archiveAnalyticsSendEvent)||void 0===r||r.call(t,"BookReader","SelectStart"),t.refs.$br.find(".BRpagecontainer--hasSelection").removeClass("BRpagecontainer--hasSelection"),p(window.getSelection().anchorNode).closest(".BRpagecontainer").addClass("BRpagecontainer--hasSelection"))})).attach()),m(w(o.prototype),"init",this).call(this)}},{key:"_createPageContainer",value:function(t){var e,r=m(w(o.prototype),"_createPageContainer",this).call(this,t);return this.mode!==this.constModeThumb&&r.page&&(null===(e=this.textSelectionPlugin)||void 0===e||e.createTextLayer(r)),r}}]),o}(_);function F(t,e){var r={position:t.style.position,visibility:t.style.visibility,top:t.style.top,left:t.style.left,transform:t.style.transform};t.style.position="absolute",t.style.visibility="hidden",t.style.top="0",t.style.left="0",t.style.transform="none",document.body.appendChild(t);var n=new Map(Array.from(t.querySelectorAll(e)).map((function(t){var e=t.getBoundingClientRect();return[t,new H(e.left+window.scrollX,e.top+window.scrollY,e.width,e.height)]})));return document.body.removeChild(t),Object.assign(t.style,r),n}function M(t){var e=p(t).find("WORD").toArray();return{ocrElement:t,words:e,firstWord:e[0],lastWord:e[e.length-1]}}function N(t,e){var r,n,o;return j().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:r=S(t),i.prev=1,r.s();case 3:if((n=r.n()).done){i.next=9;break}return o=n.value,i.next=7,e(o);case 7:i.next=3;break;case 9:i.next=14;break;case 11:i.prev=11,i.t0=i.catch(1),r.e(i.t0);case 14:return i.prev=14,r.f(),i.finish(14);case 17:case"end":return i.stop()}}),y,null,[[1,11,14,17]])}function W(t){var e,r,n,o,i,a;return j().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:e=void 0,r=void 0,n=void 0,o=S(t),c.prev=4,o.s();case 6:if((i=o.n()).done){c.next=17;break}if(a=i.value,void 0===r){c.next=12;break}return n=a,c.next=12,[e,r,n];case 12:e=r,r=a,n=void 0;case 15:c.next=6;break;case 17:c.next=22;break;case 19:c.prev=19,c.t0=c.catch(4),o.e(c.t0);case 22:return c.prev=22,o.f(),c.finish(22);case 25:if(void 0===r){c.next=28;break}return c.next=28,[e,r,n];case 28:case"end":return c.stop()}}),v,null,[[4,19,22,25]])}function G(t,e){var r,n,o,i;return j().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:r=t[Symbol.iterator](),n=e[Symbol.iterator]();case 2:if(o=r.next(),i=n.next(),!o.done||!i.done){a.next=7;break}return a.abrupt("return");case 7:if(!o.done&&!i.done){a.next=9;break}throw new Error("zip: one of the iterators is done");case 9:return a.next=11,[o.value,i.value];case 11:a.next=2;break;case 13:case"end":return a.stop()}}),g)}function U(t){if(!p(t).attr("coords")&&t.children){var e=p(t).children().toArray();if(0!==e.length){var r,n=S(e);try{for(n.s();!(r=n.n()).done;)U(r.value)}catch(t){n.e(t)}finally{n.f()}var o,i=[],a=S(e);try{for(a.s();!(o=a.n()).done;){var c=o.value;p(c).attr("coords")&&i.push(p(c).attr("coords").split(",").map(parseFloat))}}catch(t){a.e(t)}finally{a.f()}var l=function(t){var e,r=1/0,n=-1/0,o=-1/0,i=1/0,a=S(t);try{for(a.s();!(e=a.n()).done;){var c=x(e.value,4),l=c[0],u=c[1],s=c[2],f=c[3];r=Math.min(r,l),n=Math.max(n,u),o=Math.max(o,s),i=Math.min(i,f)}}catch(t){a.e(t)}finally{a.f()}return[r,n,o,i]}(i);Math.abs(l[0])!=1/0&&p(t).attr("coords",l.join(","))}}}window.BookReader=D;var H=function(){function t(e,r,n,o){R(this,t),this.x=e,this.y=r,this.width=n,this.height=o}return C(t,[{key:"right",get:function(){return this.x+this.width}},{key:"bottom",get:function(){return this.y+this.height}},{key:"top",get:function(){return this.y}},{key:"left",get:function(){return this.x}}]),t}()},2814:function(t,e,r){var n=r(7854),o=r(7293),i=r(1702),a=r(1340),c=r(3111).trim,l=r(1361),u=i("".charAt),s=n.parseFloat,f=n.Symbol,h=f&&f.iterator,p=1/s(l+"-0")!=-1/0||h&&!o((function(){s(Object(h))}));t.exports=p?function(t){var e=c(a(t)),r=s(e);return 0===r&&"-"==u(e,0)?-0:r}:s},6091:function(t,e,r){var n=r(6530).PROPER,o=r(7293),i=r(1361);t.exports=function(t){return o((function(){return!!i[t]()||"
"!=="
"[t]()||n&&i[t].name!==t}))}},4678:function(t,e,r){var n=r(2109),o=r(2814);n({global:!0,forced:parseFloat!=o},{parseFloat:o})},3210:function(t,e,r){"use strict";var n=r(2109),o=r(3111).trim;n({target:"String",proto:!0,forced:r(6091)("trim")},{trim:function(){return o(this)}})}},function(t){t(t.s=4742)}]);
|
2
|
+
(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[423],{4742:function(t,e,r){"use strict";r(6992),r(1539),r(3948),r(9826),r(9714),r(2222),r(4678),r(8674),r(1249),r(2707),r(1038),r(8783),r(7852),r(3210),r(7042),r(9601),r(1532),r(2165),r(2526),r(1817),r(9600),r(6649),r(6078),r(9653),r(2443),r(3680),r(3706),r(2703),r(489),r(4747),r(8309),r(5069),r(4916),r(2419),r(4819),r(5003);var n=r(9860),o=r(5311);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,l(n.key),n)}}function c(t,e,r){return(e=l(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t){var e=function(t,e){if("object"!==i(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===i(e)?e:String(e)}var u=function(){function t(e,r){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,"selecting",!1),c(this,"startedInSelector",!1),c(this,"target",null),c(this,"_onSelectionChange",(function(){var t=window.getSelection();!n.selecting&&t.toString()&&(n.selecting=!0,n.target=o(t.anchorNode).closest(n.selector)[0],n.handler("started",n.target)),!n.selecting||!t.isCollapsed&&t.toString()&&o(t.anchorNode).closest(n.selector)[0]||(n.selecting=!1,n.handler("cleared",n.target))})),this.selector=e,this.handler=r}var e,r;return e=t,(r=[{key:"attach",value:function(){document.addEventListener("selectionchange",this._onSelectionChange)}},{key:"detach",value:function(){document.removeEventListener("selectionchange",this._onSelectionChange)}}])&&a(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}();function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function f(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:h;return null==t?void 0:t.replace(/\{\{([^}]*?)\}\}/g,(function(t,o){if(!o)return t;var i,a=function(t){if(Array.isArray(t))return t}(i=o.split("|").map((function(t){return t.trim()})))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(i)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(t,e):void 0}}(i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),c=a[0],l=a.slice(1);if(!(c in r)&&!(c in e))return t;var u=c in r?r[c]:c in e?e[c]:null;return l.map((function(t){return n[t]})).reduce((function(t,e){return e(t)}),u&&u.toString())}))}r(5306),r(5827);var h={urlencode:encodeURIComponent},p=r(5311);function d(t){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},d(t)}var y=j().mark(N),v=j().mark(W),g=j().mark(G);function m(){return m="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=w(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},m.apply(this,arguments)}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function w(t){return w=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},w(t)}function x(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,c=[],l=!0,u=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);l=!0);}catch(t){u=!0,o=t}finally{try{if(!l&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(u)throw o}}return c}}(t,e)||E(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=E(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function E(t,e){if(t){if("string"==typeof t)return P(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?P(t,e):void 0}}function P(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function j(){j=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function u(t,e,r,o){var i=e&&e.prototype instanceof h?e:h,a=Object.create(i.prototype),c=new O(o||[]);return n(a,"_invoke",{value:S(t,r,c)}),a}function s(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var f={};function h(){}function p(){}function y(){}var v={};l(v,i,(function(){return this}));var g=Object.getPrototypeOf,m=g&&g(g(R([])));m&&m!==e&&r.call(m,i)&&(v=m);var b=y.prototype=h.prototype=Object.create(v);function w(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function x(t,e){function o(n,i,a,c){var l=s(t[n],t,i);if("throw"!==l.type){var u=l.arg,f=u.value;return f&&"object"==d(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(f).then((function(t){u.value=t,a(u)}),(function(t){return o("throw",t,a,c)}))}c(l.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function S(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=E(a,r);if(c){if(c===f)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var l=s(t,e,r);if("normal"===l.type){if(n=r.done?"completed":"suspendedYield",l.arg===f)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(n="completed",r.method="throw",r.arg=l.arg)}}}function E(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,E(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),f;var o=s(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,f;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,f):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,f)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function k(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function O(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function R(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n<t.length;)if(r.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:L}}function L(){return{value:void 0,done:!0}}return p.prototype=y,n(b,"constructor",{value:y,configurable:!0}),n(y,"constructor",{value:p,configurable:!0}),p.displayName=l(y,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,y):(t.__proto__=y,l(t,c,"GeneratorFunction")),t.prototype=Object.create(b),t},t.awrap=function(t){return{__await:t}},w(x.prototype),l(x.prototype,a,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,o,i){void 0===i&&(i=Promise);var a=new x(u(e,r,n,o),i);return t.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},w(b),l(b,c,"Generator"),l(b,i,(function(){return this})),l(b,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},t.values=R,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!t)for(var e in this)"t"===e.charAt(0)&&r.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function n(r,n){return a.type="throw",a.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(c&&l){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,f):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),f},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),k(r),f}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;k(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:R(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),f}},t}function k(t,e,r,n,o,i,a){try{var c=t[i](a),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(n,o)}function O(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){k(i,n,o,a,c,"next",t)}function c(t){k(i,n,o,a,c,"throw",t)}a(void 0)}))}}function R(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function L(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,A(n.key),n)}}function C(t,e,r){return e&&L(t.prototype,e),r&&L(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function A(t){var e=function(t,e){if("object"!==d(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,"string");if("object"!==d(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===d(e)?e:String(e)}var _=window.BookReader,B={enabled:!0,fullDjvuXmlUrl:null,singlePageDjvuXmlUrl:null,jsonp:!1},T=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;R(this,t),this.maxSize=e,this.entries=[]}return C(t,[{key:"add",value:function(t){this.entries.length>=this.maxSize&&this.entries.shift(),this.entries.push(t)}}]),t}(),I=function(){function t(){var e,r,n,o=this,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:B,a=arguments.length>1?arguments[1]:void 0,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"lr";R(this,t),e=this,n=function(t,e){if("started"===t)o.textSelectingMode(e);else{if("cleared"!==t)throw new Error("Unknown type ".concat(t));o.defaultMode(e)}},(r=A(r="_onSelectionChange"))in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,this.options=i,this.optionVariables=a,this.djvuPagesPromise=null,this.rtl="rl"===c,this.pageTextCache=new T,this.maxWordRendered=2500,this.selectionObserver=new u(".BRtextLayer",this._onSelectionChange)}var e,r;return C(t,[{key:"init",value:function(){this.selectionObserver.attach(),this.options.singlePageDjvuXmlUrl||(this.djvuPagesPromise=p.ajax({type:"GET",url:f(this.options.fullDjvuXmlUrl,this.optionVariables),dataType:this.options.jsonp?"jsonp":"html",cache:!0,error:function(t){}}).then((function(t){try{var e=p.parseXML(t);return e&&p(e).find("OBJECT")}catch(t){return}})))}},{key:"getPageText",value:(r=O(j().mark((function t(e){var r,n,o,i,a;return j().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!this.options.singlePageDjvuXmlUrl){t.next=19;break}if(!(r=this.pageTextCache.entries.find((function(t){return t.index==e})))){t.next=4;break}return t.abrupt("return",r.response);case 4:return t.next=6,p.ajax({type:"GET",url:f(this.options.singlePageDjvuXmlUrl,this.optionVariables,{pageIndex:e}),dataType:this.options.jsonp?"jsonp":"html",cache:!0,error:function(t){}});case 6:return n=t.sent,t.prev=7,o=p.parseXML(n),i=o&&p(o).find("OBJECT")[0],this.pageTextCache.add({index:e,response:i}),t.abrupt("return",i);case 14:return t.prev=14,t.t0=t.catch(7),t.abrupt("return",void 0);case 17:t.next=24;break;case 19:return t.next=21,this.djvuPagesPromise;case 21:if(!(a=t.sent)){t.next=24;break}return t.abrupt("return",a[e]);case 24:case"end":return t.stop()}}),t,this,[[7,14]])}))),function(t){return r.apply(this,arguments)})},{key:"interceptCopy",value:function(t){t[0].addEventListener("copy",(function(t){var e=document.getSelection();t.clipboardData.setData("text/plain",e.toString()),t.preventDefault()}))}},{key:"defaultMode",value:function(t){var e=this,r=p(t).closest(".BRpagecontainer");t.style.pointerEvents="none",r.find("img").css("pointer-events","auto"),p(t).off(".textSelectPluginHandler");var n=this.mouseIsDown,o=this.mouseIsDown;n&&(t.style.pointerEvents="auto"),p(t).on("mousedown.textSelectPluginHandler",(function(t){e.mouseIsDown=!0,p(t.target).is(".BRwordElement, .BRspace")&&t.stopPropagation()})),p(t).on("mouseup.textSelectPluginHandler",(function(r){e.mouseIsDown=!1,t.style.pointerEvents="none",o&&(o=!1,r.stopPropagation())}))}},{key:"textSelectingMode",value:function(t){var e=this,r=p(t).closest(".BRpagecontainer");t.style.pointerEvents="all",r.find("img").css("pointer-events","none"),p(t).off(".textSelectPluginHandler"),p(t).on("mousedown.textSelectPluginHandler",(function(t){e.mouseIsDown=!0,t.stopPropagation()})),p(t).on("mouseup.textSelectPluginHandler",(function(t){e.mouseIsDown=!1,t.stopPropagation()}))}},{key:"stopPageFlip",value:function(t){var e=this,r=t.find(".BRtextLayer");r.length&&(r.each((function(t,r){return e.defaultMode(r)})),this.interceptCopy(t))}},{key:"createTextLayer",value:(e=O(j().mark((function t(e){var r,o,i,a,c,l,u,s,f,h,d,y,v,g,m,b,w,E,P,k,O,R,L,C,A=this;return j().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=e.page.index,!(o=e.$container).find(".BRtextLayer").length){t.next=5;break}return t.abrupt("return");case 5:return t.next=7,this.getPageText(r);case 7:if(i=t.sent){t.next=10;break}return t.abrupt("return");case 10:if(U(i),!((a=p(i).find("WORD").length)>this.maxWordRendered)){t.next=15;break}return console.log("Page ".concat(r," has too many words (").concat(a," > ").concat(this.maxWordRendered,"). Not rendering text layer.")),t.abrupt("return");case 15:c=(0,n.RS)(e.page,"BRtextLayer"),l=parseFloat(e.$container[0].style.width)/e.page.width,u=parseFloat(e.$container[0].style.height)/e.page.height,c.style.transform="scale(".concat(l,", ").concat(u,")"),c.setAttribute("dir",this.rtl?"rtl":"ltr"),s=p(i).find("PARAGRAPH[coords]").toArray(),f=s.map((function(t){var e=A.renderParagraph(t);return c.appendChild(e),e})),h=M(c,".BRparagraphElement"),d=0,y=S(G(s,f));try{for(y.s();!(v=y.n()).done;)g=x(v.value,2),m=g[0],b=g[1],w=p(m).attr("coords").split(",").map(parseFloat),E=h.get(b),P=x(w,4),k=P[0],O=P[2],R=P[3],L=this.rtl?E.right-O:k-E.left,C=R-(E.top+d),b.style[this.rtl?"marginRight":"marginLeft"]="".concat(L,"px"),b.style.marginTop="".concat(C,"px"),d+=C,c.appendChild(b)}catch(t){y.e(t)}finally{y.f()}o.append(c),this.stopPageFlip(o);case 28:case"end":return t.stop()}}),t,this)}))),function(t){return e.apply(this,arguments)})},{key:"renderParagraph",value:function(t){var e=document.createElement("p");e.classList.add("BRparagraphElement");var r=x(p(t).attr("coords").split(",").map(parseFloat),4),n=r[0],o=r[1],i=r[2],a=r[3],c=[],l=p(t).find("LINE[coords]").toArray();if(!l.length)return e;var u,s=S(W(N(l,F)));try{for(s.s();!(u=s.n()).done;){var f=x(u.value,3),h=f[0],d=f[1],y=f[2],v=d.ocrElement==l[l.length-1],g=document.createElement("span");g.classList.add("BRlineElement");var m,b=S(d.words.entries());try{for(b.s();!(m=b.n()).done;){var w=x(m.value,2),j=w[0],k=w[1],O=x(p(k).attr("coords").split(",").map(parseFloat),4),R=O[1],L=O[2],C=O[3],A=R-C;if(c.push(A),0==j&&null!=h&&h.lastWord.textContent.trim().endsWith("-")){var _=x(p((y||h).firstWord).attr("coords").split(",").map(parseFloat),3)[0];p(k).attr("coords","".concat(_,",").concat(R,",").concat(L,",").concat(C))}var B=document.createElement("span");if(B.setAttribute("class","BRwordElement"),B.textContent=k.textContent.trim(),j>0){var T=document.createElement("span");T.classList.add("BRspace"),T.textContent=" ",g.append(T),g.appendChild(document.createTextNode(" "))}g.appendChild(B)}}catch(t){b.e(t)}finally{b.f()}var I=d.lastWord.textContent.trim().endsWith("-"),D=g.children[g.children.length-1];I&&!v&&(D.textContent=D.textContent.trim().slice(0,-1),D.classList.add("BRwordElement--hyphen")),e.appendChild(g),v||I||e.appendChild(document.createTextNode(" "))}}catch(t){s.e(t)}finally{s.f()}c.sort((function(t,e){return t-e}));var U=c[Math.floor(.85*c.length)]+4;e.style.left="".concat(n,"px"),e.style.top="".concat(a,"px"),e.style.width="".concat(i-n,"px"),e.style.height="".concat(o-a,"px"),e.style.fontSize="".concat(U,"px");var H,X=M(e,".BRwordElement"),$=S(G(p(t).find("WORD").toArray(),e.querySelectorAll(".BRwordElement")));try{for($.s();!(H=$.n()).done;){var q=x(H.value,2),z=q[0],V=q[1],Y=X.get(V),J=x(p(z).attr("coords").split(",").map(parseFloat),3),K=J[0],Q=J[2]-K;z.textContent.endsWith(" ")&&(Q=Q*(z.textContent.length-1)/z.textContent.length);var Z=Q-Y.width;V.style.letterSpacing="".concat(Z/(z.textContent.length-1),"px")}}catch(t){$.e(t)}finally{$.f()}X=M(e,".BRwordElement");var tt,et,rt=M(e,".BRspace"),nt=p(t).find("LINE[coords]").toArray(),ot=Array.from(e.querySelectorAll(".BRlineElement")),it=a,at=S(G(nt,ot));try{for(at.s();!(tt=at.n()).done;){var ct,lt=x(tt.value,2),ut=lt[0],st=lt[1],ft=p(ut).find("WORD").toArray(),ht=this.rtl?i:n,pt=S(G(ft,st.querySelectorAll(".BRwordElement")));try{for(pt.s();!(ct=pt.n()).done;){var dt=x(ct.value,2),yt=dt[0],vt=dt[1],gt=X.get(vt),mt=x(p(yt).attr("coords").split(",").map(parseFloat),3),bt=mt[0],wt=mt[2],xt=this.rtl?-(wt-ht):bt-ht;if(vt.previousElementSibling){var St=vt.previousElementSibling;St.style.letterSpacing="".concat(xt-rt.get(St).width,"px")}else vt.style[this.rtl?"paddingRight":"paddingLeft"]="".concat(xt,"px");this.rtl?ht-=xt+gt.width:ht+=xt+gt.width}}catch(t){pt.e(t)}finally{pt.f()}var Et=Math.min.apply(Math,function(t){if(Array.isArray(t))return P(t)}(et=ft.map((function(t){return parseFloat(p(t).attr("coords").split(",")[3])})))||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(et)||E(et)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())-it;st.previousElementSibling&&(st.previousElementSibling.style.lineHeight="".concat(Et,"px"),it+=Et)}}catch(t){at.e(t)}finally{at.f()}return ot[ot.length-1].style.lineHeight="".concat(o-it,"px"),e.appendChild(document.createElement("br")),e}}]),t}(),D=function(t){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&b(t,e)}(o,t);var e,r,n=(e=o,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}(),function(){var t,n=w(e);if(r){var o=w(this).constructor;t=Reflect.construct(n,arguments,o)}else t=n.apply(this,arguments);return function(t,e){if(e&&("object"===d(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,t)});function o(){return R(this,o),n.apply(this,arguments)}return C(o,[{key:"init",value:function(){var t=this,e=Object.assign({},B,this.options.plugins.textSelection);e.enabled&&(this.textSelectionPlugin=new I(e,this.options.vars,this.pageProgression),this.options.plugins.textSelection=e,this.textSelectionPlugin.init(),new u(".BRtextLayer",(function(e){var r;"started"==e&&(null===(r=t.archiveAnalyticsSendEvent)||void 0===r||r.call(t,"BookReader","SelectStart"),t.refs.$br.find(".BRpagecontainer--hasSelection").removeClass("BRpagecontainer--hasSelection"),p(window.getSelection().anchorNode).closest(".BRpagecontainer").addClass("BRpagecontainer--hasSelection"))})).attach()),m(w(o.prototype),"init",this).call(this)}},{key:"_createPageContainer",value:function(t){var e,r=m(w(o.prototype),"_createPageContainer",this).call(this,t);return this.mode!==this.constModeThumb&&r.page&&(null===(e=this.textSelectionPlugin)||void 0===e||e.createTextLayer(r)),r}}]),o}(_);function M(t,e){var r={position:t.style.position,visibility:t.style.visibility,top:t.style.top,left:t.style.left,transform:t.style.transform};t.style.position="absolute",t.style.visibility="hidden",t.style.top="0",t.style.left="0",t.style.transform="none",document.body.appendChild(t);var n=new Map(Array.from(t.querySelectorAll(e)).map((function(t){var e=t.getBoundingClientRect();return[t,new H(e.left+window.scrollX,e.top+window.scrollY,e.width,e.height)]})));return document.body.removeChild(t),Object.assign(t.style,r),n}function F(t){var e=p(t).find("WORD").toArray();return{ocrElement:t,words:e,firstWord:e[0],lastWord:e[e.length-1]}}function N(t,e){var r,n,o;return j().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:r=S(t),i.prev=1,r.s();case 3:if((n=r.n()).done){i.next=9;break}return o=n.value,i.next=7,e(o);case 7:i.next=3;break;case 9:i.next=14;break;case 11:i.prev=11,i.t0=i.catch(1),r.e(i.t0);case 14:return i.prev=14,r.f(),i.finish(14);case 17:case"end":return i.stop()}}),y,null,[[1,11,14,17]])}function W(t){var e,r,n,o,i,a;return j().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:e=void 0,r=void 0,n=void 0,o=S(t),c.prev=4,o.s();case 6:if((i=o.n()).done){c.next=17;break}if(a=i.value,void 0===r){c.next=12;break}return n=a,c.next=12,[e,r,n];case 12:e=r,r=a,n=void 0;case 15:c.next=6;break;case 17:c.next=22;break;case 19:c.prev=19,c.t0=c.catch(4),o.e(c.t0);case 22:return c.prev=22,o.f(),c.finish(22);case 25:if(void 0===r){c.next=28;break}return c.next=28,[e,r,n];case 28:case"end":return c.stop()}}),v,null,[[4,19,22,25]])}function G(t,e){var r,n,o,i;return j().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:r=t[Symbol.iterator](),n=e[Symbol.iterator]();case 2:if(o=r.next(),i=n.next(),!o.done||!i.done){a.next=7;break}return a.abrupt("return");case 7:if(!o.done&&!i.done){a.next=9;break}throw new Error("zip: one of the iterators is done");case 9:return a.next=11,[o.value,i.value];case 11:a.next=2;break;case 13:case"end":return a.stop()}}),g)}function U(t){if(!p(t).attr("coords")&&t.children){var e=p(t).children().toArray();if(0!==e.length){var r,n=S(e);try{for(n.s();!(r=n.n()).done;)U(r.value)}catch(t){n.e(t)}finally{n.f()}var o,i=[],a=S(e);try{for(a.s();!(o=a.n()).done;){var c=o.value;p(c).attr("coords")&&i.push(p(c).attr("coords").split(",").map(parseFloat))}}catch(t){a.e(t)}finally{a.f()}var l=function(t){var e,r=1/0,n=-1/0,o=-1/0,i=1/0,a=S(t);try{for(a.s();!(e=a.n()).done;){var c=x(e.value,4),l=c[0],u=c[1],s=c[2],f=c[3];r=Math.min(r,l),n=Math.max(n,u),o=Math.max(o,s),i=Math.min(i,f)}}catch(t){a.e(t)}finally{a.f()}return[r,n,o,i]}(i);Math.abs(l[0])!=1/0&&p(t).attr("coords",l.join(","))}}}window.BookReader=D;var H=function(){function t(e,r,n,o){R(this,t),this.x=e,this.y=r,this.width=n,this.height=o}return C(t,[{key:"right",get:function(){return this.x+this.width}},{key:"bottom",get:function(){return this.y+this.height}},{key:"top",get:function(){return this.y}},{key:"left",get:function(){return this.x}}]),t}()},6091:function(t,e,r){var n=r(6530).PROPER,o=r(7293),i=r(1361);t.exports=function(t){return o((function(){return!!i[t]()||"
"!=="
"[t]()||n&&i[t].name!==t}))}},3210:function(t,e,r){"use strict";var n=r(2109),o=r(3111).trim;n({target:"String",proto:!0,forced:r(6091)("trim")},{trim:function(){return o(this)}})}},function(t){t(t.s=4742)}]);
|
3
3
|
//# sourceMappingURL=plugin.text_selection.js.map
|