@internetarchive/bookreader 5.0.0-101 → 5.0.0-102
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BookReader/474.js +1 -1
- package/BookReader/474.js.map +1 -1
- package/BookReader/BookReader.css +71 -8
- package/BookReader/BookReader.js +1 -1
- package/BookReader/BookReader.js.LICENSE.txt +1 -1
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +52 -52
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +7 -1
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/icons/1up.svg +1 -1
- package/BookReader/icons/2up.svg +1 -1
- package/BookReader/icons/advance.svg +1 -1
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -1
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -1
- package/BookReader/icons/fullscreen_exit.svg +1 -1
- package/BookReader/icons/hamburger.svg +1 -1
- package/BookReader/icons/left-arrow.svg +1 -1
- package/BookReader/icons/magnify-minus.svg +1 -1
- package/BookReader/icons/magnify-plus.svg +1 -1
- package/BookReader/icons/magnify.svg +1 -1
- package/BookReader/icons/pause.svg +1 -1
- package/BookReader/icons/play.svg +1 -1
- package/BookReader/icons/playback-speed.svg +1 -1
- package/BookReader/icons/read-aloud.svg +1 -1
- package/BookReader/icons/review.svg +1 -1
- package/BookReader/icons/slider-toggle.svg +1 -0
- package/BookReader/icons/thumbnails.svg +1 -1
- package/BookReader/icons/voice.svg +1 -1
- package/BookReader/icons/volume-full.svg +1 -1
- package/BookReader/images/BRicons.svg +2 -2
- package/BookReader/images/books_graphic.svg +1 -1
- package/BookReader/images/icon_book.svg +1 -1
- package/BookReader/images/icon_bookmark.svg +1 -1
- package/BookReader/images/icon_gear.svg +1 -1
- package/BookReader/images/icon_hamburger.svg +1 -1
- package/BookReader/images/icon_home.svg +1 -1
- package/BookReader/images/icon_info.svg +1 -1
- package/BookReader/images/icon_one_page.svg +1 -1
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -1
- package/BookReader/images/icon_search_button.svg +1 -1
- package/BookReader/images/icon_share.svg +1 -1
- package/BookReader/images/icon_skip-back.svg +1 -1
- package/BookReader/images/icon_speaker.svg +1 -1
- package/BookReader/images/icon_speaker_open.svg +1 -1
- package/BookReader/images/icon_thumbnails.svg +1 -1
- package/BookReader/images/icon_toc.svg +1 -1
- package/BookReader/images/icon_two_pages.svg +1 -1
- package/BookReader/images/marker_chap-off.svg +1 -1
- package/BookReader/images/marker_chap-on.svg +1 -1
- package/BookReader/images/marker_srch-on.svg +1 -1
- package/BookReader/images/translate.svg +1 -1
- package/BookReader/jquery-3.js +1 -1
- package/BookReader/plugins/plugin.archive_analytics.js +1 -1
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -1
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +2 -2
- package/BookReader/plugins/plugin.chapters.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.experiments.js +1 -1
- package/BookReader/plugins/plugin.experiments.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.experiments.js.map +1 -1
- package/BookReader/plugins/plugin.iframe.js +1 -1
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.iiif.js +1 -1
- package/BookReader/plugins/plugin.iiif.js.map +1 -1
- package/BookReader/plugins/plugin.resume.js +1 -1
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +1 -1
- package/BookReader/plugins/plugin.search.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +1 -1
- package/BookReader/plugins/plugin.text_selection.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.translate.js +4 -4
- package/BookReader/plugins/plugin.translate.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.translate.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +1 -1
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +1 -1
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -1
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/plugins/translator-worker.js +1 -1
- package/BookReader/plugins/translator-worker.js.map +1 -1
- package/BookReader/webcomponents-bundle.js +1 -1
- package/BookReader/webcomponents-bundle.js.map +1 -1
- package/package.json +20 -20
- package/src/BookNavigator/search/search-results.js +84 -63
- package/src/BookNavigator/visual-adjustments/visual-adjustments-provider.js +4 -4
- package/src/BookNavigator/visual-adjustments/visual-adjustments.js +77 -59
- package/src/BookReader/Navbar/Navbar.js +54 -71
- package/src/BookReader/options.js +6 -0
- package/src/BookReader.js +12 -0
- package/src/assets/icons/slider-toggle.svg +1 -0
- package/src/css/_BRnav.scss +57 -4
- package/src/css/_icons.scss +7 -0
- package/src/plugins/plugin.text_selection.js +9 -0
- package/src/plugins/search/plugin.search.js +4 -0
- package/src/plugins/search/utils.js +8 -1
- package/src/plugins/search/view.js +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! For license information please see plugin.experiments.js.LICENSE.txt */
|
|
2
|
-
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[830],{3921:function(e,t,r){var n=r(6518),i=r(2652),o=r(4659);n({target:"Object",stat:!0},{fromEntries:function(e){var t={};return i(e,(function(e,r){o(t,e,r)}),{AS_ENTRIES:!0}),t}})},1041: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 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 o(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!=n(i))return i;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 a}}),r(2675),r(9463),r(2259),r(5700),r(3792),r(9572),r(8130),r(9085),r(6099),r(7764),r(2953);var a=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){}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},6732:function(e,t,r){r(2675),r(9463),r(5700),r(6412),r(2259),r(8125),r(8706),r(4490),r(4782),r(4731),r(479),r(875),r(825),r(8781),r(7764),r(2953),r(2008),r(113),r(4423),r(3792),r(2062),r(3418),r(4554),r(739),r(9572),r(2010),r(8130),r(9085),r(2811),r(3921),r(3851),r(9432),r(6099),r(3362),r(888),r(7495),r(1699),r(5440),r(3500);var n,i,o,a,s,c,l,u=r(420),f=r(1041),p=r(9696),d=r(8004);function h(e){return h="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},h(e)}function y(e,t,r,n){var i=v();if(n)for(var o=0;o<n.length;o++)i=n[o](i);var a=t((function(e){i.initializeInstanceElements(e,s.elements)}),r),s=i.decorateClass(function(e){for(var t=[],r=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},n=0;n<e.length;n++){var i,o=e[n];if("method"===o.kind&&(i=t.find(r)))if(w(o.descriptor)||w(i.descriptor)){if(g(o)||g(i))throw new ReferenceError("Duplicated methods ("+o.key+") can't be decorated.");i.descriptor=o.descriptor}else{if(g(o)){if(g(i))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}b(o,i)}else t.push(o)}return t}(a.d.map(m)),e);return i.initializeClassElements(a.F,s.elements),i.runClassFinishers(a.F,s.finishers)}function v(){v=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach((function(r){t.forEach((function(t){t.kind===r&&"own"===t.placement&&this.defineClassElement(e,t)}),this)}),this)},initializeClassElements:function(e,t){var r=e.prototype;["method","field"].forEach((function(n){t.forEach((function(t){var i=t.placement;if(t.kind===n&&("static"===i||"prototype"===i)){var o="static"===i?e:r;this.defineClassElement(o,t)}}),this)}),this)},defineClassElement:function(e,t){var r=t.descriptor;if("field"===t.kind){var n=t.initializer;r={enumerable:r.enumerable,writable:r.writable,configurable:r.configurable,value:void 0===n?void 0:n.call(e)}}Object.defineProperty(e,t.key,r)},decorateClass:function(e,t){var r=[],n=[],i={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,i)}),this),e.forEach((function(e){if(!g(e))return r.push(e);var t=this.decorateElement(e,i);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)}),this),!t)return{elements:r,finishers:n};var o=this.decorateConstructor(r,t);return n.push.apply(n,o.finishers),o.finishers=n,o},addElementPlacement:function(e,t,r){var n=t[e.placement];if(!r&&-1!==n.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");n.push(e.key)},decorateElement:function(e,t){for(var r=[],n=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&n.push(c.finisher);var l=c.extras;if(l){for(var u=0;u<l.length;u++)this.addElementPlacement(l[u],t);r.push.apply(r,l)}}return{element:e,finishers:n,extras:r}},decorateConstructor:function(e,t){for(var r=[],n=t.length-1;n>=0;n--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[n])(i)||i);if(void 0!==o.finisher&&r.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a<e.length-1;a++)for(var s=a+1;s<e.length;s++)if(e[a].key===e[s].key&&e[a].placement===e[s].placement)throw new TypeError("Duplicated element ("+e[a].key+")")}}return{elements:e,finishers:r}},fromElementDescriptor:function(e){var t={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(t.initializer=e.initializer),t},toElementDescriptors:function(e){if(void 0!==e)return(t=e,function(e){if(Array.isArray(e))return e}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||_(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.")}()).map((function(e){var t=this.toElementDescriptor(e);return this.disallowProperty(e,"finisher","An element descriptor"),this.disallowProperty(e,"extras","An element descriptor"),t}),this);var t},toElementDescriptor:function(e){var t=e.kind+"";if("method"!==t&&"field"!==t)throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "'+t+'"');var r=B(e.key),n=e.placement+"";if("static"!==n&&"prototype"!==n&&"own"!==n)throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "'+n+'"');var i=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var o={kind:t,key:r,placement:n,descriptor:Object.assign({},i)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(i,"get","The property descriptor of a field descriptor"),this.disallowProperty(i,"set","The property descriptor of a field descriptor"),this.disallowProperty(i,"value","The property descriptor of a field descriptor"),o.initializer=e.initializer),o},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:k(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var t={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),t},toClassDescriptor:function(e){var t=e.kind+"";if("class"!==t)throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "'+t+'"');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var r=k(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:r}},runClassFinishers:function(e,t){for(var r=0;r<t.length;r++){var n=(0,t[r])(e);if(void 0!==n){if("function"!=typeof n)throw new TypeError("Finishers must return a constructor.");e=n}}return e},disallowProperty:function(e,t,r){if(void 0!==e[t])throw new TypeError(r+" can't have a ."+t+" property.")}};return e}function m(e){var t,r=B(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var n={kind:"field"===e.kind?"field":"method",key:r,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(n.decorators=e.decorators),"field"===e.kind&&(n.initializer=e.value),n}function b(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function g(e){return e.decorators&&e.decorators.length}function w(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function k(e,t){var r=e[t];if(void 0!==r&&"function"!=typeof r)throw new TypeError("Expected '"+t+"' to be a function");return r}function E(e,t,r,n){var i=x(A(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof i?function(e){return i.apply(r,e)}:i}function x(){return x="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=A(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(arguments.length<3?e:r):i.value}},x.apply(null,arguments)}function P(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=_(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}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,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function _(e,t){if(e){if("string"==typeof e)return O(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)?O(e,t):void 0}}function O(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 j(e,t,r){return t=A(t),function(e,t){if(t&&("object"==h(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,L()?Reflect.construct(t,r||[],A(e).constructor):t.apply(e,r))}function L(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(L=function(){return!!e})()}function A(e){return A=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},A(e)}function T(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&&C(e,t)}function C(e,t){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},C(e,t)}function D(){D=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var o=t&&t.prototype instanceof b?t:b,a=Object.create(o.prototype),s=new T(n||[]);return i(a,"_invoke",{value:O(e,r,s)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",d="suspendedYield",y="executing",v="completed",m={};function b(){}function g(){}function w(){}var k={};l(k,a,(function(){return this}));var E=Object.getPrototypeOf,x=E&&E(E(C([])));x&&x!==r&&n.call(x,a)&&(k=x);var P=w.prototype=b.prototype=Object.create(k);function S(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function r(i,o,a,s){var c=f(e[i],e,o);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==h(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,a,s)}),(function(e){r("throw",e,a,s)})):t.resolve(u).then((function(e){l.value=e,a(l)}),(function(e){return r("throw",e,a,s)}))}s(c.arg)}var o;i(this,"_invoke",{value:function(e,n){function i(){return new t((function(t,i){r(e,n,t,i)}))}return o=o?o.then(i,i):i()}})}function O(t,r,n){var i=p;return function(o,a){if(i===y)throw Error("Generator is already running");if(i===v){if("throw"===o)throw a;return{value:e,done:!0}}for(n.method=o,n.arg=a;;){var s=n.delegate;if(s){var c=j(s,n);if(c){if(c===m)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===p)throw i=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=y;var l=f(t,r,n);if("normal"===l.type){if(i=n.done?v:d,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(i=v,n.method="throw",n.arg=l.arg)}}}function j(t,r){var n=r.method,i=t.iterator[n];if(i===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,j(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var o=f(i,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,m;var a=o.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function L(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 A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function C(t){if(t||""===t){var r=t[a];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var i=-1,o=function r(){for(;++i<t.length;)if(n.call(t,i))return r.value=t[i],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(h(t)+" is not iterable")}return g.prototype=w,i(P,"constructor",{value:w,configurable:!0}),i(w,"constructor",{value:g,configurable:!0}),g.displayName=l(w,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,w):(e.__proto__=w,l(e,c,"GeneratorFunction")),e.prototype=Object.create(P),e},t.awrap=function(e){return{__await:e}},S(_.prototype),l(_.prototype,s,(function(){return this})),t.AsyncIterator=_,t.async=function(e,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(e,r,n,i),o);return t.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},S(P),l(P,c,"Generator"),l(P,a,(function(){return this})),l(P,"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=C,T.prototype={constructor:T,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(A),!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 i(n,i){return s.type="throw",s.arg=t,r.next=n,i&&(r.method="next",r.arg=e),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(c&&l){if(this.prev<a.catchLoc)return i(a.catchLoc,!0);if(this.prev<a.finallyLoc)return i(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return i(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return i(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,m):this.complete(a)},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),m},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),A(r),m}},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 i=n.arg;A(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:C(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),m}},t}function M(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function R(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){M(o,n,i,a,s,"next",e)}function s(e){M(o,n,i,a,s,"throw",e)}a(void 0)}))}}function F(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function z(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,B(n.key),n)}}function N(e,t,r){return t&&z(e.prototype,t),r&&z(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function I(e,t,r){return(t=B(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function B(e){var t=function(e,t){if("object"!=h(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==h(t)?t:t+""}var q=window.BookReader,G=function(){return N((function e(){F(this,e),I(this,"name",void 0),I(this,"title",void 0),I(this,"description",void 0),I(this,"icon",void 0),I(this,"enabled",void 0),I(this,"learnMore",void 0),I(this,"br",void 0),I(this,"assetRoot","/BookReader/"),I(this,"enabledLoading",!1)}),[{key:"buildAssetPath",value:function(e){return"".concat(this.assetRoot).concat(e)}},{key:"enable",value:(t=R(D().mark((function e(t){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.manual;case 1:case"end":return e.stop()}}),e)}))),function(e){return t.apply(this,arguments)})},{key:"disable",value:(e=R(D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}}),e)}))),function(){return e.apply(this,arguments)})}]);var e,t}(),U=function(e){function t(){var e;F(this,t);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return I(e=j(this,t,[].concat(n)),"options",{enabled:!0,localStorageKey:"BrExperiments",enabledExperiments:["translate"]}),I(e,"allExperiments",[new(function(e){function t(){var e;F(this,t);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return I(e=j(this,t,[].concat(n)),"name","translate"),I(e,"title","Translate Plugin"),I(e,"description","Translate books directly in your browser."),I(e,"learnMore","https://mozilla.github.io/translations/"),I(e,"icon","images/translate.svg"),I(e,"enabled",!1),e}return T(t,e),N(t,[{key:"enable",value:(n=R(D().mark((function e(t){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.manual,!q.PLUGINS.translate){e.next=3;break}return e.abrupt("return");case 3:return e.next=5,Z(this.buildAssetPath("plugins/plugin.translate.js"));case 5:this.br.initializePlugin("translate");case 6:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"disable",value:(r=R(D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(0,d.sleep)(0).then((function(){window.location.reload()}));case 1:case"end":return e.stop()}}),e)}))),function(){return r.apply(this,arguments)})}]);var r,n}(G)),new(function(e){function t(){var e;F(this,t);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return I(e=j(this,t,[].concat(n)),"name","hypothesis"),I(e,"title","Hypothes.is"),I(e,"description","Create public, collaborative, or fully private annotations on books and the web."),I(e,"learnMore","https://web.hypothes.is/about/"),I(e,"icon","images/hypothesis.ico"),I(e,"enabled",!1),e}return T(t,e),N(t,[{key:"enable",value:(n=R(D().mark((function e(t){var r,n,i;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.manual,n=void 0!==r&&r,(i=document.createElement("script")).type="application/json",i.className="js-hypothesis-config",i.textContent=JSON.stringify({openSidebar:n,assetRoot:this.buildAssetPath("hypothesis/")}),document.head.appendChild(i),e.abrupt("return",Z(this.buildAssetPath("hypothesis/build/boot.js")));case 7:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"disable",value:(r=R(D().mark((function e(){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(0,d.sleep)(0).then((function(){window.location.reload()}));case 1:case"end":return e.stop()}}),e)}))),function(){return r.apply(this,arguments)})}]);var r,n}(G))]),I(e,"_panel",void 0),e}return T(t,e),N(t,[{key:"init",value:(o=R(D().mark((function e(){var t,r,n;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.options.enabled){e.next=2;break}return e.abrupt("return");case 2:t=S(this.allExperiments);try{for(t.s();!(r=t.n()).done;)(n=r.value).assetRoot=this.br.options.imagesBaseURL.replace(/images\/$/,""),n.icon=n.buildAssetPath(n.icon),n.br=this.br}catch(e){t.e(e)}finally{t.f()}return this._loadExperimentStates(),e.next=7,Promise.resolve();case 7:this._render();case 8:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"_loadExperimentStates",value:function(){var e=JSON.parse(localStorage.getItem(this.options.localStorageKey)||"{}");this.allExperiments.forEach((function(t){void 0!==e[t.name]&&(t.enabled=e[t.name],t.enabled&&t.enable({manual:!1}))}))}},{key:"_saveExperimentStates",value:function(){var e=Object.fromEntries(this.allExperiments.map((function(e){return[e.name,e.enabled]})));localStorage.setItem(this.options.localStorageKey,JSON.stringify(e))}},{key:"_toggleExperiment",value:(r=R(D().mark((function e(t,r){var n;return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.enabledLoading=!0,null===(n=this.br.plugins.archiveAnalytics)||void 0===n||n.sendEvent("BRExperiment-".concat(t.name),r?"Enable":"Disable"),this._panel.requestUpdate(),!r){e.next=8;break}return e.next=6,t.enable({manual:!0});case 6:e.next=10;break;case 8:return e.next=10,t.disable();case 10:t.enabledLoading=!1,t.enabled=r,this._panel.requestUpdate();case 13:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.experiments={id:"experiments",icon:(0,u.qy)(n||(n=P(['\n <img src="','/icon_experiment.svg" width="26"/>\n '])),this.br.options.imagesBaseURL),label:"Experiments",component:(0,u.qy)(i||(i=P(['<br-experiments-panel\n .experiments="','"\n @connected="','"\n @toggle="','"\n />'])),this.allExperiments.filter((function(t){return e.options.enabledExperiments.includes(t.name)})),(function(t){return e._panel=t.target}),function(){var t=R(D().mark((function t(r){return D().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e._toggleExperiment(r.detail.experiment,r.detail.enabled);case 2:e._saveExperimentStates();case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())},this.br.shell.updateMenuContents()}}]);var r,o}(f.S);function Z(e){return H.apply(this,arguments)}function H(){return(H=R(D().mark((function e(t){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e,r){var n=document.createElement("script");n.src=t,n.onload=function(){return e()},n.onerror=function(){return r(new Error("Failed to load script: ".concat(t)))},document.head.appendChild(n)})));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}null==q||q.registerPlugin("experiments",U),y([(0,p.EM)("br-experiments-panel")],(function(e,t){var r,n=function(t){function r(){var t;F(this,r);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return t=j(this,r,[].concat(i)),e(t),t}return T(r,t),N(r)}(t);return{F:n,d:[{kind:"field",decorators:[(0,p.MZ)({type:Array})],key:"experiments",value:function(){return[]}},{kind:"method",key:"render",value:function(){var e=this;return(0,u.qy)(o||(o=P(['\n <div style="padding: 10px">\n ',"\n </div>\n "])),this.experiments.map((function(t){return(0,u.qy)(a||(a=P(['\n <br-experiment-toggle\n .icon="','"\n .title="','"\n .description="','"\n .enabled="','"\n .loading="','"\n .learnMore="','"\n @toggle="','"\n ></br-experiment-toggle>\n '])),t.icon,t.title,t.description,t.enabled,t.enabledLoading,t.learnMore,(function(r){return e._dispatchToggle(t,r.detail.enabled)}))})))}},{kind:"method",key:"_dispatchToggle",value:(r=R(D().mark((function e(t,r){return D().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.dispatchEvent(new CustomEvent("toggle",{detail:{experiment:t,enabled:r}}));case 1:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})},{kind:"method",key:"connectedCallback",value:function(){E(n,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}}]}}),u.WF),y([(0,p.EM)("br-experiment-toggle")],(function(e,t){var r=function(t){function r(){var t;F(this,r);for(var n=arguments.length,i=new Array(n),o=0;o<n;o++)i[o]=arguments[o];return t=j(this,r,[].concat(i)),e(t),t}return T(r,t),N(r)}(t);return{F:r,d:[{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"icon",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"title",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"description",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"enabled",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"loading",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"learnMore",value:function(){return""}},{kind:"field",decorators:[(0,p.wk)()],key:"_longLoading",value:function(){return!1}},{kind:"method",key:"update",value:function(e){var t=this;E(r,"update",this,3)([e]),e.has("loading")&&(this.loading?(0,d.sleep)(500).then((function(){t.loading&&(t._longLoading=!0,t.requestUpdate())})):this._longLoading=!1)}},{kind:"method",key:"render",value:function(){return(0,u.qy)(s||(s=P(['\n <div class="experiment-card" style="margin-bottom: 10px;">\n <div style="display: flex; align-items: center; gap: 10px;">\n <img src="','" style="width: 20px; height: 20px;" alt="" />\n <div style="flex-grow: 1; font-weight: bold;">','</div>\n </div>\n <p style="opacity: 0.9">\n ',"\n ",'\n </p>\n <div style="display: flex">\n <div style="flex-grow: 1;"></div>\n <button @click="','" .disabled="','">\n ',"\n </button>\n </div>\n </div>\n "])),this.icon,this.title,this.description,this.learnMore?(0,u.qy)(c||(c=P(['<a href="','" target="_blank">Learn more</a>.'])),this.learnMore):"",this._dispatchToggle,this.loading,this._longLoading?"Loading…":this.enabled?"Disable":"Enable")}},{kind:"get",static:!0,key:"styles",value:function(){return(0,u.AH)(l||(l=P(["\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n "])))}},{kind:"method",key:"_dispatchToggle",value:function(){this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:!this.enabled}}))}}]}}),u.WF)}},function(e){e(e.s=6732)}]);
|
|
2
|
+
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[830],{1041:function(e,t,n){function r(e){return r="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},r(e)}function i(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,o(r.key),r)}}function o(e){var t=function(e){if("object"!=r(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==r(t)?t:t+""}n.d(t,{S:function(){return a}}),n(2675),n(9463),n(2259),n(5700),n(3792),n(9572),n(8130),n(9085),n(6099),n(7764),n(2953);var a=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){}}])&&i(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},3921:function(e,t,n){var r=n(6518),i=n(2652),o=n(4659);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return i(e,function(e,n){o(t,e,n)},{AS_ENTRIES:!0}),t}})},6732:function(e,t,n){n(2675),n(9463),n(2259),n(5700),n(8125),n(8706),n(2008),n(113),n(3418),n(4423),n(3792),n(2062),n(4782),n(4554),n(739),n(9572),n(2010),n(4731),n(479),n(8130),n(9085),n(2811),n(3921),n(3851),n(875),n(9432),n(6099),n(3362),n(825),n(888),n(7495),n(8781),n(1699),n(7764),n(5440),n(3500),n(2953);var r,i,o,a,s,c,l,u=n(420),f=n(1041),p=n(9696),d=n(8004);function h(e){return h="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},h(e)}function y(e,t,n,r){var i=m();if(r)for(var o=0;o<r.length;o++)i=r[o](i);var a=t(function(e){i.initializeInstanceElements(e,s.elements)},n),s=i.decorateClass(function(e){for(var t=[],n=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},r=0;r<e.length;r++){var i,o=e[r];if("method"===o.kind&&(i=t.find(n)))if(w(o.descriptor)||w(i.descriptor)){if(g(o)||g(i))throw new ReferenceError("Duplicated methods ("+o.key+") can't be decorated.");i.descriptor=o.descriptor}else{if(g(o)){if(g(i))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}b(o,i)}else t.push(o)}return t}(a.d.map(v)),e);return i.initializeClassElements(a.F,s.elements),i.runClassFinishers(a.F,s.finishers)}function m(){m=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,t){["method","field"].forEach(function(n){t.forEach(function(t){t.kind===n&&"own"===t.placement&&this.defineClassElement(e,t)},this)},this)},initializeClassElements:function(e,t){var n=e.prototype;["method","field"].forEach(function(r){t.forEach(function(t){var i=t.placement;if(t.kind===r&&("static"===i||"prototype"===i)){var o="static"===i?e:n;this.defineClassElement(o,t)}},this)},this)},defineClassElement:function(e,t){var n=t.descriptor;if("field"===t.kind){var r=t.initializer;n={enumerable:n.enumerable,writable:n.writable,configurable:n.configurable,value:void 0===r?void 0:r.call(e)}}Object.defineProperty(e,t.key,n)},decorateClass:function(e,t){var n=[],r=[],i={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,i)},this),e.forEach(function(e){if(!g(e))return n.push(e);var t=this.decorateElement(e,i);n.push(t.element),n.push.apply(n,t.extras),r.push.apply(r,t.finishers)},this),!t)return{elements:n,finishers:r};var o=this.decorateConstructor(n,t);return r.push.apply(r,o.finishers),o.finishers=r,o},addElementPlacement:function(e,t,n){var r=t[e.placement];if(!n&&-1!==r.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");r.push(e.key)},decorateElement:function(e,t){for(var n=[],r=[],i=e.decorators,o=i.length-1;o>=0;o--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var s=this.fromElementDescriptor(e),c=this.toElementFinisherExtras((0,i[o])(s)||s);e=c.element,this.addElementPlacement(e,t),c.finisher&&r.push(c.finisher);var l=c.extras;if(l){for(var u=0;u<l.length;u++)this.addElementPlacement(l[u],t);n.push.apply(n,l)}}return{element:e,finishers:r,extras:n}},decorateConstructor:function(e,t){for(var n=[],r=t.length-1;r>=0;r--){var i=this.fromClassDescriptor(e),o=this.toClassDescriptor((0,t[r])(i)||i);if(void 0!==o.finisher&&n.push(o.finisher),void 0!==o.elements){e=o.elements;for(var a=0;a<e.length-1;a++)for(var s=a+1;s<e.length;s++)if(e[a].key===e[s].key&&e[a].placement===e[s].placement)throw new TypeError("Duplicated element ("+e[a].key+")")}}return{elements:e,finishers:n}},fromElementDescriptor:function(e){var t={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(t.initializer=e.initializer),t},toElementDescriptors:function(e){if(void 0!==e)return(t=e,function(e){if(Array.isArray(e))return e}(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||O(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.")}()).map(function(e){var t=this.toElementDescriptor(e);return this.disallowProperty(e,"finisher","An element descriptor"),this.disallowProperty(e,"extras","An element descriptor"),t},this);var t},toElementDescriptor:function(e){var t=e.kind+"";if("method"!==t&&"field"!==t)throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "'+t+'"');var n=N(e.key),r=e.placement+"";if("static"!==r&&"prototype"!==r&&"own"!==r)throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "'+r+'"');var i=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var o={kind:t,key:n,placement:r,descriptor:Object.assign({},i)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(i,"get","The property descriptor of a field descriptor"),this.disallowProperty(i,"set","The property descriptor of a field descriptor"),this.disallowProperty(i,"value","The property descriptor of a field descriptor"),o.initializer=e.initializer),o},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:k(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var t={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(t,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),t},toClassDescriptor:function(e){var t=e.kind+"";if("class"!==t)throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "'+t+'"');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var n=k(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:n}},runClassFinishers:function(e,t){for(var n=0;n<t.length;n++){var r=(0,t[n])(e);if(void 0!==r){if("function"!=typeof r)throw new TypeError("Finishers must return a constructor.");e=r}}return e},disallowProperty:function(e,t,n){if(void 0!==e[t])throw new TypeError(n+" can't have a ."+t+" property.")}};return e}function v(e){var t,n=N(e.key);"method"===e.kind?t={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?t={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?t={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(t={configurable:!0,writable:!0,enumerable:!0});var r={kind:"field"===e.kind?"field":"method",key:n,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:t};return e.decorators&&(r.decorators=e.decorators),"field"===e.kind&&(r.initializer=e.value),r}function b(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function g(e){return e.decorators&&e.decorators.length}function w(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function k(e,t){var n=e[t];if(void 0!==n&&"function"!=typeof n)throw new TypeError("Expected '"+t+"' to be a function");return n}function E(e,t,n,r){var i=x(T(1&r?e.prototype:e),t,n);return 2&r&&"function"==typeof i?function(e){return i.apply(n,e)}:i}function x(){return x="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=T(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},x.apply(null,arguments)}function P(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=O(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}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,a=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function O(e,t){if(e){if("string"==typeof e)return j(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?j(e,t):void 0}}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function _(e,t,n){return t=T(t),function(e,t){if(t&&("object"==h(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,A()?Reflect.construct(t,n||[],T(e).constructor):t.apply(e,n))}function A(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(A=function(){return!!e})()}function T(e){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},T(e)}function C(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&&D(e,t)}function D(e,t){return D=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},D(e,t)}function M(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var c=r&&r.prototype instanceof s?r:s,l=Object.create(c.prototype);return R(l,"_invoke",function(n,r,i){var o,s,c,l=0,u=i||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return o=t,s=0,c=e,p.n=n,a}};function d(n,r){for(s=n,c=r,t=0;!f&&l&&!i&&t<u.length;t++){var i,o=u[t],d=p.p,h=o[2];n>3?(i=h===r)&&(c=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=d&&((i=n<2&&d<o[1])?(s=0,p.v=r,p.n=o[1]):d<h&&(i=n<3||o[0]>r||r>h)&&(o[4]=n,o[5]=r,p.n=h,s=0))}if(i||n>1)return a;throw f=!0,r}return function(i,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),s=u,c=h;(t=s<2?e:c)||!f;){o||(s?s<3?(s>1&&(p.n=-1),d(s,c)):p.n=c:p.v=c);try{if(l=2,o){if(s||(i="next"),t=o[i]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(c=TypeError("The iterator does not provide a '"+i+"' method"),s=1);o=e}else if((t=(f=p.n<0)?c:n.call(r,p))!==a)break}catch(t){o=e,s=1,c=t}finally{l=1}}return{value:t,done:f}}}(n,i,o),!0),l}var a={};function s(){}function c(){}function l(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(R(t={},r,function(){return this}),t),f=l.prototype=s.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,R(e,i,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,R(f,"constructor",l),R(l,"constructor",c),c.displayName="GeneratorFunction",R(l,i,"GeneratorFunction"),R(f),R(f,i,"Generator"),R(f,r,function(){return this}),R(f,"toString",function(){return"[object Generator]"}),(M=function(){return{w:o,m:p}})()}function R(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}R=function(e,t,n,r){function o(t,n){R(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(o("next",0),o("throw",1),o("return",2))},R(e,t,n,r)}function z(e,t,n,r,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function F(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var o=e.apply(t,n);function a(e){z(o,r,i,a,s,"next",e)}function s(e){z(o,r,i,a,s,"throw",e)}a(void 0)})}}function L(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function B(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function I(e,t,n){return t&&B(e.prototype,t),n&&B(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function q(e,t,n){return(t=N(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(e){var t=function(e){if("object"!=h(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=h(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==h(t)?t:t+""}var G=window.BookReader,U=function(){return I(function e(){L(this,e),q(this,"name",void 0),q(this,"title",void 0),q(this,"description",void 0),q(this,"icon",void 0),q(this,"enabled",void 0),q(this,"learnMore",void 0),q(this,"br",void 0),q(this,"assetRoot","/BookReader/"),q(this,"enabledLoading",!1)},[{key:"buildAssetPath",value:function(e){return"".concat(this.assetRoot).concat(e)}},{key:"enable",value:(t=F(M().m(function e(t){return M().w(function(e){for(;;)switch(e.n){case 0:t.manual;case 1:return e.a(2)}},e)})),function(e){return t.apply(this,arguments)})},{key:"disable",value:(e=F(M().m(function e(){return M().w(function(e){for(;;)if(0===e.n)return e.a(2)},e)})),function(){return e.apply(this,arguments)})}]);var e,t}(),Z=function(e){function t(){var e;L(this,t);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return q(e=_(this,t,[].concat(r)),"options",{enabled:!0,localStorageKey:"BrExperiments",enabledExperiments:["translate"]}),q(e,"allExperiments",[new(function(e){function t(){var e;L(this,t);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return q(e=_(this,t,[].concat(r)),"name","translate"),q(e,"title","Translate Plugin"),q(e,"description","Translate books directly in your browser."),q(e,"learnMore","https://mozilla.github.io/translations/"),q(e,"icon","images/translate.svg"),q(e,"enabled",!1),e}return C(t,e),I(t,[{key:"enable",value:(r=F(M().m(function e(t){return M().w(function(e){for(;;)switch(e.n){case 0:if(t.manual,!G.PLUGINS.translate){e.n=1;break}return e.a(2);case 1:return e.n=2,H(this.buildAssetPath("plugins/plugin.translate.js"));case 2:this.br.initializePlugin("translate");case 3:return e.a(2)}},e,this)})),function(e){return r.apply(this,arguments)})},{key:"disable",value:(n=F(M().m(function e(){return M().w(function(e){for(;;)switch(e.n){case 0:(0,d.sleep)(0).then(function(){window.location.reload()});case 1:return e.a(2)}},e)})),function(){return n.apply(this,arguments)})}]);var n,r}(U)),new(function(e){function t(){var e;L(this,t);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];return q(e=_(this,t,[].concat(r)),"name","hypothesis"),q(e,"title","Hypothes.is"),q(e,"description","Create public, collaborative, or fully private annotations on books and the web."),q(e,"learnMore","https://web.hypothes.is/about/"),q(e,"icon","images/hypothesis.ico"),q(e,"enabled",!1),e}return C(t,e),I(t,[{key:"enable",value:(r=F(M().m(function e(t){var n,r,i;return M().w(function(e){for(;;)if(0===e.n)return n=t.manual,r=void 0!==n&&n,(i=document.createElement("script")).type="application/json",i.className="js-hypothesis-config",i.textContent=JSON.stringify({openSidebar:r,assetRoot:this.buildAssetPath("hypothesis/")}),document.head.appendChild(i),e.a(2,H(this.buildAssetPath("hypothesis/build/boot.js")))},e,this)})),function(e){return r.apply(this,arguments)})},{key:"disable",value:(n=F(M().m(function e(){return M().w(function(e){for(;;)switch(e.n){case 0:(0,d.sleep)(0).then(function(){window.location.reload()});case 1:return e.a(2)}},e)})),function(){return n.apply(this,arguments)})}]);var n,r}(U))]),q(e,"_panel",void 0),e}return C(t,e),I(t,[{key:"init",value:(o=F(M().m(function e(){var t,n,r;return M().w(function(e){for(;;)switch(e.n){case 0:if(this.options.enabled){e.n=1;break}return e.a(2);case 1:t=S(this.allExperiments);try{for(t.s();!(n=t.n()).done;)(r=n.value).assetRoot=this.br.options.imagesBaseURL.replace(/images\/$/,""),r.icon=r.buildAssetPath(r.icon),r.br=this.br}catch(e){t.e(e)}finally{t.f()}return this._loadExperimentStates(),e.n=2,Promise.resolve();case 2:this._render();case 3:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_loadExperimentStates",value:function(){var e=JSON.parse(localStorage.getItem(this.options.localStorageKey)||"{}");this.allExperiments.forEach(function(t){void 0!==e[t.name]&&(t.enabled=e[t.name],t.enabled&&t.enable({manual:!1}))})}},{key:"_saveExperimentStates",value:function(){var e=Object.fromEntries(this.allExperiments.map(function(e){return[e.name,e.enabled]}));localStorage.setItem(this.options.localStorageKey,JSON.stringify(e))}},{key:"_toggleExperiment",value:(n=F(M().m(function e(t,n){var r;return M().w(function(e){for(;;)switch(e.n){case 0:if(t.enabledLoading=!0,null===(r=this.br.plugins.archiveAnalytics)||void 0===r||r.sendEvent("BRExperiment-".concat(t.name),n?"Enable":"Disable"),this._panel.requestUpdate(),!n){e.n=2;break}return e.n=1,t.enable({manual:!0});case 1:e.n=3;break;case 2:return e.n=3,t.disable();case 3:t.enabledLoading=!1,t.enabled=n,this._panel.requestUpdate();case 4:return e.a(2)}},e,this)})),function(e,t){return n.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.experiments={id:"experiments",icon:(0,u.qy)(r||(r=P(['\n <img src="','/icon_experiment.svg" width="26"/>\n '])),this.br.options.imagesBaseURL),label:"Experiments",component:(0,u.qy)(i||(i=P(['<br-experiments-panel\n .experiments="','"\n @connected="','"\n @toggle="','"\n />'])),this.allExperiments.filter(function(t){return e.options.enabledExperiments.includes(t.name)}),function(t){return e._panel=t.target},function(){var t=F(M().m(function t(n){return M().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,e._toggleExperiment(n.detail.experiment,n.detail.enabled);case 1:e._saveExperimentStates();case 2:return t.a(2)}},t)}));return function(e){return t.apply(this,arguments)}}())},this.br.shell.updateMenuContents()}}]);var n,o}(f.S);function H(e){return J.apply(this,arguments)}function J(){return(J=F(M().m(function e(t){return M().w(function(e){for(;;)if(0===e.n)return e.a(2,new Promise(function(e,n){var r=document.createElement("script");r.src=t,r.onload=function(){return e()},r.onerror=function(){return n(new Error("Failed to load script: ".concat(t)))},document.head.appendChild(r)}))},e)}))).apply(this,arguments)}null==G||G.registerPlugin("experiments",Z),y([(0,p.EM)("br-experiments-panel")],function(e,t){var n,r=function(t){function n(){var t;L(this,n);for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return t=_(this,n,[].concat(i)),e(t),t}return C(n,t),I(n)}(t);return{F:r,d:[{kind:"field",decorators:[(0,p.MZ)({type:Array})],key:"experiments",value:function(){return[]}},{kind:"method",key:"render",value:function(){var e=this;return(0,u.qy)(o||(o=P(['\n <div style="padding: 10px">\n ',"\n </div>\n "])),this.experiments.map(function(t){return(0,u.qy)(a||(a=P(['\n <br-experiment-toggle\n .icon="','"\n .title="','"\n .description="','"\n .enabled="','"\n .loading="','"\n .learnMore="','"\n @toggle="','"\n ></br-experiment-toggle>\n '])),t.icon,t.title,t.description,t.enabled,t.enabledLoading,t.learnMore,function(n){return e._dispatchToggle(t,n.detail.enabled)})}))}},{kind:"method",key:"_dispatchToggle",value:(n=F(M().m(function e(t,n){return M().w(function(e){for(;;)switch(e.n){case 0:this.dispatchEvent(new CustomEvent("toggle",{detail:{experiment:t,enabled:n}}));case 1:return e.a(2)}},e,this)})),function(e,t){return n.apply(this,arguments)})},{kind:"method",key:"connectedCallback",value:function(){E(r,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}}]}},u.WF),y([(0,p.EM)("br-experiment-toggle")],function(e,t){var n=function(t){function n(){var t;L(this,n);for(var r=arguments.length,i=new Array(r),o=0;o<r;o++)i[o]=arguments[o];return t=_(this,n,[].concat(i)),e(t),t}return C(n,t),I(n)}(t);return{F:n,d:[{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"icon",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"title",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"description",value:function(){return""}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"enabled",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:Boolean})],key:"loading",value:function(){return!1}},{kind:"field",decorators:[(0,p.MZ)({type:String})],key:"learnMore",value:function(){return""}},{kind:"field",decorators:[(0,p.wk)()],key:"_longLoading",value:function(){return!1}},{kind:"method",key:"update",value:function(e){var t=this;E(n,"update",this,3)([e]),e.has("loading")&&(this.loading?(0,d.sleep)(500).then(function(){t.loading&&(t._longLoading=!0,t.requestUpdate())}):this._longLoading=!1)}},{kind:"method",key:"render",value:function(){return(0,u.qy)(s||(s=P(['\n <div class="experiment-card" style="margin-bottom: 10px;">\n <div style="display: flex; align-items: center; gap: 10px;">\n <img src="','" style="width: 20px; height: 20px;" alt="" />\n <div style="flex-grow: 1; font-weight: bold;">','</div>\n </div>\n <p style="opacity: 0.9">\n ',"\n ",'\n </p>\n <div style="display: flex">\n <div style="flex-grow: 1;"></div>\n <button @click="','" .disabled="','">\n ',"\n </button>\n </div>\n </div>\n "])),this.icon,this.title,this.description,this.learnMore?(0,u.qy)(c||(c=P(['<a href="','" target="_blank">Learn more</a>.'])),this.learnMore):"",this._dispatchToggle,this.loading,this._longLoading?"Loading…":this.enabled?"Disable":"Enable")}},{kind:"get",static:!0,key:"styles",value:function(){return(0,u.AH)(l||(l=P(["\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n "])))}},{kind:"method",key:"_dispatchToggle",value:function(){this.dispatchEvent(new CustomEvent("toggle",{detail:{enabled:!this.enabled}}))}}]}},u.WF)}},function(e){e(e.s=6732)}]);
|
|
3
3
|
//# sourceMappingURL=plugin.experiments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/
|
|
1
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/plugin.experiments.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.from-entries.js","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.experiments.js"],"sourcesContent":["'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://github.com/tc39/proposal-object-from-entries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","// @ts-check\n/** @typedef {import(\"./BookReader.js\").default} BookReader */\n\n/**\n * @template TOptions\n */\nexport class BookReaderPlugin {\n /**\n * @param {BookReader} br\n */\n constructor(br) {\n /** @type {BookReader} */\n this.br = br;\n /** @type {TOptions} */\n this.options;\n }\n\n /**\n * @abstract\n * @param {TOptions} options\n **/\n setup(options) {\n this.options = Object.assign({}, this.options, options);\n }\n\n /** @abstract */\n init() {}\n\n /**\n * @abstract\n * @protected\n * @param {import (\"./BookReader/PageContainer.js\").PageContainer} pageContainer\n */\n _configurePageContainer(pageContainer) {\n }\n\n /**\n * @abstract\n * @protected\n * @param {JQuery<HTMLElement>} $toolbarElement\n */\n _configureToolbar($toolbarElement) {\n }\n\n /** @abstract @protected */\n _bindNavigationHandlers() {}\n\n /**\n * @param {JQuery<HTMLElement>} $navBar\n */\n extendNavBar($navBar) {}\n}\n","// @ts-check\nimport { css, html, LitElement } from 'lit';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { sleep } from '../BookReader/utils.js';\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nclass ExperimentModel {\n /** @type {string} test */\n name;\n /** @type {string} */\n title;\n /** @type {string} */\n description;\n /** @type {string} */\n icon;\n /** @type {boolean} */\n enabled;\n /** @type {string} */\n learnMore;\n\n /** @type {import(\"@/src/BookReader.js\").default} */\n br;\n\n assetRoot = '/BookReader/';\n\n enabledLoading = false;\n\n /**\n * @param {string} path\n */\n buildAssetPath(path) {\n return `${this.assetRoot}${path}`;\n }\n\n /**\n * @param {object} param0\n * @param {boolean} param0.manual Whether the experiment was enabled manually\n */\n async enable({ manual }) { }\n async disable() { }\n}\n\nexport class ExperimentsPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /** Where the state of this plugin is saved in localStorage */\n localStorageKey: 'BrExperiments',\n\n /** The experiments that should be shown in the experiments panel */\n enabledExperiments: ['translate'],\n }\n\n /** @type {ExperimentModel[]} */\n allExperiments = [\n new class extends ExperimentModel {\n name = 'translate';\n title = 'Translate Plugin';\n description = \"Translate books directly in your browser.\";\n learnMore = 'https://mozilla.github.io/translations/';\n icon = 'images/translate.svg';\n enabled = false;\n async enable({ manual = false}) {\n if (BookReader.PLUGINS.translate) return;\n\n await importAsScript(this.buildAssetPath('plugins/plugin.translate.js'));\n this.br.initializePlugin('translate');\n }\n async disable() {\n // need to reload to remove translate plugin script\n // Sleep so that the event loop can finish processing before the reload\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\n new class extends ExperimentModel {\n name = 'hypothesis';\n title = 'Hypothes.is';\n description = 'Create public, collaborative, or fully private annotations on books and the web.';\n learnMore = 'https://web.hypothes.is/about/';\n icon = 'images/hypothesis.ico';\n enabled = false;\n\n async enable({ manual = false }) {\n // Hypothesis configs ; see https://h.readthedocs.io/projects/client/en/latest/publishers/config.html\n const configScript = document.createElement('script');\n configScript.type = 'application/json';\n configScript.className = 'js-hypothesis-config';\n configScript.textContent = JSON.stringify({\n // Open the sidebar if this is the first time enabling\n openSidebar: manual,\n assetRoot: this.buildAssetPath('hypothesis/'),\n });\n\n document.head.appendChild(configScript);\n return importAsScript(this.buildAssetPath('hypothesis/build/boot.js'));\n // For testing\n // return importAsScript('http://localhost:3001/hypothesis');\n }\n\n async disable() {\n // need to reload to remove the Hypothesis script\n // Sleep so that the event loop can finish processing before the reload\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\n ]\n\n /** @type {BrExperimentsPanel} */\n _panel;\n\n async init() {\n if (!this.options.enabled) {\n return;\n }\n\n for (const experiment of this.allExperiments) {\n // TODO: imagesBaseURL should be replaced with assetRoot everywhere\n experiment.assetRoot = this.br.options.imagesBaseURL.replace(/images\\/$/, '');\n experiment.icon = experiment.buildAssetPath(experiment.icon);\n experiment.br = this.br;\n }\n\n this._loadExperimentStates();\n await Promise.resolve();\n this._render();\n }\n\n _loadExperimentStates() {\n const savedStates = JSON.parse(localStorage.getItem(this.options.localStorageKey) || '{}');\n this.allExperiments.forEach(experiment => {\n if (savedStates[experiment.name] !== undefined) {\n experiment.enabled = savedStates[experiment.name];\n if (experiment.enabled) {\n experiment.enable({ manual: false });\n }\n }\n });\n }\n\n _saveExperimentStates() {\n const states = Object.fromEntries(\n this.allExperiments.map(experiment => [experiment.name, experiment.enabled]),\n );\n localStorage.setItem(this.options.localStorageKey, JSON.stringify(states));\n }\n\n /**\n * @param {ExperimentModel} experiment\n * @param {boolean} enabled\n */\n async _toggleExperiment(experiment, enabled) {\n experiment.enabledLoading = true;\n this.br.plugins.archiveAnalytics?.sendEvent(`BRExperiment-${experiment.name}`, enabled ? 'Enable' : 'Disable');\n this._panel.requestUpdate();\n\n if (enabled) {\n await experiment.enable({ manual: true });\n } else {\n await experiment.disable();\n }\n experiment.enabledLoading = false;\n experiment.enabled = enabled;\n this._panel.requestUpdate();\n }\n\n _render() {\n this.br.shell.menuProviders['experiments'] = {\n id: 'experiments',\n icon: html`\n <img src=\"${this.br.options.imagesBaseURL}/icon_experiment.svg\" width=\"26\"/>\n `,\n label: 'Experiments',\n component: html`<br-experiments-panel\n .experiments=\"${this.allExperiments.filter(experiment => this.options.enabledExperiments.includes(experiment.name))}\"\n @connected=\"${e => this._panel = e.target}\"\n @toggle=\"${async e => {\n await this._toggleExperiment(e.detail.experiment, e.detail.enabled);\n this._saveExperimentStates();\n }}\"\n />`,\n };\n this.br.shell.updateMenuContents();\n }\n}\nBookReader?.registerPlugin('experiments', ExperimentsPlugin);\n\n@customElement('br-experiments-panel')\nexport class BrExperimentsPanel extends LitElement {\n\n /** @type {ExperimentModel[]} */\n @property({ type: Array }) experiments = [];\n\n render() {\n return html`\n <div style=\"padding: 10px\">\n ${this.experiments.map(\n experiment => html`\n <br-experiment-toggle\n .icon=\"${experiment.icon}\"\n .title=\"${experiment.title}\"\n .description=\"${experiment.description}\"\n .enabled=\"${experiment.enabled}\"\n .loading=\"${experiment.enabledLoading}\"\n .learnMore=\"${experiment.learnMore}\"\n @toggle=\"${e => this._dispatchToggle(experiment, e.detail.enabled)}\"\n ></br-experiment-toggle>\n `,\n )}\n </div>\n `;\n }\n\n /**\n * @param {ExperimentModel} experiment\n * @param {boolean} enabled\n */\n async _dispatchToggle(experiment, enabled) {\n this.dispatchEvent(new CustomEvent('toggle', {\n detail: { experiment, enabled },\n }));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n}\n\n@customElement('br-experiment-toggle')\nexport class BrExperimentToggle extends LitElement {\n @property({ type: String }) icon = '';\n @property({ type: String }) title = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) enabled = false;\n @property({ type: Boolean }) loading = false;\n @property({ type: String }) learnMore = '';\n\n /**\n * We want to disable the button immediately if loading, but only display\n * the loading indicator after 200ms.\n */\n @state() _longLoading = false;\n\n /** @override */\n update(changedProperties) {\n super.update(changedProperties);\n if (changedProperties.has('loading')) {\n if (this.loading) {\n sleep(500).then(() => {\n if (this.loading) {\n this._longLoading = true;\n this.requestUpdate();\n }\n });\n } else {\n this._longLoading = false;\n }\n }\n }\n\n render() {\n return html`\n <div class=\"experiment-card\" style=\"margin-bottom: 10px;\">\n <div style=\"display: flex; align-items: center; gap: 10px;\">\n <img src=\"${this.icon}\" style=\"width: 20px; height: 20px;\" alt=\"\" />\n <div style=\"flex-grow: 1; font-weight: bold;\">${this.title}</div>\n </div>\n <p style=\"opacity: 0.9\">\n ${this.description}\n ${this.learnMore ? html`<a href=\"${this.learnMore}\" target=\"_blank\">Learn more</a>.` : ''}\n </p>\n <div style=\"display: flex\">\n <div style=\"flex-grow: 1;\"></div>\n <button @click=\"${this._dispatchToggle}\" .disabled=\"${this.loading}\">\n ${this._longLoading ? 'Loading…' : this.enabled ? 'Disable' : 'Enable'}\n </button>\n </div>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n `;\n }\n\n _dispatchToggle() {\n this.dispatchEvent(new CustomEvent('toggle', { detail: { enabled: !this.enabled } }));\n }\n}\n\n/**\n * @param {string} url\n */\nasync function importAsScript(url) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Failed to load script: ${url}`));\n document.head.appendChild(script);\n });\n}\n"],"names":["$","iterate","createProperty","target","stat","fromEntries","iterable","obj","k","v","AS_ENTRIES","BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","_regeneratorRuntime","e","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","values","g","defineIteratorMethods","forEach","_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","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_defineProperty","toPrimitive","String","_toPrimitive","BookReader","window","ExperimentModel","path","concat","assetRoot","_enable","_callee","_ref","_context","manual","_x","_disable","_callee2","_context2","ExperimentsPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","_callSuper","enabled","localStorageKey","enabledExperiments","_ExperimentModel2","_class","_this2","_len2","_key2","_inherits","_enable2","_callee3","_ref2","_context3","PLUGINS","translate","importAsScript","buildAssetPath","initializePlugin","_x2","_disable2","_callee4","_context4","sleep","location","reload","_ExperimentModel3","_class2","_this3","_len3","_key3","_enable3","_callee5","_ref3","_ref3$manual","configScript","_context5","document","createElement","className","textContent","JSON","stringify","openSidebar","head","appendChild","_x3","_disable3","_callee6","_context6","_init","_callee7","_iterator","_step","experiment","_context7","_createForOfIteratorHelper","allExperiments","imagesBaseURL","replace","icon","err","_loadExperimentStates","_render","savedStates","parse","localStorage","getItem","undefined","enable","states","map","setItem","_toggleExperiment2","_callee8","_this$br$plugins$arch","_context8","enabledLoading","plugins","archiveAnalytics","sendEvent","_panel","requestUpdate","disable","_x4","_x5","_this4","shell","menuProviders","id","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","filter","includes","_ref4","_callee9","_context9","_toggleExperiment","detail","_saveExperimentStates","_x6","updateMenuContents","_x9","_importAsScript","_callee11","url","_context11","reject","script","src","onload","onerror","registerPlugin","_decorate","customElement","_initialize","_LitElement","_dispatchToggle2","BrExperimentsPanel","_LitElement2","_this5","_len4","_key4","F","kind","decorators","property","_this6","_templateObject3","experiments","_templateObject4","title","description","learnMore","_dispatchToggle","_callee10","_context10","dispatchEvent","CustomEvent","_x7","_x8","_superPropGet","LitElement","_initialize2","_LitElement3","BrExperimentToggle","_LitElement4","_this7","_len5","_key5","Boolean","state","changedProperties","_this8","has","loading","_longLoading","_templateObject5","_templateObject6","static","css","_templateObject7"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"plugins/plugin.experiments.js","mappings":";y6BAMO,IAAMA,EAAgB,WAW3B,O,EAPA,SAAAA,EAAYC,I,4FAAIC,CAAA,KAAAF,GAEdG,KAAKF,GAAKA,EAEVE,KAAKC,OACP,G,EAEA,EAAAC,IAAA,QAAAC,MAIA,SAAMF,GACJD,KAAKC,QAAUG,OAAOC,OAAO,CAAC,EAAGL,KAAKC,QAASA,EACjD,GAEA,CAAAC,IAAA,OAAAC,MACA,WAAQ,GAER,CAAAD,IAAA,0BAAAC,MAKA,SAAwBG,GACxB,GAEA,CAAAJ,IAAA,oBAAAC,MAKA,SAAkBI,GAClB,GAEA,CAAAL,IAAA,0BAAAC,MACA,WAA2B,GAE3B,CAAAD,IAAA,eAAAC,MAGA,SAAaK,GAAU,M,6EAAC,CA5CG,E,uBCL7B,IAAIC,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClBC,EAAiB,EAAQ,MAI7BF,EAAE,CAAEG,OAAQ,SAAUC,MAAM,GAAQ,CAClCC,YAAa,SAAqBC,GAChC,IAAIC,EAAM,CAAC,EAIX,OAHAN,EAAQK,EAAU,SAAUE,EAAGC,GAC7BP,EAAeK,EAAKC,EAAGC,EACzB,EAAG,CAAEC,YAAY,IACVH,CACT,G,i8TCbF,IAAAI,EAAAC,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,aAAA,yBAAAC,EAAAN,EAAAE,EAAAE,EAAAE,GAAA,IAAAC,EAAAL,GAAAA,EAAAM,qBAAAC,EAAAP,EAAAO,EAAAC,EAAA5B,OAAA6B,OAAAJ,EAAAC,WAAA,OAAAI,EAAAF,EAAA,mBAAAV,EAAAE,EAAAE,GAAA,IAAAE,EAAAC,EAAAG,EAAAG,EAAA,EAAAC,EAAAV,GAAA,GAAAW,GAAA,EAAAC,EAAA,CAAAF,EAAA,EAAAZ,EAAA,EAAAN,EAAAE,EAAAmB,EAAAC,EAAAL,EAAAK,EAAAC,KAAArB,EAAA,GAAAoB,EAAA,SAAAnB,EAAAC,GAAA,OAAAM,EAAAP,EAAAQ,EAAA,EAAAG,EAAAZ,EAAAkB,EAAAd,EAAAF,EAAAiB,CAAA,YAAAC,EAAAlB,EAAAE,GAAA,IAAAK,EAAAP,EAAAU,EAAAR,EAAAH,EAAA,GAAAgB,GAAAF,IAAAT,GAAAL,EAAAe,EAAAM,OAAArB,IAAA,KAAAK,EAAAE,EAAAQ,EAAAf,GAAAmB,EAAAF,EAAAF,EAAAO,EAAAf,EAAA,GAAAN,EAAA,GAAAI,EAAAiB,IAAAnB,KAAAQ,EAAAJ,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAAR,GAAAQ,EAAA,IAAAY,KAAAd,EAAAJ,EAAA,GAAAkB,EAAAZ,EAAA,KAAAC,EAAA,EAAAS,EAAApB,EAAAM,EAAAc,EAAAd,EAAAI,EAAA,IAAAY,EAAAG,IAAAjB,EAAAJ,EAAA,GAAAM,EAAA,GAAAJ,GAAAA,EAAAmB,KAAAf,EAAA,GAAAN,EAAAM,EAAA,GAAAJ,EAAAc,EAAAd,EAAAmB,EAAAd,EAAA,OAAAH,GAAAJ,EAAA,SAAAiB,EAAA,MAAAF,GAAA,EAAAb,CAAA,iBAAAE,EAAAU,EAAAO,GAAA,GAAAR,EAAA,QAAAS,UAAA,oCAAAP,GAAA,IAAAD,GAAAI,EAAAJ,EAAAO,GAAAd,EAAAO,EAAAJ,EAAAW,GAAAtB,EAAAQ,EAAA,EAAAT,EAAAY,KAAAK,GAAA,CAAAT,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAS,EAAAd,GAAA,GAAAgB,EAAAX,EAAAG,IAAAM,EAAAd,EAAAQ,EAAAM,EAAApB,EAAAc,GAAA,OAAAG,EAAA,EAAAP,EAAA,IAAAC,IAAAH,EAAA,QAAAL,EAAAO,EAAAF,GAAA,MAAAL,EAAAA,EAAAwB,KAAAjB,EAAAI,IAAA,MAAAY,UAAA,wCAAAvB,EAAAyB,KAAA,OAAAzB,EAAAW,EAAAX,EAAAlB,MAAA0B,EAAA,IAAAA,EAAA,YAAAA,IAAAR,EAAAO,EAAAmB,SAAA1B,EAAAwB,KAAAjB,GAAAC,EAAA,IAAAG,EAAAY,UAAA,oCAAAlB,EAAA,YAAAG,EAAA,GAAAD,EAAAR,CAAA,UAAAC,GAAAgB,EAAAC,EAAAd,EAAA,GAAAQ,EAAAV,EAAAuB,KAAArB,EAAAc,MAAAC,EAAA,YAAAlB,GAAAO,EAAAR,EAAAS,EAAA,EAAAG,EAAAX,CAAA,SAAAc,EAAA,UAAAhC,MAAAkB,EAAAyB,KAAAT,EAAA,GAAAf,EAAAI,EAAAE,IAAA,GAAAI,CAAA,KAAAO,EAAA,YAAAR,IAAA,UAAAiB,IAAA,UAAAC,IAAA,CAAA5B,EAAAjB,OAAA8C,eAAA,IAAArB,EAAA,GAAAL,GAAAH,EAAAA,EAAA,GAAAG,QAAAU,EAAAb,EAAA,GAAAG,EAAA,yBAAAH,GAAAW,EAAAiB,EAAAnB,UAAAC,EAAAD,UAAA1B,OAAA6B,OAAAJ,GAAA,SAAAM,EAAAf,GAAA,OAAAhB,OAAA+C,eAAA/C,OAAA+C,eAAA/B,EAAA6B,IAAA7B,EAAAgC,UAAAH,EAAAf,EAAAd,EAAAM,EAAA,sBAAAN,EAAAU,UAAA1B,OAAA6B,OAAAD,GAAAZ,CAAA,QAAA4B,EAAAlB,UAAAmB,EAAAf,EAAAF,EAAA,cAAAiB,GAAAf,EAAAe,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAAnB,EAAAe,EAAAvB,EAAA,qBAAAQ,EAAAF,GAAAE,EAAAF,EAAAN,EAAA,aAAAQ,EAAAF,EAAAR,EAAA,yBAAAU,EAAAF,EAAA,oDAAAsB,EAAA,kBAAAC,EAAA3B,EAAA4B,EAAArB,EAAA,cAAAD,EAAAd,EAAAE,EAAAE,EAAAH,GAAA,IAAAO,EAAAxB,OAAAqD,eAAA,IAAA7B,EAAA,gBAAAR,GAAAQ,EAAA,EAAAM,EAAA,SAAAd,EAAAE,EAAAE,EAAAH,GAAA,SAAAK,EAAAJ,EAAAE,GAAAU,EAAAd,EAAAE,EAAA,SAAAF,GAAA,YAAAsC,QAAApC,EAAAE,EAAAJ,EAAA,GAAAE,EAAAM,EAAAA,EAAAR,EAAAE,EAAA,CAAAnB,MAAAqB,EAAAmC,YAAAtC,EAAAuC,cAAAvC,EAAAwC,UAAAxC,IAAAD,EAAAE,GAAAE,GAAAE,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAQ,EAAAd,EAAAE,EAAAE,EAAAH,EAAA,UAAAyC,EAAAtC,EAAAH,EAAAD,EAAAE,EAAAI,EAAAa,EAAAV,GAAA,QAAAD,EAAAJ,EAAAe,GAAAV,GAAAG,EAAAJ,EAAAzB,KAAA,OAAAqB,GAAA,YAAAJ,EAAAI,EAAA,CAAAI,EAAAkB,KAAAzB,EAAAW,GAAA+B,QAAAC,QAAAhC,GAAAiC,KAAA3C,EAAAI,EAAA,UAAAwC,EAAA1C,GAAA,sBAAAH,EAAA,KAAAD,EAAA+C,UAAA,WAAAJ,QAAA,SAAAzC,EAAAI,GAAA,IAAAa,EAAAf,EAAA4C,MAAA/C,EAAAD,GAAA,SAAAiD,EAAA7C,GAAAsC,EAAAvB,EAAAjB,EAAAI,EAAA2C,EAAAC,EAAA,OAAA9C,EAAA,UAAA8C,EAAA9C,GAAAsC,EAAAvB,EAAAjB,EAAAI,EAAA2C,EAAAC,EAAA,QAAA9C,EAAA,CAAA6C,OAAA,eAAAtE,EAAAwC,EAAAf,GAAA,KAAAe,aAAAf,GAAA,UAAAoB,UAAA,8CAAA2B,EAAAnD,EAAAE,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAAoB,OAAArB,IAAA,KAAAK,EAAAJ,EAAAD,GAAAK,EAAAiC,WAAAjC,EAAAiC,aAAA,EAAAjC,EAAAkC,cAAA,YAAAlC,IAAAA,EAAAmC,UAAA,GAAAzD,OAAAqD,eAAArC,EAAAoD,EAAA9C,EAAAxB,KAAAwB,EAAA,WAAA+C,EAAArD,EAAAE,EAAAD,GAAA,OAAAC,GAAAiD,EAAAnD,EAAAU,UAAAR,GAAAD,GAAAkD,EAAAnD,EAAAC,GAAAjB,OAAAqD,eAAArC,EAAA,aAAAyC,UAAA,IAAAzC,CAAA,UAAAsD,EAAAtD,EAAAE,EAAAD,GAAA,OAAAC,EAAAkD,EAAAlD,MAAAF,EAAAhB,OAAAqD,eAAArC,EAAAE,EAAA,CAAAnB,MAAAkB,EAAAsC,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAzC,EAAAE,GAAAD,EAAAD,CAAA,UAAAoD,EAAAnD,GAAA,IAAAO,EAAA,SAAAP,GAAA,aAAAsD,EAAAtD,KAAAA,EAAA,OAAAA,EAAA,IAAAD,EAAAC,EAAAE,OAAAqD,aAAA,YAAAxD,EAAA,KAAAQ,EAAAR,EAAAyB,KAAAxB,EAAAC,UAAA,aAAAqD,EAAA/C,GAAA,OAAAA,EAAA,UAAAgB,UAAA,uDAAAiC,OAAAxD,EAAA,CAAAyD,CAAAzD,GAAA,gBAAAsD,EAAA/C,GAAAA,EAAAA,EAAA,GAMA,IAAMmD,EAAyEC,OAAOD,WAEhFE,EAAe,WAmBG,OAAAR,EAnBH,SAAAQ,IAAAlF,EAAA,KAAAkF,GACnBP,EAAA,oBAEAA,EAAA,qBAEAA,EAAA,2BAEAA,EAAA,oBAEAA,EAAA,uBAEAA,EAAA,yBAGAA,EAAA,kBAAAA,EAAA,iBAGY,gBAAcA,EAAA,uBAET,EAAK,IAAAxE,IAAA,iBAAAC,MAKtB,SAAe+E,GACb,MAAO,GAAPC,OAAUnF,KAAKoF,WAASD,OAAGD,EAC7B,GAEA,CAAAhF,IAAA,SAAAC,OAAAkF,EAAAnB,EAAAZ,IAAAE,EAIA,SAAA8B,EAAAC,GAAA,OAAAjC,IAAAC,EAAA,SAAAiC,GAAA,cAAAA,EAAAhE,GAAA,OAAqB+D,EAANE,OAAM,cAAAD,EAAAjD,EAAA,KAAA+C,EAAA,IAAO,SAAhBI,GAAA,OAAAL,EAAAjB,MAAC,KAADD,UAAA,KAAAjE,IAAA,UAAAC,OAAAwF,EAAAzB,EAAAZ,IAAAE,EACZ,SAAAoC,IAAA,OAAAtC,IAAAC,EAAA,SAAAsC,GAAA,cAAAA,EAAArE,EAAA,OAAAqE,EAAAtD,EAAA,IAAAqD,EAAA,IAAmB,WAAN,OAAAD,EAAAvB,MAAC,KAADD,UAAA,MADD,IAAAwB,EAJZN,CAKa,CAjCM,GAoCRS,EAAiB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAjG,EAAA,KAAA+F,GAAA,QAAAG,EAAA9B,UAAAzB,OAAAwD,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAAjC,UAAAiC,GAqE5B,OArE4B1B,EAAAsB,EAAAK,EAAA,KAAAP,EAAA,GAAAX,OAAAe,IAAA,UAClB,CACRI,SAAS,EAGTC,gBAAiB,gBAGjBC,mBAAoB,CAAC,eAGvB9B,EAAAsB,EAAA,iBACiB,CACf,aAAAS,GAAA,SAAAC,IAAA,IAAAC,EAAA5G,EAAA,KAAA2G,GAAA,QAAAE,EAAAzC,UAAAzB,OAAAwD,EAAA,IAAAC,MAAAS,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAX,EAAAW,GAAA1C,UAAA0C,GAMiB,OANjBnC,EAAAiC,EAAAN,EAAA,KAAAK,EAAA,GAAAvB,OAAAe,IAAA,OACS,aAAWxB,EAAAiC,EAAA,QACV,oBAAkBjC,EAAAiC,EAAA,cACZ,6CAA2CjC,EAAAiC,EAAA,YAC7C,2CAAyCjC,EAAAiC,EAAA,OAC9C,wBAAsBjC,EAAAiC,EAAA,WACnB,GAAKA,CAAA,QAAAG,EAAAJ,EAAAD,GAAAhC,EAAAiC,EAAA,EAAAxG,IAAA,SAAAC,OAAA4G,EAAA7C,EAAAZ,IAAAE,EACf,SAAAwD,EAAAC,GAAA,OAAA3D,IAAAC,EAAA,SAAA2D,GAAA,cAAAA,EAAA1F,GAAA,OAA6B,GAA7ByF,EAAexB,QACTV,EAAWoC,QAAQC,UAAW,CAAFF,EAAA1F,EAAA,eAAA0F,EAAA3E,EAAA,iBAAA2E,EAAA1F,EAAA,EAE1B6F,EAAerH,KAAKsH,eAAe,gCAA+B,OACxEtH,KAAKF,GAAGyH,iBAAiB,aAAa,cAAAL,EAAA3E,EAAA,KAAAyE,EAAA,SACvC,SALWQ,GAAA,OAAAT,EAAA3C,MAAC,KAADD,UAAA,KAAAjE,IAAA,UAAAC,OAAAsH,EAAAvD,EAAAZ,IAAAE,EAMZ,SAAAkE,IAAA,OAAApE,IAAAC,EAAA,SAAAoE,GAAA,cAAAA,EAAAnG,GAAA,QAGEoG,EAAAA,EAAAA,OAAM,GAAG3D,KAAK,WACZe,OAAO6C,SAASC,QAClB,GAAG,cAAAH,EAAApF,EAAA,KAAAmF,EAAA,IACJ,WANY,OAAAD,EAAArD,MAAC,KAADD,UAAA,MAND,IAAAsD,EADGV,CAOF,CAbX,CAAc9B,IAqBlB,aAAA8C,GAAA,SAAAC,IAAA,IAAAC,EAAAlI,EAAA,KAAAiI,GAAA,QAAAE,EAAA/D,UAAAzB,OAAAwD,EAAA,IAAAC,MAAA+B,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAjC,EAAAiC,GAAAhE,UAAAgE,GAMiB,OANjBzD,EAAAuD,EAAA5B,EAAA,KAAA2B,EAAA,GAAA7C,OAAAe,IAAA,OACS,cAAYxB,EAAAuD,EAAA,QACX,eAAavD,EAAAuD,EAAA,cACP,oFAAkFvD,EAAAuD,EAAA,YACpF,kCAAgCvD,EAAAuD,EAAA,OACrC,yBAAuBvD,EAAAuD,EAAA,WACpB,GAAKA,CAAA,QAAAnB,EAAAkB,EAAAD,GAAAtD,EAAAuD,EAAA,EAAA9H,IAAA,SAAAC,OAAAiI,EAAAlE,EAAAZ,IAAAE,EAEf,SAAA6E,EAAAC,GAAA,IAAAC,EAAA9C,EAAA+C,EAAA,OAAAlF,IAAAC,EAAA,SAAAkF,GAAA,cAAAA,EAAAjH,EAW0C,OAX1C+G,EAAAD,EAAe7C,OAAAA,OAAM,IAAA8C,GAAQA,GAErBC,EAAeE,SAASC,cAAc,WAC/BC,KAAO,mBACpBJ,EAAaK,UAAY,uBACzBL,EAAaM,YAAcC,KAAKC,UAAU,CAExCC,YAAaxD,EACbL,UAAWpF,KAAKsH,eAAe,iBAGjCoB,SAASQ,KAAKC,YAAYX,GAAcC,EAAAlG,EAAA,EACjC8E,EAAerH,KAAKsH,eAAe,6BAA4B,EAAAe,EAAA,SAGvE,SAfWe,GAAA,OAAAhB,EAAAhE,MAAC,KAADD,UAAA,KAAAjE,IAAA,UAAAC,OAAAkJ,EAAAnF,EAAAZ,IAAAE,EAiBZ,SAAA8F,IAAA,OAAAhG,IAAAC,EAAA,SAAAgG,GAAA,cAAAA,EAAA/H,GAAA,QAGEoG,EAAAA,EAAAA,OAAM,GAAG3D,KAAK,WACZe,OAAO6C,SAASC,QAClB,GAAG,cAAAyB,EAAAhH,EAAA,KAAA+G,EAAA,IACJ,WANY,OAAAD,EAAAjF,MAAC,KAADD,UAAA,MAjBD,IAAAkF,EAFGjB,CAmBF,CAzBX,CAAcnD,MAmCpBP,EAAAsB,EAAA,iBAAAA,CAAA,QAAAc,EAAAhB,EAAAC,GAAAtB,EAAAqB,EAAA,EAAA5F,IAAA,OAAAC,OAAAqJ,EAAAtF,EAAAZ,IAAAE,EAGA,SAAAiG,IAAA,IAAAC,EAAAC,EAAAC,EAAA,OAAAtG,IAAAC,EAAA,SAAAsG,GAAA,cAAAA,EAAArI,GAAA,UACOxB,KAAKC,QAAQqG,QAAS,CAAFuD,EAAArI,EAAA,eAAAqI,EAAAtH,EAAA,UAAAmH,EAAAI,EAIA9J,KAAK+J,gBAAc,IAA5C,IAAAL,EAAAM,MAAAL,EAAAD,EAAAlI,KAAAsB,OAAW8G,EAAUD,EAAAxJ,OAERiF,UAAYpF,KAAKF,GAAGG,QAAQgK,cAAcC,QAAQ,YAAa,IAC1EN,EAAWO,KAAOP,EAAWtC,eAAesC,EAAWO,MACvDP,EAAW9J,GAAKE,KAAKF,EACtB,OAAAsK,GAAAV,EAAAtI,EAAAgJ,EAAA,SAAAV,EAAAvH,GAAA,CAE4B,OAA7BnC,KAAKqK,wBAAwBR,EAAArI,EAAA,EACvBuC,QAAQC,UAAS,OACvBhE,KAAKsK,UAAU,cAAAT,EAAAtH,EAAA,KAAAkH,EAAA,SAChB,WAfS,OAAAD,EAAApF,MAAC,KAADD,UAAA,KAAAjE,IAAA,wBAAAC,MAiBV,WACE,IAAMoK,EAAcxB,KAAKyB,MAAMC,aAAaC,QAAQ1K,KAAKC,QAAQsG,kBAAoB,MACrFvG,KAAK+J,eAAeY,QAAQ,SAAAf,QACWgB,IAAjCL,EAAYX,EAAWiB,QACzBjB,EAAWtD,QAAUiE,EAAYX,EAAWiB,MACxCjB,EAAWtD,SACbsD,EAAWkB,OAAO,CAAErF,QAAQ,IAGlC,EACF,GAAC,CAAAvF,IAAA,wBAAAC,MAED,WACE,IAAM4K,EAAS3K,OAAOU,YACpBd,KAAK+J,eAAeiB,IAAI,SAAApB,GAAU,MAAI,CAACA,EAAWiB,KAAMjB,EAAWtD,QAAQ,IAE7EmE,aAAaQ,QAAQjL,KAAKC,QAAQsG,gBAAiBwC,KAAKC,UAAU+B,GACpE,GAEA,CAAA7K,IAAA,oBAAAC,OAAA+K,EAAAhH,EAAAZ,IAAAE,EAIA,SAAA2H,EAAwBvB,EAAYtD,GAAO,IAAA8E,EAAA,OAAA9H,IAAAC,EAAA,SAAA8H,GAAA,cAAAA,EAAA7J,GAAA,OAGb,GAF5BoI,EAAW0B,gBAAiB,EACI,QAAhCF,EAAApL,KAAKF,GAAGyL,QAAQC,wBAAgB,IAAAJ,GAAhCA,EAAkCK,UAAU,gBAADtG,OAAiByE,EAAWiB,MAAQvE,EAAU,SAAW,WACpGtG,KAAK0L,OAAOC,iBAERrF,EAAS,CAAF+E,EAAA7J,EAAA,eAAA6J,EAAA7J,EAAA,EACHoI,EAAWkB,OAAO,CAAErF,QAAQ,IAAO,OAAA4F,EAAA7J,EAAA,sBAAA6J,EAAA7J,EAAA,EAEnCoI,EAAWgC,UAAS,OAE5BhC,EAAW0B,gBAAiB,EAC5B1B,EAAWtD,QAAUA,EACrBtG,KAAK0L,OAAOC,gBAAgB,cAAAN,EAAA9I,EAAA,KAAA4I,EAAA,SAC7B,SAbsBU,EAAAC,GAAA,OAAAZ,EAAA9G,MAAC,KAADD,UAAA,KAAAjE,IAAA,UAAAC,MAevB,WAAU,IAAA4L,EAAA,KACR/L,KAAKF,GAAGkM,MAAMC,cAA2B,YAAI,CAC3CC,GAAI,cACJ/B,MAAMgC,EAAAA,EAAAA,IAAIC,IAAAA,EAAAC,EAAA,wEACIrM,KAAKF,GAAGG,QAAQgK,eAE9BqC,MAAO,cACPC,WAAWJ,EAAAA,EAAAA,IAAIK,IAAAA,EAAAH,EAAA,mHACGrM,KAAK+J,eAAe0C,OAAO,SAAA7C,GAAU,OAAImC,EAAK9L,QAAQuG,mBAAmBkG,SAAS9C,EAAWiB,KAAK,GACpG,SAAAzJ,GAAC,OAAI2K,EAAKL,OAAStK,EAAER,MAAM,iBAAA+L,EAAAzI,EAAAZ,IAAAE,EAC9B,SAAAoJ,EAAMxL,GAAC,OAAAkC,IAAAC,EAAA,SAAAsJ,GAAA,cAAAA,EAAArL,GAAA,cAAAqL,EAAArL,EAAA,EACZuK,EAAKe,kBAAkB1L,EAAE2L,OAAOnD,WAAYxI,EAAE2L,OAAOzG,SAAQ,OACnEyF,EAAKiB,wBAAwB,cAAAH,EAAAtK,EAAA,KAAAqK,EAAA,IAC9B,gBAAAK,GAAA,OAAAN,EAAAvI,MAAA,KAAAD,UAAA,EAJ0C,KAO7CnE,KAAKF,GAAGkM,MAAMkB,oBAChB,KApCA,IAAAhC,EAvCA1B,CA2EC,CAhJ2B,CAAS3J,EAAAA,GAwQvC,SAGewH,EAAc8F,GAAA,OAAAC,EAAAhJ,MAAC,KAADD,UAAA,UAAAiJ,IAQ5B,OAR4BA,EAAAlJ,EAAAZ,IAAAE,EAA7B,SAAA6J,EAA8BC,GAAG,OAAAhK,IAAAC,EAAA,SAAAgK,GAAA,cAAAA,EAAA/L,EAAA,OAAA+L,EAAAhL,EAAA,EACxB,IAAIwB,QAAQ,SAACC,EAASwJ,GAC3B,IAAMC,EAAS/E,SAASC,cAAc,UACtC8E,EAAOC,IAAMJ,EACbG,EAAOE,OAAS,kBAAM3J,GAAS,EAC/ByJ,EAAOG,QAAU,kBAAMJ,EAAO,IAAIK,MAAM,0BAAD1I,OAA2BmI,IAAO,EACzE5E,SAASQ,KAAKC,YAAYsE,EAC5B,GAAE,EAAAJ,EAAA,KACHjJ,MAAA,KAAAD,UAAA,CAjIDY,SAAAA,EAAY+I,eAAe,cAAehI,GAGXiI,EAAA,EAD9BC,EAAAA,EAAAA,IAAc,yBAAuB,SAAAC,EAAAC,GAAA,IA0BpCC,EAzBWC,EAAkB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAvO,EAAA,KAAAqO,GAAA,QAAAG,EAAApK,UAAAzB,OAAAwD,EAAA,IAAAC,MAAAoI,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAtI,EAAAsI,GAAArK,UAAAqK,GAAA,OAAAF,EAAAjI,EAAA,KAAA+H,EAAA,GAAAjJ,OAAAe,IAAA+H,EAAAK,GAAAA,CAAA,QAAAxH,EAAAsH,EAAAC,GAAA5J,EAAA2J,EAAA,EAAAF,GAAA,OAAAO,EAAlBL,EAAkB5L,EAAA,EAAAkM,KAAA,QAAAC,WAAA,EAG5BC,EAAAA,EAAAA,IAAS,CAAEhG,KAAMzC,SAAQjG,IAAA,cAAAC,MAAA,iBAAe,EAAE,IAAAuO,KAAA,SAAAxO,IAAA,SAAAC,MAE3C,WAAS,IAAA0O,EAAA,KACP,OAAO1C,EAAAA,EAAAA,IAAI2C,IAAAA,EAAAzC,EAAA,2EAELrM,KAAK+O,YAAY/D,IACrB,SAAApB,GAAU,OAAIuC,EAAAA,EAAAA,IAAI6C,IAAAA,EAAA3C,EAAA,sQAELzC,EAAWO,KACVP,EAAWqF,MACLrF,EAAWsF,YACftF,EAAWtD,QACXsD,EAAW0B,eACT1B,EAAWuF,UACd,SAAA/N,GAAC,OAAIyN,EAAKO,gBAAgBxF,EAAYxI,EAAE2L,OAAOzG,QAAQ,KAM1E,GAEA,CAAAoI,KAAA,SAAAxO,IAAA,kBAAAC,OAAAgO,EAAAjK,EAAAZ,IAAAE,EAIA,SAAA6L,EAAsBzF,EAAYtD,GAAO,OAAAhD,IAAAC,EAAA,SAAA+L,GAAA,cAAAA,EAAA9N,GAAA,OACvCxB,KAAKuP,cAAc,IAAIC,YAAY,SAAU,CAC3CzC,OAAQ,CAAEnD,WAAAA,EAAYtD,QAAAA,MACpB,cAAAgJ,EAAA/M,EAAA,KAAA8M,EAAA,SACL,SAJoBI,EAAAC,GAAA,OAAAvB,EAAA/J,MAAC,KAADD,UAAA,KAAAuK,KAAA,SAAAxO,IAAA,oBAAAC,MAMrB,WACEwP,EApCSvB,EAAkB,2BAoC3BuB,CApC2B,IAqC3B3P,KAAKuP,cAAc,IAAIC,YAAY,aACrC,IAAC,EAtCqCI,EAAAA,IA0CT7B,EAAA,EAD9BC,EAAAA,EAAAA,IAAc,yBAAuB,SAAA6B,EAAAC,GAAA,IACzBC,EAAkB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAAlQ,EAAA,KAAAgQ,GAAA,QAAAG,EAAA/L,UAAAzB,OAAAwD,EAAA,IAAAC,MAAA+J,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAAjK,EAAAiK,GAAAhM,UAAAgM,GAAA,OAAAF,EAAA5J,EAAA,KAAA0J,EAAA,GAAA5K,OAAAe,IAAA2J,EAAAI,GAAAA,CAAA,QAAAnJ,EAAAiJ,EAAAC,GAAAvL,EAAAsL,EAAA,EAAAD,GAAA,OAAArB,EAAlBsB,EAAkBvN,EAAA,EAAAkM,KAAA,QAAAC,WAAA,EAC5BC,EAAAA,EAAAA,IAAS,CAAEhG,KAAM/D,UAAS3E,IAAA,OAAAC,MAAA,iBAAQ,EAAE,IAAAuO,KAAA,QAAAC,WAAA,EACpCC,EAAAA,EAAAA,IAAS,CAAEhG,KAAM/D,UAAS3E,IAAA,QAAAC,MAAA,iBAAS,EAAE,IAAAuO,KAAA,QAAAC,WAAA,EACrCC,EAAAA,EAAAA,IAAS,CAAEhG,KAAM/D,UAAS3E,IAAA,cAAAC,MAAA,iBAAe,EAAE,IAAAuO,KAAA,QAAAC,WAAA,EAC3CC,EAAAA,EAAAA,IAAS,CAAEhG,KAAMwH,WAAUlQ,IAAA,UAAAC,MAAA,kBAAW,CAAK,IAAAuO,KAAA,QAAAC,WAAA,EAC3CC,EAAAA,EAAAA,IAAS,CAAEhG,KAAMwH,WAAUlQ,IAAA,UAAAC,MAAA,kBAAW,CAAK,IAAAuO,KAAA,QAAAC,WAAA,EAC3CC,EAAAA,EAAAA,IAAS,CAAEhG,KAAM/D,UAAS3E,IAAA,YAAAC,MAAA,iBAAa,EAAE,IAAAuO,KAAA,QAAAC,WAAA,EAMzC0B,EAAAA,EAAAA,OAAOnQ,IAAA,eAAAC,MAAA,kBAAgB,CAAK,IAAAuO,KAAA,SAAAxO,IAAA,SAAAC,MAG7B,SAAOmQ,GAAmB,IAAAC,EAAA,KACxBZ,EAhBSI,EAAkB,gBAgB3BJ,CAhB2B,CAgBdW,IACTA,EAAkBE,IAAI,aACpBxQ,KAAKyQ,SACP7I,EAAAA,EAAAA,OAAM,KAAK3D,KAAK,WACVsM,EAAKE,UACPF,EAAKG,cAAe,EACpBH,EAAK5E,gBAET,GAEA3L,KAAK0Q,cAAe,EAG1B,GAAC,CAAAhC,KAAA,SAAAxO,IAAA,SAAAC,MAED,WACE,OAAOgM,EAAAA,EAAAA,IAAIwE,IAAAA,EAAAtE,EAAA,okBAGOrM,KAAKmK,KAC+BnK,KAAKiP,MAGnDjP,KAAKkP,YACLlP,KAAKmP,WAAYhD,EAAAA,EAAAA,IAAIyE,IAAAA,EAAAvE,EAAA,oDAAYrM,KAAKmP,WAA+C,GAIrEnP,KAAKoP,gBAA+BpP,KAAKyQ,QACvDzQ,KAAK0Q,aAAe,WAAa1Q,KAAKsG,QAAU,UAAY,SAKxE,GAAC,CAAAoI,KAAA,MAAAmC,QAAA,EAAA3Q,IAAA,SAAAC,MAED,WACE,OAAO2Q,EAAAA,EAAAA,IAAGC,IAAAA,EAAA1E,EAAA,+PAaZ,GAAC,CAAAqC,KAAA,SAAAxO,IAAA,kBAAAC,MAED,WACEH,KAAKuP,cAAc,IAAIC,YAAY,SAAU,CAAEzC,OAAQ,CAAEzG,SAAUtG,KAAKsG,WAC1E,IAAC,EAtEqCsJ,EAAAA,G","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.object.from-entries.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.experiments.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","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar createProperty = require('../internals/create-property');\n\n// `Object.fromEntries` method\n// https://tc39.es/ecma262/#sec-object.fromentries\n$({ target: 'Object', stat: true }, {\n fromEntries: function fromEntries(iterable) {\n var obj = {};\n iterate(iterable, function (k, v) {\n createProperty(obj, k, v);\n }, { AS_ENTRIES: true });\n return obj;\n }\n});\n","// @ts-check\nimport { css, html, LitElement } from 'lit';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { sleep } from '../BookReader/utils.js';\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\nclass ExperimentModel {\n /** @type {string} test */\n name;\n /** @type {string} */\n title;\n /** @type {string} */\n description;\n /** @type {string} */\n icon;\n /** @type {boolean} */\n enabled;\n /** @type {string} */\n learnMore;\n\n /** @type {import(\"@/src/BookReader.js\").default} */\n br;\n\n assetRoot = '/BookReader/';\n\n enabledLoading = false;\n\n /**\n * @param {string} path\n */\n buildAssetPath(path) {\n return `${this.assetRoot}${path}`;\n }\n\n /**\n * @param {object} param0\n * @param {boolean} param0.manual Whether the experiment was enabled manually\n */\n async enable({ manual }) { }\n async disable() { }\n}\n\nexport class ExperimentsPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /** Where the state of this plugin is saved in localStorage */\n localStorageKey: 'BrExperiments',\n\n /** The experiments that should be shown in the experiments panel */\n enabledExperiments: ['translate'],\n }\n\n /** @type {ExperimentModel[]} */\n allExperiments = [\n new class extends ExperimentModel {\n name = 'translate';\n title = 'Translate Plugin';\n description = \"Translate books directly in your browser.\";\n learnMore = 'https://mozilla.github.io/translations/';\n icon = 'images/translate.svg';\n enabled = false;\n async enable({ manual = false}) {\n if (BookReader.PLUGINS.translate) return;\n\n await importAsScript(this.buildAssetPath('plugins/plugin.translate.js'));\n this.br.initializePlugin('translate');\n }\n async disable() {\n // need to reload to remove translate plugin script\n // Sleep so that the event loop can finish processing before the reload\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\n new class extends ExperimentModel {\n name = 'hypothesis';\n title = 'Hypothes.is';\n description = 'Create public, collaborative, or fully private annotations on books and the web.';\n learnMore = 'https://web.hypothes.is/about/';\n icon = 'images/hypothesis.ico';\n enabled = false;\n\n async enable({ manual = false }) {\n // Hypothesis configs ; see https://h.readthedocs.io/projects/client/en/latest/publishers/config.html\n const configScript = document.createElement('script');\n configScript.type = 'application/json';\n configScript.className = 'js-hypothesis-config';\n configScript.textContent = JSON.stringify({\n // Open the sidebar if this is the first time enabling\n openSidebar: manual,\n assetRoot: this.buildAssetPath('hypothesis/'),\n });\n\n document.head.appendChild(configScript);\n return importAsScript(this.buildAssetPath('hypothesis/build/boot.js'));\n // For testing\n // return importAsScript('http://localhost:3001/hypothesis');\n }\n\n async disable() {\n // need to reload to remove the Hypothesis script\n // Sleep so that the event loop can finish processing before the reload\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\n ]\n\n /** @type {BrExperimentsPanel} */\n _panel;\n\n async init() {\n if (!this.options.enabled) {\n return;\n }\n\n for (const experiment of this.allExperiments) {\n // TODO: imagesBaseURL should be replaced with assetRoot everywhere\n experiment.assetRoot = this.br.options.imagesBaseURL.replace(/images\\/$/, '');\n experiment.icon = experiment.buildAssetPath(experiment.icon);\n experiment.br = this.br;\n }\n\n this._loadExperimentStates();\n await Promise.resolve();\n this._render();\n }\n\n _loadExperimentStates() {\n const savedStates = JSON.parse(localStorage.getItem(this.options.localStorageKey) || '{}');\n this.allExperiments.forEach(experiment => {\n if (savedStates[experiment.name] !== undefined) {\n experiment.enabled = savedStates[experiment.name];\n if (experiment.enabled) {\n experiment.enable({ manual: false });\n }\n }\n });\n }\n\n _saveExperimentStates() {\n const states = Object.fromEntries(\n this.allExperiments.map(experiment => [experiment.name, experiment.enabled]),\n );\n localStorage.setItem(this.options.localStorageKey, JSON.stringify(states));\n }\n\n /**\n * @param {ExperimentModel} experiment\n * @param {boolean} enabled\n */\n async _toggleExperiment(experiment, enabled) {\n experiment.enabledLoading = true;\n this.br.plugins.archiveAnalytics?.sendEvent(`BRExperiment-${experiment.name}`, enabled ? 'Enable' : 'Disable');\n this._panel.requestUpdate();\n\n if (enabled) {\n await experiment.enable({ manual: true });\n } else {\n await experiment.disable();\n }\n experiment.enabledLoading = false;\n experiment.enabled = enabled;\n this._panel.requestUpdate();\n }\n\n _render() {\n this.br.shell.menuProviders['experiments'] = {\n id: 'experiments',\n icon: html`\n <img src=\"${this.br.options.imagesBaseURL}/icon_experiment.svg\" width=\"26\"/>\n `,\n label: 'Experiments',\n component: html`<br-experiments-panel\n .experiments=\"${this.allExperiments.filter(experiment => this.options.enabledExperiments.includes(experiment.name))}\"\n @connected=\"${e => this._panel = e.target}\"\n @toggle=\"${async e => {\n await this._toggleExperiment(e.detail.experiment, e.detail.enabled);\n this._saveExperimentStates();\n }}\"\n />`,\n };\n this.br.shell.updateMenuContents();\n }\n}\nBookReader?.registerPlugin('experiments', ExperimentsPlugin);\n\n@customElement('br-experiments-panel')\nexport class BrExperimentsPanel extends LitElement {\n\n /** @type {ExperimentModel[]} */\n @property({ type: Array }) experiments = [];\n\n render() {\n return html`\n <div style=\"padding: 10px\">\n ${this.experiments.map(\n experiment => html`\n <br-experiment-toggle\n .icon=\"${experiment.icon}\"\n .title=\"${experiment.title}\"\n .description=\"${experiment.description}\"\n .enabled=\"${experiment.enabled}\"\n .loading=\"${experiment.enabledLoading}\"\n .learnMore=\"${experiment.learnMore}\"\n @toggle=\"${e => this._dispatchToggle(experiment, e.detail.enabled)}\"\n ></br-experiment-toggle>\n `,\n )}\n </div>\n `;\n }\n\n /**\n * @param {ExperimentModel} experiment\n * @param {boolean} enabled\n */\n async _dispatchToggle(experiment, enabled) {\n this.dispatchEvent(new CustomEvent('toggle', {\n detail: { experiment, enabled },\n }));\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n}\n\n@customElement('br-experiment-toggle')\nexport class BrExperimentToggle extends LitElement {\n @property({ type: String }) icon = '';\n @property({ type: String }) title = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) enabled = false;\n @property({ type: Boolean }) loading = false;\n @property({ type: String }) learnMore = '';\n\n /**\n * We want to disable the button immediately if loading, but only display\n * the loading indicator after 200ms.\n */\n @state() _longLoading = false;\n\n /** @override */\n update(changedProperties) {\n super.update(changedProperties);\n if (changedProperties.has('loading')) {\n if (this.loading) {\n sleep(500).then(() => {\n if (this.loading) {\n this._longLoading = true;\n this.requestUpdate();\n }\n });\n } else {\n this._longLoading = false;\n }\n }\n }\n\n render() {\n return html`\n <div class=\"experiment-card\" style=\"margin-bottom: 10px;\">\n <div style=\"display: flex; align-items: center; gap: 10px;\">\n <img src=\"${this.icon}\" style=\"width: 20px; height: 20px;\" alt=\"\" />\n <div style=\"flex-grow: 1; font-weight: bold;\">${this.title}</div>\n </div>\n <p style=\"opacity: 0.9\">\n ${this.description}\n ${this.learnMore ? html`<a href=\"${this.learnMore}\" target=\"_blank\">Learn more</a>.` : ''}\n </p>\n <div style=\"display: flex\">\n <div style=\"flex-grow: 1;\"></div>\n <button @click=\"${this._dispatchToggle}\" .disabled=\"${this.loading}\">\n ${this._longLoading ? 'Loading…' : this.enabled ? 'Disable' : 'Enable'}\n </button>\n </div>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n .experiment-card {\n border-radius: 8px;\n background-color: #fff2;\n padding: 10px;\n display: flex;\n flex-direction: column;\n }\n\n .experiment-card p {\n margin: 6px 0;\n }\n `;\n }\n\n _dispatchToggle() {\n this.dispatchEvent(new CustomEvent('toggle', { detail: { enabled: !this.enabled } }));\n }\n}\n\n/**\n * @param {string} url\n */\nasync function importAsScript(url) {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script');\n script.src = url;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Failed to load script: ${url}`));\n document.head.appendChild(script);\n });\n}\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","$","iterate","createProperty","target","stat","fromEntries","iterable","obj","k","v","AS_ENTRIES","e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","a","d","bind","length","l","TypeError","call","done","return","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_createClass","_defineProperty","_typeof","toPrimitive","String","_toPrimitive","BookReader","window","ExperimentModel","path","concat","assetRoot","_enable","_callee","_ref","_context","manual","_x","_disable","_callee2","_context2","ExperimentsPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","_callSuper","enabled","localStorageKey","enabledExperiments","_ExperimentModel2","_class","_this2","_len2","_key2","_inherits","_enable2","_callee3","_ref2","_context3","PLUGINS","translate","importAsScript","buildAssetPath","initializePlugin","_x2","_disable2","_callee4","_context4","sleep","location","reload","_ExperimentModel3","_class2","_this3","_len3","_key3","_enable3","_callee5","_ref3","_ref3$manual","configScript","_context5","document","createElement","type","className","textContent","JSON","stringify","openSidebar","head","appendChild","_x3","_disable3","_callee6","_context6","_init","_callee7","_iterator","_step","experiment","_context7","_createForOfIteratorHelper","allExperiments","s","imagesBaseURL","replace","icon","err","_loadExperimentStates","_render","savedStates","parse","localStorage","getItem","forEach","undefined","name","enable","states","map","setItem","_toggleExperiment2","_callee8","_this$br$plugins$arch","_context8","enabledLoading","plugins","archiveAnalytics","sendEvent","_panel","requestUpdate","disable","_x4","_x5","_this4","shell","menuProviders","id","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","filter","includes","_ref4","_callee9","_context9","_toggleExperiment","detail","_saveExperimentStates","_x6","updateMenuContents","_x9","_importAsScript","_callee1","url","_context1","reject","script","src","onload","onerror","Error","registerPlugin","_decorate","customElement","_initialize","_LitElement","_dispatchToggle2","BrExperimentsPanel","_LitElement2","_this5","_len4","_key4","F","kind","decorators","property","_this6","_templateObject3","experiments","_templateObject4","title","description","learnMore","_dispatchToggle","_callee0","_context0","dispatchEvent","CustomEvent","_x7","_x8","_superPropGet","LitElement","_initialize2","_LitElement3","BrExperimentToggle","_LitElement4","_this7","_len5","_key5","Boolean","state","changedProperties","_this8","has","loading","_longLoading","_templateObject5","_templateObject6","static","css","_templateObject7"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[240],{7038:function(e,a,t){var n,r="bookReaderFragmentChange";BookReader.prototype.init=(n=BookReader.prototype.init,function(){n.call(this),function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.parent;a&&(e.bind(BookReader.eventNames.fragmentChange,
|
|
1
|
+
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[240],{7038:function(e,a,t){var n,r="bookReaderFragmentChange";BookReader.prototype.init=(n=BookReader.prototype.init,function(){n.call(this),function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.parent;a&&(e.bind(BookReader.eventNames.fragmentChange,function(){var t=e.fragmentFromParams(e.paramsFromCurrent());a.postMessage({type:r,fragment:t},"*")}),window.addEventListener("message",function(a){a.data&&a.data.type===r&&e.updateFromParams(e.paramsFromFragment(a.data.fragment))}))}(this)})}},function(e){e(e.s=7038)}]);
|
|
2
2
|
//# sourceMappingURL=plugin.iframe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/plugin.iframe.js","mappings":"+IAMA,IAEuCA,EAFjCC,EAA+B,2BAErCC,WAAWC,UAAUC,MAAkBJ,EAKpCE,WAAWC,UAAUC,KAJf,WACLJ,EAAOK,KAAKC,MAcT,SAA+BC,GAA4B,IAAxBC,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGG,OAAOJ,OAEnDA,IAILD,EAAGM,KAAKX,WAAWY,WAAWC,
|
|
1
|
+
{"version":3,"file":"plugins/plugin.iframe.js","mappings":"+IAMA,IAEuCA,EAFjCC,EAA+B,2BAErCC,WAAWC,UAAUC,MAAkBJ,EAKpCE,WAAWC,UAAUC,KAJf,WACLJ,EAAOK,KAAKC,MAcT,SAA+BC,GAA4B,IAAxBC,EAAMC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGG,OAAOJ,OAEnDA,IAILD,EAAGM,KAAKX,WAAWY,WAAWC,eAAgB,WAC5C,IAAMC,EAAWT,EAAGU,mBAAmBV,EAAGW,qBAE1CV,EAAOW,YACL,CAAEC,KAAMnB,EAA8Be,SAAAA,GACtC,IAEJ,GAEAJ,OAAOS,iBAAiB,UAAW,SAAAC,GAE5BA,EAAMC,MAAQD,EAAMC,KAAKH,OAASnB,GAIvCM,EAAGiB,iBAAiBjB,EAAGkB,mBAAmBH,EAAMC,KAAKP,UACvD,GACF,CApCIU,CAAsBpB,KACxB,E","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.iframe.js"],"sourcesContent":["/* global BookReader */\n/**\n * Plugin for two-way communication between a BookReader in an IFrame and the\n * parent web page\n */\n\nconst MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';\n\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n _attachEventListeners(this);\n };\n})(BookReader.prototype.init);\n\n/**\n * @private\n * Using window.postMessage() and event listeners, the plugin notifies the\n * parent window when pages change, and the parent window can also\n * explicitly request a page change by sending its own message.\n *\n * @param {BookReader} br\n * @param {Window?} [parent]\n */\nexport function _attachEventListeners(br, parent = window.parent) {\n // Not embedded, abort\n if (!parent) {\n return;\n }\n\n br.bind(BookReader.eventNames.fragmentChange, () => {\n const fragment = br.fragmentFromParams(br.paramsFromCurrent());\n\n parent.postMessage(\n { type: MESSAGE_TYPE_FRAGMENT_CHANGE, fragment },\n '*',\n );\n });\n\n window.addEventListener('message', event => {\n // Not a recognized message type, abort\n if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {\n return;\n }\n\n br.updateFromParams(br.paramsFromFragment(event.data.fragment));\n });\n}\n"],"names":["super_","MESSAGE_TYPE_FRAGMENT_CHANGE","BookReader","prototype","init","call","this","br","parent","arguments","length","undefined","window","bind","eventNames","fragmentChange","fragment","fragmentFromParams","paramsFromCurrent","postMessage","type","addEventListener","event","data","updateFromParams","paramsFromFragment","_attachEventListeners"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[69],{1041:function(t,e,n){function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function r(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,i(o.key),o)}}function i(t){var e=function(t
|
|
1
|
+
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[69],{1041:function(t,e,n){function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function r(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,i(o.key),o)}}function i(t){var e=function(t){if("object"!=o(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==o(e)?e:e+""}n.d(e,{S:function(){return a}}),n(2675),n(9463),n(2259),n(5700),n(3792),n(9572),n(8130),n(9085),n(6099),n(7764),n(2953);var a=function(){return t=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.br=e,this.options},(e=[{key:"setup",value:function(t){this.options=Object.assign({},this.options,t)}},{key:"init",value:function(){}},{key:"_configurePageContainer",value:function(t){}},{key:"_configureToolbar",value:function(t){}},{key:"_bindNavigationHandlers",value:function(){}},{key:"extendNavBar",value:function(t){}}])&&r(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}()},8847:function(t,e,n){n(2675),n(9463),n(2259),n(5700),n(8706),n(3792),n(2062),n(9572),n(8130),n(9085),n(3851),n(875),n(9432),n(6099),n(825),n(888),n(7764),n(3500),n(2953);var o=n(1041);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,l(o.key),o)}}function a(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(a=function(){return!!t})()}function u(){return u="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,n){var o=function(t,e){for(;!{}.hasOwnProperty.call(t,e)&&null!==(t=c(t)););return t}(t,e);if(o){var r=Object.getOwnPropertyDescriptor(o,e);return r.get?r.get.call(arguments.length<3?t:n):r.value}},u.apply(null,arguments)}function c(t){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},c(t)}function f(t,e){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},f(t,e)}function l(t){var e=function(t){if("object"!=r(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,"string");if("object"!=r(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==r(e)?e:e+""}var s=window.BookReader,p=function(t){function e(){var t,n,o,i;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e);for(var u=arguments.length,f=new Array(u),s=0;s<u;s++)f[s]=arguments[s];return t=function(t,e,n){return e=c(e),function(t,e){if(e&&("object"==r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(t,a()?Reflect.construct(e,n||[],c(t).constructor):e.apply(t,n))}(this,e,[].concat(f)),n=t,i={enabled:!0,manifest:null},(o=l(o="options"))in n?Object.defineProperty(n,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[o]=i,t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&f(t,e)}(e,t),n=e,o=[{key:"setup",value:function(t){var n,o,r;(n=e,o=this,"function"==typeof(r=u(c(1&3?n.prototype:n),"setup",o))?function(t){return r.apply(o,t)}:r)([t]),this.manifest=this.options.manifest,this.options.enabled&&Object.assign(this.br.options,this.load())}},{key:"load",value:function(){if("http://iiif.io/api/presentation/2/context.json"==this.manifest["@context"]){var t=this.manifest;return this.manifestToBookReaderV2(t)}if("http://iiif.io/api/presentation/3/context.json"==this.manifest["@context"]){var e=this.manifest;return this.manifestToBookReaderV3(e)}throw new Error("Unsupported IIIF context "+this.manifest["@context"])}},{key:"manifestToBookReaderV3",value:function(t){var e={bookTitle:b(t.label),pageProgression:"right-to-left"==t.viewingDirection?"rl":"lr",metadata:(t.metadata||[]).map(function(t){return{label:b(t.label),value:b(t.value)}}),data:[],getPageURI:function(e,n,o){var r=Math.floor(100/n),i=t.items[e].items[0].items[0].body,a=(i instanceof Array?i[0]:i).service[0].id;return"".concat(a,"/full/pct:").concat(r,"/0/default.jpg")}};"top-to-bottom"!=t.viewingDirection&&"bottom-to-top"!=t.viewingDirection||console.warn("Unsupported viewingDirection",t.viewingDirection);var n=[];return t.items.forEach(function(o,r){var i=t.items[r].items[0].items[0].body,a={uri:(i instanceof Array?i[0]:i).service[0].id,width:o.width,height:o.height,pageNum:b(o.label)};n.push(a),r%2==0&&(e.data.push(n),n=[])}),n.length>0&&e.data.push(n),e}},{key:"manifestToBookReaderV2",value:function(t){var e,n={bookTitle:t.label,metadata:t.metadata,thumbnail:null===(e=t.thumbnail)||void 0===e?void 0:e["@id"],data:[],getPageURI:function(e,n,o){var r=Math.floor(100/n),i=t.sequences[0].canvases[e].images[0].resource.service["@id"];return"".concat(i,"/full/pct:").concat(r,"/0/default.jpg")}},o=[];return t.sequences[0].canvases.forEach(function(t,e){var r={uri:t.images[0].resource.service["@id"],width:t.width,height:t.height,pageNum:t.label};o.push(r),e%2==0&&(n.data.push(o),o=[])}),o.length>0&&n.data.push(o),n}}],o&&i(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(o.S);function b(t){var e=Object.keys(t)[0];return(t[navigator.language]||t[e])[0]}null==s||s.registerPlugin("iiif",p)}},function(t){t(t.s=8847)}]);
|
|
2
2
|
//# sourceMappingURL=plugin.iiif.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/plugin.iiif.js","mappings":"
|
|
1
|
+
{"version":3,"file":"plugins/plugin.iiif.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.iiif.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\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\n\nexport class IiifPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** @type {import('@iiif/presentation-3').Manifest | import('@iiif/presentation-2').Manifest} */\n manifest: null,\n }\n\n setup(options) {\n super.setup(options);\n this.manifest = this.options.manifest;\n\n if (this.options.enabled) {\n Object.assign(this.br.options, this.load());\n }\n }\n\n load() {\n if (this.manifest[\"@context\"] == \"http://iiif.io/api/presentation/2/context.json\") {\n const manifest = /** @type {import('@iiif/presentation-2').Manifest} */(this.manifest);\n return this.manifestToBookReaderV2(manifest);\n } else if (this.manifest[\"@context\"] == \"http://iiif.io/api/presentation/3/context.json\") {\n const manifest = /** @type {import('@iiif/presentation-3').Manifest} */(this.manifest);\n return this.manifestToBookReaderV3(manifest);\n } else {\n throw new Error(\"Unsupported IIIF context \" + this.manifest[\"@context\"]);\n }\n }\n\n /**\n * @param {import('@iiif/presentation-3').Manifest} manifest\n */\n manifestToBookReaderV3(manifest) {\n /** @type {import('../BookReader/options.js').BookReaderOptions} */\n const book = {\n bookTitle: resolveInternationalString(manifest.label),\n pageProgression: manifest.viewingDirection == \"right-to-left\" ? \"rl\" : \"lr\",\n // numLeafs: manifest.items.length,\n metadata: (manifest.metadata || []).map((metadata) => {\n return {\n label: resolveInternationalString(metadata.label),\n value: resolveInternationalString(metadata.value),\n };\n }),\n data: [],\n /**\n * @this {import('../BookReader.js').default}\n */\n getPageURI(pageIndex, reduce, rotate) {\n const percent = Math.floor(100 * 1 / reduce);\n const bodyArr = manifest.items[pageIndex].items[0].items[0].body;\n const body = bodyArr instanceof Array ? bodyArr[0] : bodyArr;\n const uri = body.service[0].id;\n return `${uri}/full/pct:${percent}/0/default.jpg`;\n },\n };\n\n if (manifest.viewingDirection == \"top-to-bottom\" || manifest.viewingDirection == \"bottom-to-top\") {\n console.warn(\"Unsupported viewingDirection\", manifest.viewingDirection);\n }\n\n let spread = [];\n manifest.items.forEach((item, index) => {\n const bodyArr = manifest.items[index].items[0].items[0].body;\n const body = bodyArr instanceof Array ? bodyArr[0] : bodyArr;\n const uri = body.service[0].id;\n /** @type {import('../BookReader/options.js').PageData} */\n const pageData = {\n uri,\n width: item.width,\n height: item.height,\n pageNum: resolveInternationalString(item.label),\n };\n spread.push(pageData);\n if (index % 2 == 0) {\n book.data.push(spread);\n spread = [];\n }\n });\n if (spread.length > 0) {\n book.data.push(spread);\n }\n return book;\n }\n\n /**\n * @param {import('@iiif/presentation-2').Manifest} manifest\n */\n manifestToBookReaderV2(manifest) {\n /** @type {import('../BookReader/options.js').BookReaderOptions} */\n const book = {\n bookTitle: manifest.label,\n metadata: manifest.metadata,\n thumbnail: manifest.thumbnail?.['@id'],\n // numLeafs: manifest.sequences[0].canvases.length,\n data: [],\n /**\n * @this {import('../BookReader.js').default}\n */\n getPageURI(pageIndex, reduce, rotate) {\n const percent = Math.floor(100 * 1 / reduce);\n const uri = manifest.sequences[0].canvases[pageIndex].images[0].resource.service['@id'];\n return `${uri}/full/pct:${percent}/0/default.jpg`;\n },\n };\n\n let spread = [];\n manifest.sequences[0].canvases.forEach((canvas, index) => {\n /** @type {import('../BookReader/options.js').PageData} */\n const pageData = {\n uri: canvas.images[0].resource.service['@id'],\n width: canvas.width,\n height: canvas.height,\n pageNum: canvas.label,\n };\n spread.push(pageData);\n if (index % 2 == 0) {\n book.data.push(spread);\n spread = [];\n }\n });\n if (spread.length > 0) {\n book.data.push(spread);\n }\n return book;\n }\n}\n\n/**\n * @param {import('@iiif/presentation-3').InternationalString} internationalString\n */\nfunction resolveInternationalString(internationalString) {\n const anyLang = Object.keys(internationalString)[0];\n return (internationalString[navigator.language] || internationalString[anyLang])[0];\n}\n\nBookReader?.registerPlugin('iiif', IiifPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","BookReader","window","IiifPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_callSuper","concat","enabled","manifest","_inherits","load","manifestToBookReaderV2","manifestToBookReaderV3","Error","book","bookTitle","resolveInternationalString","label","pageProgression","viewingDirection","metadata","map","data","getPageURI","pageIndex","reduce","rotate","percent","Math","floor","bodyArr","items","body","uri","service","id","console","warn","spread","forEach","item","index","pageData","width","height","pageNum","push","_manifest$thumbnail","thumbnail","sequences","canvases","images","resource","canvas","internationalString","anyLang","keys","navigator","language","registerPlugin"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[555],{1041:function(e,t,n){function o(e){return o="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},o(e)}function r(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,i(o.key),o)}}function i(e){var t=function(e
|
|
1
|
+
"use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[555],{1041:function(e,t,n){function o(e){return o="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},o(e)}function r(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,i(o.key),o)}}function i(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}n.d(t,{S:function(){return u}}),n(2675),n(9463),n(2259),n(5700),n(3792),n(9572),n(8130),n(9085),n(6099),n(7764),n(2953);var u=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){}}])&&r(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},4442:function(e,t,n){var o={};n.r(o),n.d(o,{areCookiesBlocked:function(){return u},getItem:function(){return f},removeItem:function(){return s},setItem:function(){return l}}),n(2675),n(9463),n(2259),n(3792),n(875),n(6099),n(825),n(7764),n(2953),n(5700),n(8706),n(9572),n(8130),n(8940),n(7495),n(1761);var r=n(8340),i=n(1041);function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document;try{return e.cookie,!1}catch(e){return!0}}n(4864),n(8781),n(5440);var c,a=u();function f(e){return a||!e?null:decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"+encodeURIComponent(e).replace(/[\-\.\+\*]/g,"\\$&")+"\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null}function l(e,t,n,o,r,i){return!a&&(document.cookie=encodeURIComponent(e)+"="+encodeURIComponent(t)+(n?"; expires=".concat(n.toUTCString()):"")+(r?"; domain=".concat(r):"")+(o?"; path=".concat(o):"")+(i?"; secure":""),!0)}function s(e,t,n){return!a&&!!hasItem(e)&&(document.cookie=encodeURIComponent(e)+"=; expires=Thu, 01 Jan 1970 00:00:00 GMT"+(n?"; domain=".concat(n):"")+(t?"; path=".concat(t):""),!0)}function p(e){return p="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},p(e)}function y(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,d(o.key),o)}}function b(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(b=function(){return!!e})()}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function v(e,t){return v=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},v(e,t)}function d(e){var t=function(e){if("object"!=p(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=p(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}BookReader.docCookies=o;var h=function(e){function t(){var e,n,o,r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);for(var i=arguments.length,u=new Array(i),c=0;c<i;c++)u[c]=arguments[c];return e=function(e,t,n){return t=m(t),function(e,t){if(t&&("object"==p(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,b()?Reflect.construct(t,n||[],m(e).constructor):t.apply(e,n))}(this,t,[].concat(u)),n=e,r={enabled:!0,cookiePath:null},(o=d(o="options"))in n?Object.defineProperty(n,o,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[o]=r,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&&v(e,t)}(t,e),n=t,(o=[{key:"init",value:function(){var e=this;this.options.enabled&&this.br.bind(r.q.fragmentChange,function(){var t=e.br.paramsFromCurrent();e.updateResumeValue(t.index)})}},{key:"getResumeValue",value:function(){var e=BookReader.docCookies.getItem("br-resume");return null!==e?parseInt(e):null}},{key:"getCookiePath",value:function(e){return e.match(".+?(?=/page/|/mode/|$)")[0]}},{key:"updateResumeValue",value:function(e,t){var n=new Date(+new Date+12096e5),o=this.options.cookiePath||this.getCookiePath(window.location.pathname);BookReader.docCookies.setItem(t||"br-resume",e,n,o,null,!1)}}])&&y(n.prototype,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,o}(i.S);null===(c=BookReader)||void 0===c||c.registerPlugin("resume",h)}},function(e){e(e.s=4442)}]);
|
|
2
2
|
//# sourceMappingURL=plugin.resume.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins/plugin.resume.js","mappings":"
|
|
1
|
+
{"version":3,"file":"plugins/plugin.resume.js","mappings":"y6BAMO,IAAMA,EAAgB,WAW3B,O,EAPA,SAAAA,EAAYC,I,4FAAIC,CAAA,KAAAF,GAEdG,KAAKF,GAAKA,EAEVE,KAAKC,OACP,G,EAEA,EAAAC,IAAA,QAAAC,MAIA,SAAMF,GACJD,KAAKC,QAAUG,OAAOC,OAAO,CAAC,EAAGL,KAAKC,QAASA,EACjD,GAEA,CAAAC,IAAA,OAAAC,MACA,WAAQ,GAER,CAAAD,IAAA,0BAAAC,MAKA,SAAwBG,GACxB,GAEA,CAAAJ,IAAA,oBAAAC,MAKA,SAAkBI,GAClB,GAEA,CAAAL,IAAA,0BAAAC,MACA,WAA2B,GAE3B,CAAAD,IAAA,eAAAC,MAGA,SAAaK,GAAU,M,6EAAC,CA5CG,E,uUCUtB,SAASC,IAAkC,IAAhBC,EAAGC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGG,SACtC,IAEE,OADAJ,EAAIK,QACG,CACT,CAAE,MAAOC,GACP,OAAO,CACT,CACF,C,wBAEA,I,EAAMC,EAAkBR,IASjB,SAASS,EAAQC,GACtB,OAAIF,IAAoBE,EAAa,KAE9BC,mBAELN,SAASC,OAAOM,QAAQ,IAAIC,OAAO,mBAAqBC,mBAAmBJ,GAAME,QAAQ,cAAe,QAAU,+BAAgC,QAAU,IAChK,CAcO,SAASG,EAAQL,EAAMM,EAAQC,EAAMC,EAAOC,EAASC,GAC1D,OAAIZ,IAEJH,SAASC,OAASQ,mBAAmBJ,GAAQ,IAAMI,mBAAmBE,IACnEC,EAAO,aAAHI,OAAgBJ,EAAKK,eAAkB,KAC3CH,EAAU,YAAHE,OAAeF,GAAY,KAClCD,EAAQ,UAAHG,OAAaH,GAAU,KAC5BE,EAAU,WAAa,KAEnB,EACT,CAWO,SAASG,EAAWb,EAAMQ,EAAOC,GACtC,OAAIX,KAECgB,QAAQd,KAEbL,SAASC,OAASQ,mBAAmBJ,GAAQ,4CAC1CS,EAAU,YAAHE,OAAeF,GAAY,KAClCD,EAAQ,UAAHG,OAAaH,GAAU,KAExB,EACT,C,mjCC9EAO,WAAWC,WAAaA,EAKjB,IAAMC,EAAY,SAAAC,GAAA,SAAAD,IAAA,IAAAE,E,mGAAAvC,CAAA,KAAAqC,GAAA,QAAAG,EAAA5B,UAAAC,OAAA4B,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAA/B,UAAA+B,GAKtB,OALsBJ,E,qYAAAK,CAAA,KAAAP,EAAA,GAAAN,OAAAU,I,EAAAF,E,EACb,CACRM,SAAS,EAETC,WAAY,O,MAJS,c,wFAKtBP,CAAA,Q,qRAAAQ,CAAAV,EAAAC,G,EAAAD,G,EAAA,EAAAlC,IAAA,OAAAC,MAGD,WAAO,IAAA4C,EAAA,KACD/C,KAAKC,QAAQ2C,SACf5C,KAAKF,GAAGkD,KAAKC,EAAAA,EAAOC,eAAgB,WAClC,IAAMC,EAASJ,EAAKjD,GAAGsD,oBACvBL,EAAKM,kBAAkBF,EAAOG,MAChC,EAEJ,GAEA,CAAApD,IAAA,iBAAAC,MAMA,WACE,IAAMoD,EAAMrB,WAAWC,WAAWjB,QAAQ,aAC1C,OAAY,OAARqC,EAAqBC,SAASD,GACtB,IACd,GAEA,CAAArD,IAAA,gBAAAC,MAQA,SAAcsD,GACZ,OAAOA,EAAYC,MAAM,0BAA0B,EACrD,GAEA,CAAAxD,IAAA,oBAAAC,MAOA,SAAkBmD,EAAOK,GACvB,IAAMC,EAAM,IAAIC,MAAM,IAAIA,KAAO,SAG3BC,EAAO9D,KAAKC,QAAQ4C,YACrB7C,KAAK+D,cAAcC,OAAOC,SAASC,UACxChC,WAAWC,WAAWX,QAAQmC,GAAc,YAAaL,EAAOM,EAAKE,EAAM,MAAM,EACnF,M,6EAAC,CAvDsB,CAASjE,EAAAA,GA0DxB,QAAVsE,EAAAjC,kBAAU,IAAAiC,GAAVA,EAAYC,eAAe,SAAUhC,E","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/util/docCookies.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.resume.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","/**\n * Helper module use to get, set and remove item from cookie\n *\n * See more:\n * https://developer.mozilla.org/en-US/docs/Web/API/document.cookie\n * https://developer.mozilla.org/User:fusionchess\n * https://github.com/madmurphy/cookies.js\n * This framework is released under the GNU Public License, version 3 or later.\n * http://www.gnu.org/licenses/gpl-3.0-standalone.html\n */\n\n/**\n * Check to see if the browser has cookies enabled.\n * Accessing document.cookies errors if eg iframe with sandbox enabled.\n * @returns {boolean}\n */\nexport function areCookiesBlocked(doc = document) {\n try {\n doc.cookie;\n return false;\n } catch (e) {\n return true;\n }\n}\n\nconst COOKIES_BLOCKED = areCookiesBlocked();\n\n/**\n * Get specific key's value stored in cookie\n *\n * @param {string} sKey\n *\n * @returns {string|null}\n */\nexport function getItem(sKey) {\n if (COOKIES_BLOCKED || !sKey) return null;\n\n return decodeURIComponent(\n // eslint-disable-next-line no-useless-escape\n document.cookie.replace(new RegExp('(?:(?:^|.*;)\\\\s*' + encodeURIComponent(sKey).replace(/[\\-\\.\\+\\*]/g, '\\\\$&') + '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$'), '$1')) || null;\n}\n\n/**\n * Set specific key's value in cookie\n *\n * @param {string} sKey cookie name\n * @param {string} sValue cookie value\n * @param {string} [vEnd] expire|max-age\n * @param {string} [sPath] path of current item\n * @param {string} [sDomain] domain name\n * @param {boolean} [bSecure]\n *\n * @returns {boolean}\n */\nexport function setItem(sKey, sValue, vEnd, sPath, sDomain, bSecure) {\n if (COOKIES_BLOCKED) return false;\n\n document.cookie = encodeURIComponent(sKey) + '=' + encodeURIComponent(sValue)\n + (vEnd ? `; expires=${vEnd.toUTCString()}` : '')\n + (sDomain ? `; domain=${sDomain}` : '')\n + (sPath ? `; path=${sPath}` : '')\n + (bSecure ? `; secure` : '');\n\n return true;\n}\n\n/**\n * BROKEN Remove specific key's value from cookie\n * @fixme hasItem isn't even implemented! This will always error.\n * @param {string} sKey cookie name\n * @param {string} [sPath] path of current item\n * @param {string} [sDomain]\n *\n * @returns {boolean}\n */\nexport function removeItem(sKey, sPath, sDomain) {\n if (COOKIES_BLOCKED) return false;\n // eslint-disable-next-line\n if (!hasItem(sKey)) return false;\n\n document.cookie = encodeURIComponent(sKey) + `=; expires=Thu, 01 Jan 1970 00:00:00 GMT`\n + (sDomain ? `; domain=${sDomain}` : '')\n + (sPath ? `; path=${sPath}` : '');\n\n return true;\n}\n","import { EVENTS } from '../BookReader/events.js';\nimport { BookReaderPlugin } from '../BookReaderPlugin.js';\nimport * as docCookies from '../util/docCookies.js';\n\n/* global BookReader */\n\n/** @deprecated Exposed for backward compatibility */\nBookReader.docCookies = docCookies;\n\n/**\n * Plugin to remember the current page number in a cookie\n */\nexport class ResumePlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** @type {string|null} eg '/', '/details/id' */\n cookiePath: null,\n }\n\n /** @override */\n init() {\n if (this.options.enabled) {\n this.br.bind(EVENTS.fragmentChange, () => {\n const params = this.br.paramsFromCurrent();\n this.updateResumeValue(params.index);\n });\n }\n }\n\n /**\n * Gets page resume value, for remembering reader's page\n * Can be overridden for different implementation\n *\n * @return {number|null}\n */\n getResumeValue() {\n const val = BookReader.docCookies.getItem('br-resume');\n if (val !== null) return parseInt(val);\n else return null;\n }\n\n /**\n * Return cookie path using pathname up to /page/... or /mode/...\n * using window.location.pathname for urlPathPart:\n * - matches encoding\n * - ignores querystring part\n * - ignores fragment part (after #)\n * @param {string} urlPathPart - window.location.pathname\n */\n getCookiePath(urlPathPart) {\n return urlPathPart.match('.+?(?=/page/|/mode/|$)')[0];\n }\n\n /**\n * Sets page resume value, for remembering reader's page\n * Can be overridden for different implementation\n *\n * @param {Number} index leaf index\n * @param {string} [cookieName]\n */\n updateResumeValue(index, cookieName) {\n const ttl = new Date(+new Date + 12096e5); // 2 weeks\n // For multiple files in item, leave cookiePath blank\n // It's likely we can remove cookiePath using getCookiePath()\n const path = this.options.cookiePath\n || this.getCookiePath(window.location.pathname);\n BookReader.docCookies.setItem(cookieName || 'br-resume', index, ttl, path, null, false);\n }\n}\n\nBookReader?.registerPlugin('resume', ResumePlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","areCookiesBlocked","doc","arguments","length","undefined","document","cookie","e","COOKIES_BLOCKED","getItem","sKey","decodeURIComponent","replace","RegExp","encodeURIComponent","setItem","sValue","vEnd","sPath","sDomain","bSecure","concat","toUTCString","removeItem","hasItem","BookReader","docCookies","ResumePlugin","_BookReaderPlugin","_this","_len","args","Array","_key","_callSuper","enabled","cookiePath","_inherits","_this2","bind","EVENTS","fragmentChange","params","paramsFromCurrent","updateResumeValue","index","val","parseInt","urlPathPart","match","cookieName","ttl","Date","path","getCookiePath","window","location","pathname","_BookReader","registerPlugin"],"sourceRoot":""}
|