@internetarchive/bookreader 5.0.0-92 → 5.0.0-93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
|
|
1
1
|
/*! For license information please see plugin.search.js.LICENSE.txt */
|
2
|
-
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[924],{472:function(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}function o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,"string");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}r.d(t,{S:function(){return i}}),r(2675),r(9463),r(2259),r(5700),r(3792),r(9572),r(8130),r(9085),r(6099),r(7764),r(2953);var i=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=t,this.options},(t=[{key:"setup",value:function(e){this.options=Object.assign({},this.options,e)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(e){}},{key:"_configureToolbar",value:function(e){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(e){}}])&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},9007:function(e,t,r){r(2675),r(9463),r(6412),r(2259),r(5700),r(8125),r(8706),r(113),r(3418),r(3792),r(8598),r(2062),r(4490),r(4782),r(9572),r(2010),r(4731),r(479),r(8130),r(5506),r(3851),r(875),r(6099),r(8459),r(3362),r(825),r(888),r(7495),r(8781),r(7764),r(5440),r(5746),r(3500),r(2953),r(8408);var n=r(6257),a=r(1774),o=(r(8940),r(1669));function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function c(e){var t=function(e,t){if("object"!=i(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var u=function(){return e=function e(t){var r=t.br,n=t.searchCancelledCallback,a=void 0===n?function(){}:n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=r,this.matches=[],this.cacheDOMElements(),this.cancelSearch=a},t=[{key:"init",value:function(){this.bindEvents()}},{key:"cacheDOMElements",value:function(){this.dom={},this.dom.toolbarSearch=this.buildToolbarSearch()}},{key:"setQuery",value:function(e){this.br.$('[name="query"]').val(e)}},{key:"emptyMatches",value:function(){this.matches=[]}},{key:"removeResultPins",value:function(){this.br.$(".BRnavpos .BRsearch").remove()}},{key:"clearSearchFieldAndResults",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.br._plugins.search.removeSearchResults(),this.removeResultPins(),this.emptyMatches(),this.setQuery(""),this.teardownSearchNavigation(),e&&this.br.trigger("SearchResultsCleared")}},{key:"toggleSidebar",value:function(){this.br.trigger("ToggleSearchMenu")}},{key:"renderSearchNavigation",value:function(){var e="BRsearch-navigation";o(".BRnav").before('\n <div class="'.concat(e,'">\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">').concat(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 ')),this.dom.searchNavigation=o(".".concat(e))}},{key:"resultsPosition",value:function(){var e="".concat(this.matches.length," result").concat(1===this.matches.length?"":"s");return~this.currentMatchIndex&&(e="".concat(this.currentMatchIndex+1," / ").concat(this.matches.length)),e}},{key:"bindSearchNavigationEvents",value:function(){if(this.dom.searchNavigation){var e="searchNavigation";this.dom.searchNavigation.on("click.".concat(e),".clear",this.clearSearchFieldAndResults.bind(this)).on("click.".concat(e),".prev",this.showPrevResult.bind(this)).on("click.".concat(e),".next",this.showNextResult.bind(this)).on("click.".concat(e),".toggle-sidebar",this.toggleSidebar.bind(this)).on("click.".concat(e),!1)}}},{key:"showPrevResult",value:function(){0!==this.currentMatchIndex&&(this.br.mode===this.br.constModeThumb&&this.br.switchMode(this.br.constMode1up),~this.currentMatchIndex||(this.currentMatchIndex=this.getClosestMatchIndex((function(e,t,r){return t[0]>r}))+1),this.br.$(".BRnavline .BRsearch").eq(--this.currentMatchIndex).click(),this.updateResultsPosition(),this.updateSearchNavigationButtons())}},{key:"showNextResult",value:function(){this.currentMatchIndex+1!==this.matches.length&&(this.br.mode===this.br.constModeThumb&&this.br.switchMode(this.br.constMode1up),~this.currentMatchIndex||(this.currentMatchIndex=this.getClosestMatchIndex((function(e,t,r){return e[e.length-1]>r}))-1),this.br.$(".BRnavline .BRsearch").eq(++this.currentMatchIndex).click(),this.updateResultsPosition(),this.updateSearchNavigationButtons())}},{key:"getClosestMatchIndex",value:function(e){var t=this.matches.map((function(e){return e.par[0].page})),r=this.br.currentIndex()+1,n=function(t,r){if(1===t.length)return t[0];var a=t.slice(0,t.length/2),o=t.slice(t.length/2);return n(e(a,o,r)?a:o,r)},a=n(t,r);return this.matches.indexOf(this.matches.find((function(e){return e.par[0].page===a})))}},{key:"updateResultsPosition",value:function(){this.dom.searchNavigation&&this.dom.searchNavigation.find("[data-id=resultsCount]").text(this.resultsPosition())}},{key:"updateSearchNavigationButtons",value:function(){this.dom.searchNavigation&&(this.dom.searchNavigation.find(".prev").attr("disabled",!this.currentMatchIndex),this.dom.searchNavigation.find(".next").attr("disabled",this.currentMatchIndex+1===this.matches.length))}},{key:"teardownSearchNavigation",value:function(){this.dom.searchNavigation||(this.dom.searchNavigation=o(".BRsearch-navigation")),this.dom.searchNavigation.length&&(this.dom.searchNavigation.off(".searchNavigation").remove(),this.dom.searchNavigation=null,this.br.resize())}},{key:"setCurrentMatchIndex",value:function(){var e;this.br.mode!==this.br.constModeThumb?(e=this.br.mode===this.br.constMode2up?this.find2upMatchingSearchResult():this.find1upMatchingSearchResult(),this.currentMatchIndex=this.matches.indexOf(e)):this.currentMatchIndex=-1}},{key:"find1upMatchingSearchResult",value:function(){var e=this;return this.matches.find((function(t){return e.br.currentIndex()===t.par[0].page-1}))}},{key:"find2upMatchingSearchResult",value:function(){var e=this;return this.matches.find((function(t){return e.br._isIndexDisplayed(t.par[0].page-1)}))}},{key:"updateSearchNavigation",value:function(){this.matches.length&&(this.setCurrentMatchIndex(),this.updateResultsPosition(),this.updateSearchNavigationButtons())}},{key:"togglePinsFor",value:function(e){var t=e?"visible":"hidden";this.br.refs.$BRfooter.find(".BRsearch").css({visibility:t})}},{key:"buildToolbarSearch",value:function(){var e=document.createElement("span");return e.classList.add("BRtoolbarSection","BRtoolbarSectionSearch"),e.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="'.concat(this.br.imagesBaseURL,'icon_search_button.svg" />\n </button>\n </form>\n '),e}},{key:"renderPins",value:function(e){var t=this;e.forEach((function(e){var r=t.br.book.leafNumToIndex(e.par[0].page),n=t.br.constructor.util.cssPercentage(r,t.br.book.getNumLeafs()-1),a=e.html;if(a.length>200){var i=Math.max(0,a.indexOf("<mark>")-100);0!=i&&(a="…"+e.html.substring(i).replace(/^\S+/,""))}o("<div>").addClass("BRsearch").css({left:n}).attr("title","Search result").append('\n <div class="BRquery">\n <main>'.concat(a,"</main>\n <footer>Page ").concat(e.displayPageNumber,"</footer>\n </div>\n ")).appendTo(t.br.$(".BRnavline")).on("mouseenter",(function(e){var t=e.currentTarget,r=t.querySelector(".BRquery"),n=r.getBoundingClientRect(),a=t.getBoundingClientRect(),i=2*parseInt(getComputedStyle(r).paddingLeft);n.x-i<0&&r.style.setProperty("transform","translateX(-".concat(a.left-i,"px)")),o(".BRsearch,.BRchapter").removeClass("front"),o(e.target).addClass("front")})).on("mouseleave",(function(e){return o(e.target).removeClass("front")})).on("click",(function(){t.br._plugins.search.jumpToMatch(e.matchIndex)}))}))}},{key:"toggleSearchPending",value:function(){var e=this;arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.br.showProgressPopup("Search results will appear below...",(function(){return e.progressPopupClosed()})):this.br.removeProgressPopup()}},{key:"progressPopupClosed",value:function(){this.toggleSearchPending(),this.cancelSearch()}},{key:"renderErrorModal",value:function(){var e="".concat(arguments.length>0&&void 0!==arguments[0]&&arguments[0]?"":"The text may still be processing. ","Please try again.");this.renderModalMessage("\n Sorry, there was an error with your search.\n <br />\n ".concat(e,"\n ")),this.delayModalRemovalFor(4e3)}},{key:"renderBookNotIndexedModal",value:function(){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 "),this.delayModalRemovalFor(5e3)}},{key:"renderResultsEmptyModal",value:function(){this.renderModalMessage("No matches were found."),this.delayModalRemovalFor(2e3)}},{key:"renderModalMessage",value:function(e){var t=document.createElement("div");t.classList.add("BRprogresspopup","search_modal"),t.innerHTML=e,document.querySelector(this.br.el).append(t)}},{key:"delayModalRemovalFor",value:function(e){setTimeout(this.br.removeProgressPopup.bind(this.br),e)}},{key:"submitHandler",value:function(e){e.preventDefault();var t=e.target.querySelector('[name="query"]').value;return!!t.length&&(this.br.search(t),this.emptyMatches(),this.toggleSearchPending(!0),!1)}},{key:"handleSearchCallback",value:function(e,t){var r=this,n=t.results,a=t.options;this.matches=n.matches,this.setCurrentMatchIndex(),this.teardownSearchNavigation(),this.renderSearchNavigation(),this.bindSearchNavigationEvents(),this.renderPins(n.matches),this.toggleSearchPending(!1),a.goToFirstResult?o(document).one("BookReader:pageChanged",(function(){r.br.resize()})):this.br.resize()}},{key:"handleSearchStarted",value:function(){this.emptyMatches(),this.br._plugins.search.removeSearchHilites(),this.removeResultPins(),this.toggleSearchPending(!0),this.teardownSearchNavigation(),this.setQuery(this.br._plugins.search.searchTerm)}},{key:"handleSearchCallbackError",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.toggleSearchPending(!1);var r=null==t||null===(e=t.detail)||void 0===e||null===(e=e.props)||void 0===e||null===(e=e.results)||void 0===e?void 0:e.indexed;this.renderErrorModal(r)}},{key:"handleSearchCallbackBookNotIndexed",value:function(){this.toggleSearchPending(!1),this.renderBookNotIndexedModal()}},{key:"handleSearchCallbackEmpty",value:function(){this.toggleSearchPending(!1),this.renderResultsEmptyModal()}},{key:"bindEvents",value:function(){var e="BookReader:";window.addEventListener("".concat(e,"SearchCallbackError"),this.handleSearchCallbackError.bind(this)),o(document).on("".concat(e,"SearchCallback"),this.handleSearchCallback.bind(this)).on("".concat(e,"SearchStarted"),this.handleSearchStarted.bind(this)).on("".concat(e,"SearchCallbackBookNotIndexed"),this.handleSearchCallbackBookNotIndexed.bind(this)).on("".concat(e,"SearchCallbackEmpty"),this.handleSearchCallbackEmpty.bind(this)).on("".concat(e,"pageChanged"),this.updateSearchNavigation.bind(this)),this.dom.toolbarSearch.querySelector("form").addEventListener("submit",this.submitHandler.bind(this))}}],t&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}(),l=u;function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return s}}(e,t)||d(e,t)||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 f(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=d(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}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 o,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw o}}}}function d(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function v(e,t,r){var a=(0,n.escapeRegExp)((0,n.escapeHTML)(t)),o=(0,n.escapeRegExp)((0,n.escapeHTML)(r)),i=new RegExp("".concat(a,"([^]+?)").concat(o),"g");return(0,n.escapeHTML)(e).replace(i,"<mark>$1</mark>").replace(/(\b)- /g,"$1")}r(4864);var y=r(472),g=r(1743),b=r(1669),m=r(1669);function S(e){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S(e)}function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return s}}(e,t)||x(e,t)||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 w(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=x(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}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 o,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw o}}}}function x(e,t){if(e){if("string"==typeof e)return R(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?R(e,t):void 0}}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function P(){P=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var o=t&&t.prototype instanceof g?t:g,i=Object.create(o.prototype),s=new j(n||[]);return a(i,"_invoke",{value:I(e,r,s)}),i}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var f="suspendedStart",d="suspendedYield",p="executing",v="completed",y={};function g(){}function b(){}function m(){}var k={};u(k,i,(function(){return this}));var w=Object.getPrototypeOf,x=w&&w(w(B([])));x&&x!==r&&n.call(x,i)&&(k=x);var R=m.prototype=g.prototype=Object.create(k);function C(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function T(e,t){function r(a,o,i,s){var c=h(e[a],e,o);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==S(l)&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,i,s)}),(function(e){r("throw",e,i,s)})):t.resolve(l).then((function(e){u.value=e,i(u)}),(function(e){return r("throw",e,i,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return o=o?o.then(a,a):a()}})}function I(t,r,n){var a=f;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:e,done:!0}}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var c=M(s,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===f)throw a=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var u=h(t,r,n);if("normal"===u.type){if(a=n.done?v:d,u.arg===y)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(a=v,n.method="throw",n.arg=u.arg)}}}function M(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,M(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=h(a,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function B(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(S(t)+" is not iterable")}return b.prototype=m,a(R,"constructor",{value:m,configurable:!0}),a(m,"constructor",{value:b,configurable:!0}),b.displayName=u(m,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,c,"GeneratorFunction")),e.prototype=Object.create(R),e},t.awrap=function(e){return{__await:e}},C(T.prototype),u(T.prototype,s,(function(){return this})),t.AsyncIterator=T,t.async=function(e,r,n,a,o){void 0===o&&(o=Promise);var i=new T(l(e,r,n,a),o);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},C(R),u(R,c,"Generator"),u(R,i,(function(){return this})),u(R,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=B,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return s.type="throw",s.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),N(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;N(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:B(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function C(e,t,r,n,a,o,i){try{var s=e[o](i),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function T(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var o=e.apply(t,r);function i(e){C(o,n,a,i,s,"next",e)}function s(e){C(o,n,a,i,s,"throw",e)}i(void 0)}))}}function I(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,O(n.key),n)}}function M(e,t,r){return t=B(t),function(e,t){if(t&&("object"==S(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,E()?Reflect.construct(t,r||[],B(e).constructor):t.apply(e,r))}function E(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(E=function(){return!!e})()}function N(e,t,r,n){var a=j(B(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof a?function(e){return a.apply(r,e)}:a}function j(){return j="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=B(e)););return e}(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(arguments.length<3?e:r):a.value}},j.apply(null,arguments)}function B(e){return B=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},B(e)}function _(e,t){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_(e,t)}function O(e){var t=function(e,t){if("object"!=S(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=S(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==S(t)?t:t+""}var L=window.BookReader,A=function(e){function t(){var e,r,n,a;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=new Array(o),s=0;s<o;s++)i[s]=arguments[s];return r=e=M(this,t,[].concat(i)),n="options",a={enabled:!0,preTag:"{{{",postTag:"}}}",searchInsideUrl:"/fulltext/inside.php?"+["q={{query|urlencode}}","pre_tag={{preTag|urlencode}}","post_tag={{postTag|urlencode}}"].join("&"),initialSearchTerm:null,goToFirstResult:!1},(n=O(n))in r?Object.defineProperty(r,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[n]=a,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_(e,t)}(t,e),r=t,o=[{key:"setup",value:function(e){var r=this;N(t,"setup",this,3)([e]),this.searchTerm="",this.searchResults=null,this.searchInsideUrl=this.options.searchInsideUrl,this.enabled=this.options.enabled,this.searchXHR=null,this._searchBoxesByIndex={},this.enabled?this.searchView=new l({br:this.br,searchCancelledCallback:function(){r._cancelSearch(),r.br.trigger("SearchCanceled",{term:r.searchTerm,instance:r.br})}}):this.searchView=null}},{key:"init",value:function(){N(t,"init",this,3)([]),this.enabled&&(this.searchView.init(),this.options.initialSearchTerm&&this.search(this.options.initialSearchTerm,{goToFirstResult:this.options.goToFirstResult,suppressFragmentChange:!1}))}},{key:"_configureToolbar",value:function(e){if(this.enabled)return this.searchView.dom.toolbarSearch&&e.find(".BRtoolbarSectionInfo").after(this.searchView.dom.toolbarSearch),e}},{key:"_configurePageContainer",value:function(e){if(this.enabled&&e.page&&e.page.index in this._searchBoxesByIndex){var t=e.page.index,r=this._searchBoxesByIndex[t];(0,a.KL)("searchHiliteLayer",r,e.page,e.$container[0],r.map((function(e){return"match-index-".concat(e.matchIndex)})))}return e}},{key:"search",value:(s=T(P().mark((function e(){var t,r,n,a,o,i,s=this,c=arguments;return P().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=c.length>0&&void 0!==c[0]?c[0]:"",r=c.length>1&&void 0!==c[1]?c[1]:{},n={goToFirstResult:!1,disablePopup:!1,suppressFragmentChange:!1,error:null,success:null},a=b.extend({},n,r),this.suppressFragmentChange=a.suppressFragmentChange,this.searchCancelled=!1,this.searchTerm=t.replace(/\//g," "),a.suppressFragmentChange||this.br.trigger(L.eventNames.fragmentChange),o=(0,g.g)(this.options.searchInsideUrl,this.br.options.vars,{query:t,preTag:this.options.preTag,postTag:this.options.postTag}),i=function(e){if(!s.searchCancelled){var t=e.error||!e.matches.length,r="function"==typeof a.error,n="function"==typeof a.success;t?(console.error("Search Inside Response Error",e.error||"matches.length == 0"),r?a.error.call(s,e,a):s.BRSearchCallbackError(e)):n?a.success.call(s,e,a):s.BRSearchCallback(e,a)}},this.br.trigger("SearchStarted",{term:this.searchTerm,instance:this.br}),e.t0=i,e.next=14,m.ajax({url:o,cache:!0,xhrFields:{withCredentials:this.br.protected},beforeSend:function(e){s.searchXHR=e}});case 14:e.t1=e.sent,(0,e.t0)(e.t1);case 16:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"_cancelSearch",value:function(){var e;null===(e=this.searchXHR)||void 0===e||e.abort(),this.searchView.clearSearchFieldAndResults(!1),this.searchTerm="",this.searchXHR=null,this.searchCancelled=!0,this.searchResults=null}},{key:"cancelSearchRequest",value:function(){this.searchCancelled=!0,null!==this.searchXHR&&(this._cancelSearch(),this.searchView.toggleSearchPending(),this.br.trigger("SearchCanceled",{term:this.searchTerm,instance:this.br}))}},{key:"BRSearchCallback",value:function(e,t){var r=this;!function(e,t,n,a){var o,i,s=f(e.matches.entries());try{for(s.s();!(o=s.n()).done;){var c=h(o.value,2),u=c[0],l=c[1];l.matchIndex=u,l.displayPageNumber=(i=l.par[0].page,r.br.book.getPageNum(r.br.book.leafNumToIndex(i))),l.html=v(l.text,n,a);var d,p=f(l.par);try{for(p.s();!(d=p.n()).done;){var y,g=f(d.value.boxes);try{for(g.s();!(y=g.n()).done;)y.value.matchIndex=u}catch(e){g.e(e)}finally{g.f()}}}catch(e){p.e(e)}finally{p.f()}}}catch(e){s.e(e)}finally{s.f()}}(e,0,this.options.preTag,this.options.postTag),this.searchResults=e||null,this.updateSearchHilites(),this.br.removeProgressPopup(),t.goToFirstResult&&this.jumpToMatch(0),this.br.trigger("SearchCallback",{results:e,options:t,instance:this.br})}},{key:"BRSearchCallbackError",value:function(e){this._BRSearchCallbackError(e)}},{key:"_BRSearchCallbackError",value:function(e){this.searchResults=e;var t={term:this.searchTerm,results:e,instance:this.br};if(e.error)this.br.trigger("SearchCallbackError",t);else if(0==e.matches.length){if(!1===e.indexed)return void this.br.trigger("SearchCallbackBookNotIndexed",t);this.br.trigger("SearchCallbackEmpty",t)}}},{key:"updateSearchHilites",value:function(){var e,t=(null===(e=this.searchResults)||void 0===e?void 0:e.matches)||[],r={};this.removeSearchHilites();var n,o=w(t);try{for(o.s();!(n=o.n()).done;){var i,s=w(n.value.par[0].boxes);try{for(s.s();!(i=s.n()).done;){var c=i.value,u=this.br.book.leafNumToIndex(c.page);(r[u]||(r[u]=[])).push(c)}}catch(e){s.e(e)}finally{s.f()}}}catch(e){o.e(e)}finally{o.f()}for(var l=0,h=Object.entries(r);l<h.length;l++){var f,d=k(h[l],2),p=d[0],v=d[1],y=parseFloat(p),g=this.br.book.getPage(y),b=w(this.br.getActivePageContainerElementsForIndex(y));try{for(b.s();!(f=b.n()).done;){var m=f.value;(0,a.KL)("searchHiliteLayer",v,g,m,v.map((function(e){return"match-index-".concat(e.matchIndex)})))}}catch(e){b.e(e)}finally{b.f()}}this._searchBoxesByIndex=r}},{key:"removeSearchHilites",value:function(){m(this.br.getActivePageContainerElements()).find(".searchHiliteLayer").remove()}},{key:"jumpToMatch",value:(i=T(P().mark((function e(t){var r,a,o,i,s,c,u,l,h,f,d,p;return P().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=null===(r=this.searchResults)||void 0===r?void 0:r.matches[t],o=this.br.book,i=o.leafNumToIndex(a.par[0].page),s=o.getPage(i),c=Math.abs(this.br.currentIndex()-i)<3,u=!1,s.isViewable){e.next=17;break}return e.next=9,fetch("/services/bookreader/request_page?"+new URLSearchParams({id:this.options.bookId,subprefix:this.options.subPrefix,leafNum:s.leafNum})).then((function(e){return e.json()}));case 9:l=e.sent,h=w(l.value);try{for(h.s();!(f=h.n()).done;)d=f.value,o.getPage(o.leafNumToIndex(d)).makeViewable()}catch(e){h.e(e)}finally{h.f()}if(l.value.length||(o.getPage(i).makeViewable(),u=!0),this.br._modes.mode1Up.mode1UpLit.updatePages(),this.br.activeMode!=this.br._modes.mode1Up){e.next=17;break}return e.next=17,this.br._modes.mode1Up.mode1UpLit.updateComplete;case 17:return this.br._isIndexDisplayed(i)||(this.suppressFragmentChange=!1,this.br.jumpToIndex(i)),u&&o.getPage(i).makeViewable(!1),e.next=21,(0,n.poll)((function(){return m("rect.match-index-".concat(a.matchIndex))}),{until:function(e){return e.length>0}});case 21:if(!(p=e.sent).length){e.next=28;break}return p.css("animation","none"),p[0].scrollIntoView({block:this.br.constMode1up==this.br.mode||this.br.isFullscreenActive?"center":"nearest",inline:"center",behavior:c?"smooth":"auto"}),e.next=27,new Promise((function(e){return setTimeout(e,100)}));case 27:p.removeAttr("style");case 28:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"removeSearchResults",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.removeSearchHilites(),this.searchTerm=null,this.searchResults=null,e||this.br.trigger(L.eventNames.fragmentChange)}}],o&&I(r.prototype,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i,s}(y.S);null==L||L.registerPlugin("search",A)},1743:function(e,t,r){function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o;return null==e?void 0:e.replace(/\{\{([^}]*?)\}\}/g,(function(e,o){if(!o)return e;var i,s=function(e){if(Array.isArray(e))return e}(i=o.split("|").map((function(e){return e.trim()})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):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=s[0],u=s.slice(1);if(!(c in r)&&!(c in t))return e;var l=c in r?r[c]:c in t?t[c]:null;return u.map((function(e){return a[e]})).reduce((function(e,t){return t(e)}),l&&l.toString())}))}r.d(t,{g:function(){return a}}),r(2675),r(9463),r(2259),r(3418),r(3792),r(2062),r(2712),r(4782),r(2010),r(6099),r(7495),r(8781),r(7764),r(5440),r(2762),r(2953);var o={urlencode:encodeURIComponent}},706:function(e,t,r){var n=r(350).PROPER,a=r(9039),o=r(7452);e.exports=function(e){return a((function(){return!!o[e]()||"
"!=="
"[e]()||n&&o[e].name!==e}))}},2762:function(e,t,r){var n=r(6518),a=r(3802).trim;n({target:"String",proto:!0,forced:r(706)("trim")},{trim:function(){return a(this)}})}},function(e){e(e.s=9007)}]);
|
2
|
+
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[924],{472:function(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,o(n.key),n)}}function o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,"string");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}r.d(t,{S:function(){return i}}),r(2675),r(9463),r(2259),r(5700),r(3792),r(9572),r(8130),r(9085),r(6099),r(7764),r(2953);var i=function(){return e=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=t,this.options},(t=[{key:"setup",value:function(e){this.options=Object.assign({},this.options,e)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(e){}},{key:"_configureToolbar",value:function(e){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(e){}}])&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},9007:function(e,t,r){r(2675),r(9463),r(6412),r(2259),r(5700),r(8125),r(8706),r(113),r(3418),r(3792),r(8598),r(2062),r(4490),r(4782),r(9572),r(2010),r(4731),r(479),r(8130),r(5506),r(3851),r(875),r(6099),r(8459),r(3362),r(825),r(888),r(7495),r(8781),r(7764),r(5440),r(5746),r(3500),r(2953),r(8408);var n=r(6257),a=r(1774),o=(r(8940),r(1669));function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function c(e){var t=function(e,t){if("object"!=i(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}var u=function(){return e=function e(t){var r=t.br,n=t.searchCancelledCallback,a=void 0===n?function(){}:n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.br=r,this.matches=[],this.cacheDOMElements(),this.cancelSearch=a},t=[{key:"init",value:function(){this.bindEvents()}},{key:"cacheDOMElements",value:function(){this.dom={},this.dom.toolbarSearch=this.buildToolbarSearch()}},{key:"setQuery",value:function(e){this.br.$('[name="query"]').val(e)}},{key:"emptyMatches",value:function(){this.matches=[]}},{key:"removeResultPins",value:function(){this.br.$(".BRnavpos .BRsearch").remove()}},{key:"clearSearchFieldAndResults",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this.br._plugins.search.removeSearchResults(),this.removeResultPins(),this.emptyMatches(),this.setQuery(""),this.teardownSearchNavigation(),e&&this.br.trigger("SearchResultsCleared")}},{key:"toggleSidebar",value:function(){this.br.trigger("ToggleSearchMenu")}},{key:"renderSearchNavigation",value:function(){var e="BRsearch-navigation";o(".BRnav").before('\n <div class="'.concat(e,'">\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">').concat(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 ')),this.dom.searchNavigation=o(".".concat(e))}},{key:"resultsPosition",value:function(){var e="".concat(this.matches.length," result").concat(1===this.matches.length?"":"s");return~this.currentMatchIndex&&(e="".concat(this.currentMatchIndex+1," / ").concat(this.matches.length)),e}},{key:"bindSearchNavigationEvents",value:function(){if(this.dom.searchNavigation){var e="searchNavigation";this.dom.searchNavigation.on("click.".concat(e),".clear",this.clearSearchFieldAndResults.bind(this)).on("click.".concat(e),".prev",this.showPrevResult.bind(this)).on("click.".concat(e),".next",this.showNextResult.bind(this)).on("click.".concat(e),".toggle-sidebar",this.toggleSidebar.bind(this)).on("click.".concat(e),!1)}}},{key:"showPrevResult",value:function(){0!==this.currentMatchIndex&&(this.br.mode===this.br.constModeThumb&&this.br.switchMode(this.br.constMode1up),~this.currentMatchIndex||(this.currentMatchIndex=this.getClosestMatchIndex((function(e,t,r){return t[0]>r}))+1),this.br.$(".BRnavline .BRsearch").eq(--this.currentMatchIndex).click(),this.updateResultsPosition(),this.updateSearchNavigationButtons())}},{key:"showNextResult",value:function(){this.currentMatchIndex+1!==this.matches.length&&(this.br.mode===this.br.constModeThumb&&this.br.switchMode(this.br.constMode1up),~this.currentMatchIndex||(this.currentMatchIndex=this.getClosestMatchIndex((function(e,t,r){return e[e.length-1]>r}))-1),this.br.$(".BRnavline .BRsearch").eq(++this.currentMatchIndex).click(),this.updateResultsPosition(),this.updateSearchNavigationButtons())}},{key:"getClosestMatchIndex",value:function(e){var t=this.matches.map((function(e){return e.par[0].page})),r=this.br.currentIndex()+1,n=function(t,r){if(1===t.length)return t[0];var a=t.slice(0,t.length/2),o=t.slice(t.length/2);return n(e(a,o,r)?a:o,r)},a=n(t,r);return this.matches.indexOf(this.matches.find((function(e){return e.par[0].page===a})))}},{key:"updateResultsPosition",value:function(){this.dom.searchNavigation&&this.dom.searchNavigation.find("[data-id=resultsCount]").text(this.resultsPosition())}},{key:"updateSearchNavigationButtons",value:function(){this.dom.searchNavigation&&(this.dom.searchNavigation.find(".prev").attr("disabled",!this.currentMatchIndex),this.dom.searchNavigation.find(".next").attr("disabled",this.currentMatchIndex+1===this.matches.length))}},{key:"teardownSearchNavigation",value:function(){this.dom.searchNavigation||(this.dom.searchNavigation=o(".BRsearch-navigation")),this.dom.searchNavigation.length&&(this.dom.searchNavigation.off(".searchNavigation").remove(),this.dom.searchNavigation=null,this.br.resize())}},{key:"setCurrentMatchIndex",value:function(){var e;this.br.mode!==this.br.constModeThumb?(e=this.br.mode===this.br.constMode2up?this.find2upMatchingSearchResult():this.find1upMatchingSearchResult(),this.currentMatchIndex=this.matches.indexOf(e)):this.currentMatchIndex=-1}},{key:"find1upMatchingSearchResult",value:function(){var e=this;return this.matches.find((function(t){return e.br.currentIndex()===t.par[0].page-1}))}},{key:"find2upMatchingSearchResult",value:function(){var e=this;return this.matches.find((function(t){return e.br._isIndexDisplayed(t.par[0].page-1)}))}},{key:"updateSearchNavigation",value:function(){this.matches.length&&(this.setCurrentMatchIndex(),this.updateResultsPosition(),this.updateSearchNavigationButtons())}},{key:"togglePinsFor",value:function(e){var t=e?"visible":"hidden";this.br.refs.$BRfooter.find(".BRsearch").css({visibility:t})}},{key:"buildToolbarSearch",value:function(){var e=document.createElement("span");return e.classList.add("BRtoolbarSection","BRtoolbarSectionSearch"),e.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="'.concat(this.br.imagesBaseURL,'icon_search_button.svg" />\n </button>\n </form>\n '),e}},{key:"renderPins",value:function(e){var t=this;e.forEach((function(e){var r=t.br.book.leafNumToIndex(e.par[0].page),n=t.br.constructor.util.cssPercentage(r,t.br.book.getNumLeafs()-1),a=e.html;if(a.length>200){var i=Math.max(0,a.indexOf("<mark>")-100);0!=i&&(a="…"+e.html.substring(i).replace(/^\S+/,""))}o("<div>").addClass("BRsearch").css({left:n}).attr("title","Search result").append('\n <div class="BRquery">\n <main>'.concat(a,"</main>\n <footer>Page ").concat(e.displayPageNumber,"</footer>\n </div>\n ")).appendTo(t.br.$(".BRnavline")).on("mouseenter",(function(e){var t=e.currentTarget,r=t.querySelector(".BRquery"),n=r.getBoundingClientRect(),a=t.getBoundingClientRect(),i=2*parseInt(getComputedStyle(r).paddingLeft);n.x-i<0&&r.style.setProperty("transform","translateX(-".concat(a.left-i,"px)")),o(".BRsearch,.BRchapter").removeClass("front"),o(e.target).addClass("front")})).on("mouseleave",(function(e){return o(e.target).removeClass("front")})).on("click",(function(){t.br._plugins.search.jumpToMatch(e.matchIndex)}))}))}},{key:"toggleSearchPending",value:function(){var e=this;arguments.length>0&&void 0!==arguments[0]&&arguments[0]?this.br.showProgressPopup("Search results will appear below...",(function(){return e.progressPopupClosed()})):this.br.removeProgressPopup()}},{key:"progressPopupClosed",value:function(){this.toggleSearchPending(),this.cancelSearch()}},{key:"renderErrorModal",value:function(){var e="".concat(arguments.length>0&&void 0!==arguments[0]&&arguments[0]?"":"The text may still be processing. ","Please try again.");this.renderModalMessage("\n Sorry, there was an error with your search.\n <br />\n ".concat(e,"\n ")),this.delayModalRemovalFor(4e3)}},{key:"renderBookNotIndexedModal",value:function(){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 "),this.delayModalRemovalFor(5e3)}},{key:"renderResultsEmptyModal",value:function(){this.renderModalMessage("No matches were found."),this.delayModalRemovalFor(2e3)}},{key:"renderModalMessage",value:function(e){var t=document.createElement("div");t.classList.add("BRprogresspopup","search_modal"),t.innerHTML=e,document.querySelector(this.br.el).append(t)}},{key:"delayModalRemovalFor",value:function(e){setTimeout(this.br.removeProgressPopup.bind(this.br),e)}},{key:"submitHandler",value:function(e){e.preventDefault();var t=e.target.querySelector('[name="query"]').value;return!!t.length&&(this.br.search(t),this.emptyMatches(),this.toggleSearchPending(!0),!1)}},{key:"handleSearchCallback",value:function(e,t){var r=this,n=t.results,a=t.options;this.matches=n.matches,this.setCurrentMatchIndex(),this.teardownSearchNavigation(),this.renderSearchNavigation(),this.bindSearchNavigationEvents(),this.renderPins(n.matches),this.toggleSearchPending(!1),a.goToFirstResult?o(document).one("BookReader:pageChanged",(function(){r.br.resize()})):this.br.resize()}},{key:"handleSearchStarted",value:function(){this.emptyMatches(),this.br._plugins.search.removeSearchHilites(),this.removeResultPins(),this.toggleSearchPending(!0),this.teardownSearchNavigation(),this.setQuery(this.br._plugins.search.searchTerm)}},{key:"handleSearchCallbackError",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.toggleSearchPending(!1);var r=null==t||null===(e=t.detail)||void 0===e||null===(e=e.props)||void 0===e||null===(e=e.results)||void 0===e?void 0:e.indexed;this.renderErrorModal(r)}},{key:"handleSearchCallbackBookNotIndexed",value:function(){this.toggleSearchPending(!1),this.renderBookNotIndexedModal()}},{key:"handleSearchCallbackEmpty",value:function(){this.toggleSearchPending(!1),this.renderResultsEmptyModal()}},{key:"bindEvents",value:function(){var e="BookReader:";window.addEventListener("".concat(e,"SearchCallbackError"),this.handleSearchCallbackError.bind(this)),o(document).on("".concat(e,"SearchCallback"),this.handleSearchCallback.bind(this)).on("".concat(e,"SearchStarted"),this.handleSearchStarted.bind(this)).on("".concat(e,"SearchCallbackBookNotIndexed"),this.handleSearchCallbackBookNotIndexed.bind(this)).on("".concat(e,"SearchCallbackEmpty"),this.handleSearchCallbackEmpty.bind(this)).on("".concat(e,"pageChanged"),this.updateSearchNavigation.bind(this)),this.dom.toolbarSearch.querySelector("form").addEventListener("submit",this.submitHandler.bind(this))}}],t&&s(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}(),l=u;function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return s}}(e,t)||d(e,t)||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 f(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=d(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}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 o,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw o}}}}function d(e,t){if(e){if("string"==typeof e)return p(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function v(e,t,r){var a=(0,n.escapeRegExp)((0,n.escapeHTML)(t)),o=(0,n.escapeRegExp)((0,n.escapeHTML)(r)),i=new RegExp("".concat(a,"([^]+?)").concat(o),"g");return(0,n.escapeHTML)(e).replace(i,"<mark>$1</mark>").replace(/(\b)- /g,"$1")}r(4864);var y=r(472),b=r(1743),g=r(1669),m=r(1669);function S(e){return S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},S(e)}function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,s=[],c=!0,u=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(s.push(n.value),s.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw a}}return s}}(e,t)||x(e,t)||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 w(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=x(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}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 o,i=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==r.return||r.return()}finally{if(s)throw o}}}}function x(e,t){if(e){if("string"==typeof e)return R(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?R(e,t):void 0}}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function P(){P=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var o=t&&t.prototype instanceof b?t:b,i=Object.create(o.prototype),s=new j(n||[]);return a(i,"_invoke",{value:I(e,r,s)}),i}function h(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=l;var f="suspendedStart",d="suspendedYield",p="executing",v="completed",y={};function b(){}function g(){}function m(){}var k={};u(k,i,(function(){return this}));var w=Object.getPrototypeOf,x=w&&w(w(B([])));x&&x!==r&&n.call(x,i)&&(k=x);var R=m.prototype=b.prototype=Object.create(k);function C(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function T(e,t){function r(a,o,i,s){var c=h(e[a],e,o);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==S(l)&&n.call(l,"__await")?t.resolve(l.__await).then((function(e){r("next",e,i,s)}),(function(e){r("throw",e,i,s)})):t.resolve(l).then((function(e){u.value=e,i(u)}),(function(e){return r("throw",e,i,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return o=o?o.then(a,a):a()}})}function I(t,r,n){var a=f;return function(o,i){if(a===p)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:e,done:!0}}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var c=M(s,n);if(c){if(c===y)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===f)throw a=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=p;var u=h(t,r,n);if("normal"===u.type){if(a=n.done?v:d,u.arg===y)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(a=v,n.method="throw",n.arg=u.arg)}}}function M(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,M(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var o=h(a,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,y;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function B(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(S(t)+" is not iterable")}return g.prototype=m,a(R,"constructor",{value:m,configurable:!0}),a(m,"constructor",{value:g,configurable:!0}),g.displayName=u(m,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,c,"GeneratorFunction")),e.prototype=Object.create(R),e},t.awrap=function(e){return{__await:e}},C(T.prototype),u(T.prototype,s,(function(){return this})),t.AsyncIterator=T,t.async=function(e,r,n,a,o){void 0===o&&(o=Promise);var i=new T(l(e,r,n,a),o);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},C(R),u(R,c,"Generator"),u(R,i,(function(){return this})),u(R,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=B,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return s.type="throw",s.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),N(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;N(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:B(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function C(e,t,r,n,a,o,i){try{var s=e[o](i),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,a)}function T(e){return function(){var t=this,r=arguments;return new Promise((function(n,a){var o=e.apply(t,r);function i(e){C(o,n,a,i,s,"next",e)}function s(e){C(o,n,a,i,s,"throw",e)}i(void 0)}))}}function I(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,O(n.key),n)}}function M(e,t,r){return t=B(t),function(e,t){if(t&&("object"==S(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,E()?Reflect.construct(t,r||[],B(e).constructor):t.apply(e,r))}function E(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(E=function(){return!!e})()}function N(e,t,r,n){var a=j(B(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof a?function(e){return a.apply(r,e)}:a}function j(){return j="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=B(e)););return e}(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(arguments.length<3?e:r):a.value}},j.apply(null,arguments)}function B(e){return B=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},B(e)}function _(e,t){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},_(e,t)}function O(e){var t=function(e,t){if("object"!=S(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=S(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==S(t)?t:t+""}var L=window.BookReader,A=function(e){function t(){var e,r,n,a;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var o=arguments.length,i=new Array(o),s=0;s<o;s++)i[s]=arguments[s];return r=e=M(this,t,[].concat(i)),n="options",a={enabled:!0,preTag:"{{{",postTag:"}}}",searchInsideUrl:"/fulltext/inside.php?"+["q={{query|urlencode}}","pre_tag={{preTag|urlencode}}","post_tag={{postTag|urlencode}}"].join("&"),initialSearchTerm:null,goToFirstResult:!1},(n=O(n))in r?Object.defineProperty(r,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):r[n]=a,e}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_(e,t)}(t,e),r=t,o=[{key:"setup",value:function(e){var r=this;N(t,"setup",this,3)([e]),this.searchTerm="",this.searchResults=null,this.searchInsideUrl=this.options.searchInsideUrl,this.enabled=this.options.enabled,this.searchXHR=null,this._searchBoxesByIndex={},this.enabled?this.searchView=new l({br:this.br,searchCancelledCallback:function(){r._cancelSearch(),r.br.trigger("SearchCanceled",{term:r.searchTerm,instance:r.br})}}):this.searchView=null}},{key:"init",value:function(){N(t,"init",this,3)([]),this.enabled&&(this.searchView.init(),this.options.initialSearchTerm&&this.search(this.options.initialSearchTerm,{goToFirstResult:this.options.goToFirstResult,suppressFragmentChange:!1}))}},{key:"_configureToolbar",value:function(e){if(this.enabled)return this.searchView.dom.toolbarSearch&&e.find(".BRtoolbarSectionInfo").after(this.searchView.dom.toolbarSearch),e}},{key:"_configurePageContainer",value:function(e){if(this.enabled&&e.page&&e.page.index in this._searchBoxesByIndex){var t=e.page.index,r=this._searchBoxesByIndex[t];(0,a.KL)("searchHiliteLayer",r,e.page,e.$container[0],r.map((function(e){return"match-index-".concat(e.matchIndex)})))}return e}},{key:"search",value:(s=T(P().mark((function e(){var t,r,n,a,o,i,s=this,c=arguments;return P().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=c.length>0&&void 0!==c[0]?c[0]:"",r=c.length>1&&void 0!==c[1]?c[1]:{},n={goToFirstResult:!1,disablePopup:!1,suppressFragmentChange:!1,error:null,success:null},a=g.extend({},n,r),this.suppressFragmentChange=a.suppressFragmentChange,this.searchCancelled=!1,this.searchTerm=t.replace(/\//g," "),a.suppressFragmentChange||this.br.trigger(L.eventNames.fragmentChange),o=(0,b.g)(this.options.searchInsideUrl,this.br.options.vars,{query:t,preTag:this.options.preTag,postTag:this.options.postTag}),i=function(e){if(!s.searchCancelled){var t=e.error||!e.matches.length,r="function"==typeof a.error,n="function"==typeof a.success;t?(console.error("Search Inside Response Error",e.error||"matches.length == 0"),r?a.error.call(s,e,a):s.BRSearchCallbackError(e)):n?a.success.call(s,e,a):s.BRSearchCallback(e,a)}},this.br.trigger("SearchStarted",{term:this.searchTerm,instance:this.br}),e.t0=i,e.next=14,m.ajax({url:o,cache:!0,xhrFields:{withCredentials:this.br.protected},beforeSend:function(e){s.searchXHR=e}});case 14:e.t1=e.sent,(0,e.t0)(e.t1);case 16:case"end":return e.stop()}}),e,this)}))),function(){return s.apply(this,arguments)})},{key:"_cancelSearch",value:function(){var e;null===(e=this.searchXHR)||void 0===e||e.abort(),this.searchView.clearSearchFieldAndResults(!1),this.searchTerm="",this.searchXHR=null,this.searchCancelled=!0,this.searchResults=null}},{key:"cancelSearchRequest",value:function(){this.searchCancelled=!0,null!==this.searchXHR&&(this._cancelSearch(),this.searchView.toggleSearchPending(),this.br.trigger("SearchCanceled",{term:this.searchTerm,instance:this.br}))}},{key:"BRSearchCallback",value:function(e,t){var r=this;!function(e,t,n,a){var o,i,s=f(e.matches.entries());try{for(s.s();!(o=s.n()).done;){var c=h(o.value,2),u=c[0],l=c[1];l.matchIndex=u,l.displayPageNumber=(i=l.par[0].page,r.br.book.getPageNum(r.br.book.leafNumToIndex(i))),l.html=v(l.text,n,a);var d,p=f(l.par);try{for(p.s();!(d=p.n()).done;){var y,b=f(d.value.boxes);try{for(b.s();!(y=b.n()).done;)y.value.matchIndex=u}catch(e){b.e(e)}finally{b.f()}}}catch(e){p.e(e)}finally{p.f()}}}catch(e){s.e(e)}finally{s.f()}}(e,0,this.options.preTag,this.options.postTag),this.searchResults=e||null,this.updateSearchHilites(),this.br.removeProgressPopup(),t.goToFirstResult&&this.jumpToMatch(0),this.br.trigger("SearchCallback",{results:e,options:t,instance:this.br})}},{key:"BRSearchCallbackError",value:function(e){this._BRSearchCallbackError(e)}},{key:"_BRSearchCallbackError",value:function(e){this.searchResults=e;var t={term:this.searchTerm,results:e,instance:this.br};if(e.error)this.br.trigger("SearchCallbackError",t);else if(0==e.matches.length){if(!1===e.indexed)return void this.br.trigger("SearchCallbackBookNotIndexed",t);this.br.trigger("SearchCallbackEmpty",t)}}},{key:"updateSearchHilites",value:function(){var e,t=(null===(e=this.searchResults)||void 0===e?void 0:e.matches)||[],r={};this.removeSearchHilites();var n,o=w(t);try{for(o.s();!(n=o.n()).done;){var i,s=w(n.value.par[0].boxes);try{for(s.s();!(i=s.n()).done;){var c=i.value,u=this.br.book.leafNumToIndex(c.page);(r[u]||(r[u]=[])).push(c)}}catch(e){s.e(e)}finally{s.f()}}}catch(e){o.e(e)}finally{o.f()}for(var l=0,h=Object.entries(r);l<h.length;l++){var f,d=k(h[l],2),p=d[0],v=d[1],y=parseFloat(p),b=this.br.book.getPage(y),g=w(this.br.getActivePageContainerElementsForIndex(y));try{for(g.s();!(f=g.n()).done;){var m=f.value;(0,a.KL)("searchHiliteLayer",v,b,m,v.map((function(e){return"match-index-".concat(e.matchIndex)})))}}catch(e){g.e(e)}finally{g.f()}}this._searchBoxesByIndex=r}},{key:"removeSearchHilites",value:function(){m(this.br.getActivePageContainerElements()).find(".searchHiliteLayer").remove()}},{key:"jumpToMatch",value:(i=T(P().mark((function e(t){var r,a,o,i,s,c,u,l,h,f,d,p;return P().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=null===(r=this.searchResults)||void 0===r?void 0:r.matches[t],o=this.br.book,i=o.leafNumToIndex(a.par[0].page),s=o.getPage(i),c=Math.abs(this.br.currentIndex()-i)<3,u=!1,s.isViewable){e.next=17;break}return e.next=9,fetch("/services/bookreader/request_page?"+new URLSearchParams({id:this.br.options.bookId,subprefix:this.br.options.subPrefix,leafNum:s.leafNum})).then((function(e){return e.json()}));case 9:l=e.sent,h=w(l.value);try{for(h.s();!(f=h.n()).done;)d=f.value,o.getPage(o.leafNumToIndex(d)).makeViewable()}catch(e){h.e(e)}finally{h.f()}if(l.value.length||(o.getPage(i).makeViewable(),u=!0),this.br._modes.mode1Up.mode1UpLit.updatePages(),this.br.activeMode!=this.br._modes.mode1Up){e.next=17;break}return e.next=17,this.br._modes.mode1Up.mode1UpLit.updateComplete;case 17:return this.br._isIndexDisplayed(i)||(this.suppressFragmentChange=!1,this.br.jumpToIndex(i)),u&&o.getPage(i).makeViewable(!1),e.next=21,(0,n.poll)((function(){return m("rect.match-index-".concat(a.matchIndex))}),{until:function(e){return e.length>0}});case 21:if(!(p=e.sent).length){e.next=28;break}return p.css("animation","none"),p[0].scrollIntoView({block:this.br.constMode1up==this.br.mode||this.br.isFullscreenActive?"center":"nearest",inline:"center",behavior:c?"smooth":"auto"}),e.next=27,new Promise((function(e){return setTimeout(e,100)}));case 27:p.removeAttr("style");case 28:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{key:"removeSearchResults",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.removeSearchHilites(),this.searchTerm=null,this.searchResults=null,e||this.br.trigger(L.eventNames.fragmentChange)}}],o&&I(r.prototype,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o,i,s}(y.S);null==L||L.registerPlugin("search",A)},1743:function(e,t,r){function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function a(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o;return null==e?void 0:e.replace(/\{\{([^}]*?)\}\}/g,(function(e,o){if(!o)return e;var i,s=function(e){if(Array.isArray(e))return e}(i=o.split("|").map((function(e){return e.trim()})))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):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=s[0],u=s.slice(1);if(!(c in r)&&!(c in t))return e;var l=c in r?r[c]:c in t?t[c]:null;return u.map((function(e){return a[e]})).reduce((function(e,t){return t(e)}),l&&l.toString())}))}r.d(t,{g:function(){return a}}),r(2675),r(9463),r(2259),r(3418),r(3792),r(2062),r(2712),r(4782),r(2010),r(6099),r(7495),r(8781),r(7764),r(5440),r(2762),r(2953);var o={urlencode:encodeURIComponent}},706:function(e,t,r){var n=r(350).PROPER,a=r(9039),o=r(7452);e.exports=function(e){return a((function(){return!!o[e]()||"
"!=="
"[e]()||n&&o[e].name!==e}))}},2762:function(e,t,r){var n=r(6518),a=r(3802).trim;n({target:"String",proto:!0,forced:r(706)("trim")},{trim:function(){return a(this)}})}},function(e){e(e.s=9007)}]);
|
3
3
|
//# sourceMappingURL=plugin.search.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"plugins/plugin.search.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/search/view.js","webpack://@internetarchive/bookreader/./src/plugins/search/utils.js","webpack://@internetarchive/bookreader/./src/plugins/search/plugin.search.js","webpack://@internetarchive/bookreader/./src/util/strings.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js"],"sourcesContent":["// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\n/** @typedef {import('@/src/BookReader.js').default} BookReader */\n\nclass SearchView {\n /**\n * @param {object} params\n * @param {BookReader} params.br The BookReader instance\n * @param {function} params.searchCancelledCallback callback when a user wants to cancel search\n *\n * @event BookReader:SearchResultsCleared - when the search results nav gets cleared\n * @event BookReader:ToggleSearchMenu - when search results menu should toggle\n */\n constructor({ br, searchCancelledCallback = () => {} }) {\n /** @type {BookReader} */\n this.br = br;\n this.matches = [];\n this.cacheDOMElements();\n this.cancelSearch = searchCancelledCallback;\n }\n\n init() {\n this.bindEvents();\n }\n\n cacheDOMElements() {\n this.dom = {};\n // Search input within the top toolbar. Will be removed once the mobile menu is replaced.\n this.dom.toolbarSearch = this.buildToolbarSearch();\n }\n\n /**\n * @param {string} query\n */\n setQuery(query) {\n this.br.$('[name=\"query\"]').val(query);\n }\n\n emptyMatches() {\n this.matches = [];\n }\n\n removeResultPins() {\n this.br.$('.BRnavpos .BRsearch').remove();\n }\n\n clearSearchFieldAndResults(dispatchEventWhenComplete = true) {\n this.br._plugins.search.removeSearchResults();\n this.removeResultPins();\n this.emptyMatches();\n this.setQuery('');\n this.teardownSearchNavigation();\n if (dispatchEventWhenComplete) {\n this.br.trigger('SearchResultsCleared');\n }\n }\n\n toggleSidebar() {\n this.br.trigger('ToggleSearchMenu');\n }\n\n renderSearchNavigation() {\n const selector = 'BRsearch-navigation';\n $('.BRnav').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._plugins.search.jumpToMatch(match.matchIndex); });\n });\n }\n\n /**\n * @param {boolean} show\n */\n toggleSearchPending(show = false) {\n if (show) {\n this.br.showProgressPopup(\"Search results will appear below...\", () => this.progressPopupClosed());\n }\n else {\n this.br.removeProgressPopup();\n }\n }\n\n /**\n * Primary callback when user cancels search popup\n */\n progressPopupClosed() {\n this.toggleSearchPending();\n this.cancelSearch();\n }\n\n renderErrorModal(textIsProcessing = false) {\n const errorDetails = `${!textIsProcessing ? 'The text may still be processing. ' : ''}Please try again.`;\n this.renderModalMessage(`\n Sorry, there was an error with your search.\n <br />\n ${errorDetails}\n `);\n this.delayModalRemovalFor(4000);\n }\n\n renderBookNotIndexedModal() {\n this.renderModalMessage(`\n <p>\n This book hasn't been indexed for searching yet.\n We've just started indexing it, so search should be available soon.\n <br />\n Please try again later. Thanks!\n </p>\n `);\n this.delayModalRemovalFor(5000);\n }\n\n renderResultsEmptyModal() {\n this.renderModalMessage('No matches were found.');\n this.delayModalRemovalFor(2000);\n }\n\n /**\n * @param {string} messageHTML The innerHTML string used to popupate the modal contents\n */\n renderModalMessage(messageHTML) {\n const modal = document.createElement('div');\n modal.classList.add('BRprogresspopup', 'search_modal');\n modal.innerHTML = messageHTML;\n document.querySelector(this.br.el).append(modal);\n }\n\n /**\n * @param {number} timeoutMS\n */\n delayModalRemovalFor(timeoutMS) {\n setTimeout(this.br.removeProgressPopup.bind(this.br), timeoutMS);\n }\n\n /**\n * @param {Event} e\n */\n submitHandler(e) {\n e.preventDefault();\n const query = e.target.querySelector('[name=\"query\"]').value;\n if (!query.length) { return false; }\n this.br.search(query);\n this.emptyMatches();\n this.toggleSearchPending(true);\n return false;\n }\n\n /**\n * @param {Event} e\n * @param {object} properties\n * @param {object} properties.results\n * @param {object} properties.options\n */\n handleSearchCallback(e, { results, options }) {\n this.matches = results.matches;\n this.setCurrentMatchIndex();\n this.teardownSearchNavigation();\n this.renderSearchNavigation();\n this.bindSearchNavigationEvents();\n this.renderPins(results.matches);\n this.toggleSearchPending(false);\n if (options.goToFirstResult) {\n $(document).one('BookReader:pageChanged', () => {\n this.br.resize();\n });\n } else {\n this.br.resize();\n }\n }\n\n handleSearchStarted() {\n this.emptyMatches();\n this.br._plugins.search.removeSearchHilites();\n this.removeResultPins();\n this.toggleSearchPending(true);\n this.teardownSearchNavigation();\n this.setQuery(this.br._plugins.search.searchTerm);\n }\n\n /**\n * Event listener for: `BookReader:SearchCallbackError`\n * @param {CustomEvent} event\n */\n handleSearchCallbackError(event = {}) {\n this.toggleSearchPending(false);\n const isIndexed = event?.detail?.props?.results?.indexed;\n this.renderErrorModal(isIndexed);\n }\n\n handleSearchCallbackBookNotIndexed() {\n this.toggleSearchPending(false);\n this.renderBookNotIndexedModal();\n }\n\n handleSearchCallbackEmpty() {\n this.toggleSearchPending(false);\n this.renderResultsEmptyModal();\n }\n\n bindEvents() {\n const namespace = 'BookReader:';\n\n window.addEventListener(`${namespace}SearchCallbackError`, this.handleSearchCallbackError.bind(this));\n $(document).on(`${namespace}SearchCallback`, this.handleSearchCallback.bind(this))\n .on(`${namespace}SearchStarted`, this.handleSearchStarted.bind(this))\n .on(`${namespace}SearchCallbackBookNotIndexed`, this.handleSearchCallbackBookNotIndexed.bind(this))\n .on(`${namespace}SearchCallbackEmpty`, this.handleSearchCallbackEmpty.bind(this))\n .on(`${namespace}pageChanged`, this.updateSearchNavigation.bind(this));\n\n this.dom.toolbarSearch.querySelector('form').addEventListener('submit', this.submitHandler.bind(this));\n }\n}\n\nexport default SearchView;\n","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/**\n * Plugin for Archive.org book search\n * Events fired at various points throughout search processing are published\n * on the document DOM element. These can be subscribed to using jQuery's event\n * binding method `$.fn.on`. All of the events are prefixed with a BookReader\n * namespace. The events are:\n *\n * @event BookReader:SearchStarted - When a search form is submitted, immediately\n * before an AJAX call is made to request search results\n * @event BookReader:SearchCallback - When the search AJAX call is returned and at\n * least one result is returned. The event callback receives an object\n * with the `results`, plugin `options`, and the BookReader `instance`\n * @event BookReader:SearchCallbackError - When the AJAX request returns an error.\n * Receives the `results` and `instance`\n * @event BookReader:SearchCallbackNotIndexed - When a message is received that\n * the book has not had OCR text indexed yet. Receives `instance`\n * @event BookReader:SearchCallbackEmpty - When no results found. Receives\n * `instance`\n * @event BookReader:SearchCanceled - When no results found. Receives\n * `instance`\n */\nimport { poll } from '../../BookReader/utils.js';\nimport { renderBoxesInPageContainerLayer } from '../../BookReader/PageContainer.js';\nimport SearchView from './view.js';\nimport { marshallSearchResults } from './utils.js';\nimport { BookReaderPlugin } from '../../BookReaderPlugin.js';\nimport { applyVariables } from '../../util/strings.js';\n/** @typedef {import('../../BookReader/PageContainer').PageContainer} PageContainer */\n/** @typedef {import('../../BookReader/BookModel').PageIndex} PageIndex */\n/** @typedef {import('../../BookReader/BookModel').LeafNum} LeafNum */\n/** @typedef {import('../../BookReader/BookModel').PageNumString} PageNumString */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nexport class SearchPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n preTag: '{{{',\n postTag: '}}}',\n /**\n * @type {import('@/src/util/strings.js').StringWithVars}\n * Provides the variables: `query`, `preTag`, and `postTag` (from these options)\n */\n searchInsideUrl: '/fulltext/inside.php?' + [\n 'q={{query|urlencode}}',\n 'pre_tag={{preTag|urlencode}}',\n 'post_tag={{postTag|urlencode}}',\n ].join('&'),\n /** @type {string} */\n initialSearchTerm: null,\n goToFirstResult: false,\n }\n\n /**\n * @override\n * @param {Partial<SearchPlugin['options']>} options\n **/\n setup(options) {\n super.setup(options);\n\n this.searchTerm = '';\n /** @type {SearchInsideResults | null} */\n this.searchResults = null;\n this.searchInsideUrl = this.options.searchInsideUrl;\n this.enabled = this.options.enabled;\n this.searchXHR = null;\n\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n this._searchBoxesByIndex = {};\n\n if (this.enabled) {\n this.searchView = new SearchView({\n br: this.br,\n searchCancelledCallback: () => {\n this._cancelSearch();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n },\n });\n } else {\n this.searchView = null;\n }\n }\n\n /** @override */\n init() {\n super.init();\n\n if (!this.enabled) return;\n\n this.searchView.init();\n if (this.options.initialSearchTerm) {\n /**\n * this.search() take two parameter\n * 1. this.options.initialSearchTerm - search term\n * 2. {\n * goToFirstResult: this.options.goToFirstResult,\n * suppressFragmentChange: false // always want to change fragment in URL\n * }\n */\n this.search(\n this.options.initialSearchTerm,\n { goToFirstResult: this.options.goToFirstResult, suppressFragmentChange: false },\n );\n }\n }\n\n /**\n * @override\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n if (!this.enabled) { return; }\n if (this.searchView.dom.toolbarSearch) {\n $toolbarElement.find('.BRtoolbarSectionInfo').after(this.searchView.dom.toolbarSearch);\n }\n return $toolbarElement;\n }\n\n /**\n * @override\n * @param {import (\"@/src/BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n if (this.enabled && pageContainer.page && pageContainer.page.index in this._searchBoxesByIndex) {\n const pageIndex = pageContainer.page.index;\n const boxes = this._searchBoxesByIndex[pageIndex];\n renderBoxesInPageContainerLayer(\n 'searchHiliteLayer',\n boxes,\n pageContainer.page,\n pageContainer.$container[0],\n boxes.map(b => `match-index-${b.matchIndex}`),\n );\n }\n return pageContainer;\n }\n\n /**\n * Submits search request\n *\n * @param {string} term\n * @param {Partial<SearchOptions>} overrides\n */\n async search(term = '', overrides = {}) {\n /** @type {SearchOptions} */\n const defaultOptions = {\n goToFirstResult: false, /* jump to the first result (default=false) */\n disablePopup: false, /* don't show the modal progress (default=false) */\n suppressFragmentChange: false, /* don't change the URL on initial load */\n error: null, /* optional error handler (default=null) */\n success: null, /* optional success handler (default=null) */\n\n };\n const options = jQuery.extend({}, defaultOptions, overrides);\n this.suppressFragmentChange = options.suppressFragmentChange;\n this.searchCancelled = false;\n\n // strip slashes, since this goes in the url\n this.searchTerm = term.replace(/\\//g, ' ');\n\n if (!options.suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n\n // Add quotes to the term. This is to compenstate for the backends default OR query\n // term = term.replace(/['\"]+/g, '');\n // term = '\"' + term + '\"';\n\n const url = applyVariables(this.options.searchInsideUrl, this.br.options.vars, {\n query: term,\n preTag: this.options.preTag,\n postTag: this.options.postTag,\n });\n\n const callSearchResultsCallback = (searchInsideResults) => {\n if (this.searchCancelled) {\n return;\n }\n const responseHasError = searchInsideResults.error || !searchInsideResults.matches.length;\n const hasCustomError = typeof options.error === 'function';\n const hasCustomSuccess = typeof options.success === 'function';\n\n if (responseHasError) {\n console.error('Search Inside Response Error', searchInsideResults.error || 'matches.length == 0');\n hasCustomError\n ? options.error.call(this, searchInsideResults, options)\n : this.BRSearchCallbackError(searchInsideResults);\n } else {\n hasCustomSuccess\n ? options.success.call(this, searchInsideResults, options)\n : this.BRSearchCallback(searchInsideResults, options);\n }\n };\n\n this.br.trigger('SearchStarted', { term: this.searchTerm, instance: this.br });\n callSearchResultsCallback(await $.ajax({\n url: url,\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n beforeSend: xhr => { this.searchXHR = xhr; },\n }));\n }\n\n /**\n * cancels AJAX Call\n * emits custom event\n */\n _cancelSearch() {\n this.searchXHR?.abort();\n this.searchView.clearSearchFieldAndResults(false);\n this.searchTerm = '';\n this.searchXHR = null;\n this.searchCancelled = true;\n this.searchResults = null;\n }\n\n /**\n * External function to cancel search\n * checks for term & xhr in flight before running\n */\n cancelSearchRequest() {\n this.searchCancelled = true;\n if (this.searchXHR !== null) {\n this._cancelSearch();\n this.searchView.toggleSearchPending();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n }\n }\n\n /**\n * Search Results return handler\n * @param {SearchInsideResults} results\n * @param {object} options\n * @param {boolean} options.goToFirstResult\n */\n BRSearchCallback(results, options) {\n marshallSearchResults(\n results,\n pageNum => this.br.book.getPageNum(this.br.book.leafNumToIndex(pageNum)),\n this.options.preTag,\n this.options.postTag,\n );\n this.searchResults = results || null;\n\n this.updateSearchHilites();\n this.br.removeProgressPopup();\n if (options.goToFirstResult) {\n this.jumpToMatch(0);\n }\n this.br.trigger('SearchCallback', { results, options, instance: this.br });\n }\n\n /**\n * Main search results error handler\n * @param {SearchInsideResults} results\n */\n BRSearchCallbackError(results) {\n this._BRSearchCallbackError(results);\n }\n\n /**\n * @private draws search results error\n * @param {SearchInsideResults} results\n */\n _BRSearchCallbackError(results) {\n this.searchResults = results;\n const payload = {\n term: this.searchTerm,\n results,\n instance: this.br,\n };\n if (results.error) {\n this.br.trigger('SearchCallbackError', payload);\n } else if (0 == results.matches.length) {\n if (false === results.indexed) {\n this.br.trigger('SearchCallbackBookNotIndexed', payload);\n return;\n }\n this.br.trigger('SearchCallbackEmpty', payload);\n }\n }\n\n /**\n * updates search on-page highlights controller\n */\n updateSearchHilites() {\n /** @type {SearchInsideMatch[]} */\n const matches = this.searchResults?.matches || [];\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n const boxesByIndex = {};\n\n // Clear any existing svg layers\n this.removeSearchHilites();\n\n // Group by pageIndex\n for (const match of matches) {\n for (const box of match.par[0].boxes) {\n const pageIndex = this.br.book.leafNumToIndex(box.page);\n const pageBoxes = boxesByIndex[pageIndex] || (boxesByIndex[pageIndex] = []);\n pageBoxes.push(box);\n }\n }\n\n // update any already created pages\n for (const [pageIndexString, boxes] of Object.entries(boxesByIndex)) {\n const pageIndex = parseFloat(pageIndexString);\n const page = this.br.book.getPage(pageIndex);\n const pageContainers = this.br.getActivePageContainerElementsForIndex(pageIndex);\n for (const container of pageContainers) {\n renderBoxesInPageContainerLayer('searchHiliteLayer', boxes, page, container, boxes.map(b => `match-index-${b.matchIndex}`));\n }\n }\n\n this._searchBoxesByIndex = boxesByIndex;\n }\n\n /**\n * remove search highlights\n */\n removeSearchHilites() {\n $(this.br.getActivePageContainerElements()).find('.searchHiliteLayer').remove();\n }\n\n /**\n * Goes to the page specified. If the page is not viewable, tries to load the page\n * FIXME Most of this logic is IA specific, and should be less integrated into here\n * or at least more configurable.\n * @param {number} matchIndex\n */\n async jumpToMatch(matchIndex) {\n const match = this.searchResults?.matches[matchIndex];\n const book = this.br.book;\n const pageIndex = book.leafNumToIndex(match.par[0].page);\n const page = book.getPage(pageIndex);\n const onNearbyPage = Math.abs(this.br.currentIndex() - pageIndex) < 3;\n let makeUnviewableAtEnd = false;\n if (!page.isViewable) {\n const resp = await fetch('/services/bookreader/request_page?' + new URLSearchParams({\n id: this.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.br._modes.mode1Up.mode1UpLit.updatePages();\n if (this.br.activeMode == this.br._modes.mode1Up) {\n await this.br._modes.mode1Up.mode1UpLit.updateComplete;\n }\n }\n /* this updates the URL */\n if (!this.br._isIndexDisplayed(pageIndex)) {\n this.suppressFragmentChange = false;\n this.br.jumpToIndex(pageIndex);\n }\n\n // Reset it to unviewable if it wasn't resolved\n if (makeUnviewableAtEnd) {\n book.getPage(pageIndex).makeViewable(false);\n }\n\n // Scroll/flash in the ui\n const $boxes = await poll(() => $(`rect.match-index-${match.matchIndex}`), { until: result => result.length > 0 });\n if ($boxes.length) {\n $boxes.css('animation', 'none');\n $boxes[0].scrollIntoView({\n // Only vertically center the highlight if we're in 1up or in full screen. In\n // 2up, if we're not fullscreen, the whole body gets scrolled around to try to\n // center the highlight 🙄 See:\n // https://stackoverflow.com/questions/11039885/scrollintoview-causing-the-whole-page-to-move/11041376\n // Note: nearest doesn't quite work great, because the ReadAloud toolbar is now\n // full-width, and covers up the last line of the highlight.\n block: this.br.constMode1up == this.br.mode || this.br.isFullscreenActive ? 'center' : 'nearest',\n inline: 'center',\n behavior: onNearbyPage ? 'smooth' : 'auto',\n });\n // wait for animation to start\n await new Promise(resolve => setTimeout(resolve, 100));\n $boxes.removeAttr(\"style\");\n }\n }\n\n /**\n * Removes all search pins\n */\n removeSearchResults(suppressFragmentChange = false) {\n this.removeSearchHilites(); //be sure to set all box.divs to null\n this.searchTerm = null;\n this.searchResults = null;\n if (!suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n }\n}\nBookReader?.registerPlugin('search', SearchPlugin);\n\n/**\n * @typedef {object} SearchOptions\n * @property {boolean} goToFirstResult\n * @property {boolean} disablePopup\n * @property {boolean} suppressFragmentChange\n * @property {(null|function)} error (deprecated)\n * @property {(null|function)} success (deprecated)\n */\n\n/**\n * @typedef {object} SearchInsideMatchBox\n * @property {number} page\n * @property {number} r\n * @property {number} l\n * @property {number} b\n * @property {number} t\n * @property {HTMLDivElement} [div]\n * @property {number} matchIndex This is a fake field! not part of the API response. The index of the match that contains this box in total search results matches.\n */\n\n/**\n * @typedef {object} SearchInsideMatch\n * @property {number} matchIndex This is a fake field! Not part of the API response. It is added by the JS.\n * @property {string} displayPageNumber (fake field) The page number as it should be displayed in the UI.\n * @property {string} html (computed field) The html-escaped raw html to display in the UI.\n * @property {string} text\n * @property {Array<{ page: number, boxes: SearchInsideMatchBox[] }>} par\n */\n\n/**\n * @typedef {object} SearchInsideResults\n * @property {string} q\n * @property {string} error\n * @property {SearchInsideMatch[]} matches\n * @property {boolean} indexed\n */\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","SearchView","_ref","_ref$searchCancelledC","searchCancelledCallback","matches","cacheDOMElements","cancelSearch","bindEvents","dom","toolbarSearch","buildToolbarSearch","query","$","val","remove","dispatchEventWhenComplete","arguments","length","undefined","_plugins","search","removeSearchResults","removeResultPins","emptyMatches","setQuery","teardownSearchNavigation","trigger","selector","before","concat","resultsPosition","searchNavigation","positionMessage","currentMatchIndex","namespace","on","clearSearchFieldAndResults","bind","showPrevResult","showNextResult","toggleSidebar","mode","constModeThumb","switchMode","constMode1up","getClosestMatchIndex","start","end","comparator","eq","click","updateResultsPosition","updateSearchNavigationButtons","comparisonFn","matchPages","map","m","par","page","currentPage","currentIndex","closestTo","pool","slice","closestPage","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","jumpToMatch","matchIndex","_this4","showProgressPopup","progressPopupClosed","removeProgressPopup","toggleSearchPending","errorDetails","renderModalMessage","delayModalRemovalFor","messageHTML","modal","el","timeoutMS","setTimeout","e","preventDefault","_ref2","_this5","results","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","_regeneratorRuntime","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","_defineProperties","_toPropertyKey","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","_superPropGet","_get","get","_superPropBase","getOwnPropertyDescriptor","_setPrototypeOf","toPrimitive","String","_toPrimitive","BookReader","SearchPlugin","_BookReaderPlugin","_len","args","Array","_key","enabled","searchInsideUrl","join","initialSearchTerm","_inherits","searchResults","searchXHR","_searchBoxesByIndex","searchView","_cancelSearch","term","instance","init","suppressFragmentChange","after","index","boxes","renderBoxesInPageContainerLayer","$container","b","_search","_callee","overrides","defaultOptions","url","callSearchResultsCallback","_args","_context","disablePopup","error","success","jQuery","extend","searchCancelled","eventNames","fragmentChange","applyVariables","vars","searchInsideResults","responseHasError","hasCustomError","hasCustomSuccess","console","BRSearchCallbackError","BRSearchCallback","t0","ajax","cache","xhrFields","withCredentials","protected","beforeSend","xhr","t1","_this$searchXHR","abort","displayPageNumberFn","_step","pageNum","_iterator","_createForOfIteratorHelper","entries","_step$value","_slicedToArray","getPageNum","_step2","_iterator2","_step3","_iterator3","err","marshallSearchResults","updateSearchHilites","_BRSearchCallbackError","payload","_this$searchResults","boxesByIndex","box","_i","_Object$entries","_Object$entries$_i","pageIndexString","parseFloat","getPage","getActivePageContainerElementsForIndex","container","getActivePageContainerElements","_jumpToMatch","_callee2","_this$searchResults2","onNearbyPage","makeUnviewableAtEnd","resp","_iterator4","_step4","leafNum","$boxes","_context2","abs","isViewable","fetch","URLSearchParams","id","bookId","subprefix","subPrefix","json","makeViewable","_modes","mode1Up","mode1UpLit","updatePages","activeMode","updateComplete","jumpToIndex","poll","until","result","scrollIntoView","block","isFullscreenActive","inline","behavior","removeAttr","_x","registerPlugin","template","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","split","trim","varName","filterNames","reduce","acc","cur","toString","urlencode","encodeURIComponent","PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","$trim","proto","forced","forcedStringTrimMethod"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"plugins/plugin.search.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/search/view.js","webpack://@internetarchive/bookreader/./src/plugins/search/utils.js","webpack://@internetarchive/bookreader/./src/plugins/search/plugin.search.js","webpack://@internetarchive/bookreader/./src/util/strings.js","webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js"],"sourcesContent":["// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\n/** @typedef {import('@/src/BookReader.js').default} BookReader */\n\nclass SearchView {\n /**\n * @param {object} params\n * @param {BookReader} params.br The BookReader instance\n * @param {function} params.searchCancelledCallback callback when a user wants to cancel search\n *\n * @event BookReader:SearchResultsCleared - when the search results nav gets cleared\n * @event BookReader:ToggleSearchMenu - when search results menu should toggle\n */\n constructor({ br, searchCancelledCallback = () => {} }) {\n /** @type {BookReader} */\n this.br = br;\n this.matches = [];\n this.cacheDOMElements();\n this.cancelSearch = searchCancelledCallback;\n }\n\n init() {\n this.bindEvents();\n }\n\n cacheDOMElements() {\n this.dom = {};\n // Search input within the top toolbar. Will be removed once the mobile menu is replaced.\n this.dom.toolbarSearch = this.buildToolbarSearch();\n }\n\n /**\n * @param {string} query\n */\n setQuery(query) {\n this.br.$('[name=\"query\"]').val(query);\n }\n\n emptyMatches() {\n this.matches = [];\n }\n\n removeResultPins() {\n this.br.$('.BRnavpos .BRsearch').remove();\n }\n\n clearSearchFieldAndResults(dispatchEventWhenComplete = true) {\n this.br._plugins.search.removeSearchResults();\n this.removeResultPins();\n this.emptyMatches();\n this.setQuery('');\n this.teardownSearchNavigation();\n if (dispatchEventWhenComplete) {\n this.br.trigger('SearchResultsCleared');\n }\n }\n\n toggleSidebar() {\n this.br.trigger('ToggleSearchMenu');\n }\n\n renderSearchNavigation() {\n const selector = 'BRsearch-navigation';\n $('.BRnav').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._plugins.search.jumpToMatch(match.matchIndex); });\n });\n }\n\n /**\n * @param {boolean} show\n */\n toggleSearchPending(show = false) {\n if (show) {\n this.br.showProgressPopup(\"Search results will appear below...\", () => this.progressPopupClosed());\n }\n else {\n this.br.removeProgressPopup();\n }\n }\n\n /**\n * Primary callback when user cancels search popup\n */\n progressPopupClosed() {\n this.toggleSearchPending();\n this.cancelSearch();\n }\n\n renderErrorModal(textIsProcessing = false) {\n const errorDetails = `${!textIsProcessing ? 'The text may still be processing. ' : ''}Please try again.`;\n this.renderModalMessage(`\n Sorry, there was an error with your search.\n <br />\n ${errorDetails}\n `);\n this.delayModalRemovalFor(4000);\n }\n\n renderBookNotIndexedModal() {\n this.renderModalMessage(`\n <p>\n This book hasn't been indexed for searching yet.\n We've just started indexing it, so search should be available soon.\n <br />\n Please try again later. Thanks!\n </p>\n `);\n this.delayModalRemovalFor(5000);\n }\n\n renderResultsEmptyModal() {\n this.renderModalMessage('No matches were found.');\n this.delayModalRemovalFor(2000);\n }\n\n /**\n * @param {string} messageHTML The innerHTML string used to popupate the modal contents\n */\n renderModalMessage(messageHTML) {\n const modal = document.createElement('div');\n modal.classList.add('BRprogresspopup', 'search_modal');\n modal.innerHTML = messageHTML;\n document.querySelector(this.br.el).append(modal);\n }\n\n /**\n * @param {number} timeoutMS\n */\n delayModalRemovalFor(timeoutMS) {\n setTimeout(this.br.removeProgressPopup.bind(this.br), timeoutMS);\n }\n\n /**\n * @param {Event} e\n */\n submitHandler(e) {\n e.preventDefault();\n const query = e.target.querySelector('[name=\"query\"]').value;\n if (!query.length) { return false; }\n this.br.search(query);\n this.emptyMatches();\n this.toggleSearchPending(true);\n return false;\n }\n\n /**\n * @param {Event} e\n * @param {object} properties\n * @param {object} properties.results\n * @param {object} properties.options\n */\n handleSearchCallback(e, { results, options }) {\n this.matches = results.matches;\n this.setCurrentMatchIndex();\n this.teardownSearchNavigation();\n this.renderSearchNavigation();\n this.bindSearchNavigationEvents();\n this.renderPins(results.matches);\n this.toggleSearchPending(false);\n if (options.goToFirstResult) {\n $(document).one('BookReader:pageChanged', () => {\n this.br.resize();\n });\n } else {\n this.br.resize();\n }\n }\n\n handleSearchStarted() {\n this.emptyMatches();\n this.br._plugins.search.removeSearchHilites();\n this.removeResultPins();\n this.toggleSearchPending(true);\n this.teardownSearchNavigation();\n this.setQuery(this.br._plugins.search.searchTerm);\n }\n\n /**\n * Event listener for: `BookReader:SearchCallbackError`\n * @param {CustomEvent} event\n */\n handleSearchCallbackError(event = {}) {\n this.toggleSearchPending(false);\n const isIndexed = event?.detail?.props?.results?.indexed;\n this.renderErrorModal(isIndexed);\n }\n\n handleSearchCallbackBookNotIndexed() {\n this.toggleSearchPending(false);\n this.renderBookNotIndexedModal();\n }\n\n handleSearchCallbackEmpty() {\n this.toggleSearchPending(false);\n this.renderResultsEmptyModal();\n }\n\n bindEvents() {\n const namespace = 'BookReader:';\n\n window.addEventListener(`${namespace}SearchCallbackError`, this.handleSearchCallbackError.bind(this));\n $(document).on(`${namespace}SearchCallback`, this.handleSearchCallback.bind(this))\n .on(`${namespace}SearchStarted`, this.handleSearchStarted.bind(this))\n .on(`${namespace}SearchCallbackBookNotIndexed`, this.handleSearchCallbackBookNotIndexed.bind(this))\n .on(`${namespace}SearchCallbackEmpty`, this.handleSearchCallbackEmpty.bind(this))\n .on(`${namespace}pageChanged`, this.updateSearchNavigation.bind(this));\n\n this.dom.toolbarSearch.querySelector('form').addEventListener('submit', this.submitHandler.bind(this));\n }\n}\n\nexport default SearchView;\n","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/**\n * Plugin for Archive.org book search\n * Events fired at various points throughout search processing are published\n * on the document DOM element. These can be subscribed to using jQuery's event\n * binding method `$.fn.on`. All of the events are prefixed with a BookReader\n * namespace. The events are:\n *\n * @event BookReader:SearchStarted - When a search form is submitted, immediately\n * before an AJAX call is made to request search results\n * @event BookReader:SearchCallback - When the search AJAX call is returned and at\n * least one result is returned. The event callback receives an object\n * with the `results`, plugin `options`, and the BookReader `instance`\n * @event BookReader:SearchCallbackError - When the AJAX request returns an error.\n * Receives the `results` and `instance`\n * @event BookReader:SearchCallbackNotIndexed - When a message is received that\n * the book has not had OCR text indexed yet. Receives `instance`\n * @event BookReader:SearchCallbackEmpty - When no results found. Receives\n * `instance`\n * @event BookReader:SearchCanceled - When no results found. Receives\n * `instance`\n */\nimport { poll } from '../../BookReader/utils.js';\nimport { renderBoxesInPageContainerLayer } from '../../BookReader/PageContainer.js';\nimport SearchView from './view.js';\nimport { marshallSearchResults } from './utils.js';\nimport { BookReaderPlugin } from '../../BookReaderPlugin.js';\nimport { applyVariables } from '../../util/strings.js';\n/** @typedef {import('../../BookReader/PageContainer').PageContainer} PageContainer */\n/** @typedef {import('../../BookReader/BookModel').PageIndex} PageIndex */\n/** @typedef {import('../../BookReader/BookModel').LeafNum} LeafNum */\n/** @typedef {import('../../BookReader/BookModel').PageNumString} PageNumString */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nexport class SearchPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n preTag: '{{{',\n postTag: '}}}',\n /**\n * @type {import('@/src/util/strings.js').StringWithVars}\n * Provides the variables: `query`, `preTag`, and `postTag` (from these options)\n */\n searchInsideUrl: '/fulltext/inside.php?' + [\n 'q={{query|urlencode}}',\n 'pre_tag={{preTag|urlencode}}',\n 'post_tag={{postTag|urlencode}}',\n ].join('&'),\n /** @type {string} */\n initialSearchTerm: null,\n goToFirstResult: false,\n }\n\n /**\n * @override\n * @param {Partial<SearchPlugin['options']>} options\n **/\n setup(options) {\n super.setup(options);\n\n this.searchTerm = '';\n /** @type {SearchInsideResults | null} */\n this.searchResults = null;\n this.searchInsideUrl = this.options.searchInsideUrl;\n this.enabled = this.options.enabled;\n this.searchXHR = null;\n\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n this._searchBoxesByIndex = {};\n\n if (this.enabled) {\n this.searchView = new SearchView({\n br: this.br,\n searchCancelledCallback: () => {\n this._cancelSearch();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n },\n });\n } else {\n this.searchView = null;\n }\n }\n\n /** @override */\n init() {\n super.init();\n\n if (!this.enabled) return;\n\n this.searchView.init();\n if (this.options.initialSearchTerm) {\n /**\n * this.search() take two parameter\n * 1. this.options.initialSearchTerm - search term\n * 2. {\n * goToFirstResult: this.options.goToFirstResult,\n * suppressFragmentChange: false // always want to change fragment in URL\n * }\n */\n this.search(\n this.options.initialSearchTerm,\n { goToFirstResult: this.options.goToFirstResult, suppressFragmentChange: false },\n );\n }\n }\n\n /**\n * @override\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n if (!this.enabled) { return; }\n if (this.searchView.dom.toolbarSearch) {\n $toolbarElement.find('.BRtoolbarSectionInfo').after(this.searchView.dom.toolbarSearch);\n }\n return $toolbarElement;\n }\n\n /**\n * @override\n * @param {import (\"@/src/BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n if (this.enabled && pageContainer.page && pageContainer.page.index in this._searchBoxesByIndex) {\n const pageIndex = pageContainer.page.index;\n const boxes = this._searchBoxesByIndex[pageIndex];\n renderBoxesInPageContainerLayer(\n 'searchHiliteLayer',\n boxes,\n pageContainer.page,\n pageContainer.$container[0],\n boxes.map(b => `match-index-${b.matchIndex}`),\n );\n }\n return pageContainer;\n }\n\n /**\n * Submits search request\n *\n * @param {string} term\n * @param {Partial<SearchOptions>} overrides\n */\n async search(term = '', overrides = {}) {\n /** @type {SearchOptions} */\n const defaultOptions = {\n goToFirstResult: false, /* jump to the first result (default=false) */\n disablePopup: false, /* don't show the modal progress (default=false) */\n suppressFragmentChange: false, /* don't change the URL on initial load */\n error: null, /* optional error handler (default=null) */\n success: null, /* optional success handler (default=null) */\n\n };\n const options = jQuery.extend({}, defaultOptions, overrides);\n this.suppressFragmentChange = options.suppressFragmentChange;\n this.searchCancelled = false;\n\n // strip slashes, since this goes in the url\n this.searchTerm = term.replace(/\\//g, ' ');\n\n if (!options.suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n\n // Add quotes to the term. This is to compenstate for the backends default OR query\n // term = term.replace(/['\"]+/g, '');\n // term = '\"' + term + '\"';\n\n const url = applyVariables(this.options.searchInsideUrl, this.br.options.vars, {\n query: term,\n preTag: this.options.preTag,\n postTag: this.options.postTag,\n });\n\n const callSearchResultsCallback = (searchInsideResults) => {\n if (this.searchCancelled) {\n return;\n }\n const responseHasError = searchInsideResults.error || !searchInsideResults.matches.length;\n const hasCustomError = typeof options.error === 'function';\n const hasCustomSuccess = typeof options.success === 'function';\n\n if (responseHasError) {\n console.error('Search Inside Response Error', searchInsideResults.error || 'matches.length == 0');\n hasCustomError\n ? options.error.call(this, searchInsideResults, options)\n : this.BRSearchCallbackError(searchInsideResults);\n } else {\n hasCustomSuccess\n ? options.success.call(this, searchInsideResults, options)\n : this.BRSearchCallback(searchInsideResults, options);\n }\n };\n\n this.br.trigger('SearchStarted', { term: this.searchTerm, instance: this.br });\n callSearchResultsCallback(await $.ajax({\n url: url,\n cache: true,\n xhrFields: {\n withCredentials: this.br.protected,\n },\n beforeSend: xhr => { this.searchXHR = xhr; },\n }));\n }\n\n /**\n * cancels AJAX Call\n * emits custom event\n */\n _cancelSearch() {\n this.searchXHR?.abort();\n this.searchView.clearSearchFieldAndResults(false);\n this.searchTerm = '';\n this.searchXHR = null;\n this.searchCancelled = true;\n this.searchResults = null;\n }\n\n /**\n * External function to cancel search\n * checks for term & xhr in flight before running\n */\n cancelSearchRequest() {\n this.searchCancelled = true;\n if (this.searchXHR !== null) {\n this._cancelSearch();\n this.searchView.toggleSearchPending();\n this.br.trigger('SearchCanceled', { term: this.searchTerm, instance: this.br });\n }\n }\n\n /**\n * Search Results return handler\n * @param {SearchInsideResults} results\n * @param {object} options\n * @param {boolean} options.goToFirstResult\n */\n BRSearchCallback(results, options) {\n marshallSearchResults(\n results,\n pageNum => this.br.book.getPageNum(this.br.book.leafNumToIndex(pageNum)),\n this.options.preTag,\n this.options.postTag,\n );\n this.searchResults = results || null;\n\n this.updateSearchHilites();\n this.br.removeProgressPopup();\n if (options.goToFirstResult) {\n this.jumpToMatch(0);\n }\n this.br.trigger('SearchCallback', { results, options, instance: this.br });\n }\n\n /**\n * Main search results error handler\n * @param {SearchInsideResults} results\n */\n BRSearchCallbackError(results) {\n this._BRSearchCallbackError(results);\n }\n\n /**\n * @private draws search results error\n * @param {SearchInsideResults} results\n */\n _BRSearchCallbackError(results) {\n this.searchResults = results;\n const payload = {\n term: this.searchTerm,\n results,\n instance: this.br,\n };\n if (results.error) {\n this.br.trigger('SearchCallbackError', payload);\n } else if (0 == results.matches.length) {\n if (false === results.indexed) {\n this.br.trigger('SearchCallbackBookNotIndexed', payload);\n return;\n }\n this.br.trigger('SearchCallbackEmpty', payload);\n }\n }\n\n /**\n * updates search on-page highlights controller\n */\n updateSearchHilites() {\n /** @type {SearchInsideMatch[]} */\n const matches = this.searchResults?.matches || [];\n /** @type { {[pageIndex: number]: SearchInsideMatchBox[]} } */\n const boxesByIndex = {};\n\n // Clear any existing svg layers\n this.removeSearchHilites();\n\n // Group by pageIndex\n for (const match of matches) {\n for (const box of match.par[0].boxes) {\n const pageIndex = this.br.book.leafNumToIndex(box.page);\n const pageBoxes = boxesByIndex[pageIndex] || (boxesByIndex[pageIndex] = []);\n pageBoxes.push(box);\n }\n }\n\n // update any already created pages\n for (const [pageIndexString, boxes] of Object.entries(boxesByIndex)) {\n const pageIndex = parseFloat(pageIndexString);\n const page = this.br.book.getPage(pageIndex);\n const pageContainers = this.br.getActivePageContainerElementsForIndex(pageIndex);\n for (const container of pageContainers) {\n renderBoxesInPageContainerLayer('searchHiliteLayer', boxes, page, container, boxes.map(b => `match-index-${b.matchIndex}`));\n }\n }\n\n this._searchBoxesByIndex = boxesByIndex;\n }\n\n /**\n * remove search highlights\n */\n removeSearchHilites() {\n $(this.br.getActivePageContainerElements()).find('.searchHiliteLayer').remove();\n }\n\n /**\n * Goes to the page specified. If the page is not viewable, tries to load the page\n * FIXME Most of this logic is IA specific, and should be less integrated into here\n * or at least more configurable.\n * @param {number} matchIndex\n */\n async jumpToMatch(matchIndex) {\n const match = this.searchResults?.matches[matchIndex];\n const book = this.br.book;\n const pageIndex = book.leafNumToIndex(match.par[0].page);\n const page = book.getPage(pageIndex);\n const onNearbyPage = Math.abs(this.br.currentIndex() - pageIndex) < 3;\n let makeUnviewableAtEnd = false;\n if (!page.isViewable) {\n const resp = await fetch('/services/bookreader/request_page?' + new URLSearchParams({\n id: this.br.options.bookId,\n subprefix: this.br.options.subPrefix,\n leafNum: page.leafNum,\n })).then(r => r.json());\n\n for (const leafNum of resp.value) {\n book.getPage(book.leafNumToIndex(leafNum)).makeViewable();\n }\n\n // not able to show page; make the page viewable anyways so that it can\n // actually open. On IA, it has a fallback to a special error page.\n if (!resp.value.length) {\n book.getPage(pageIndex).makeViewable();\n makeUnviewableAtEnd = true;\n }\n\n // Trigger an update of book\n this.br._modes.mode1Up.mode1UpLit.updatePages();\n if (this.br.activeMode == this.br._modes.mode1Up) {\n await this.br._modes.mode1Up.mode1UpLit.updateComplete;\n }\n }\n /* this updates the URL */\n if (!this.br._isIndexDisplayed(pageIndex)) {\n this.suppressFragmentChange = false;\n this.br.jumpToIndex(pageIndex);\n }\n\n // Reset it to unviewable if it wasn't resolved\n if (makeUnviewableAtEnd) {\n book.getPage(pageIndex).makeViewable(false);\n }\n\n // Scroll/flash in the ui\n const $boxes = await poll(() => $(`rect.match-index-${match.matchIndex}`), { until: result => result.length > 0 });\n if ($boxes.length) {\n $boxes.css('animation', 'none');\n $boxes[0].scrollIntoView({\n // Only vertically center the highlight if we're in 1up or in full screen. In\n // 2up, if we're not fullscreen, the whole body gets scrolled around to try to\n // center the highlight 🙄 See:\n // https://stackoverflow.com/questions/11039885/scrollintoview-causing-the-whole-page-to-move/11041376\n // Note: nearest doesn't quite work great, because the ReadAloud toolbar is now\n // full-width, and covers up the last line of the highlight.\n block: this.br.constMode1up == this.br.mode || this.br.isFullscreenActive ? 'center' : 'nearest',\n inline: 'center',\n behavior: onNearbyPage ? 'smooth' : 'auto',\n });\n // wait for animation to start\n await new Promise(resolve => setTimeout(resolve, 100));\n $boxes.removeAttr(\"style\");\n }\n }\n\n /**\n * Removes all search pins\n */\n removeSearchResults(suppressFragmentChange = false) {\n this.removeSearchHilites(); //be sure to set all box.divs to null\n this.searchTerm = null;\n this.searchResults = null;\n if (!suppressFragmentChange) {\n this.br.trigger(BookReader.eventNames.fragmentChange);\n }\n }\n}\nBookReader?.registerPlugin('search', SearchPlugin);\n\n/**\n * @typedef {object} SearchOptions\n * @property {boolean} goToFirstResult\n * @property {boolean} disablePopup\n * @property {boolean} suppressFragmentChange\n * @property {(null|function)} error (deprecated)\n * @property {(null|function)} success (deprecated)\n */\n\n/**\n * @typedef {object} SearchInsideMatchBox\n * @property {number} page\n * @property {number} r\n * @property {number} l\n * @property {number} b\n * @property {number} t\n * @property {HTMLDivElement} [div]\n * @property {number} matchIndex This is a fake field! not part of the API response. The index of the match that contains this box in total search results matches.\n */\n\n/**\n * @typedef {object} SearchInsideMatch\n * @property {number} matchIndex This is a fake field! Not part of the API response. It is added by the JS.\n * @property {string} displayPageNumber (fake field) The page number as it should be displayed in the UI.\n * @property {string} html (computed field) The html-escaped raw html to display in the UI.\n * @property {string} text\n * @property {Array<{ page: number, boxes: SearchInsideMatchBox[] }>} par\n */\n\n/**\n * @typedef {object} SearchInsideResults\n * @property {string} q\n * @property {string} error\n * @property {SearchInsideMatch[]} matches\n * @property {boolean} indexed\n */\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","SearchView","_ref","_ref$searchCancelledC","searchCancelledCallback","matches","cacheDOMElements","cancelSearch","bindEvents","dom","toolbarSearch","buildToolbarSearch","query","$","val","remove","dispatchEventWhenComplete","arguments","length","undefined","_plugins","search","removeSearchResults","removeResultPins","emptyMatches","setQuery","teardownSearchNavigation","trigger","selector","before","concat","resultsPosition","searchNavigation","positionMessage","currentMatchIndex","namespace","on","clearSearchFieldAndResults","bind","showPrevResult","showNextResult","toggleSidebar","mode","constModeThumb","switchMode","constMode1up","getClosestMatchIndex","start","end","comparator","eq","click","updateResultsPosition","updateSearchNavigationButtons","comparisonFn","matchPages","map","m","par","page","currentPage","currentIndex","closestTo","pool","slice","closestPage","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","jumpToMatch","matchIndex","_this4","showProgressPopup","progressPopupClosed","removeProgressPopup","toggleSearchPending","errorDetails","renderModalMessage","delayModalRemovalFor","messageHTML","modal","el","timeoutMS","setTimeout","e","preventDefault","_ref2","_this5","results","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","_regeneratorRuntime","t","r","prototype","n","hasOwnProperty","o","defineProperty","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","apply","_next","_throw","_defineProperties","_toPropertyKey","_callSuper","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","_superPropGet","_get","get","_superPropBase","getOwnPropertyDescriptor","_setPrototypeOf","toPrimitive","String","_toPrimitive","BookReader","SearchPlugin","_BookReaderPlugin","_len","args","Array","_key","enabled","searchInsideUrl","join","initialSearchTerm","_inherits","searchResults","searchXHR","_searchBoxesByIndex","searchView","_cancelSearch","term","instance","init","suppressFragmentChange","after","index","boxes","renderBoxesInPageContainerLayer","$container","b","_search","_callee","overrides","defaultOptions","url","callSearchResultsCallback","_args","_context","disablePopup","error","success","jQuery","extend","searchCancelled","eventNames","fragmentChange","applyVariables","vars","searchInsideResults","responseHasError","hasCustomError","hasCustomSuccess","console","BRSearchCallbackError","BRSearchCallback","t0","ajax","cache","xhrFields","withCredentials","protected","beforeSend","xhr","t1","_this$searchXHR","abort","displayPageNumberFn","_step","pageNum","_iterator","_createForOfIteratorHelper","entries","_step$value","_slicedToArray","getPageNum","_step2","_iterator2","_step3","_iterator3","err","marshallSearchResults","updateSearchHilites","_BRSearchCallbackError","payload","_this$searchResults","boxesByIndex","box","_i","_Object$entries","_Object$entries$_i","pageIndexString","parseFloat","getPage","getActivePageContainerElementsForIndex","container","getActivePageContainerElements","_jumpToMatch","_callee2","_this$searchResults2","onNearbyPage","makeUnviewableAtEnd","resp","_iterator4","_step4","leafNum","$boxes","_context2","abs","isViewable","fetch","URLSearchParams","id","bookId","subprefix","subPrefix","json","makeViewable","_modes","mode1Up","mode1UpLit","updatePages","activeMode","updateComplete","jumpToIndex","poll","until","result","scrollIntoView","block","isFullscreenActive","inline","behavior","removeAttr","_x","registerPlugin","template","possibleFilters","APPLY_FILTERS","$0","$1","_expression$split$map2","split","trim","varName","filterNames","reduce","acc","cur","toString","urlencode","encodeURIComponent","PROPER_FUNCTION_NAME","fails","whitespaces","module","exports","METHOD_NAME","$trim","proto","forced","forcedStringTrimMethod"],"sourceRoot":""}
|
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
@@ -341,8 +341,8 @@ export class SearchPlugin extends BookReaderPlugin {
|
|
341
341
|
let makeUnviewableAtEnd = false;
|
342
342
|
if (!page.isViewable) {
|
343
343
|
const resp = await fetch('/services/bookreader/request_page?' + new URLSearchParams({
|
344
|
-
id: this.options.bookId,
|
345
|
-
subprefix: this.options.subPrefix,
|
344
|
+
id: this.br.options.bookId,
|
345
|
+
subprefix: this.br.options.subPrefix,
|
346
346
|
leafNum: page.leafNum,
|
347
347
|
})).then(r => r.json());
|
348
348
|
|