@internetarchive/bookreader 5.0.0-114 → 5.0.0-116

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.
Files changed (43) hide show
  1. package/BookReader/474.js.map +1 -1
  2. package/BookReader/BookReader.css +27 -10
  3. package/BookReader/BookReader.js +1 -43
  4. package/BookReader/BookReader.js.map +1 -1
  5. package/BookReader/ia-bookreader-bundle.js +63 -39
  6. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  7. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  8. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  9. package/BookReader/plugins/plugin.chapters.js +2 -2
  10. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  11. package/BookReader/plugins/plugin.experiments.js.map +1 -1
  12. package/BookReader/plugins/plugin.iframe.js +1 -1
  13. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  14. package/BookReader/plugins/plugin.iiif.js.map +1 -1
  15. package/BookReader/plugins/plugin.resume.js.map +1 -1
  16. package/BookReader/plugins/plugin.search.js +1 -1
  17. package/BookReader/plugins/plugin.search.js.map +1 -1
  18. package/BookReader/plugins/plugin.text_selection.js +43 -1
  19. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  20. package/BookReader/plugins/plugin.translate.js +45 -3
  21. package/BookReader/plugins/plugin.translate.js.map +1 -1
  22. package/BookReader/plugins/plugin.tts.js +1 -1
  23. package/BookReader/plugins/plugin.tts.js.map +1 -1
  24. package/BookReader/plugins/plugin.url.js +1 -1
  25. package/BookReader/plugins/plugin.url.js.map +1 -1
  26. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -1
  27. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  28. package/BookReader/plugins/translator-worker.js.map +1 -1
  29. package/BookReader/webcomponents-bundle.js.map +1 -1
  30. package/jsconfig.json +2 -3
  31. package/package.json +41 -32
  32. package/src/BookReader/utils/SelectionObserver.js +4 -2
  33. package/src/BookReader.js +10 -21
  34. package/src/css/_TextSelection.scss +25 -10
  35. package/src/plugins/plugin.iiif.js +7 -1
  36. package/src/plugins/plugin.text_selection.js +4 -90
  37. package/src/plugins/search/plugin.search.js +2 -0
  38. package/src/plugins/tts/WebTTSEngine.js +2 -2
  39. package/src/plugins/tts/utils.js +0 -9
  40. package/src/plugins/url/UrlPlugin.js +12 -0
  41. package/src/util/TextSelectionManager.js +246 -173
  42. package/src/util/browserSniffing.js +9 -0
  43. package/src/util/generators.js +89 -0
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.archive_analytics.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,20CCH7B,IAAMC,EAAmEC,OAAOD,WAGnEE,EAAsB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,G,4FAAAd,CAAA,KAAAY,GAAA,QAAAG,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAQb,OARaC,EAAAP,E,qYAAAQ,CAAA,KAAAV,EAAA,GAAAW,OAAAL,IAAA,UACvB,CACRM,SAAS,EAETC,OAAO,IAGTJ,EAAAP,EAAA,gBACgB,MAAIA,CAAA,Q,qRAAAY,CAAAd,EAAAC,G,EAAAD,E,EAAA,EAAAT,IAAA,OAAAC,MAGpB,WAAO,IAAAuB,EAAA,KACD1B,KAAKC,QAAQsB,SACfvB,KAAKF,GAAG6B,KAAKlB,EAAWmB,WAAWC,eAAgB,kBAAMH,EAAKI,oBAAoB,EAEtF,GAEA,CAAA5B,IAAA,qBAAAC,MACA,WACE,GAAKO,OAAOqB,kBAAZ,CAIA,IAAMC,EAAehC,KAAKiC,cAEpBC,EAASlC,KAAKF,GAAGqC,oBACjBC,EAAcpC,KAAKF,GAAGuC,mBAAmBH,GAE/C,GAAIF,GAAgBI,EAAa,KAAAE,EACzBC,EAAS,CACbC,WAAY,oBACZC,OAAQzC,KAAKF,GAAG4C,OAChBC,WAAYC,KAAKC,SAGnBN,QAAiB,EACjBA,QAAiB,GACjB,IACEA,EAAOO,QAAUpC,OAAOqC,IAAIC,SAASC,SAASC,MAAM,kBAChD,EACA,EACJX,EAAOY,SACJZ,EAAOO,SAAWpC,OAAOqC,IAAIC,SAASI,SAASF,MAAM,gBAClD,EACA,CACR,CAAE,MAAOG,GAAK,CAId3C,OAAOqB,kBAAkBuB,UAAUf,EAAQ,KAAM,uBAGjD,IAAMgB,EAAmD,QAA3BjB,EAAAtC,KAAKF,GAAGG,QAAQuD,mBAAW,IAAAlB,GAA3BA,EAA6BmB,OACvD,CAAEA,OAAQzD,KAAKF,GAAGG,QAAQuD,YAAYC,QACtC,CAAC,EACL/C,OAAOqB,kBAAkB2B,WAAW,aAAc,kBAAmBhD,OAAOsC,SAASI,SAAUG,GAE/FvD,KAAKiC,cAAgBG,CACvB,CArCA,CAsCF,GAEA,CAAAlC,IAAA,YAAAC,MAOA,SAAUwD,EAAUC,EAAQzD,EAAOoD,GAC5BvD,KAAKC,QAAQsB,UAEdvB,KAAKC,QAAQuB,OACfqC,QAAQC,IAAI,4BAA6B/C,UAAWL,OAAOqB,mBAGxDrB,OAAOqB,oBAEZwB,EAAwBA,GAAyB,CAAC,EAC5B,iBAAVpD,IACVoD,EAAsBQ,GAAK5D,GAE7BO,OAAOqB,kBAAkB2B,WAAWC,EAAUC,EAAQ,KAAML,IAC9D,I,gFAAC,CAlFgC,CAAS1D,EAAAA,GAqF5CY,SAAAA,EAAYuD,eAAe,mBAAoBrD,E","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.archive_analytics.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\n\nexport class ArchiveAnalyticsPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** Provide a means of debugging, cause otherwise it's impossible to test locally */\n debug: false,\n }\n\n /** @type {string} */\n _prevFragment = null;\n\n /** @override */\n init() {\n if (this.options.enabled) {\n this.br.bind(BookReader.eventNames.fragmentChange, () => this.sendFragmentChange());\n }\n }\n\n /** @private */\n sendFragmentChange() {\n if (!window.archive_analytics) {\n return;\n }\n\n const prevFragment = this._prevFragment;\n\n const params = this.br.paramsFromCurrent();\n const newFragment = this.br.fragmentFromParams(params);\n\n if (prevFragment != newFragment) {\n const values = {\n bookreader: \"user_changed_view\",\n itemid: this.br.bookId,\n cache_bust: Math.random(),\n };\n // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!\n values.offsite = 1;\n values.details = 0;\n try {\n values.offsite = window.top.location.hostname.match(/\\.archive.org$/)\n ? 0\n : 1;\n values.details =\n !values.offsite && window.top.location.pathname.match(/^\\/details\\//)\n ? 1\n : 0;\n } catch (e) { }\n // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!\n\n // Send bookreader ping\n window.archive_analytics.send_ping(values, null, \"augment_for_ao_site\");\n\n // Also send tracking event ping\n const additionalEventParams = this.br.options.lendingInfo?.loanId\n ? { loanId: this.br.options.lendingInfo.loanId }\n : {};\n window.archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);\n\n this._prevFragment = newFragment;\n }\n }\n\n /**\n * Sends a tracking \"Event\". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events\n * @param {string} category\n * @param {string} action\n * @param {number} [value] (must be an int)\n * @param {Object} [additionalEventParams]\n */\n sendEvent(category, action, value, additionalEventParams) {\n if (!this.options.enabled) return;\n\n if (this.options.debug) {\n console.log(\"archiveAnalyticsSendEvent\", arguments, window.archive_analytics);\n }\n\n if (!window.archive_analytics) return;\n\n additionalEventParams = additionalEventParams || {};\n if (typeof (value) == 'number') {\n additionalEventParams.ev = value;\n }\n window.archive_analytics.send_event(category, action, null, additionalEventParams);\n }\n}\n\nBookReader?.registerPlugin('archiveAnalytics', ArchiveAnalyticsPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","BookReader","window","ArchiveAnalyticsPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","debug","_inherits","_this2","bind","eventNames","fragmentChange","sendFragmentChange","archive_analytics","prevFragment","_prevFragment","params","paramsFromCurrent","newFragment","fragmentFromParams","_this$br$options$lend","values","bookreader","itemid","bookId","cache_bust","Math","random","offsite","top","location","hostname","match","details","pathname","e","send_ping","additionalEventParams","lendingInfo","loanId","send_event","category","action","console","log","ev","registerPlugin"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.archive_analytics.js","mappings":"y6BAMO,IAAMA,EAAgB,WAW3B,SAPA,SAAAA,EAAYC,gGAAIC,CAAAC,KAAAH,GAEdG,KAAKF,GAAKA,EAEVE,KAAKC,OACP,KAEA,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,mFAAC,CA5CG,60CCH7B,IAAMC,EAAmEC,OAAOD,WAGnEE,EAAsB,SAAAC,GAAA,SAAAD,IAAA,IAAAE,+FAAAd,CAAAC,KAAAW,GAAA,QAAAG,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAQb,OARaC,EAAAP,uYAAAQ,CAAArB,KAAAW,EAAA,GAAAW,OAAAL,IAAA,UACvB,CACRM,SAAS,EAETC,OAAO,IAGTJ,EAAAP,EAAA,gBACgB,MAAIA,CAAA,6RAAAY,CAAAd,EAAAC,KAAAD,IAAA,EAAAT,IAAA,OAAAC,MAGpB,WAAO,IAAAuB,EAAA1B,KACDA,KAAKC,QAAQsB,SACfvB,KAAKF,GAAG6B,KAAKlB,EAAWmB,WAAWC,eAAgB,kBAAMH,EAAKI,oBAAoB,EAEtF,GAEA,CAAA5B,IAAA,qBAAAC,MACA,WACE,GAAKO,OAAOqB,kBAAZ,CAIA,IAAMC,EAAehC,KAAKiC,cAEpBC,EAASlC,KAAKF,GAAGqC,oBACjBC,EAAcpC,KAAKF,GAAGuC,mBAAmBH,GAE/C,GAAIF,GAAgBI,EAAa,KAAAE,EACzBC,EAAS,CACbC,WAAY,oBACZC,OAAQzC,KAAKF,GAAG4C,OAChBC,WAAYC,KAAKC,SAGnBN,QAAiB,EACjBA,QAAiB,GACjB,IACEA,EAAOO,QAAUpC,OAAOqC,IAAIC,SAASC,SAASC,MAAM,kBAChD,EACA,EACJX,EAAOY,SACJZ,EAAOO,SAAWpC,OAAOqC,IAAIC,SAASI,SAASF,MAAM,gBAClD,EACA,CACR,CAAE,MAAOG,GAAK,CAId3C,OAAOqB,kBAAkBuB,UAAUf,EAAQ,KAAM,uBAGjD,IAAMgB,EAAmD,QAA3BjB,EAAAtC,KAAKF,GAAGG,QAAQuD,mBAAW,IAAAlB,GAA3BA,EAA6BmB,OACvD,CAAEA,OAAQzD,KAAKF,GAAGG,QAAQuD,YAAYC,QACtC,CAAC,EACL/C,OAAOqB,kBAAkB2B,WAAW,aAAc,kBAAmBhD,OAAOsC,SAASI,SAAUG,GAE/FvD,KAAKiC,cAAgBG,CACvB,CArCA,CAsCF,GAEA,CAAAlC,IAAA,YAAAC,MAOA,SAAUwD,EAAUC,EAAQzD,EAAOoD,GAC5BvD,KAAKC,QAAQsB,UAEdvB,KAAKC,QAAQuB,OACfqC,QAAQC,IAAI,4BAA6B/C,UAAWL,OAAOqB,mBAGxDrB,OAAOqB,oBAEZwB,EAAwBA,GAAyB,CAAC,EAC5B,iBAAVpD,IACVoD,EAAsBQ,GAAK5D,GAE7BO,OAAOqB,kBAAkB2B,WAAWC,EAAUC,EAAQ,KAAML,IAC9D,oFAAC,CAlFgC,CAAS1D,EAAAA,GAqF5CY,SAAAA,EAAYuD,eAAe,mBAAoBrD","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.archive_analytics.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\n\nexport class ArchiveAnalyticsPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /** Provide a means of debugging, cause otherwise it's impossible to test locally */\n debug: false,\n }\n\n /** @type {string} */\n _prevFragment = null;\n\n /** @override */\n init() {\n if (this.options.enabled) {\n this.br.bind(BookReader.eventNames.fragmentChange, () => this.sendFragmentChange());\n }\n }\n\n /** @private */\n sendFragmentChange() {\n if (!window.archive_analytics) {\n return;\n }\n\n const prevFragment = this._prevFragment;\n\n const params = this.br.paramsFromCurrent();\n const newFragment = this.br.fragmentFromParams(params);\n\n if (prevFragment != newFragment) {\n const values = {\n bookreader: \"user_changed_view\",\n itemid: this.br.bookId,\n cache_bust: Math.random(),\n };\n // EEK! offsite embedding and /details/ page books look the same in analytics, otherwise!\n values.offsite = 1;\n values.details = 0;\n try {\n values.offsite = window.top.location.hostname.match(/\\.archive.org$/)\n ? 0\n : 1;\n values.details =\n !values.offsite && window.top.location.pathname.match(/^\\/details\\//)\n ? 1\n : 0;\n } catch (e) { }\n // avoids embed cross site exceptions -- but on (+) side, means it is and keeps marked offite!\n\n // Send bookreader ping\n window.archive_analytics.send_ping(values, null, \"augment_for_ao_site\");\n\n // Also send tracking event ping\n const additionalEventParams = this.br.options.lendingInfo?.loanId\n ? { loanId: this.br.options.lendingInfo.loanId }\n : {};\n window.archive_analytics.send_event('BookReader', 'UserChangedView', window.location.pathname, additionalEventParams);\n\n this._prevFragment = newFragment;\n }\n }\n\n /**\n * Sends a tracking \"Event\". See https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#events\n * @param {string} category\n * @param {string} action\n * @param {number} [value] (must be an int)\n * @param {Object} [additionalEventParams]\n */\n sendEvent(category, action, value, additionalEventParams) {\n if (!this.options.enabled) return;\n\n if (this.options.debug) {\n console.log(\"archiveAnalyticsSendEvent\", arguments, window.archive_analytics);\n }\n\n if (!window.archive_analytics) return;\n\n additionalEventParams = additionalEventParams || {};\n if (typeof (value) == 'number') {\n additionalEventParams.ev = value;\n }\n window.archive_analytics.send_event(category, action, null, additionalEventParams);\n }\n}\n\nBookReader?.registerPlugin('archiveAnalytics', ArchiveAnalyticsPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","BookReader","window","ArchiveAnalyticsPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","debug","_inherits","_this2","bind","eventNames","fragmentChange","sendFragmentChange","archive_analytics","prevFragment","_prevFragment","params","paramsFromCurrent","newFragment","fragmentFromParams","_this$br$options$lend","values","bookreader","itemid","bookId","cache_bust","Math","random","offsite","top","location","hostname","match","details","pathname","e","send_ping","additionalEventParams","lendingInfo","loanId","send_event","category","action","console","log","ev","registerPlugin"],"sourceRoot":""}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.autoplay.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.autoplay.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 { EVENTS } from \"../BookReader/events.js\";\nimport { parseAnimationSpeed } from \"../BookReader/utils.js\";\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\n\n/**\n * Plugin which adds an autoplay feature. Useful for kiosk situations.\n */\nexport class AutoplayPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /**\n * @type {number | 'fast' | 'slow'}\n * How quickly the flip animation should run.\n **/\n flipSpeed: 1500,\n /** How long to pause on each page between flips */\n flipDelay: 5000,\n /** Allow controlling the autoflip/speed/delay from the url */\n urlParams: true,\n }\n\n timer = null;\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.br.bind(EVENTS.stop, () => this.stop());\n\n if (this.options.urlParams) {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('flipSpeed')) {\n this.options.flipSpeed = parseAnimationSpeed(urlParams.get('flipSpeed')) || this.options.flipSpeed;\n }\n if (urlParams.get('flipDelay')) {\n this.options.flipDelay = parseAnimationSpeed(urlParams.get('flipDelay')) || this.options.flipDelay;\n }\n if (urlParams.get('autoflip') === '1') {\n this.toggle();\n }\n }\n }\n\n /** @override */\n _bindNavigationHandlers() {\n if (!this.options.enabled) return;\n\n const jIcons = this.br.$('.BRicon');\n\n jIcons.filter('.play').on('click', () => {\n this.toggle();\n return false;\n });\n\n jIcons.filter('.pause').on('click', () => {\n this.toggle();\n return false;\n });\n }\n\n /**\n * Starts autoplay mode\n * @param {object} overrides\n * @param {number} overrides.flipSpeed\n * @param {number} overrides.flipDelay\n */\n toggle(overrides = null) {\n if (!this.options.enabled) return;\n\n Object.assign(this.options, overrides);\n this.br.trigger(EVENTS.stop);\n\n let bComingFrom1up = false;\n if (this.br.constMode2up != this.br.mode) {\n bComingFrom1up = true;\n this.br.switchMode(this.br.constMode2up);\n }\n\n if (null == this.timer) {\n // $$$ Draw events currently cause layout problems when they occur during animation.\n // There is a specific problem when changing from 1-up immediately to autoplay in RTL so\n // we workaround for now by not triggering immediate animation in that case.\n // See https://bugs.launchpad.net/gnubook/+bug/328327\n if (('rl' == this.br.pageProgression) && bComingFrom1up) {\n // don't flip immediately -- wait until timer fires\n } else {\n // flip immediately\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n\n this.br.$('.play').hide();\n this.br.$('.pause').show();\n this.timer = setInterval(() => {\n if (this.br.animating) return;\n\n if (Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR) >= this.br.book.getNumLeafs() - 1) {\n this.br.prev({ triggerStop: false, flipSpeed: this.options.flipSpeed }); // $$$ really what we want?\n } else {\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n }, parseAnimationSpeed(this.options.flipDelay));\n } else {\n this.stop();\n }\n }\n\n /**\n * Stop autoplay mode, allowing animations to finish\n */\n stop() {\n if (!this.options.enabled) return;\n\n if (null != this.timer) {\n clearInterval(this.timer);\n this.br.$('.pause').hide();\n this.br.$('.play').show();\n this.timer = null;\n }\n }\n}\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\nBookReader?.registerPlugin('autoplay', AutoplayPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","AutoplayPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","flipSpeed","flipDelay","urlParams","_inherits","_this2","bind","EVENTS","stop","URLSearchParams","window","location","search","get","parseAnimationSpeed","toggle","_this3","jIcons","$","filter","on","_this4","overrides","undefined","trigger","bComingFrom1up","constMode2up","mode","switchMode","timer","pageProgression","next","triggerStop","hide","show","setInterval","animating","Math","max","twoPage","currentIndexL","currentIndexR","book","getNumLeafs","prev","clearInterval","BookReader","registerPlugin"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.autoplay.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.autoplay.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 { EVENTS } from \"../BookReader/events.js\";\nimport { parseAnimationSpeed } from \"../BookReader/utils.js\";\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\n\n/**\n * Plugin which adds an autoplay feature. Useful for kiosk situations.\n */\nexport class AutoplayPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n /**\n * @type {number | 'fast' | 'slow'}\n * How quickly the flip animation should run.\n **/\n flipSpeed: 1500,\n /** How long to pause on each page between flips */\n flipDelay: 5000,\n /** Allow controlling the autoflip/speed/delay from the url */\n urlParams: true,\n }\n\n timer = null;\n\n /** @override */\n init() {\n if (!this.options.enabled) return;\n\n this.br.bind(EVENTS.stop, () => this.stop());\n\n if (this.options.urlParams) {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('flipSpeed')) {\n this.options.flipSpeed = parseAnimationSpeed(urlParams.get('flipSpeed')) || this.options.flipSpeed;\n }\n if (urlParams.get('flipDelay')) {\n this.options.flipDelay = parseAnimationSpeed(urlParams.get('flipDelay')) || this.options.flipDelay;\n }\n if (urlParams.get('autoflip') === '1') {\n this.toggle();\n }\n }\n }\n\n /** @override */\n _bindNavigationHandlers() {\n if (!this.options.enabled) return;\n\n const jIcons = this.br.$('.BRicon');\n\n jIcons.filter('.play').on('click', () => {\n this.toggle();\n return false;\n });\n\n jIcons.filter('.pause').on('click', () => {\n this.toggle();\n return false;\n });\n }\n\n /**\n * Starts autoplay mode\n * @param {object} overrides\n * @param {number} overrides.flipSpeed\n * @param {number} overrides.flipDelay\n */\n toggle(overrides = null) {\n if (!this.options.enabled) return;\n\n Object.assign(this.options, overrides);\n this.br.trigger(EVENTS.stop);\n\n let bComingFrom1up = false;\n if (this.br.constMode2up != this.br.mode) {\n bComingFrom1up = true;\n this.br.switchMode(this.br.constMode2up);\n }\n\n if (null == this.timer) {\n // $$$ Draw events currently cause layout problems when they occur during animation.\n // There is a specific problem when changing from 1-up immediately to autoplay in RTL so\n // we workaround for now by not triggering immediate animation in that case.\n // See https://bugs.launchpad.net/gnubook/+bug/328327\n if (('rl' == this.br.pageProgression) && bComingFrom1up) {\n // don't flip immediately -- wait until timer fires\n } else {\n // flip immediately\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n\n this.br.$('.play').hide();\n this.br.$('.pause').show();\n this.timer = setInterval(() => {\n if (this.br.animating) return;\n\n if (Math.max(this.br.twoPage.currentIndexL, this.br.twoPage.currentIndexR) >= this.br.book.getNumLeafs() - 1) {\n this.br.prev({ triggerStop: false, flipSpeed: this.options.flipSpeed }); // $$$ really what we want?\n } else {\n this.br.next({ triggerStop: false, flipSpeed: this.options.flipSpeed });\n }\n }, parseAnimationSpeed(this.options.flipDelay));\n } else {\n this.stop();\n }\n }\n\n /**\n * Stop autoplay mode, allowing animations to finish\n */\n stop() {\n if (!this.options.enabled) return;\n\n if (null != this.timer) {\n clearInterval(this.timer);\n this.br.$('.pause').hide();\n this.br.$('.play').show();\n this.timer = null;\n }\n }\n}\n\nconst BookReader = /** @type {typeof import('../BookReader').default} */(window.BookReader);\nBookReader?.registerPlugin('autoplay', AutoplayPlugin);\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","AutoplayPlugin","_BookReaderPlugin","_this","_len","arguments","length","args","Array","_key","_defineProperty","_callSuper","concat","enabled","flipSpeed","flipDelay","urlParams","_inherits","_this2","bind","EVENTS","stop","URLSearchParams","window","location","search","get","parseAnimationSpeed","toggle","_this3","jIcons","$","filter","on","_this4","overrides","undefined","trigger","bComingFrom1up","constMode2up","mode","switchMode","timer","pageProgression","next","triggerStop","hide","show","setInterval","animating","Math","max","twoPage","currentIndexL","currentIndexR","book","getNumLeafs","prev","clearInterval","BookReader","registerPlugin"],"sourceRoot":""}
@@ -1,5 +1,5 @@
1
1
  /*! For license information please see plugin.chapters.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[858],{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 o(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,i(n.key),n)}}function i(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=n(r))return r;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){}}])&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},2117:function(e,t,r){r(2675),r(9463),r(2259),r(8125),r(113),r(3418),r(4782),r(4554),r(2010),r(4731),r(479),r(2811),r(3851),r(875),r(3362),r(825),r(888),r(7495),r(8781),r(5700),r(8706),r(2008),r(8980),r(3792),r(8598),r(2062),r(4490),r(9572),r(8130),r(9085),r(6099),r(8940),r(7764),r(3500),r(2953),r(8408);var n=r(420),o=r(9696),i=r(4535),a=r(8900),c=n.qy`
2
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[858],{706:function(e,t,r){var n=r(350).PROPER,o=r(9039),i=r(7452);e.exports=function(e){return o(function(){return!!i[e]()||"​…᠎"!=="​…᠎"[e]()||n&&i[e].name!==e})}},2762:function(e,t,r){var n=r(6518),o=r(3802).trim;n({target:"String",proto:!0,forced:r(706)("trim")},{trim:function(){return o(this)}})},4535:function(e,t,r){r.d(t,{J:function(){return o}});var n=r(6681),o=function(e){return null!=e?e:n.s6}},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 o(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,i(n.key),n)}}function i(e){var t=function(e){if("object"!=n(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=n(r))return r;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){}}])&&o(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}()},2117:function(e,t,r){r(2675),r(9463),r(2259),r(8125),r(113),r(3418),r(4782),r(4554),r(2010),r(4731),r(479),r(2811),r(3851),r(875),r(3362),r(825),r(888),r(7495),r(8781),r(5700),r(8706),r(2008),r(8980),r(3792),r(8598),r(2062),r(4490),r(9572),r(8130),r(9085),r(6099),r(8940),r(7764),r(3500),r(2953),r(8408);var n=r(420),o=r(9696),i=r(4535),a=r(8900),c=n.qy`
3
3
  <svg
4
4
  viewBox="0 0 24 24"
5
5
  xmlns="http://www.w3.org/2000/svg"
@@ -19,5 +19,5 @@
19
19
  .stroke-color {
20
20
  stroke: var(--iconStrokeColor);
21
21
  }
22
- `}render(){return c}}customElements.define("ia-icon-toc",s);var l,u,f,p,d,h,y=r(1041),v=r(9073),b=r(8004),m=r(1669);function g(e){return g="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},g(e)}function k(){k=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 o=t.placement;if(t.kind===n&&("static"===o||"prototype"===o)){var i="static"===o?e:r;this.defineClassElement(i,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=[],o={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,o)},this),e.forEach(function(e){if(!P(e))return r.push(e);var t=this.decorateElement(e,o);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var i=this.decorateConstructor(r,t);return n.push.apply(n,i.finishers),i.finishers=n,i},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=[],o=e.decorators,i=o.length-1;i>=0;i--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var c=this.fromElementDescriptor(e),s=this.toElementFinisherExtras((0,o[i])(c)||c);e=s.element,this.addElementPlacement(e,t),s.finisher&&n.push(s.finisher);var l=s.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 o=this.fromClassDescriptor(e),i=this.toClassDescriptor((0,t[n])(o)||o);if(void 0!==i.finisher&&r.push(i.finisher),void 0!==i.elements){e=i.elements;for(var a=0;a<e.length-1;a++)for(var c=a+1;c<e.length;c++)if(e[a].key===e[c].key&&e[a].placement===e[c].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)||O(t)||j(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=$(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 o=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var i={kind:t,key:r,placement:n,descriptor:Object.assign({},o)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(o,"get","The property descriptor of a field descriptor"),this.disallowProperty(o,"set","The property descriptor of a field descriptor"),this.disallowProperty(o,"value","The property descriptor of a field descriptor"),i.initializer=e.initializer),i},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:C(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=C(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 w(e){var t,r=$(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 E(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function P(e){return e.decorators&&e.decorators.length}function x(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function C(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 j(e,t){if(e){if("string"==typeof e)return _(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)?_(e,t):void 0}}function O(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _(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 T(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var s=n&&n.prototype instanceof c?n:c,l=Object.create(s.prototype);return I(l,"_invoke",function(r,n,o){var i,c,s,l=0,u=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,c=0,s=e,p.n=r,a}};function d(r,n){for(c=r,s=n,t=0;!f&&l&&!o&&t<u.length;t++){var o,i=u[t],d=p.p,h=i[2];r>3?(o=h===n)&&(s=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,p.v=n,p.n=i[1]):d<h&&(o=r<3||i[0]>n||n>h)&&(i[4]=r,i[5]=n,p.n=h,c=0))}if(o||r>1)return a;throw f=!0,n}return function(o,u,h){if(l>1)throw TypeError("Generator is already running");for(f&&1===u&&d(u,h),c=u,s=h;(t=c<2?e:s)||!f;){i||(c?c<3?(c>1&&(p.n=-1),d(c,s)):p.n=s:p.v=s);try{if(l=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(f=p.n<0)?s:r.call(n,p))!==a)break}catch(t){i=e,c=1,s=t}finally{l=1}}return{value:t,done:f}}}(r,o,i),!0),l}var a={};function c(){}function s(){}function l(){}t=Object.getPrototypeOf;var u=[][n]?t(t([][n]())):(I(t={},n,function(){return this}),t),f=l.prototype=c.prototype=Object.create(u);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,I(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return s.prototype=l,I(f,"constructor",l),I(l,"constructor",s),s.displayName="GeneratorFunction",I(l,o,"GeneratorFunction"),I(f),I(f,o,"Generator"),I(f,n,function(){return this}),I(f,"toString",function(){return"[object Generator]"}),(S=function(){return{w:i,m:p}})()}function I(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}I=function(e,t,r,n){function i(t,r){I(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},I(e,t,r,n)}function A(e,t,r,n,o,i,a){try{var c=e[i](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function R(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){A(i,n,o,a,c,"next",e)}function c(e){A(i,n,o,a,c,"throw",e)}a(void 0)})}}function D(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function B(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,$(n.key),n)}}function L(e,t,r){return t&&B(e.prototype,t),r&&B(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function z(e,t,r){return t=q(t),function(e,t){if(t&&("object"==g(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,F()?Reflect.construct(t,r||[],q(e).constructor):t.apply(e,r))}function F(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(F=function(){return!!e})()}function H(e,t,r,n){var o=M(q(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof o?function(e){return o.apply(r,e)}:o}function M(){return M="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=q(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},M.apply(null,arguments)}function q(e){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},q(e)}function G(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&&N(e,t)}function N(e,t){return N=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},N(e,t)}function W(e,t,r){return(t=$(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function $(e){var t=function(e){if("object"!=g(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=g(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}var U,Z,J,V,X,K,Q,Y=window.BookReader,ee=function(e){function t(){var e;D(this,t);for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return W(e=z(this,t,[].concat(n)),"options",{enabled:!0,openLibraryHost:"https://openlibrary.org",openLibraryId:"",internetArchiveId:"",olHost:"https://openlibrary.org",bookId:"{{bookId}}"}),W(e,"_tocEntries",void 0),W(e,"_chaptersPanel",void 0),e}return G(t,e),L(t,[{key:"setup",value:function(e){H(t,"setup",this,3)([e]),this.options.internetArchiveId=this.options.internetArchiveId||this.options.bookId,this.options.openLibraryHost=this.options.openLibraryHost||this.options.olHost}},{key:"init",value:(o=R(S().m(function e(){var t,r,n,o,i=this;return S().w(function(e){for(;;)switch(e.n){case 0:if(this.options.enabled&&"embed"!==this.br.ui){e.n=1;break}return e.a(2);case 1:if(r=null,null===(t=this.br.options.table_of_contents)||void 0===t||!t.length){e.n=2;break}r=this.br.options.table_of_contents,e.n=4;break;case 2:return e.n=3,this.getOpenLibraryRecord();case 3:null!=(o=e.v)&&null!==(n=o.table_of_contents)&&void 0!==n&&n.length&&(r=o.table_of_contents);case 4:if(!r){e.n=6;break}if(this._tocEntries=r.map(function(e){return Object.assign({},e,{pageIndex:"number"==typeof e.page_index?e.page_index:"number"==typeof e.leaf?i.br.book.leafNumToIndex(e.leaf):e.pagenum?i.br.book.getPageIndex(e.pagenum):void 0})}),this.br.shell){e.n=5;break}return e.n=5,(0,b.promisifyEvent)(window,"BookReader:PostInit");case 5:this._render(),this.br.bind(Y.eventNames.pageChanged,function(){return i._updateCurrent()});case 6:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.chapters={id:"chapters",icon:(0,n.qy)(l||(l=T(['<ia-icon-toc aria-hidden="true" role="presentation" style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon-toc>']))),label:"Table of Contents",component:(0,n.qy)(u||(u=T(['<br-chapters-panel\n .contents="','"\n .jumpToPage="','"\n @connected="','"\n />'])),this._tocEntries,function(t){e._updateCurrent(t),e.br.jumpToIndex(t,{ariaLive:!0})},function(t){e._chaptersPanel=t.target,e._updateCurrent()})},this.br.shell.addMenuShortcut("chapters"),this.br.shell.updateMenuContents(),this._tocEntries.forEach(function(t,r){return e._renderMarker(t,r)})}},{key:"_renderMarker",value:function(e,t){var r=this;if(null!=e.pageIndex){var n=[e.label,e.title].filter(function(e){return e}).join(" ")||"Chapter ".concat(t+1),o=Y.util.cssPercentage(e.pageIndex,this.br.book.getNumLeafs()-1);m("<div></div>").append(m("<div />").text(n).append(m('<div class="BRchapterPage" />').text(this.br.book.getPageName(e.pageIndex)))).addClass("BRchapter").css({left:o}).appendTo(this.br.$(".BRnavline")).on("mouseenter",function(e){var t=e.currentTarget,n=t.querySelector("div"),o=n.getBoundingClientRect(),i=t.getBoundingClientRect(),a=2*parseInt(getComputedStyle(n).paddingLeft);o.x-a<0&&n.style.setProperty("transform","translateX(-".concat(i.left-a,"px)")),r.br.$(".BRsearch,.BRchapter").removeClass("front"),m(e.target).addClass("front")}).on("mouseleave",function(e){return m(e.target).removeClass("front")}).on("click",function(){r._updateCurrent(e.pageIndex),r.br.jumpToIndex(e.pageIndex,{ariaLive:!0})}),this.br.$(".BRchapter, .BRsearch").each(function(e,t){var r=m(t);r.on("mouseenter",function(){return r.addClass("front")}).on("mouseleave",function(){return r.removeClass("front")})})}}},{key:"getOpenLibraryRecord",value:(r=R(S().m(function e(){var t,r,n,o,i,a;return S().w(function(e){for(;;)switch(e.n){case 0:if(t=(0,v.gT)(this.options.openLibraryHost,this.br.options.vars),!this.options.openLibraryId){e.n=2;break}return r=(0,v.gT)(this.options.openLibraryId,this.br.options.vars),e.n=1,m.ajax({url:"".concat(t,"/books/").concat(r,".json")});case 1:return e.a(2,e.v);case 2:if(!this.options.internetArchiveId){e.n=6;break}return o=(0,v.gT)(this.options.internetArchiveId,this.br.options.vars),i="".concat(t,"/query.json?type=/type/edition&*=&"),e.n=3,m.ajax({url:i+new URLSearchParams({ocaid:o,limit:"1"})});case 3:if((a=e.v)&&a.length){e.n=5;break}return e.n=4,m.ajax({url:i+new URLSearchParams({source_records:"ia:".concat(o),limit:"1"})});case 4:a=e.v;case 5:return e.a(2,null===(n=a)||void 0===n?void 0:n[0]);case 6:return e.a(2,null)}},e,this)})),function(){return r.apply(this,arguments)})},{key:"_updateCurrent",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2==this.br.mode?Math.max.apply(Math,function(e){if(Array.isArray(e))return _(e)}(e=this.br.displayedIndices)||O(e)||j(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):this.br.firstIndex,r=this._tocEntries.filter(function(e){return null!=e.pageIndex}).reverse(),n=r[r.findIndex(function(e){return e.pageIndex<=t})];this._chaptersPanel&&(this._chaptersPanel.currentChapter=n)}}]);var r,o}(y.S);null==Y||Y.registerPlugin("chapters",ee),U=[(0,o.EM)("br-chapters-panel")],Z=n.WF,X=k(),J=function(e){X.initializeInstanceElements(e,Q.elements)},K={F:V=function(e){function t(e){var r;return D(this,t),r=z(this,t),J(r),r.contents=e,r}return G(t,e),L(t)}(Z),d:[{kind:"field",decorators:[(0,o.MZ)({type:Array})],key:"contents",value:function(){return[]}},{kind:"field",decorators:[(0,o.MZ)({type:Object})],key:"currentChapter",value:function(){return{}}},{kind:"field",key:"jumpToPage",value:function(){return function(){}}},{kind:"method",key:"render",value:function(){var e=this;return(0,n.qy)(f||(f=T(["\n <ol>\n ","\n </ol>\n "])),this.contents.map(function(t){return e.renderTOCEntry(t)}))}},{kind:"method",key:"renderTOCEntry",value:function(e){var t=this,r=[e.label,e.title].filter(function(e){return e}).join(" "),o=null!=e.pageIndex;return(0,n.qy)(p||(p=T(['\n <li\n class="\n BRtable-contents-el\n ',"\n ",'\n "\n style="','"\n data-event-click-tracking="','"\n @click="','"\n >\n ',"\n ","\n </li>"])),o?"clickable":"",e==this.currentChapter?"current":"",(0,a.W)({marginLeft:10*(e.level-1)+"px"}),(0,i.J)(o?"BRTOCPanel|GoToChapter":void 0),function(){return t.jumpToPage(e.pageIndex)},r,e.pagenum?(0,n.qy)(d||(d=T(['\n <br />\n <span class="BRTOCElementPage">Page ',"</span>\n "])),e.pagenum):n.s6)}},{kind:"method",key:"connectedCallback",value:function(){H(V,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}},{kind:"method",key:"updated",value:function(e){var t;e.has("currentChapter")&&(null===(t=this.shadowRoot.querySelector("li.current"))||void 0===t||t.scrollIntoView({block:"nearest",behavior:"smooth"}))}},{kind:"get",static:!0,key:"styles",value:function(){return(0,n.AH)(h||(h=T(["\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }"])))}}]},Q=X.decorateClass(function(e){for(var t=[],r=function(e){return"method"===e.kind&&e.key===i.key&&e.placement===i.placement},n=0;n<e.length;n++){var o,i=e[n];if("method"===i.kind&&(o=t.find(r)))if(x(i.descriptor)||x(o.descriptor)){if(P(i)||P(o))throw new ReferenceError("Duplicated methods ("+i.key+") can't be decorated.");o.descriptor=i.descriptor}else{if(P(i)){if(P(o))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+i.key+").");o.decorators=i.decorators}E(i,o)}else t.push(i)}return t}(K.d.map(w)),U),X.initializeClassElements(K.F,Q.elements),X.runClassFinishers(K.F,Q.finishers)}},function(e){e(e.s=2117)}]);
22
+ `}render(){return c}}customElements.define("ia-icon-toc",s);var u,l,f,p,d,h,y=r(1041),v=r(9073),m=r(8004),b=r(1669);function g(e){return g="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},g(e)}function k(){k=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 o=t.placement;if(t.kind===n&&("static"===o||"prototype"===o)){var i="static"===o?e:r;this.defineClassElement(i,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=[],o={static:[],prototype:[],own:[]};if(e.forEach(function(e){this.addElementPlacement(e,o)},this),e.forEach(function(e){if(!P(e))return r.push(e);var t=this.decorateElement(e,o);r.push(t.element),r.push.apply(r,t.extras),n.push.apply(n,t.finishers)},this),!t)return{elements:r,finishers:n};var i=this.decorateConstructor(r,t);return n.push.apply(n,i.finishers),i.finishers=n,i},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=[],o=e.decorators,i=o.length-1;i>=0;i--){var a=t[e.placement];a.splice(a.indexOf(e.key),1);var c=this.fromElementDescriptor(e),s=this.toElementFinisherExtras((0,o[i])(c)||c);e=s.element,this.addElementPlacement(e,t),s.finisher&&n.push(s.finisher);var u=s.extras;if(u){for(var l=0;l<u.length;l++)this.addElementPlacement(u[l],t);r.push.apply(r,u)}}return{element:e,finishers:n,extras:r}},decorateConstructor:function(e,t){for(var r=[],n=t.length-1;n>=0;n--){var o=this.fromClassDescriptor(e),i=this.toClassDescriptor((0,t[n])(o)||o);if(void 0!==i.finisher&&r.push(i.finisher),void 0!==i.elements){e=i.elements;for(var a=0;a<e.length-1;a++)for(var c=a+1;c<e.length;c++)if(e[a].key===e[c].key&&e[a].placement===e[c].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)||O(t)||C(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=W(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 o=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var i={kind:t,key:r,placement:n,descriptor:Object.assign({},o)};return"field"!==t?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(o,"get","The property descriptor of a field descriptor"),this.disallowProperty(o,"set","The property descriptor of a field descriptor"),this.disallowProperty(o,"value","The property descriptor of a field descriptor"),i.initializer=e.initializer),i},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:j(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=j(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 w(e){var t,r=W(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 E(e,t){void 0!==e.descriptor.get?t.descriptor.get=e.descriptor.get:t.descriptor.set=e.descriptor.set}function P(e){return e.decorators&&e.decorators.length}function x(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function j(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 C(e,t){if(e){if("string"==typeof e)return _(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)?_(e,t):void 0}}function O(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _(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 T(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(){var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var s=n&&n.prototype instanceof c?n:c,u=Object.create(s.prototype);return I(u,"_invoke",function(r,n,o){var i,c,s,u=0,l=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,r){return i=t,c=0,s=e,p.n=r,a}};function d(r,n){for(c=r,s=n,t=0;!f&&u&&!o&&t<l.length;t++){var o,i=l[t],d=p.p,h=i[2];r>3?(o=h===n)&&(s=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,p.v=n,p.n=i[1]):d<h&&(o=r<3||i[0]>n||n>h)&&(i[4]=r,i[5]=n,p.n=h,c=0))}if(o||r>1)return a;throw f=!0,n}return function(o,l,h){if(u>1)throw TypeError("Generator is already running");for(f&&1===l&&d(l,h),c=l,s=h;(t=c<2?e:s)||!f;){i||(c?c<3?(c>1&&(p.n=-1),d(c,s)):p.n=s:p.v=s);try{if(u=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(f=p.n<0)?s:r.call(n,p))!==a)break}catch(t){i=e,c=1,s=t}finally{u=1}}return{value:t,done:f}}}(r,o,i),!0),u}var a={};function c(){}function s(){}function u(){}t=Object.getPrototypeOf;var l=[][n]?t(t([][n]())):(I(t={},n,function(){return this}),t),f=u.prototype=c.prototype=Object.create(l);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,I(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return s.prototype=u,I(f,"constructor",u),I(u,"constructor",s),s.displayName="GeneratorFunction",I(u,o,"GeneratorFunction"),I(f),I(f,o,"Generator"),I(f,n,function(){return this}),I(f,"toString",function(){return"[object Generator]"}),(S=function(){return{w:i,m:p}})()}function I(e,t,r,n){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}I=function(e,t,r,n){function i(t,r){I(e,t,function(e){return this._invoke(t,r,e)})}t?o?o(e,t,{value:r,enumerable:!n,configurable:!n,writable:!n}):e[t]=r:(i("next",0),i("throw",1),i("return",2))},I(e,t,r,n)}function A(e,t,r,n,o,i,a){try{var c=e[i](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function R(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var i=e.apply(t,r);function a(e){A(i,n,o,a,c,"next",e)}function c(e){A(i,n,o,a,c,"throw",e)}a(void 0)})}}function D(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function B(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,W(n.key),n)}}function L(e,t,r){return t&&B(e.prototype,t),r&&B(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function z(e,t,r){return t=q(t),function(e,t){if(t&&("object"==g(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,F()?Reflect.construct(t,r||[],q(e).constructor):t.apply(e,r))}function F(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(F=function(){return!!e})()}function H(e,t,r,n){var o=M(q(1&n?e.prototype:e),t,r);return 2&n&&"function"==typeof o?function(e){return o.apply(r,e)}:o}function M(){return M="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=q(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(arguments.length<3?e:r):o.value}},M.apply(null,arguments)}function q(e){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},q(e)}function G(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&&N(e,t)}function N(e,t){return N=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},N(e,t)}function U(e,t,r){return(t=W(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function W(e){var t=function(e){if("object"!=g(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=g(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}var $,J,Z,V,X,K,Q,Y=window.BookReader,ee=function(e){function t(){var e;D(this,t);for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return U(e=z(this,t,[].concat(n)),"options",{enabled:!0,openLibraryHost:"https://openlibrary.org",openLibraryId:"",internetArchiveId:"",olHost:"https://openlibrary.org",bookId:"{{bookId}}"}),U(e,"_tocEntries",void 0),U(e,"_chaptersPanel",void 0),e}return G(t,e),L(t,[{key:"setup",value:function(e){H(t,"setup",this,3)([e]),this.options.internetArchiveId=this.options.internetArchiveId||this.options.bookId,this.options.openLibraryHost=this.options.openLibraryHost||this.options.olHost}},{key:"init",value:(o=R(S().m(function e(){var t,r,n,o,i=this;return S().w(function(e){for(;;)switch(e.n){case 0:if(this.options.enabled&&"embed"!==this.br.ui){e.n=1;break}return e.a(2);case 1:if(r=null,null===(t=this.br.options.table_of_contents)||void 0===t||!t.length){e.n=2;break}r=this.br.options.table_of_contents,e.n=4;break;case 2:return e.n=3,this.getOpenLibraryRecord();case 3:null!=(o=e.v)&&null!==(n=o.table_of_contents)&&void 0!==n&&n.length&&(r=o.table_of_contents);case 4:if(!r){e.n=6;break}if(this._tocEntries=r.map(function(e){return Object.assign({},e,{pageIndex:"number"==typeof e.page_index?e.page_index:"number"==typeof e.leaf?i.br.book.leafNumToIndex(e.leaf):e.pagenum?i.br.book.getPageIndex(e.pagenum):void 0})}),this.br.shell){e.n=5;break}return e.n=5,(0,m.promisifyEvent)(window,"BookReader:PostInit");case 5:this._render(),this.br.bind(Y.eventNames.pageChanged,function(){return i._updateCurrent()});case 6:return e.a(2)}},e,this)})),function(){return o.apply(this,arguments)})},{key:"_render",value:function(){var e=this;this.br.shell.menuProviders.chapters={id:"chapters",icon:(0,n.qy)(u||(u=T(['<ia-icon-toc aria-hidden="true" role="presentation" style="width: var(--iconWidth); height: var(--iconHeight);"></ia-icon-toc>']))),label:"Table of Contents",component:(0,n.qy)(l||(l=T(['<br-chapters-panel\n .contents="','"\n .jumpToPage="','"\n @connected="','"\n />'])),this._tocEntries,function(t){e._updateCurrent(t),e.br.jumpToIndex(t,{ariaLive:!0})},function(t){e._chaptersPanel=t.target,e._updateCurrent()})},this.br.shell.addMenuShortcut("chapters"),this.br.shell.updateMenuContents(),this._tocEntries.forEach(function(t,r){return e._renderMarker(t,r)})}},{key:"_renderMarker",value:function(e,t){var r=this;if(null!=e.pageIndex){var n=[e.label,e.title].filter(function(e){return e}).join(" ")||"Chapter ".concat(t+1),o=Y.util.cssPercentage(e.pageIndex,this.br.book.getNumLeafs()-1);b("<div></div>").append(b("<div />").text(n).append(b('<div class="BRchapterPage" />').text(this.br.book.getPageName(e.pageIndex)))).addClass("BRchapter").css({left:o}).appendTo(this.br.$(".BRnavline")).on("mouseenter",function(e){var t=e.currentTarget,n=t.querySelector("div"),o=n.getBoundingClientRect(),i=t.getBoundingClientRect(),a=2*parseInt(getComputedStyle(n).paddingLeft);o.x-a<0&&n.style.setProperty("transform","translateX(-".concat(i.left-a,"px)")),r.br.$(".BRsearch,.BRchapter").removeClass("front"),b(e.target).addClass("front")}).on("mouseleave",function(e){return b(e.target).removeClass("front")}).on("click",function(){r._updateCurrent(e.pageIndex),r.br.jumpToIndex(e.pageIndex,{ariaLive:!0})}),this.br.$(".BRchapter, .BRsearch").each(function(e,t){var r=b(t);r.on("mouseenter",function(){return r.addClass("front")}).on("mouseleave",function(){return r.removeClass("front")})})}}},{key:"getOpenLibraryRecord",value:(r=R(S().m(function e(){var t,r,n,o,i,a;return S().w(function(e){for(;;)switch(e.n){case 0:if(t=(0,v.gT)(this.options.openLibraryHost,this.br.options.vars),!this.options.openLibraryId){e.n=2;break}return r=(0,v.gT)(this.options.openLibraryId,this.br.options.vars),e.n=1,b.ajax({url:"".concat(t,"/books/").concat(r,".json")});case 1:return e.a(2,e.v);case 2:if(!this.options.internetArchiveId){e.n=6;break}return o=(0,v.gT)(this.options.internetArchiveId,this.br.options.vars),i="".concat(t,"/query.json?type=/type/edition&*=&"),e.n=3,b.ajax({url:i+new URLSearchParams({ocaid:o,limit:"1"})});case 3:if((a=e.v)&&a.length){e.n=5;break}return e.n=4,b.ajax({url:i+new URLSearchParams({source_records:"ia:".concat(o),limit:"1"})});case 4:a=e.v;case 5:return e.a(2,null===(n=a)||void 0===n?void 0:n[0]);case 6:return e.a(2,null)}},e,this)})),function(){return r.apply(this,arguments)})},{key:"_updateCurrent",value:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:2==this.br.mode?Math.max.apply(Math,function(e){if(Array.isArray(e))return _(e)}(e=this.br.displayedIndices)||O(e)||C(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()):this.br.firstIndex,r=this._tocEntries.filter(function(e){return null!=e.pageIndex}).reverse(),n=r[r.findIndex(function(e){return e.pageIndex<=t})];this._chaptersPanel&&(this._chaptersPanel.currentChapter=n)}}]);var r,o}(y.S);null==Y||Y.registerPlugin("chapters",ee),$=[(0,o.EM)("br-chapters-panel")],J=n.WF,X=k(),Z=function(e){X.initializeInstanceElements(e,Q.elements)},K={F:V=function(e){function t(e){var r;return D(this,t),r=z(this,t),Z(r),r.contents=e,r}return G(t,e),L(t)}(J),d:[{kind:"field",decorators:[(0,o.MZ)({type:Array})],key:"contents",value:function(){return[]}},{kind:"field",decorators:[(0,o.MZ)({type:Object})],key:"currentChapter",value:function(){return{}}},{kind:"field",key:"jumpToPage",value:function(){return function(){}}},{kind:"method",key:"render",value:function(){var e=this;return(0,n.qy)(f||(f=T(["\n <ol>\n ","\n </ol>\n "])),this.contents.map(function(t){return e.renderTOCEntry(t)}))}},{kind:"method",key:"renderTOCEntry",value:function(e){var t=this,r=[e.label,e.title].filter(function(e){return e}).join(" "),o=null!=e.pageIndex;return(0,n.qy)(p||(p=T(['\n <li\n class="\n BRtable-contents-el\n ',"\n ",'\n "\n style="','"\n data-event-click-tracking="','"\n @click="','"\n >\n ',"\n ","\n </li>"])),o?"clickable":"",e==this.currentChapter?"current":"",(0,a.W)({marginLeft:10*(e.level-1)+"px"}),(0,i.J)(o?"BRTOCPanel|GoToChapter":void 0),function(){return t.jumpToPage(e.pageIndex)},r,e.pagenum?(0,n.qy)(d||(d=T(['\n <br />\n <span class="BRTOCElementPage">Page ',"</span>\n "])),e.pagenum):n.s6)}},{kind:"method",key:"connectedCallback",value:function(){H(V,"connectedCallback",this,3)([]),this.dispatchEvent(new CustomEvent("connected"))}},{kind:"method",key:"updated",value:function(e){var t;e.has("currentChapter")&&(null===(t=this.shadowRoot.querySelector("li.current"))||void 0===t||t.scrollIntoView({block:"nearest",behavior:"smooth"}))}},{kind:"get",static:!0,key:"styles",value:function(){return(0,n.AH)(h||(h=T(["\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }"])))}}]},Q=X.decorateClass(function(e){for(var t=[],r=function(e){return"method"===e.kind&&e.key===i.key&&e.placement===i.placement},n=0;n<e.length;n++){var o,i=e[n];if("method"===i.kind&&(o=t.find(r)))if(x(i.descriptor)||x(o.descriptor)){if(P(i)||P(o))throw new ReferenceError("Duplicated methods ("+i.key+") can't be decorated.");o.descriptor=i.descriptor}else{if(P(i)){if(P(o))throw new ReferenceError("Decorators can't be placed on different accessors with for the same property ("+i.key+").");o.decorators=i.decorators}E(i,o)}else t.push(i)}return t}(K.d.map(w)),$),X.initializeClassElements(K.F,Q.elements),X.runClassFinishers(K.F,Q.finishers)},9073:function(e,t,r){function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function o(e){var t=e.match(/\S+/g);return t?t.length:0}function i(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:a;return null==e?void 0:e.replace(/\{\{([^}]*?)\}\}/g,function(e,i){if(!i)return e;var a,c=function(e){if(Array.isArray(e))return e}(a=i.split("|").map(function(e){return e.trim()}))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}(a)||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.")}(),s=c[0],u=n(c).slice(1);if(!(s in r)&&!(s in t))return e;var l=s in r?r[s]:s in t?t[s]:null;return u.map(function(e){return o[e]}).reduce(function(e,t){return t(e)},l&&l.toString())})}r.d(t,{gT:function(){return i},rj:function(){return o}}),r(2675),r(9463),r(2259),r(3418),r(3792),r(2062),r(2712),r(4782),r(2010),r(6099),r(7495),r(8781),r(7764),r(1761),r(5440),r(2762),r(2953);var a={urlencode:encodeURIComponent}}},function(e){e(e.s=2117)}]);
23
23
  //# sourceMappingURL=plugin.chapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.chapters.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,6VCJ7B,EAAe,IAAI;;;;;;;ECCnB,MAAMC,UAAkB,KACtB,iBAAWC,GACT,OAAO,IAAG;;;;;;;;;;;;;KAcZ,CAEA,MAAAC,GACE,OAAO,CACT,EAGFC,eAAeC,OAAO,cAAeJ,GAErC,I,2wNC3BA,IAAAK,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,EAAAtB,OAAAuB,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,EAAAe,EAAAnB,EAAAoB,EAAAC,EAAAN,EAAAM,EAAAC,KAAAtB,EAAA,GAAAqB,EAAA,SAAApB,EAAAC,GAAA,OAAAM,EAAAP,EAAAQ,EAAA,EAAAG,EAAAZ,EAAAkB,EAAAd,EAAAF,EAAAkB,CAAA,YAAAC,EAAAnB,EAAAE,GAAA,IAAAK,EAAAP,EAAAU,EAAAR,EAAAH,EAAA,GAAAgB,GAAAF,IAAAT,GAAAL,EAAAe,EAAAO,OAAAtB,IAAA,KAAAK,EAAAE,EAAAQ,EAAAf,GAAAoB,EAAAH,EAAAF,EAAAQ,EAAAhB,EAAA,GAAAN,EAAA,GAAAI,EAAAkB,IAAApB,KAAAQ,EAAAJ,GAAAC,EAAAD,EAAA,OAAAC,EAAA,MAAAD,EAAA,GAAAA,EAAA,GAAAR,GAAAQ,EAAA,IAAAa,KAAAf,EAAAJ,EAAA,GAAAmB,EAAAb,EAAA,KAAAC,EAAA,EAAAS,EAAAC,EAAAf,EAAAc,EAAAd,EAAAI,EAAA,IAAAa,EAAAG,IAAAlB,EAAAJ,EAAA,GAAAM,EAAA,GAAAJ,GAAAA,EAAAoB,KAAAhB,EAAA,GAAAN,EAAAM,EAAA,GAAAJ,EAAAc,EAAAd,EAAAoB,EAAAf,EAAA,OAAAH,GAAAJ,EAAA,SAAAkB,EAAA,MAAAH,GAAA,EAAAb,CAAA,iBAAAE,EAAAU,EAAAQ,GAAA,GAAAT,EAAA,QAAAU,UAAA,oCAAAR,GAAA,IAAAD,GAAAK,EAAAL,EAAAQ,GAAAf,EAAAO,EAAAJ,EAAAY,GAAAvB,EAAAQ,EAAA,EAAAT,EAAAY,KAAAK,GAAA,CAAAT,IAAAC,EAAAA,EAAA,GAAAA,EAAA,IAAAS,EAAAd,GAAA,GAAAiB,EAAAZ,EAAAG,IAAAM,EAAAd,EAAAQ,EAAAM,EAAAC,EAAAP,GAAA,OAAAG,EAAA,EAAAP,EAAA,IAAAC,IAAAH,EAAA,QAAAL,EAAAO,EAAAF,GAAA,MAAAL,EAAAA,EAAAyB,KAAAlB,EAAAI,IAAA,MAAAa,UAAA,wCAAAxB,EAAA0B,KAAA,OAAA1B,EAAAW,EAAAX,EAAAZ,MAAAoB,EAAA,IAAAA,EAAA,YAAAA,IAAAR,EAAAO,EAAAoB,SAAA3B,EAAAyB,KAAAlB,GAAAC,EAAA,IAAAG,EAAAa,UAAA,oCAAAnB,EAAA,YAAAG,EAAA,GAAAD,EAAAR,CAAA,UAAAC,GAAAgB,EAAAC,EAAAd,EAAA,GAAAQ,EAAAV,EAAAwB,KAAAtB,EAAAc,MAAAE,EAAA,YAAAnB,GAAAO,EAAAR,EAAAS,EAAA,EAAAG,EAAAX,CAAA,SAAAc,EAAA,UAAA1B,MAAAY,EAAA0B,KAAAV,EAAA,GAAAf,EAAAI,EAAAE,IAAA,GAAAI,CAAA,KAAAQ,EAAA,YAAAT,IAAA,UAAAkB,IAAA,UAAAC,IAAA,CAAA7B,EAAAX,OAAAyC,eAAA,IAAAtB,EAAA,GAAAL,GAAAH,EAAAA,EAAA,GAAAG,QAAAU,EAAAb,EAAA,GAAAG,EAAA,yBAAAH,GAAAW,EAAAkB,EAAApB,UAAAC,EAAAD,UAAApB,OAAAuB,OAAAJ,GAAA,SAAAM,EAAAf,GAAA,OAAAV,OAAA0C,eAAA1C,OAAA0C,eAAAhC,EAAA8B,IAAA9B,EAAAiC,UAAAH,EAAAhB,EAAAd,EAAAM,EAAA,sBAAAN,EAAAU,UAAApB,OAAAuB,OAAAD,GAAAZ,CAAA,QAAA6B,EAAAnB,UAAAoB,EAAAhB,EAAAF,EAAA,cAAAkB,GAAAhB,EAAAgB,EAAA,cAAAD,GAAAA,EAAAK,YAAA,oBAAApB,EAAAgB,EAAAxB,EAAA,qBAAAQ,EAAAF,GAAAE,EAAAF,EAAAN,EAAA,aAAAQ,EAAAF,EAAAR,EAAA,yBAAAU,EAAAF,EAAA,oDAAAuB,EAAA,kBAAAC,EAAA5B,EAAA6B,EAAAtB,EAAA,cAAAD,EAAAd,EAAAE,EAAAE,EAAAH,GAAA,IAAAO,EAAAlB,OAAAgD,eAAA,IAAA9B,EAAA,gBAAAR,GAAAQ,EAAA,EAAAM,EAAA,SAAAd,EAAAE,EAAAE,EAAAH,GAAA,SAAAK,EAAAJ,EAAAE,GAAAU,EAAAd,EAAAE,EAAA,SAAAF,GAAA,YAAAuC,QAAArC,EAAAE,EAAAJ,EAAA,GAAAE,EAAAM,EAAAA,EAAAR,EAAAE,EAAA,CAAAb,MAAAe,EAAAoC,YAAAvC,EAAAwC,cAAAxC,EAAAyC,UAAAzC,IAAAD,EAAAE,GAAAE,GAAAE,EAAA,UAAAA,EAAA,WAAAA,EAAA,cAAAQ,EAAAd,EAAAE,EAAAE,EAAAH,EAAA,UAAA0C,EAAAvC,EAAAH,EAAAD,EAAAE,EAAAI,EAAAc,EAAAX,GAAA,QAAAD,EAAAJ,EAAAgB,GAAAX,GAAAG,EAAAJ,EAAAnB,KAAA,OAAAe,GAAA,YAAAJ,EAAAI,EAAA,CAAAI,EAAAmB,KAAA1B,EAAAW,GAAAgC,QAAAC,QAAAjC,GAAAkC,KAAA5C,EAAAI,EAAA,UAAAyC,EAAA3C,GAAA,sBAAAH,EAAA,KAAAD,EAAAgD,UAAA,WAAAJ,QAAA,SAAA1C,EAAAI,GAAA,IAAAc,EAAAhB,EAAA6C,MAAAhD,EAAAD,GAAA,SAAAkD,EAAA9C,GAAAuC,EAAAvB,EAAAlB,EAAAI,EAAA4C,EAAAC,EAAA,OAAA/C,EAAA,UAAA+C,EAAA/C,GAAAuC,EAAAvB,EAAAlB,EAAAI,EAAA4C,EAAAC,EAAA,QAAA/C,EAAA,CAAA8C,OAAA,eAAAjE,EAAAmC,EAAAhB,GAAA,KAAAgB,aAAAhB,GAAA,UAAAqB,UAAA,8CAAA2B,EAAApD,EAAAE,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAAqB,OAAAtB,IAAA,KAAAK,EAAAJ,EAAAD,GAAAK,EAAAkC,WAAAlC,EAAAkC,aAAA,EAAAlC,EAAAmC,cAAA,YAAAnC,IAAAA,EAAAoC,UAAA,GAAApD,OAAAgD,eAAAtC,EAAAqD,EAAA/C,EAAAlB,KAAAkB,EAAA,WAAAgD,EAAAtD,EAAAE,EAAAD,GAAA,OAAAC,GAAAkD,EAAApD,EAAAU,UAAAR,GAAAD,GAAAmD,EAAApD,EAAAC,GAAAX,OAAAgD,eAAAtC,EAAA,aAAA0C,UAAA,IAAA1C,CAAA,UAAAuD,EAAAtD,EAAAK,EAAAN,GAAA,OAAAM,EAAAkD,EAAAlD,GAAA,SAAAL,EAAAD,GAAA,GAAAA,IAAA,UAAAyD,EAAAzD,IAAA,mBAAAA,GAAA,OAAAA,EAAA,YAAAA,EAAA,UAAAyB,UAAA,4EAAAzB,GAAA,YAAAA,EAAA,UAAA0D,eAAA,oEAAA1D,CAAA,CAAA2D,CAAA1D,EAAA,CAAA2D,CAAA3D,EAAA4D,IAAAC,QAAAC,UAAAzD,EAAAN,GAAA,GAAAwD,EAAAvD,GAAA+D,aAAA1D,EAAA2C,MAAAhD,EAAAD,GAAA,UAAA6D,IAAA,QAAA5D,GAAAgE,QAAAvD,UAAAwD,QAAAxC,KAAAoC,QAAAC,UAAAE,QAAA,wBAAAhE,GAAA,QAAA4D,EAAA,mBAAA5D,CAAA,cAAAkE,EAAAlE,EAAAK,EAAAN,EAAAE,GAAA,IAAAc,EAAAoD,EAAAZ,EAAA,EAAAtD,EAAAD,EAAAS,UAAAT,GAAAK,EAAAN,GAAA,SAAAE,GAAA,mBAAAc,EAAA,SAAAf,GAAA,OAAAe,EAAAiC,MAAAjD,EAAAC,EAAA,EAAAe,CAAA,UAAAoD,IAAA,OAAAA,EAAA,oBAAAN,SAAAA,QAAAO,IAAAP,QAAAO,IAAA/C,OAAA,SAAAtB,EAAAC,EAAAC,GAAA,IAAAc,EAAA,SAAAf,EAAAK,GAAA,SAAAgE,eAAA5C,KAAAzB,EAAAK,IAAA,QAAAL,EAAAuD,EAAAvD,MAAA,OAAAA,CAAA,CAAAsE,CAAAvE,EAAAC,GAAA,GAAAe,EAAA,KAAAZ,EAAAd,OAAAkF,yBAAAxD,EAAAf,GAAA,OAAAG,EAAAiE,IAAAjE,EAAAiE,IAAA3C,KAAAsB,UAAAzB,OAAA,EAAAvB,EAAAE,GAAAE,EAAAf,KAAA,GAAA+E,EAAAnB,MAAA,KAAAD,UAAA,UAAAQ,EAAAvD,GAAA,OAAAuD,EAAAlE,OAAA0C,eAAA1C,OAAAyC,eAAAT,OAAA,SAAArB,GAAA,OAAAA,EAAAgC,WAAA3C,OAAAyC,eAAA9B,EAAA,EAAAuD,EAAAvD,EAAA,UAAAwE,EAAAxE,EAAAD,GAAA,sBAAAA,GAAA,OAAAA,EAAA,UAAAyB,UAAA,sDAAAxB,EAAAS,UAAApB,OAAAuB,OAAAb,GAAAA,EAAAU,UAAA,CAAAsD,YAAA,CAAA3E,MAAAY,EAAAyC,UAAA,EAAAD,cAAA,KAAAnD,OAAAgD,eAAArC,EAAA,aAAAyC,UAAA,IAAA1C,GAAA0E,EAAAzE,EAAAD,EAAA,UAAA0E,EAAAzE,EAAAD,GAAA,OAAA0E,EAAApF,OAAA0C,eAAA1C,OAAA0C,eAAAV,OAAA,SAAArB,EAAAD,GAAA,OAAAC,EAAAgC,UAAAjC,EAAAC,CAAA,EAAAyE,EAAAzE,EAAAD,EAAA,UAAA2E,EAAA3E,EAAAE,EAAAD,GAAA,OAAAC,EAAAmD,EAAAnD,MAAAF,EAAAV,OAAAgD,eAAAtC,EAAAE,EAAA,CAAAb,MAAAY,EAAAuC,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAA1C,EAAAE,GAAAD,EAAAD,CAAA,UAAAqD,EAAApD,GAAA,IAAAO,EAAA,SAAAP,GAAA,aAAAwD,EAAAxD,KAAAA,EAAA,OAAAA,EAAA,IAAAD,EAAAC,EAAAE,OAAAyE,aAAA,YAAA5E,EAAA,KAAAQ,EAAAR,EAAA0B,KAAAzB,EAAAC,UAAA,aAAAuD,EAAAjD,GAAA,OAAAA,EAAA,UAAAiB,UAAA,uDAAAoD,OAAA5E,EAAA,CAAA6E,CAAA7E,GAAA,gBAAAwD,EAAAjD,GAAAA,EAAAA,EAAA,GAaA,I,IAuPmCuE,EACtBC,E,MAxPPC,EAAyEC,OAAOD,WAMzEE,GAAc,SAAAC,GAAA,SAAAD,IAAA,IAAAE,EAAApG,EAAA,KAAAkG,GAAA,QAAAG,EAAAtC,UAAAzB,OAAAgE,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAAzC,UAAAyC,GA6CzB,OA7CyBd,EAAAU,EAAA9B,EAAA,KAAA4B,EAAA,GAAAO,OAAAH,IAAA,UACf,CACRI,SAAS,EAMTC,gBAAiB,0BAQjBC,cAAe,GASfC,kBAAmB,GAOnBC,OAAQ,0BAORC,OAAQ,eAGVrB,EAAAU,EAAA,sBAGAV,EAAAU,EAAA,yBAAAA,CAAA,QAAAZ,EAAAU,EAAAC,GAAA9B,EAAA6B,EAAA,EAAA/F,IAAA,QAAAC,MAIA,SAAMF,GACJgF,EAAAgB,EAAA,eAAAhB,CAAA,CAAYhF,IACZD,KAAKC,QAAQ2G,kBAAoB5G,KAAKC,QAAQ2G,mBAAqB5G,KAAKC,QAAQ6G,OAChF9G,KAAKC,QAAQyG,gBAAkB1G,KAAKC,QAAQyG,iBAAmB1G,KAAKC,QAAQ4G,MAC9E,GAEA,CAAA3G,IAAA,OAAAC,OAAA4G,EAAAlD,EAAAZ,IAAAE,EACA,SAAA6D,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,YAAApE,IAAAC,EAAA,SAAAoE,GAAA,cAAAA,EAAApG,GAAA,UACOlB,KAAKC,QAAQwG,SAA0B,UAAfzG,KAAKF,GAAGyH,GAAc,CAAAD,EAAApG,EAAA,eAAAoG,EAAApF,EAAA,UAKnD,GADIgF,EAAqB,KAEY,QADrCD,EACIjH,KAAKF,GAAGG,QAAQuH,yBAAiB,IAAAP,IAAjCA,EAAmC5E,OAAM,CAAAiF,EAAApG,EAAA,QAC3CgG,EAAqBlH,KAAKF,GAAGG,QAAQuH,kBAAkBF,EAAApG,EAAA,sBAAAoG,EAAApG,EAAA,EAG/BlB,KAAKyH,uBAAsB,OAC/CL,OADEA,EAASE,EAAArF,IACiB,QAAnBkF,EAATC,EAAWI,yBAAiB,IAAAL,GAA5BA,EAA8B9E,SAChC6E,EAAqBE,EAAUI,mBAChC,WAGCN,EAAoB,CAAFI,EAAApG,EAAA,QASb,GARPlB,KAAK0H,YAAcR,EAChBS,IAAI,SAAAC,GAAW,OAAKxH,OAAOC,OAAO,CAAC,EAAGuH,EAAa,CAClDC,UACoC,iBAA3BD,EAAYE,WAA0BF,EAAYE,WAC3B,iBAArBF,EAAYG,KAAoBV,EAAKvH,GAAGkI,KAAKC,eAAeL,EAAYG,MAC7EH,EAAYM,QAAUb,EAAKvH,GAAGkI,KAAKG,aAAaP,EAAYM,cAC1DE,GAER,GACCpI,KAAKF,GAAGuI,MAAO,CAAFf,EAAApG,EAAA,eAAAoG,EAAApG,EAAA,GACVoH,EAAAA,EAAAA,gBAAetC,OAAQ,uBAAsB,OAErDhG,KAAKuI,UACLvI,KAAKF,GAAGsC,KAAK2D,EAAWyC,WAAWC,YAAa,kBAAMpB,EAAKqB,gBAAgB,GAAE,cAAApB,EAAApF,EAAA,KAAA8E,EAAA,SAEhF,WAjCS,OAAAD,EAAAhD,MAAC,KAADD,UAAA,IAmCV,CAAA5D,IAAA,UAAAC,MAGA,WAAU,IAAAwI,EAAA,KACR3I,KAAKF,GAAGuI,MAAMO,cAAwB,SAAI,CACxCC,GAAI,WACJC,MAAMC,EAAAA,EAAAA,IAAIC,IAAAA,EAAAC,EAAA,sIACVC,MAAO,oBACPC,WAAWJ,EAAAA,EAAAA,IAAIK,IAAAA,EAAAH,EAAA,iHACAjJ,KAAK0H,YACH,SAACG,GAChBc,EAAKD,eAAeb,GACpBc,EAAK7I,GAAGuJ,YAAYxB,EAAW,CAAEyB,UAAU,GAC7C,EACgB,SAACxI,GACf6H,EAAKY,eAAiBzI,EAAE0I,OACxBb,EAAKD,gBACP,IAGF1I,KAAKF,GAAGuI,MAAMoB,gBAAgB,YAC9BzJ,KAAKF,GAAGuI,MAAMqB,qBACd1J,KAAK0H,YAAYiC,QAAQ,SAACC,EAAUtI,GAAC,OAAKqH,EAAKkB,cAAcD,EAAUtI,EAAE,EAC3E,GAEA,CAAApB,IAAA,gBAAAC,MAIA,SAAcyJ,EAAUE,GAAY,IAAAC,EAAA,KAClC,GAA0B3B,MAAtBwB,EAAS/B,UAAb,CAGA,IAAMmC,EAAa,CAACJ,EAASV,MAAOU,EAASK,OAC1CC,OAAO,SAAAC,GAAC,OAAIA,CAAC,GACbC,KAAK,MAAQ,WAAJ5D,OAAesD,EAAa,GAElCO,EAAiBtE,EAAWuE,KAAKC,cAAcX,EAAS/B,UAAW7H,KAAKF,GAAGkI,KAAKwC,cAAgB,GACtGC,EAAE,eACCC,OACCD,EAAE,WACCE,KAAKX,GACLU,OACCD,EAAE,iCACCE,KAAK3K,KAAKF,GAAGkI,KAAK4C,YAAYhB,EAAS/B,cAG/CgD,SAAS,aACTC,IAAI,CAAEC,KAAMV,IACZW,SAAShL,KAAKF,GAAG2K,EAAE,eACnBQ,GAAG,aAAc,SAAAC,GAEhB,IAAMC,EAASD,EAAME,cACfC,EAAUF,EAAOG,cAAc,OAC/BC,EAAgBF,EAAQG,wBACxBC,EAAeN,EAAOK,wBACtBE,EAAkE,EAAlDC,SAASC,iBAAiBP,GAASQ,aACrDN,EAAcpB,EAAIuB,EAAgB,GACpCL,EAAQS,MAAMC,YAAY,YAAa,eAAFvF,OAAiBiF,EAAaV,KAAOW,EAAa,QAEzF3B,EAAKjK,GAAG2K,EAAE,wBAAwBuB,YAAY,SAC9CvB,EAAES,EAAM1B,QAAQqB,SAAS,QAC3B,GACCI,GAAG,aAAc,SAAAC,GAAK,OAAIT,EAAES,EAAM1B,QAAQwC,YAAY,QAAQ,GAC9Df,GAAG,QAAS,WACXlB,EAAKrB,eAAekB,EAAS/B,WAC7BkC,EAAKjK,GAAGuJ,YAAYO,EAAS/B,UAAW,CAAEyB,UAAU,GACtD,GAEFtJ,KAAKF,GAAG2K,EAAE,yBAAyBwB,KAAK,SAAC3K,EAAG4K,GAC1C,IAAMC,EAAM1B,EAAEyB,GACdC,EACGlB,GAAG,aAAc,kBAAMkB,EAAItB,SAAS,QAAQ,GAC5CI,GAAG,aAAc,kBAAMkB,EAAIH,YAAY,QAAQ,EACpD,EA5C2C,CA6C7C,GAEA,CAAA9L,IAAA,uBAAAC,OAAAiM,EAAAvI,EAAAZ,IAAAE,EAIA,SAAAkJ,IAAA,IAAAxF,EAAAF,EAAA2F,EAAAC,EAAAC,EAAAC,EAAA,OAAAxJ,IAAAC,EAAA,SAAAwJ,GAAA,cAAAA,EAAAxL,GAAA,OACmF,GAA3E2F,GAAS8F,EAAAA,EAAAA,IAAe3M,KAAKC,QAAQyG,gBAAiB1G,KAAKF,GAAGG,QAAQ2M,OAExE5M,KAAKC,QAAQ0G,cAAe,CAAF+F,EAAAxL,EAAA,QAC0D,OAAhFyF,GAAgBgG,EAAAA,EAAAA,IAAe3M,KAAKC,QAAQ0G,cAAe3G,KAAKF,GAAGG,QAAQ2M,MAAKF,EAAAxL,EAAA,EACzEuJ,EAAEoC,KAAK,CAAEC,IAAK,GAAFtG,OAAKK,EAAM,WAAAL,OAAUG,EAAa,WAAU,cAAA+F,EAAAxK,EAAA,EAAAwK,EAAAzK,GAAA,WAGnEjC,KAAKC,QAAQ2G,kBAAmB,CAAF8F,EAAAxL,EAAA,QAIF,OAHxBqL,GAAQI,EAAAA,EAAAA,IAAe3M,KAAKC,QAAQ2G,kBAAmB5G,KAAKF,GAAGG,QAAQ2M,MAGvEJ,EAAe,GAAHhG,OAAMK,EAAM,sCAAA6F,EAAAxL,EAAA,EAEbuJ,EAAEoC,KAAK,CACtBC,IAAKN,EAAe,IAAIO,gBAAgB,CAAER,MAAAA,EAAOS,MAAO,QACxD,OAFM,IAAJP,EAAIC,EAAAzK,IAIMwK,EAAKpK,OAAM,CAAAqK,EAAAxL,EAAA,eAAAwL,EAAAxL,EAAA,EAEVuJ,EAAEoC,KAAK,CAClBC,IAAKN,EAAe,IAAIO,gBAAgB,CAAEE,eAAgB,MAAFzG,OAAQ+F,GAASS,MAAO,QAChF,OAFFP,EAAIC,EAAAzK,EAAA,cAAAyK,EAAAxK,EAAA,EAKK,QALLoK,EAKCG,SAAI,IAAAH,OAAA,EAAJA,EAAO,IAAE,cAAAI,EAAAxK,EAAA,EAGX,MAAI,EAAAmK,EAAA,SACZ,WA7ByB,OAAAD,EAAArI,MAAC,KAADD,UAAA,IA+B1B,CAAA5D,IAAA,iBAAAC,MAKA,WAEE,I,EADA+M,EAAQpJ,UAAAzB,OAAA,QAAA+F,IAAAtE,UAAA,GAAAA,UAAA,GAAoB,GAAhB9D,KAAKF,GAAGqN,KAAYC,KAAKC,IAAGtJ,MAARqJ,K,+CAAYpN,KAAKF,GAAGwN,mB,uLAAoBtN,KAAKF,GAAGyN,WAE1EC,EAAoBxN,KAAK0H,YAAYwC,OAAO,SAACgC,GAAE,OAAqB9D,MAAhB8D,EAAGrE,SAAsB,GAAE4F,UAC/EC,EAAcF,EAElBA,EAAkBG,UAAU,SAACC,GAAO,OAAKA,EAAQ/F,WAAaqF,CAAQ,IAEpElN,KAAKuJ,iBACPvJ,KAAKuJ,eAAesE,eAAiBH,EAEzC,KAnDA,IAAAtB,EAjHArF,CAoKC,CA3NwB,CAASlH,EAAAA,GA6NpCkG,SAAAA,EAAY+H,eAAe,WAAY7H,I,EAqBX,EAD3B8H,EAAAA,EAAAA,IAAc,sB,EACsBC,EAAAA,G,MADFnI,E,0DA6BjC,CAAAoI,EA5BWnI,EAAe,SAAAoI,GAe1B,SAAApI,EAAYqI,GAAU,IAAAC,EAEK,OAFLrO,EAAA,KAAA+F,GACpBsI,EAAA/J,EAAA,KAAAyB,GAAQD,EAAAuI,GACRA,EAAKD,SAAWA,EAASC,CAC3B,CAUA,OAAA7I,EAAAO,EAAAoI,GAAA9J,EAAA0B,EAAA,CA5B0B,C,GAAA3D,EAAA,EAAAkM,KAAA,QAAAC,WAAA,EAEzBC,EAAAA,EAAAA,IAAS,CAAEC,KAAMlI,SAAQpG,IAAA,WAAAC,MAAA,iBACf,EAAE,IAAAkO,KAAA,QAAAC,WAAA,EAGZC,EAAAA,EAAAA,IAAS,CAAEC,KAAMpO,UAASF,IAAA,iBAAAC,MAAA,iBACV,CAAC,CAAC,IAAAkO,KAAA,QAAAnO,IAAA,aAAAC,MAAA,kBAGN,WAAO,CAAC,IAAAkO,KAAA,SAAAnO,IAAA,SAAAC,MAUrB,WAAS,IAAAsO,EAAA,KACP,OAAO1F,EAAAA,EAAAA,IAAI2F,IAAAA,EAAAzF,EAAA,6CAEPjJ,KAAKmO,SAASxG,IAAI,SAAAiC,GAAQ,OAAI6E,EAAKE,eAAe/E,EAAS,GAGjE,GAAC,CAAAyE,KAAA,SAAAnO,IAAA,iBAAAC,MAKD,SAAeyJ,GAAU,IAAAgF,EAAA,KACjBC,EAAe,CAACjF,EAASV,MAAOU,EAASK,OAC5CC,OAAO,SAAAC,GAAC,OAAIA,CAAC,GACbC,KAAK,KACF0E,EAAkC1G,MAAtBwB,EAAS/B,UAE3B,OAAOkB,EAAAA,EAAAA,IAAIgG,IAAAA,EAAA9F,EAAA,qNAIL6F,EAAY,YAAc,GAC1BlF,GAAY5J,KAAK6N,eAAiB,UAAY,IAEzCmB,EAAAA,EAAAA,GAAS,CAACC,WAAmC,IAAtBrF,EAASsF,MAAQ,GAAU,QAC9BC,EAAAA,EAAAA,GAAUL,EAAY,8BAA2B1G,GACpE,kBAAMwG,EAAKQ,WAAWxF,EAAS/B,UAAU,EAEjDgH,EACAjF,EAAS1B,SAAUa,EAAAA,EAAAA,IAAIsG,IAAAA,EAAApG,EAAA,uFAEeW,EAAS1B,SAC7CoH,EAAAA,GAER,GAAC,CAAAjB,KAAA,SAAAnO,IAAA,oBAAAC,MAED,WACE8E,EAzDSa,EAAe,2BAyDxBb,CAzDwB,IA0DxBjF,KAAKuP,cAAc,IAAIC,YAAY,aACrC,GAAC,CAAAnB,KAAA,SAAAnO,IAAA,UAAAC,MAED,SAAQsP,GACuC,IAAAC,EAAzCD,EAAkBE,IAAI,oBACmB,QAA3CD,EAAA1P,KAAK4P,WAAWtE,cAAc,qBAAa,IAAAoE,GAA3CA,EAA6CG,eAAe,CAC1DC,MAAO,UACPC,SAAU,WAGhB,GAAC,CAAA1B,KAAA,MAAA2B,QAAA,EAAA9P,IAAA,SAAAC,MAED,WACE,OAAO2K,EAAAA,EAAAA,IAAGmF,IAAAA,EAAAhH,EAAA,inBA8BZ,K","sources":["webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/index.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/icon-toc.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.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","import { html } from 'lit';\n\nexport default html`\n<svg\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g class=\"fill-color\" fill-rule=\"evenodd\"><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"7\"/><rect height=\"3\" rx=\"1.5\" width=\"4\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"7\"/></g>\n</svg>\n`;\n","import icon from './index.js';\nimport { css, LitElement } from 'lit';\n\nclass IAIconToc extends LitElement {\n static get styles() {\n return css`\n :host {\n width: var(--iconWidth, 'auto');\n height: var(--iconHeight, 'auto');\n }\n\n .fill-color {\n fill: var(--iconFillColor);\n }\n\n .stroke-color {\n stroke: var(--iconStrokeColor);\n }\n `;\n }\n\n render() {\n return icon;\n }\n}\n\ncustomElements.define('ia-icon-toc', IAIconToc);\n\nexport default IAIconToc;\n","// @ts-check\nimport { css, html, LitElement, nothing } from \"lit\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport '@internetarchive/icon-toc/icon-toc.js';\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\nimport { applyVariables } from \"../util/strings.js\";\nimport { promisifyEvent } from \"../BookReader/utils.js\";\n/** @typedef {import('@/src/BookReader/BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('@/src/BookReader/BookModel.js').PageString} PageString */\n/** @typedef {import('@/src/BookReader/BookModel.js').LeafNum} LeafNum */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\nexport class ChaptersPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /**\n * The Open Library host to fetch/query Open Library.\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryHost: 'https://openlibrary.org',\n\n /**\n * The Open Library edition to fetch the table of contents from.\n * E.g. 'OL12345M'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryId: '',\n\n /**\n * The Internet Archive identifier to fetch the Open Library table\n * of contents from.\n * E.g. 'goody'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n internetArchiveId: '',\n\n /**\n * @deprecated\n * Old name for openLibraryHost\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n olHost: 'https://openlibrary.org',\n\n /**\n * @deprecated\n * Old name for internetArchiveId\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n bookId: '{{bookId}}',\n }\n\n /** @type {TocEntry[]} */\n _tocEntries;\n\n /** @type {BRChaptersPanel} */\n _chaptersPanel;\n\n /** @override */\n setup(options) {\n super.setup(options);\n this.options.internetArchiveId = this.options.internetArchiveId || this.options.bookId;\n this.options.openLibraryHost = this.options.openLibraryHost || this.options.olHost;\n }\n\n /** @override Extend to call Open Library for TOC */\n async init() {\n if (!this.options.enabled || this.br.ui === 'embed') {\n return;\n }\n\n let rawTableOfContents = null;\n // Prefer explicit TOC if specified\n if (this.br.options.table_of_contents?.length) {\n rawTableOfContents = this.br.options.table_of_contents;\n } else {\n // Otherwise fetch from OL\n const olEdition = await this.getOpenLibraryRecord();\n if (olEdition?.table_of_contents?.length) {\n rawTableOfContents = olEdition.table_of_contents;\n }\n }\n\n if (rawTableOfContents) {\n this._tocEntries = rawTableOfContents\n .map(rawTOCEntry => (Object.assign({}, rawTOCEntry, {\n pageIndex: (\n typeof rawTOCEntry.page_index === 'number' ? rawTOCEntry.page_index :\n typeof(rawTOCEntry.leaf) == 'number' ? this.br.book.leafNumToIndex(rawTOCEntry.leaf) :\n rawTOCEntry.pagenum ? this.br.book.getPageIndex(rawTOCEntry.pagenum) :\n undefined\n ),\n })));\n if (!this.br.shell) {\n await promisifyEvent(window, 'BookReader:PostInit');\n }\n this._render();\n this.br.bind(BookReader.eventNames.pageChanged, () => this._updateCurrent());\n }\n }\n\n /**\n * Update the table of contents based on array of TOC entries.\n */\n _render() {\n this.br.shell.menuProviders['chapters'] = {\n id: 'chapters',\n icon: html`<ia-icon-toc aria-hidden=\"true\" role=\"presentation\" style=\"width: var(--iconWidth); height: var(--iconHeight);\"></ia-icon-toc>`,\n label: 'Table of Contents',\n component: html`<br-chapters-panel\n .contents=\"${this._tocEntries}\"\n .jumpToPage=\"${(pageIndex) => {\n this._updateCurrent(pageIndex);\n this.br.jumpToIndex(pageIndex, { ariaLive: true });\n }}\"\n @connected=\"${(e) => {\n this._chaptersPanel = e.target;\n this._updateCurrent();\n }}\"\n />`,\n };\n this.br.shell.addMenuShortcut('chapters');\n this.br.shell.updateMenuContents();\n this._tocEntries.forEach((tocEntry, i) => this._renderMarker(tocEntry, i));\n }\n\n /**\n * @param {TocEntry} tocEntry\n * @param {number} entryIndex\n */\n _renderMarker(tocEntry, entryIndex) {\n if (tocEntry.pageIndex == undefined) return;\n\n //creates a string with non-void tocEntry.label and tocEntry.title\n const chapterStr = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ') || `Chapter ${entryIndex + 1}`;\n\n const percentThrough = BookReader.util.cssPercentage(tocEntry.pageIndex, this.br.book.getNumLeafs() - 1);\n $(`<div></div>`)\n .append(\n $('<div />')\n .text(chapterStr)\n .append(\n $('<div class=\"BRchapterPage\" />')\n .text(this.br.book.getPageName(tocEntry.pageIndex)),\n ),\n )\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.br.$('.BRnavline'))\n .on(\"mouseenter\", event => {\n // remove hover effect from other markers then turn on just for this\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('div');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n this.br.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', () => {\n this._updateCurrent(tocEntry.pageIndex);\n this.br.jumpToIndex(tocEntry.pageIndex, { ariaLive: true });\n });\n\n this.br.$('.BRchapter, .BRsearch').each((i, el) => {\n const $el = $(el);\n $el\n .on(\"mouseenter\", () => $el.addClass('front'))\n .on(\"mouseleave\", () => $el.removeClass('front'));\n });\n }\n\n /**\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\n async getOpenLibraryRecord() {\n const olHost = applyVariables(this.options.openLibraryHost, this.br.options.vars);\n\n if (this.options.openLibraryId) {\n const openLibraryId = applyVariables(this.options.openLibraryId, this.br.options.vars);\n return await $.ajax({ url: `${olHost}/books/${openLibraryId}.json` });\n }\n\n if (this.options.internetArchiveId) {\n const ocaid = applyVariables(this.options.internetArchiveId, this.br.options.vars);\n\n // Try looking up by ocaid first, then by source_record\n const baseQueryUrl = `${olHost}/query.json?type=/type/edition&*=&`;\n\n let data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ ocaid, limit: '1' }),\n });\n\n if (!data || !data.length) {\n // try source_records\n data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ source_records: `ia:${ocaid}`, limit: '1' }),\n });\n }\n\n return data?.[0];\n }\n\n return null;\n }\n\n /**\n * @private\n * Highlights the current chapter based on current page\n * @param {PageIndex} curIndex\n */\n _updateCurrent(\n curIndex = (this.br.mode == 2 ? Math.max(...this.br.displayedIndices) : this.br.firstIndex),\n ) {\n const tocEntriesIndexed = this._tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[\n // subtract one so that 2up shows the right label\n tocEntriesIndexed.findIndex((chapter) => chapter.pageIndex <= curIndex)\n ];\n if (this._chaptersPanel) {\n this._chaptersPanel.currentChapter = currChapter;\n }\n }\n}\nBookReader?.registerPlugin('chapters', ChaptersPlugin);\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined by Open Library, with some extra values for internal use\n * @property {number} [level]\n * @property {string} [label]\n * @property {string} [title]\n * @property {PageString} [pagenum]\n * @property {LeafNum} [leaf]\n * @property {number} [pageIndex] - Added\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n@customElement('br-chapters-panel')\nexport class BRChaptersPanel extends LitElement {\n /** @type {TocEntry[]} */\n @property({ type: Array })\n contents = [];\n\n /** @type {TocEntry?} */\n @property({ type: Object })\n currentChapter = {};\n\n /** @type {(pageIndex: PageIndex) => void} */\n jumpToPage = () => {};\n\n /**\n * @param {TocEntry[]} contents\n */\n constructor(contents) {\n super();\n this.contents = contents;\n }\n\n render() {\n return html`\n <ol>\n ${this.contents.map(tocEntry => this.renderTOCEntry(tocEntry))}\n </ol>\n `;\n }\n\n /**\n * @param {TocEntry} tocEntry\n */\n renderTOCEntry(tocEntry) {\n const chapterTitle = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ');\n const clickable = tocEntry.pageIndex != undefined;\n // note the click-tracking won't work...\n return html`\n <li\n class=\"\n BRtable-contents-el\n ${clickable ? 'clickable' : ''}\n ${tocEntry == this.currentChapter ? 'current' : ''}\n \"\n style=\"${styleMap({marginLeft: (tocEntry.level - 1) * 10 + 'px'})}\"\n data-event-click-tracking=\"${ifDefined(clickable ? \"BRTOCPanel|GoToChapter\" : undefined)}\"\n @click=\"${() => this.jumpToPage(tocEntry.pageIndex)}\"\n >\n ${chapterTitle}\n ${tocEntry.pagenum ? html`\n <br />\n <span class=\"BRTOCElementPage\">Page ${tocEntry.pagenum}</span>\n ` : nothing}\n </li>`;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n\n updated(changedProperties) {\n if (changedProperties.has('currentChapter')) {\n this.shadowRoot.querySelector('li.current')?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n\n static get styles() {\n return css`\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }`;\n }\n}\n"],"names":["BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","IAIconToc","styles","render","customElements","define","e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","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","_callSuper","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_superPropGet","_get","get","hasOwnProperty","_superPropBase","getOwnPropertyDescriptor","_inherits","_setPrototypeOf","_defineProperty","toPrimitive","String","_toPrimitive","_initialize","BRChaptersPanel","BookReader","window","ChaptersPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","concat","enabled","openLibraryHost","openLibraryId","internetArchiveId","olHost","bookId","_init","_callee","_this$br$options$tabl","rawTableOfContents","_olEdition$table_of_c","olEdition","_this2","_context","ui","table_of_contents","getOpenLibraryRecord","_tocEntries","map","rawTOCEntry","pageIndex","page_index","leaf","book","leafNumToIndex","pagenum","getPageIndex","undefined","shell","promisifyEvent","_render","eventNames","pageChanged","_updateCurrent","_this3","menuProviders","id","icon","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","jumpToIndex","ariaLive","_chaptersPanel","target","addMenuShortcut","updateMenuContents","forEach","tocEntry","_renderMarker","entryIndex","_this4","chapterStr","title","filter","x","join","percentThrough","util","cssPercentage","getNumLeafs","$","append","text","getPageName","addClass","css","left","appendTo","on","event","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","style","setProperty","removeClass","each","el","$el","_getOpenLibraryRecord","_callee2","_data","ocaid","baseQueryUrl","data","_context2","applyVariables","vars","ajax","url","URLSearchParams","limit","source_records","curIndex","mode","Math","max","displayedIndices","firstIndex","tocEntriesIndexed","reverse","currChapter","findIndex","chapter","currentChapter","registerPlugin","customElement","LitElement","F","_LitElement2","contents","_this5","kind","decorators","property","type","_this6","_templateObject3","renderTOCEntry","_this7","chapterTitle","clickable","_templateObject4","styleMap","marginLeft","level","ifDefined","jumpToPage","_templateObject5","nothing","dispatchEvent","CustomEvent","changedProperties","_this$shadowRoot$quer","has","shadowRoot","scrollIntoView","block","behavior","static","_templateObject6"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.chapters.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./node_modules/core-js/internals/string-trim-forced.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.string.trim.js","webpack://@internetarchive/bookreader/../src/directives/if-defined.ts","webpack://@internetarchive/bookreader/./src/BookReaderPlugin.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/index.js","webpack://@internetarchive/bookreader/./node_modules/@internetarchive/icon-toc/icon-toc.js","webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.js","webpack://@internetarchive/bookreader/./src/util/strings.js"],"sourcesContent":["'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\n\nimport {nothing} from '../lit-html.js';\n\n/**\n * For AttributeParts, sets the attribute if the value is defined and removes\n * the attribute if the value is undefined.\n *\n * For other part types, this directive is a no-op.\n */\nexport const ifDefined = <T>(value: T) => value ?? nothing;\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","import { html } from 'lit';\n\nexport default html`\n<svg\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <g class=\"fill-color\" fill-rule=\"evenodd\"><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"18\" x=\"6\" y=\"7\"/><rect height=\"3\" rx=\"1.5\" width=\"4\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"21\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"14\"/><rect height=\"3\" rx=\"1.5\" width=\"4\" y=\"7\"/></g>\n</svg>\n`;\n","import icon from './index.js';\nimport { css, LitElement } from 'lit';\n\nclass IAIconToc extends LitElement {\n static get styles() {\n return css`\n :host {\n width: var(--iconWidth, 'auto');\n height: var(--iconHeight, 'auto');\n }\n\n .fill-color {\n fill: var(--iconFillColor);\n }\n\n .stroke-color {\n stroke: var(--iconStrokeColor);\n }\n `;\n }\n\n render() {\n return icon;\n }\n}\n\ncustomElements.define('ia-icon-toc', IAIconToc);\n\nexport default IAIconToc;\n","// @ts-check\nimport { css, html, LitElement, nothing } from \"lit\";\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport '@internetarchive/icon-toc/icon-toc.js';\nimport { BookReaderPlugin } from \"../BookReaderPlugin.js\";\nimport { applyVariables } from \"../util/strings.js\";\nimport { promisifyEvent } from \"../BookReader/utils.js\";\n/** @typedef {import('@/src/BookReader/BookModel.js').PageIndex} PageIndex */\n/** @typedef {import('@/src/BookReader/BookModel.js').PageString} PageString */\n/** @typedef {import('@/src/BookReader/BookModel.js').LeafNum} LeafNum */\n\n// @ts-ignore\nconst BookReader = /** @type {typeof import('@/src/BookReader.js').default} */(window.BookReader);\n\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\nexport class ChaptersPlugin extends BookReaderPlugin {\n options = {\n enabled: true,\n\n /**\n * The Open Library host to fetch/query Open Library.\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryHost: 'https://openlibrary.org',\n\n /**\n * The Open Library edition to fetch the table of contents from.\n * E.g. 'OL12345M'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n openLibraryId: '',\n\n /**\n * The Internet Archive identifier to fetch the Open Library table\n * of contents from.\n * E.g. 'goody'\n *\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n internetArchiveId: '',\n\n /**\n * @deprecated\n * Old name for openLibraryHost\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n olHost: 'https://openlibrary.org',\n\n /**\n * @deprecated\n * Old name for internetArchiveId\n * @type {import('@/src/util/strings.js').StringWithVars}\n */\n bookId: '{{bookId}}',\n }\n\n /** @type {TocEntry[]} */\n _tocEntries;\n\n /** @type {BRChaptersPanel} */\n _chaptersPanel;\n\n /** @override */\n setup(options) {\n super.setup(options);\n this.options.internetArchiveId = this.options.internetArchiveId || this.options.bookId;\n this.options.openLibraryHost = this.options.openLibraryHost || this.options.olHost;\n }\n\n /** @override Extend to call Open Library for TOC */\n async init() {\n if (!this.options.enabled || this.br.ui === 'embed') {\n return;\n }\n\n let rawTableOfContents = null;\n // Prefer explicit TOC if specified\n if (this.br.options.table_of_contents?.length) {\n rawTableOfContents = this.br.options.table_of_contents;\n } else {\n // Otherwise fetch from OL\n const olEdition = await this.getOpenLibraryRecord();\n if (olEdition?.table_of_contents?.length) {\n rawTableOfContents = olEdition.table_of_contents;\n }\n }\n\n if (rawTableOfContents) {\n this._tocEntries = rawTableOfContents\n .map(rawTOCEntry => (Object.assign({}, rawTOCEntry, {\n pageIndex: (\n typeof rawTOCEntry.page_index === 'number' ? rawTOCEntry.page_index :\n typeof(rawTOCEntry.leaf) == 'number' ? this.br.book.leafNumToIndex(rawTOCEntry.leaf) :\n rawTOCEntry.pagenum ? this.br.book.getPageIndex(rawTOCEntry.pagenum) :\n undefined\n ),\n })));\n if (!this.br.shell) {\n await promisifyEvent(window, 'BookReader:PostInit');\n }\n this._render();\n this.br.bind(BookReader.eventNames.pageChanged, () => this._updateCurrent());\n }\n }\n\n /**\n * Update the table of contents based on array of TOC entries.\n */\n _render() {\n this.br.shell.menuProviders['chapters'] = {\n id: 'chapters',\n icon: html`<ia-icon-toc aria-hidden=\"true\" role=\"presentation\" style=\"width: var(--iconWidth); height: var(--iconHeight);\"></ia-icon-toc>`,\n label: 'Table of Contents',\n component: html`<br-chapters-panel\n .contents=\"${this._tocEntries}\"\n .jumpToPage=\"${(pageIndex) => {\n this._updateCurrent(pageIndex);\n this.br.jumpToIndex(pageIndex, { ariaLive: true });\n }}\"\n @connected=\"${(e) => {\n this._chaptersPanel = e.target;\n this._updateCurrent();\n }}\"\n />`,\n };\n this.br.shell.addMenuShortcut('chapters');\n this.br.shell.updateMenuContents();\n this._tocEntries.forEach((tocEntry, i) => this._renderMarker(tocEntry, i));\n }\n\n /**\n * @param {TocEntry} tocEntry\n * @param {number} entryIndex\n */\n _renderMarker(tocEntry, entryIndex) {\n if (tocEntry.pageIndex == undefined) return;\n\n //creates a string with non-void tocEntry.label and tocEntry.title\n const chapterStr = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ') || `Chapter ${entryIndex + 1}`;\n\n const percentThrough = BookReader.util.cssPercentage(tocEntry.pageIndex, this.br.book.getNumLeafs() - 1);\n $(`<div></div>`)\n .append(\n $('<div />')\n .text(chapterStr)\n .append(\n $('<div class=\"BRchapterPage\" />')\n .text(this.br.book.getPageName(tocEntry.pageIndex)),\n ),\n )\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.br.$('.BRnavline'))\n .on(\"mouseenter\", event => {\n // remove hover effect from other markers then turn on just for this\n const marker = event.currentTarget;\n const tooltip = marker.querySelector('div');\n const tooltipOffset = tooltip.getBoundingClientRect();\n const targetOffset = marker.getBoundingClientRect();\n const boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;\n if (tooltipOffset.x - boxSizeAdjust < 0) {\n tooltip.style.setProperty('transform', `translateX(-${targetOffset.left - boxSizeAdjust}px)`);\n }\n this.br.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', () => {\n this._updateCurrent(tocEntry.pageIndex);\n this.br.jumpToIndex(tocEntry.pageIndex, { ariaLive: true });\n });\n\n this.br.$('.BRchapter, .BRsearch').each((i, el) => {\n const $el = $(el);\n $el\n .on(\"mouseenter\", () => $el.addClass('front'))\n .on(\"mouseleave\", () => $el.removeClass('front'));\n });\n }\n\n /**\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\n async getOpenLibraryRecord() {\n const olHost = applyVariables(this.options.openLibraryHost, this.br.options.vars);\n\n if (this.options.openLibraryId) {\n const openLibraryId = applyVariables(this.options.openLibraryId, this.br.options.vars);\n return await $.ajax({ url: `${olHost}/books/${openLibraryId}.json` });\n }\n\n if (this.options.internetArchiveId) {\n const ocaid = applyVariables(this.options.internetArchiveId, this.br.options.vars);\n\n // Try looking up by ocaid first, then by source_record\n const baseQueryUrl = `${olHost}/query.json?type=/type/edition&*=&`;\n\n let data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ ocaid, limit: '1' }),\n });\n\n if (!data || !data.length) {\n // try source_records\n data = await $.ajax({\n url: baseQueryUrl + new URLSearchParams({ source_records: `ia:${ocaid}`, limit: '1' }),\n });\n }\n\n return data?.[0];\n }\n\n return null;\n }\n\n /**\n * @private\n * Highlights the current chapter based on current page\n * @param {PageIndex} curIndex\n */\n _updateCurrent(\n curIndex = (this.br.mode == 2 ? Math.max(...this.br.displayedIndices) : this.br.firstIndex),\n ) {\n const tocEntriesIndexed = this._tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[\n // subtract one so that 2up shows the right label\n tocEntriesIndexed.findIndex((chapter) => chapter.pageIndex <= curIndex)\n ];\n if (this._chaptersPanel) {\n this._chaptersPanel.currentChapter = currChapter;\n }\n }\n}\nBookReader?.registerPlugin('chapters', ChaptersPlugin);\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined by Open Library, with some extra values for internal use\n * @property {number} [level]\n * @property {string} [label]\n * @property {string} [title]\n * @property {PageString} [pagenum]\n * @property {LeafNum} [leaf]\n * @property {number} [pageIndex] - Added\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n@customElement('br-chapters-panel')\nexport class BRChaptersPanel extends LitElement {\n /** @type {TocEntry[]} */\n @property({ type: Array })\n contents = [];\n\n /** @type {TocEntry?} */\n @property({ type: Object })\n currentChapter = {};\n\n /** @type {(pageIndex: PageIndex) => void} */\n jumpToPage = () => {};\n\n /**\n * @param {TocEntry[]} contents\n */\n constructor(contents) {\n super();\n this.contents = contents;\n }\n\n render() {\n return html`\n <ol>\n ${this.contents.map(tocEntry => this.renderTOCEntry(tocEntry))}\n </ol>\n `;\n }\n\n /**\n * @param {TocEntry} tocEntry\n */\n renderTOCEntry(tocEntry) {\n const chapterTitle = [tocEntry.label, tocEntry.title]\n .filter(x => x)\n .join(' ');\n const clickable = tocEntry.pageIndex != undefined;\n // note the click-tracking won't work...\n return html`\n <li\n class=\"\n BRtable-contents-el\n ${clickable ? 'clickable' : ''}\n ${tocEntry == this.currentChapter ? 'current' : ''}\n \"\n style=\"${styleMap({marginLeft: (tocEntry.level - 1) * 10 + 'px'})}\"\n data-event-click-tracking=\"${ifDefined(clickable ? \"BRTOCPanel|GoToChapter\" : undefined)}\"\n @click=\"${() => this.jumpToPage(tocEntry.pageIndex)}\"\n >\n ${chapterTitle}\n ${tocEntry.pagenum ? html`\n <br />\n <span class=\"BRTOCElementPage\">Page ${tocEntry.pagenum}</span>\n ` : nothing}\n </li>`;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.dispatchEvent(new CustomEvent('connected'));\n }\n\n updated(changedProperties) {\n if (changedProperties.has('currentChapter')) {\n this.shadowRoot.querySelector('li.current')?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n\n static get styles() {\n return css`\n ol {\n padding: 0;\n margin: 0;\n margin-right: 5px;\n }\n li {\n padding: 10px;\n overflow: hidden;\n border-radius: 4px;\n }\n li.clickable {\n font-weight: normal;\n cursor: pointer;\n transition: background-color 0.2s;\n }\n\n li.clickable:not(.current):hover {\n background-color: rgba(255,255,255, 0.05);\n }\n\n li.current {\n background-color: rgba(255,255,255,0.9);\n color: #333;\n }\n\n .BRTOCElementPage {\n font-size: 0.85em;\n opacity: .8;\n }`;\n }\n}\n","/**\n * @typedef {String} StringWithVars\n * A template string with {{foo}} style variables\n * Also supports filters, like {{bookPath|urlencode}} (See APPLY_FILTERS for the\n * supported list of filters)\n **/\n\n/**\n * Count whitespace-delimited words in a string.\n * @param {string} text\n * @return {number}\n */\nexport function countWords(text) {\n const matches = text.match(/\\S+/g);\n return matches ? matches.length : 0;\n}\n\n/**\n * @param {StringWithVars|String} template\n * @param { {[varName: string]: { toString: () => string} } } vars\n * @param { {[varName: string]: { toString: () => string} } } [overrides]\n * @returns {StringWithVars|string}\n */\nexport function applyVariables(template, vars, overrides = {}, possibleFilters = APPLY_FILTERS) {\n return template?.replace(/\\{\\{([^}]*?)\\}\\}/g, ($0, $1) => {\n if (!$1) return $0;\n /** @type {string} */\n const expression = $1;\n const [varName, ...filterNames] = expression.split('|').map(x => x.trim());\n const defined = varName in overrides || varName in vars;\n\n // If it's not defined, don't expand it at all\n if (!defined) return $0;\n\n const value = varName in overrides ? overrides[varName]\n : varName in vars ? vars[varName] : null;\n const filters = filterNames.map(n => possibleFilters[n]);\n return filters.reduce((acc, cur) => cur(acc), value && value.toString());\n });\n}\n\n/** @type { {[filterName: String]:( string => string)} } */\nexport const APPLY_FILTERS = {\n urlencode: encodeURIComponent,\n};\n"],"names":["PROPER_FUNCTION_NAME","__webpack_require__","fails","whitespaces","module","exports","METHOD_NAME","name","$","$trim","target","proto","forced","forcedStringTrimMethod","trim","this","l","t","BookReaderPlugin","br","_classCallCheck","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","icon_toc","lit","qy","IAIconToc","WF","styles","AH","render","customElements","define","e","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","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","_callSuper","_getPrototypeOf","_typeof","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_superPropGet","_get","get","hasOwnProperty","_superPropBase","getOwnPropertyDescriptor","_inherits","_setPrototypeOf","_defineProperty","toPrimitive","String","_toPrimitive","_initialize","BRChaptersPanel","BookReader","window","ChaptersPlugin","_BookReaderPlugin","_this","_len","args","Array","_key","concat","enabled","openLibraryHost","openLibraryId","internetArchiveId","olHost","bookId","_init","_callee","_this$br$options$tabl","rawTableOfContents","_olEdition$table_of_c","olEdition","_this2","_context","ui","table_of_contents","getOpenLibraryRecord","_tocEntries","map","rawTOCEntry","pageIndex","page_index","leaf","book","leafNumToIndex","pagenum","getPageIndex","undefined","shell","promisifyEvent","_render","eventNames","pageChanged","_updateCurrent","_this3","menuProviders","id","icon","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","jumpToIndex","ariaLive","_chaptersPanel","addMenuShortcut","updateMenuContents","forEach","tocEntry","_renderMarker","entryIndex","_this4","chapterStr","title","filter","x","join","percentThrough","util","cssPercentage","getNumLeafs","append","text","getPageName","addClass","css","left","appendTo","on","event","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","style","setProperty","removeClass","each","el","$el","_getOpenLibraryRecord","_callee2","_data","ocaid","baseQueryUrl","data","_context2","applyVariables","vars","ajax","url","URLSearchParams","limit","source_records","curIndex","mode","Math","max","displayedIndices","firstIndex","tocEntriesIndexed","reverse","currChapter","findIndex","chapter","currentChapter","registerPlugin","customElement","LitElement","F","_LitElement2","contents","_this5","kind","decorators","property","type","_this6","_templateObject3","renderTOCEntry","_this7","chapterTitle","clickable","_templateObject4","styleMap","marginLeft","level","ifDefined","jumpToPage","_templateObject5","nothing","dispatchEvent","CustomEvent","changedProperties","_this$shadowRoot$quer","has","shadowRoot","scrollIntoView","block","behavior","static","_templateObject6","countWords","matches","match","template","overrides","possibleFilters","APPLY_FILTERS","replace","$0","$1","_expression$split$map2","split","varName","filterNames","_arrayLikeToArray","slice","reduce","acc","cur","toString","urlencode","encodeURIComponent"],"sourceRoot":""}
@@ -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://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\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\n/** @typedef {'copyLinkToHighlight' | 'annotateHighlight' | 'translate' | 'hypothesis'} ExperimentName */\n\nclass ExperimentModel {\n /** @type {ExperimentName} */\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 /** @type {ExperimentName[]} Experiments shown in the experiments panel */\n availableExperiments: ['translate', 'copyLinkToHighlight'],\n\n /** @type {ExperimentName[]} Experiments enabled by default */\n autoEnabledExperiments: [],\n }\n\n /** @type {ExperimentModel[]} */\n allExperiments = [\n new class extends ExperimentModel {\n name = 'copyLinkToHighlight';\n title = 'Copy Link to Highlight';\n description = 'Shareable link to a text selection';\n icon = null;\n enabled = false;\n async enable ({ manual = false }) {\n if (manual) {\n this.br.plugins.textSelection.textSelectionManager.selectMenu.copyLinkToHighlightEnabled = true;\n }\n }\n async disable() {\n this.br.plugins.textSelection.textSelectionManager.selectMenu.copyLinkToHighlightEnabled = false;\n }\n }(),\n new class extends ExperimentModel {\n name = 'annotateHighlight';\n title = 'Highlight and annotate';\n description = 'Create private highlights and annotations for this book';\n icon = null;\n enabled = false;\n async enable ({ manual = false }) {\n if (manual) {\n this.br.plugins.textSelection.textSelectionManager.selectMenu.highlightAnnotationEnabled = true;\n }\n }\n async disable() {\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\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 if (experiment.icon) {\n experiment.icon = experiment.buildAssetPath(experiment.icon);\n }\n\n experiment.br = this.br;\n\n // Enable any experiments that should be automatically enabled\n if (!experiment.enabled && this.options.autoEnabledExperiments.includes(experiment.name)) {\n experiment.enabled = true;\n await experiment.enable({ manual: false });\n }\n }\n\n this._loadExperimentStates();\n await Promise.resolve();\n this._render();\n }\n\n /**\n * @param {ExperimentName} experimentName\n */\n isEnabled(experimentName) {\n const experiment = this.allExperiments.find(exp => exp.name === experimentName);\n return experiment?.enabled;\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\" alt=\"\" width=\"26\"/>\n `,\n label: 'Experiments',\n component: html`<br-experiments-panel\n .experiments=\"${this.allExperiments.filter(experiment => this.options.availableExperiments.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 ${this.icon ? html`<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","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","availableExperiments","autoEnabledExperiments","_ExperimentModel2","_class","_this2","_len2","_key2","_inherits","_enable2","_callee3","_ref2","_ref2$manual","_context3","plugins","textSelection","textSelectionManager","selectMenu","copyLinkToHighlightEnabled","_x2","_disable2","_callee4","_context4","_ExperimentModel3","_class2","_this3","_len3","_key3","_enable3","_callee5","_ref3","_ref3$manual","_context5","highlightAnnotationEnabled","_x3","_disable3","_callee6","_context6","sleep","location","reload","_ExperimentModel4","_class3","_this4","_len4","_key4","_enable4","_callee7","_ref4","_context7","PLUGINS","translate","importAsScript","buildAssetPath","initializePlugin","_x4","_disable4","_callee8","_context8","_ExperimentModel5","_class4","_this5","_len5","_key5","_enable5","_callee9","_ref5","_ref5$manual","configScript","_context9","document","createElement","type","className","textContent","JSON","stringify","openSidebar","head","appendChild","_x5","_disable5","_callee0","_context0","_init","_callee1","_iterator","_step","experiment","_t","_context1","_createForOfIteratorHelper","allExperiments","s","imagesBaseURL","replace","icon","includes","name","enable","_loadExperimentStates","_render","experimentName","find","exp","savedStates","parse","localStorage","getItem","forEach","undefined","states","map","setItem","_toggleExperiment2","_callee10","_this$br$plugins$arch","_context10","enabledLoading","archiveAnalytics","sendEvent","_panel","requestUpdate","disable","_x6","_x7","_this6","shell","menuProviders","id","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","filter","_ref6","_callee11","_context11","_toggleExperiment","detail","_saveExperimentStates","_x8","updateMenuContents","_x1","_importAsScript","_callee13","url","_context13","reject","script","src","onload","onerror","Error","registerPlugin","_decorate","customElement","_initialize","_LitElement","_dispatchToggle2","BrExperimentsPanel","_LitElement2","_this7","_len6","_key6","F","kind","decorators","property","_this8","_templateObject3","experiments","_templateObject4","title","description","learnMore","_dispatchToggle","_callee12","_context12","dispatchEvent","CustomEvent","_x9","_x0","_superPropGet","LitElement","_initialize2","_LitElement3","BrExperimentToggle","_LitElement4","_this9","_len7","_key7","Boolean","state","changedProperties","_this0","has","loading","_longLoading","_templateObject5","_templateObject6","_templateObject7","static","css","_templateObject8"],"sourceRoot":""}
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://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\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\n/** @typedef {'copyLinkToHighlight' | 'annotateHighlight' | 'translate' | 'hypothesis'} ExperimentName */\n\nclass ExperimentModel {\n /** @type {ExperimentName} */\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 /** @type {ExperimentName[]} Experiments shown in the experiments panel */\n availableExperiments: ['translate', 'copyLinkToHighlight'],\n\n /** @type {ExperimentName[]} Experiments enabled by default */\n autoEnabledExperiments: [],\n }\n\n /** @type {ExperimentModel[]} */\n allExperiments = [\n new class extends ExperimentModel {\n name = 'copyLinkToHighlight';\n title = 'Copy Link to Highlight';\n description = 'Shareable link to a text selection';\n icon = null;\n enabled = false;\n async enable ({ manual = false }) {\n if (manual) {\n this.br.plugins.textSelection.textSelectionManager.selectMenu.copyLinkToHighlightEnabled = true;\n }\n }\n async disable() {\n this.br.plugins.textSelection.textSelectionManager.selectMenu.copyLinkToHighlightEnabled = false;\n }\n }(),\n new class extends ExperimentModel {\n name = 'annotateHighlight';\n title = 'Highlight and annotate';\n description = 'Create private highlights and annotations for this book';\n icon = null;\n enabled = false;\n async enable ({ manual = false }) {\n if (manual) {\n this.br.plugins.textSelection.textSelectionManager.selectMenu.highlightAnnotationEnabled = true;\n }\n }\n async disable() {\n sleep(0).then(() => {\n window.location.reload();\n });\n }\n }(),\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 if (experiment.icon) {\n experiment.icon = experiment.buildAssetPath(experiment.icon);\n }\n\n experiment.br = this.br;\n\n // Enable any experiments that should be automatically enabled\n if (!experiment.enabled && this.options.autoEnabledExperiments.includes(experiment.name)) {\n experiment.enabled = true;\n await experiment.enable({ manual: false });\n }\n }\n\n this._loadExperimentStates();\n await Promise.resolve();\n this._render();\n }\n\n /**\n * @param {ExperimentName} experimentName\n */\n isEnabled(experimentName) {\n const experiment = this.allExperiments.find(exp => exp.name === experimentName);\n return experiment?.enabled;\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\" alt=\"\" width=\"26\"/>\n `,\n label: 'Experiments',\n component: html`<br-experiments-panel\n .experiments=\"${this.allExperiments.filter(experiment => this.options.availableExperiments.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 ${this.icon ? html`<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":["$","__webpack_require__","iterate","createProperty","target","stat","fromEntries","iterable","obj","k","v","AS_ENTRIES","BookReaderPlugin","br","_classCallCheck","this","options","key","value","Object","assign","pageContainer","$toolbarElement","$navBar","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","availableExperiments","autoEnabledExperiments","_ExperimentModel2","_class","_this2","_len2","_key2","_inherits","_enable2","_callee3","_ref2","_ref2$manual","_context3","plugins","textSelection","textSelectionManager","selectMenu","copyLinkToHighlightEnabled","_x2","_disable2","_callee4","_context4","_ExperimentModel3","_class2","_this3","_len3","_key3","_enable3","_callee5","_ref3","_ref3$manual","_context5","highlightAnnotationEnabled","_x3","_disable3","_callee6","_context6","sleep","location","reload","_ExperimentModel4","_class3","_this4","_len4","_key4","_enable4","_callee7","_ref4","_context7","PLUGINS","translate","importAsScript","buildAssetPath","initializePlugin","_x4","_disable4","_callee8","_context8","_ExperimentModel5","_class4","_this5","_len5","_key5","_enable5","_callee9","_ref5","_ref5$manual","configScript","_context9","document","createElement","type","className","textContent","JSON","stringify","openSidebar","head","appendChild","_x5","_disable5","_callee0","_context0","_init","_callee1","_iterator","_step","experiment","_t","_context1","_createForOfIteratorHelper","allExperiments","s","imagesBaseURL","replace","icon","includes","name","enable","_loadExperimentStates","_render","experimentName","find","exp","savedStates","parse","localStorage","getItem","forEach","undefined","states","map","setItem","_toggleExperiment2","_callee10","_this$br$plugins$arch","_context10","enabledLoading","archiveAnalytics","sendEvent","_panel","requestUpdate","disable","_x6","_x7","_this6","shell","menuProviders","id","html","_templateObject","_taggedTemplateLiteral","label","component","_templateObject2","filter","_ref6","_callee11","_context11","_toggleExperiment","detail","_saveExperimentStates","_x8","updateMenuContents","_x1","_importAsScript","_callee13","url","_context13","reject","script","src","onload","onerror","Error","registerPlugin","_decorate","customElement","_initialize","_LitElement","_dispatchToggle2","BrExperimentsPanel","_LitElement2","_this7","_len6","_key6","F","kind","decorators","property","_this8","_templateObject3","experiments","_templateObject4","title","description","learnMore","_dispatchToggle","_callee12","_context12","dispatchEvent","CustomEvent","_x9","_x0","_superPropGet","LitElement","_initialize2","_LitElement3","BrExperimentToggle","_LitElement4","_this9","_len7","_key7","Boolean","state","changedProperties","_this0","has","loading","_longLoading","_templateObject5","_templateObject6","_templateObject7","static","css","_templateObject8"],"sourceRoot":""}