@internetarchive/bookreader 5.0.0-30-e → 5.0.0-30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/BookReader/BookReader.js +2 -32261
  2. package/BookReader/BookReader.js.LICENSE.txt +117 -0
  3. package/BookReader/BookReader.js.map +1 -1
  4. package/BookReader/ia-bookreader-bundle.js +1134 -14913
  5. package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +39 -0
  6. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  7. package/BookReader/jquery-1.10.1.js +2 -108
  8. package/BookReader/jquery-1.10.1.js.LICENSE.txt +24 -0
  9. package/BookReader/plugins/plugin.archive_analytics.js +1 -170
  10. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  11. package/BookReader/plugins/plugin.autoplay.js +1 -163
  12. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  13. package/BookReader/plugins/plugin.chapters.js +1 -333
  14. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  15. package/BookReader/plugins/plugin.iframe.js +1 -72
  16. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  17. package/BookReader/plugins/plugin.mobile_nav.js +1 -332
  18. package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
  19. package/BookReader/plugins/plugin.resume.js +1 -241
  20. package/BookReader/plugins/plugin.resume.js.map +1 -1
  21. package/BookReader/plugins/plugin.search.js +1 -1261
  22. package/BookReader/plugins/plugin.search.js.map +1 -1
  23. package/BookReader/plugins/plugin.text_selection.js +1 -839
  24. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  25. package/BookReader/plugins/plugin.tts.js +2 -9115
  26. package/BookReader/plugins/plugin.tts.js.LICENSE.txt +27 -0
  27. package/BookReader/plugins/plugin.tts.js.map +1 -1
  28. package/BookReader/plugins/plugin.url.js +1 -811
  29. package/BookReader/plugins/plugin.url.js.map +1 -1
  30. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -326
  31. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  32. package/BookReader/webcomponents-bundle.js +2 -411
  33. package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
  34. package/BookReader/webcomponents-bundle.js.map +1 -1
  35. package/BookReaderDemo/demo-internetarchive.html +1 -1
  36. package/CHANGELOG.md +3 -0
  37. package/package.json +1 -1
  38. package/webpack.config.js +1 -1
@@ -1,334 +1,2 @@
1
- "use strict";
2
- (self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.chapters.js"],{
3
-
4
- /***/ "./src/plugins/plugin.chapters.js":
5
- /*!****************************************!*\
6
- !*** ./src/plugins/plugin.chapters.js ***!
7
- \****************************************/
8
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ "./node_modules/core-js/modules/es.array.join.js");
12
- /* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);
13
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
14
- /* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_1__);
15
- /* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js");
16
- /* harmony import */ var core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat_js__WEBPACK_IMPORTED_MODULE_2__);
17
- /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
18
- /* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_3__);
19
- /* harmony import */ var core_js_modules_es_array_reverse_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.reverse.js */ "./node_modules/core-js/modules/es.array.reverse.js");
20
- /* harmony import */ var core_js_modules_es_array_reverse_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reverse_js__WEBPACK_IMPORTED_MODULE_4__);
21
- /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.find-index.js */ "./node_modules/core-js/modules/es.array.find-index.js");
22
- /* harmony import */ var core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_index_js__WEBPACK_IMPORTED_MODULE_5__);
23
- /* provided dependency */ var jQuery = __webpack_require__(/*! jquery */ "jquery");
24
- /* provided dependency */ var $ = __webpack_require__(/*! jquery */ "jquery");
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
- /* global BookReader */
33
-
34
- /**
35
- * Plugin for chapter markers in BookReader. Fetches from openlibrary.org
36
- * Could be forked, or extended to alter behavior
37
- */
38
- jQuery.extend(BookReader.defaultOptions, {
39
- olHost: 'https://openlibrary.org',
40
- enableChaptersPlugin: true,
41
- bookId: ''
42
- });
43
- /** @override Extend the constructor to add search properties */
44
-
45
- BookReader.prototype.setup = function (super_) {
46
- return function (options) {
47
- super_.call(this, options);
48
- this.olHost = options.olHost;
49
- this.enableChaptersPlugin = options.enableChaptersPlugin;
50
- this.bookId = options.bookId;
51
- };
52
- }(BookReader.prototype.setup);
53
- /** @override Extend to call Open Library for TOC */
54
-
55
-
56
- BookReader.prototype.init = function (super_) {
57
- return function () {
58
- var _this = this;
59
-
60
- super_.call(this);
61
-
62
- if (this.enableChaptersPlugin && this.ui !== 'embed') {
63
- this.getOpenLibraryRecord();
64
- }
65
-
66
- if (this.enableMobileNav) {
67
- this.bind(BookReader.eventNames.mobileNavOpen, function () {
68
- _this.updateTOCState(_this.firstIndex, _this._tocEntries);
69
-
70
- if ($('table-contents-list').parent().hasClass('mm-opened')) {
71
- _this.updateTOCState(_this.firstIndex, _this._tocEntries);
72
- }
73
- });
74
- $(".BRmobileMenu__tableContents").on("click", function () {
75
- _this.updateTOCState(_this.firstIndex, _this._tocEntries);
76
- });
77
- }
78
- };
79
- }(BookReader.prototype.init);
80
- /**
81
- * Adds chapter marker to navigation scrubber
82
- *
83
- * @param {string} chapterTitle
84
- * @param {string} pageNumber
85
- * @param {number} pageIndex
86
- */
87
-
88
-
89
- BookReader.prototype.addChapter = function (chapterTitle, pageNumber, pageIndex) {
90
- var _this2 = this;
91
-
92
- var uiStringPage = 'Page'; // i18n
93
-
94
- var percentThrough = BookReader.util.cssPercentage(pageIndex, this.getNumLeafs() - 1);
95
-
96
- var jumpToChapter = function jumpToChapter(event) {
97
- _this2.jumpToIndex($(event.delegateTarget).data('pageIndex'));
98
-
99
- $('.current-chapter').removeClass('current-chapter');
100
- $(event.delegateTarget).addClass('current-chapter');
101
- };
102
-
103
- var title = "".concat(chapterTitle, " | ");
104
- var pageStr = "".concat(uiStringPage, " ").concat(pageNumber); //adding items to mobile table of contents
105
-
106
- var mobileChapter = $("<li></li>").append($("<span class='BRTOCElementTitle'></span>").text(title)).append($("<span class='BRTOCElementPage'></span>").text(pageStr));
107
- mobileChapter.addClass('BRtable-contents-el').appendTo(this.$('.table-contents-list')).data({
108
- pageIndex: pageIndex
109
- }); //adds .BRchapters to the slider only if pageIndex exists
110
-
111
- if (pageIndex != undefined) {
112
- $("<div></div>").append($('<div />').text(title + pageStr)).addClass('BRchapter').css({
113
- left: percentThrough
114
- }).appendTo(this.$('.BRnavline')).data({
115
- pageIndex: pageIndex
116
- }).on("mouseenter", function (event) {
117
- // remove hover effect from other markers then turn on just for this
118
- var marker = event.currentTarget;
119
- var tooltip = marker.querySelector('div');
120
- var tooltipOffset = tooltip.getBoundingClientRect();
121
- var targetOffset = marker.getBoundingClientRect();
122
- var boxSizeAdjust = parseInt(getComputedStyle(tooltip).paddingLeft) * 2;
123
-
124
- if (tooltipOffset.x - boxSizeAdjust < 0) {
125
- tooltip.style.setProperty('transform', "translateX(-".concat(targetOffset.left - boxSizeAdjust, "px)"));
126
- }
127
-
128
- _this2.$('.BRsearch,.BRchapter').removeClass('front');
129
-
130
- $(event.target).addClass('front');
131
- }).on("mouseleave", function (event) {
132
- return $(event.target).removeClass('front');
133
- }).on('click', jumpToChapter); //adding clickable properties to mobile chapters
134
-
135
- mobileChapter.bind('click', jumpToChapter).addClass('chapter-clickable').attr("data-event-click-tracking", "BRTOCPanel|GoToChapter");
136
- }
137
- };
138
- /*
139
- * Remove all chapters.
140
- */
141
-
142
-
143
- BookReader.prototype.removeChapters = function () {
144
- this.$('.BRnavpos .BRchapter').remove();
145
- };
146
- /**
147
- * Update the table of contents based on array of TOC entries.
148
- * @param {TocEntry[]} tocEntries
149
- */
150
-
151
-
152
- BookReader.prototype.updateTOC = function (tocEntries) {
153
- this.removeChapters();
154
-
155
- if (this.enableMobileNav && tocEntries.length > 0) {
156
- this.$(".BRmobileMenu__tableContents").show();
157
- }
158
-
159
- for (var i = 0; i < tocEntries.length; i++) {
160
- this.addChapterFromEntry(tocEntries[i]);
161
- }
162
-
163
- this._tocEntries = tocEntries;
164
- $('.table-contents-list').children().each(function (i, el) {
165
- tocEntries[i].mobileHTML = el;
166
- });
167
- };
168
- /**
169
- * @typedef {Object} TocEntry
170
- * Table of contents entry as defined -- format is defined by Open Library
171
- * @property {string} pagenum
172
- * @property {number} level
173
- * @property {string} label
174
- * @property {{type: '/type/toc_item'}} type
175
- * @property {string} title
176
- * @property {HTMLElement} mobileHTML
177
- * @property {number} pageIndex
178
-
179
- *
180
- * @example {
181
- * "pagenum": "17",
182
- * "level": 1,
183
- * "label": "CHAPTER I",
184
- * "type": {"key": "/type/toc_item"},
185
- * "title": "THE COUNTRY AND THE MISSION"
186
- * }
187
- */
188
-
189
- /**
190
- * @param {TocEntry} tocEntryObject
191
- */
192
-
193
-
194
- BookReader.prototype.addChapterFromEntry = function (tocEntryObject) {
195
- tocEntryObject.pageIndex = this.getPageIndex(tocEntryObject['pagenum']); //creates a string with non-void tocEntryObject.label and tocEntryObject.title
196
-
197
- var chapterStr = [tocEntryObject.label, tocEntryObject.title].filter(function (x) {
198
- return x;
199
- }).join(' ');
200
- this.addChapter(chapterStr, tocEntryObject['pagenum'], tocEntryObject.pageIndex);
201
- this.$('.BRchapter, .BRsearch').each(function (i, el) {
202
- var $el = $(el);
203
- $el.on("mouseenter", function () {
204
- return $el.addClass('front');
205
- }).on("mouseleave", function () {
206
- return $el.removeClass('front');
207
- });
208
- });
209
- };
210
- /**
211
- * getOpenLibraryRecord
212
- *
213
- * The bookreader is designed to call openlibrary API and constructs the
214
- * "Return book" button using the response.
215
- *
216
- * This makes a call to OL API and calls the given callback function with the
217
- * response from the API.
218
- */
219
-
220
-
221
- BookReader.prototype.getOpenLibraryRecord = function () {
222
- var _this3 = this;
223
-
224
- // Try looking up by ocaid first, then by source_record
225
- var baseURL = "".concat(this.olHost, "/query.json?type=/type/edition&*=");
226
- var fetchUrlByBookId = "".concat(baseURL, "&ocaid=").concat(this.bookId);
227
- /*
228
- * Update Chapter markers based on received record from Open Library.
229
- * Notes that Open Library record is used for extra metadata, and also for lending
230
- */
231
-
232
- var setUpChapterMarkers = function setUpChapterMarkers(olObject) {
233
- if (olObject && olObject.table_of_contents) {
234
- // XXX check here that TOC is valid
235
- _this3.updateTOC(olObject.table_of_contents);
236
- }
237
- };
238
-
239
- $.ajax({
240
- url: fetchUrlByBookId,
241
- dataType: 'jsonp'
242
- }).then(function (data) {
243
- if (data && data.length > 0) {
244
- return data;
245
- } else {
246
- // try sourceid
247
- return $.ajax({
248
- url: "".concat(baseURL, "&source_records=ia:").concat(_this3.bookId),
249
- dataType: 'jsonp'
250
- });
251
- }
252
- }).then(function (data) {
253
- if (data && data.length > 0) {
254
- setUpChapterMarkers(data[0]);
255
- }
256
- });
257
- }; // Extend buildMobileDrawerElement with table of contents list
258
-
259
-
260
- BookReader.prototype.buildMobileDrawerElement = function (super_) {
261
- return function () {
262
- var $el = super_.call(this);
263
-
264
- if (this.enableMobileNav && this.options.enableChaptersPlugin) {
265
- $el.find('.BRmobileMenu__moreInfoRow').after($("\n <li class=\"BRmobileMenu__tableContents\" data-event-click-tracking=\"BRSidebar|TOCPanel\">\n <span>\n <span class=\"DrawerIconWrapper\">\n <img class=\"DrawerIcon\" src=\"".concat(this.imagesBaseURL, "icon_toc.svg\" alt=\"toc-icon\"/>\n </span>\n Table of Contents\n </span>\n <div>\n <ol class=\"table-contents-list\">\n </ol>\n </div>\n </li>")).hide());
266
- }
267
-
268
- return $el;
269
- };
270
- }(BookReader.prototype.buildMobileDrawerElement);
271
- /**
272
- * highlights the current chapter based on current page
273
- * @private
274
- * @param {TocEntry[]} tocEntries
275
- * @param {number} tocEntries
276
- */
277
-
278
-
279
- BookReader.prototype.updateTOCState = function (currIndex, tocEntries) {
280
- //this function won't have any effects if called before OpenLibrary request is finished
281
- if (!tocEntries) {
282
- return;
283
- }
284
-
285
- $('.current-chapter').removeClass('current-chapter');
286
- var tocEntriesIndexed = tocEntries.filter(function (el) {
287
- return el.pageIndex != undefined;
288
- }).reverse();
289
- var currChapter = tocEntriesIndexed[tocEntriesIndexed.findIndex(function (el) {
290
- return el.pageIndex <= currIndex;
291
- })];
292
-
293
- if (currChapter != undefined) {
294
- $(currChapter.mobileHTML).addClass('current-chapter');
295
- }
296
- };
297
-
298
- /***/ }),
299
-
300
- /***/ "./node_modules/core-js/modules/es.array.reverse.js":
301
- /*!**********************************************************!*\
302
- !*** ./node_modules/core-js/modules/es.array.reverse.js ***!
303
- \**********************************************************/
304
- /***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
305
-
306
-
307
- var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
308
- var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js");
309
-
310
- var nativeReverse = [].reverse;
311
- var test = [1, 2];
312
-
313
- // `Array.prototype.reverse` method
314
- // https://tc39.es/ecma262/#sec-array.prototype.reverse
315
- // fix for Safari 12.0 bug
316
- // https://bugs.webkit.org/show_bug.cgi?id=188794
317
- $({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
318
- reverse: function reverse() {
319
- // eslint-disable-next-line no-self-assign -- dirty hack
320
- if (isArray(this)) this.length = this.length;
321
- return nativeReverse.call(this);
322
- }
323
- });
324
-
325
-
326
- /***/ })
327
-
328
- },
329
- /******/ function(__webpack_require__) { // webpackRuntimeModules
330
- /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
331
- /******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/plugin.chapters.js"));
332
- /******/ }
333
- ]);
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[529],{8586:function(e,t,n){n(9600),n(7327),n(2222),n(9826),n(5069),n(4553);var a,o=n(3609),r=n(3609);o.extend(BookReader.defaultOptions,{olHost:"https://openlibrary.org",enableChaptersPlugin:!0,bookId:""}),BookReader.prototype.setup=(a=BookReader.prototype.setup,function(e){a.call(this,e),this.olHost=e.olHost,this.enableChaptersPlugin=e.enableChaptersPlugin,this.bookId=e.bookId}),BookReader.prototype.init=function(e){return function(){var t=this;e.call(this),this.enableChaptersPlugin&&"embed"!==this.ui&&this.getOpenLibraryRecord(),this.enableMobileNav&&(this.bind(BookReader.eventNames.mobileNavOpen,(function(){t.updateTOCState(t.firstIndex,t._tocEntries),r("table-contents-list").parent().hasClass("mm-opened")&&t.updateTOCState(t.firstIndex,t._tocEntries)})),r(".BRmobileMenu__tableContents").on("click",(function(){t.updateTOCState(t.firstIndex,t._tocEntries)})))}}(BookReader.prototype.init),BookReader.prototype.addChapter=function(e,t,n){var a=this,o=BookReader.util.cssPercentage(n,this.getNumLeafs()-1),s=function(e){a.jumpToIndex(r(e.delegateTarget).data("pageIndex")),r(".current-chapter").removeClass("current-chapter"),r(e.delegateTarget).addClass("current-chapter")},i="".concat(e," | "),l="".concat("Page"," ").concat(t),c=r("<li></li>").append(r("<span class='BRTOCElementTitle'></span>").text(i)).append(r("<span class='BRTOCElementPage'></span>").text(l));c.addClass("BRtable-contents-el").appendTo(this.$(".table-contents-list")).data({pageIndex:n}),null!=n&&(r("<div></div>").append(r("<div />").text(i+l)).addClass("BRchapter").css({left:o}).appendTo(this.$(".BRnavline")).data({pageIndex:n}).on("mouseenter",(function(e){var t=e.currentTarget,n=t.querySelector("div"),o=n.getBoundingClientRect(),s=t.getBoundingClientRect(),i=2*parseInt(getComputedStyle(n).paddingLeft);o.x-i<0&&n.style.setProperty("transform","translateX(-".concat(s.left-i,"px)")),a.$(".BRsearch,.BRchapter").removeClass("front"),r(e.target).addClass("front")})).on("mouseleave",(function(e){return r(e.target).removeClass("front")})).on("click",s),c.bind("click",s).addClass("chapter-clickable").attr("data-event-click-tracking","BRTOCPanel|GoToChapter"))},BookReader.prototype.removeChapters=function(){this.$(".BRnavpos .BRchapter").remove()},BookReader.prototype.updateTOC=function(e){this.removeChapters(),this.enableMobileNav&&e.length>0&&this.$(".BRmobileMenu__tableContents").show();for(var t=0;t<e.length;t++)this.addChapterFromEntry(e[t]);this._tocEntries=e,r(".table-contents-list").children().each((function(t,n){e[t].mobileHTML=n}))},BookReader.prototype.addChapterFromEntry=function(e){e.pageIndex=this.getPageIndex(e.pagenum);var t=[e.label,e.title].filter((function(e){return e})).join(" ");this.addChapter(t,e.pagenum,e.pageIndex),this.$(".BRchapter, .BRsearch").each((function(e,t){var n=r(t);n.on("mouseenter",(function(){return n.addClass("front")})).on("mouseleave",(function(){return n.removeClass("front")}))}))},BookReader.prototype.getOpenLibraryRecord=function(){var e=this,t="".concat(this.olHost,"/query.json?type=/type/edition&*="),n="".concat(t,"&ocaid=").concat(this.bookId);r.ajax({url:n,dataType:"jsonp"}).then((function(n){return n&&n.length>0?n:r.ajax({url:"".concat(t,"&source_records=ia:").concat(e.bookId),dataType:"jsonp"})})).then((function(t){var n;t&&t.length>0&&(n=t[0])&&n.table_of_contents&&e.updateTOC(n.table_of_contents)}))},BookReader.prototype.buildMobileDrawerElement=function(e){return function(){var t=e.call(this);return this.enableMobileNav&&this.options.enableChaptersPlugin&&t.find(".BRmobileMenu__moreInfoRow").after(r('\n <li class="BRmobileMenu__tableContents" data-event-click-tracking="BRSidebar|TOCPanel">\n <span>\n <span class="DrawerIconWrapper">\n <img class="DrawerIcon" src="'.concat(this.imagesBaseURL,'icon_toc.svg" alt="toc-icon"/>\n </span>\n Table of Contents\n </span>\n <div>\n <ol class="table-contents-list">\n </ol>\n </div>\n </li>')).hide()),t}}(BookReader.prototype.buildMobileDrawerElement),BookReader.prototype.updateTOCState=function(e,t){if(t){r(".current-chapter").removeClass("current-chapter");var n=t.filter((function(e){return null!=e.pageIndex})).reverse(),a=n[n.findIndex((function(t){return t.pageIndex<=e}))];null!=a&&r(a.mobileHTML).addClass("current-chapter")}}},5069:function(e,t,n){var a=n(2109),o=n(3157),r=[].reverse,s=[1,2];a({target:"Array",proto:!0,forced:String(s)===String(s.reverse())},{reverse:function(){return o(this)&&(this.length=this.length),r.call(this)}})}},function(e){e(e.s=8586)}]);
334
2
  //# sourceMappingURL=plugin.chapters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.chapters.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.reverse.js"],"sourcesContent":["/* global BookReader */\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\n\njQuery.extend(BookReader.defaultOptions, {\n olHost: 'https://openlibrary.org',\n enableChaptersPlugin: true,\n bookId: '',\n});\n\n/** @override Extend the constructor to add search properties */\nBookReader.prototype.setup = (function (super_) {\n return function (options) {\n super_.call(this, options);\n\n this.olHost = options.olHost;\n this.enableChaptersPlugin = options.enableChaptersPlugin;\n this.bookId = options.bookId;\n };\n})(BookReader.prototype.setup);\n\n/** @override Extend to call Open Library for TOC */\nBookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n if (this.enableChaptersPlugin && this.ui !== 'embed') {\n this.getOpenLibraryRecord();\n }\n if (this.enableMobileNav) {\n this.bind(BookReader.eventNames.mobileNavOpen,\n () => {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n if ($('table-contents-list').parent().hasClass('mm-opened')) {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n }\n }\n );\n $(\".BRmobileMenu__tableContents\").on(\"click\", () => {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n });\n }\n };\n})(BookReader.prototype.init);\n\n/**\n * Adds chapter marker to navigation scrubber\n *\n * @param {string} chapterTitle\n * @param {string} pageNumber\n * @param {number} pageIndex\n */\nBookReader.prototype.addChapter = function(chapterTitle, pageNumber, pageIndex) {\n const uiStringPage = 'Page'; // i18n\n const percentThrough = BookReader.util.cssPercentage(pageIndex, this.getNumLeafs() - 1);\n const jumpToChapter = (event) => {\n this.jumpToIndex($(event.delegateTarget).data('pageIndex'));\n $('.current-chapter').removeClass('current-chapter');\n $(event.delegateTarget).addClass('current-chapter');\n };\n const title = `${chapterTitle} | `;\n const pageStr = `${uiStringPage} ${pageNumber}`;\n\n //adding items to mobile table of contents\n const mobileChapter = $(`<li></li>`).append($(`<span class='BRTOCElementTitle'></span>`).text(title))\n .append($(`<span class='BRTOCElementPage'></span>`).text(pageStr));\n mobileChapter.addClass('BRtable-contents-el')\n .appendTo(this.$('.table-contents-list'))\n .data({ pageIndex });\n\n //adds .BRchapters to the slider only if pageIndex exists\n if (pageIndex != undefined) {\n $(`<div></div>`)\n .append($('<div />').text(title + pageStr))\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.$('.BRnavline'))\n .data({ pageIndex })\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.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', jumpToChapter);\n\n //adding clickable properties to mobile chapters\n mobileChapter.bind('click', jumpToChapter)\n .addClass('chapter-clickable')\n .attr(\"data-event-click-tracking\",\"BRTOCPanel|GoToChapter\");\n }\n\n};\n\n/*\n * Remove all chapters.\n */\nBookReader.prototype.removeChapters = function() {\n this.$('.BRnavpos .BRchapter').remove();\n};\n\n/**\n * Update the table of contents based on array of TOC entries.\n * @param {TocEntry[]} tocEntries\n */\nBookReader.prototype.updateTOC = function(tocEntries) {\n this.removeChapters();\n if (this.enableMobileNav && tocEntries.length > 0) {\n this.$(\".BRmobileMenu__tableContents\").show();\n }\n for (let i = 0; i < tocEntries.length; i++) {\n this.addChapterFromEntry(tocEntries[i]);\n }\n this._tocEntries = tocEntries;\n $('.table-contents-list').children().each((i, el) => {\n tocEntries[i].mobileHTML = el;\n });\n};\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined -- format is defined by Open Library\n * @property {string} pagenum\n * @property {number} level\n * @property {string} label\n * @property {{type: '/type/toc_item'}} type\n * @property {string} title\n * @property {HTMLElement} mobileHTML\n * @property {number} pageIndex\n\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"type\": {\"key\": \"/type/toc_item\"},\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n/**\n * @param {TocEntry} tocEntryObject\n */\nBookReader.prototype.addChapterFromEntry = function(tocEntryObject) {\n tocEntryObject.pageIndex = this.getPageIndex(tocEntryObject['pagenum']);\n //creates a string with non-void tocEntryObject.label and tocEntryObject.title\n const chapterStr = [tocEntryObject.label, tocEntryObject.title]\n .filter(x => x)\n .join(' ');\n this.addChapter(chapterStr, tocEntryObject['pagenum'], tocEntryObject.pageIndex);\n this.$('.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 * getOpenLibraryRecord\n *\n * The bookreader is designed to call openlibrary API and constructs the\n * \"Return book\" button using the response.\n *\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\nBookReader.prototype.getOpenLibraryRecord = function () {\n // Try looking up by ocaid first, then by source_record\n const baseURL = `${this.olHost}/query.json?type=/type/edition&*=`;\n const fetchUrlByBookId = `${baseURL}&ocaid=${this.bookId}`;\n\n /*\n * Update Chapter markers based on received record from Open Library.\n * Notes that Open Library record is used for extra metadata, and also for lending\n */\n const setUpChapterMarkers = (olObject) => {\n if (olObject && olObject.table_of_contents) {\n // XXX check here that TOC is valid\n this.updateTOC(olObject.table_of_contents);\n }\n };\n\n $.ajax({ url: fetchUrlByBookId, dataType: 'jsonp' })\n .then(data => {\n if (data && data.length > 0) {\n return data;\n } else {\n // try sourceid\n return $.ajax({ url: `${baseURL}&source_records=ia:${this.bookId}`, dataType: 'jsonp' });\n }\n })\n .then(data => {\n if (data && data.length > 0) {\n setUpChapterMarkers(data[0]);\n }\n });\n};\n\n// Extend buildMobileDrawerElement with table of contents list\nBookReader.prototype.buildMobileDrawerElement = (function (super_) {\n return function () {\n const $el = super_.call(this);\n if (this.enableMobileNav && this.options.enableChaptersPlugin) {\n $el.find('.BRmobileMenu__moreInfoRow').after($(`\n <li class=\"BRmobileMenu__tableContents\" data-event-click-tracking=\"BRSidebar|TOCPanel\">\n <span>\n <span class=\"DrawerIconWrapper\">\n <img class=\"DrawerIcon\" src=\"${this.imagesBaseURL}icon_toc.svg\" alt=\"toc-icon\"/>\n </span>\n Table of Contents\n </span>\n <div>\n <ol class=\"table-contents-list\">\n </ol>\n </div>\n </li>`).hide());\n }\n return $el;\n };\n})(BookReader.prototype.buildMobileDrawerElement);\n\n/**\n * highlights the current chapter based on current page\n * @private\n * @param {TocEntry[]} tocEntries\n * @param {number} tocEntries\n */\nBookReader.prototype.updateTOCState = function(currIndex, tocEntries) {\n //this function won't have any effects if called before OpenLibrary request is finished\n if (!tocEntries) {return;}\n $('.current-chapter').removeClass('current-chapter');\n const tocEntriesIndexed = tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[tocEntriesIndexed.findIndex(\n (el) => el.pageIndex <= currIndex)];\n if (currChapter != undefined) {\n $(currChapter.mobileHTML).addClass('current-chapter');\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n"],"names":["jQuery","extend","BookReader","defaultOptions","olHost","enableChaptersPlugin","bookId","prototype","setup","super_","options","call","init","ui","getOpenLibraryRecord","enableMobileNav","bind","eventNames","mobileNavOpen","updateTOCState","firstIndex","_tocEntries","$","parent","hasClass","on","addChapter","chapterTitle","pageNumber","pageIndex","uiStringPage","percentThrough","util","cssPercentage","getNumLeafs","jumpToChapter","event","jumpToIndex","delegateTarget","data","removeClass","addClass","title","pageStr","mobileChapter","append","text","appendTo","undefined","css","left","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","x","style","setProperty","target","attr","removeChapters","remove","updateTOC","tocEntries","length","show","i","addChapterFromEntry","children","each","el","mobileHTML","tocEntryObject","getPageIndex","chapterStr","label","filter","join","$el","baseURL","fetchUrlByBookId","setUpChapterMarkers","olObject","table_of_contents","ajax","url","dataType","then","buildMobileDrawerElement","find","after","imagesBaseURL","hide","currIndex","tocEntriesIndexed","reverse","currChapter","findIndex"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.chapters.js","mappings":"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","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.chapters.js","webpack://@internetarchive/bookreader/./node_modules/core-js/modules/es.array.reverse.js"],"sourcesContent":["/* global BookReader */\n/**\n * Plugin for chapter markers in BookReader. Fetches from openlibrary.org\n * Could be forked, or extended to alter behavior\n */\n\njQuery.extend(BookReader.defaultOptions, {\n olHost: 'https://openlibrary.org',\n enableChaptersPlugin: true,\n bookId: '',\n});\n\n/** @override Extend the constructor to add search properties */\nBookReader.prototype.setup = (function (super_) {\n return function (options) {\n super_.call(this, options);\n\n this.olHost = options.olHost;\n this.enableChaptersPlugin = options.enableChaptersPlugin;\n this.bookId = options.bookId;\n };\n})(BookReader.prototype.setup);\n\n/** @override Extend to call Open Library for TOC */\nBookReader.prototype.init = (function(super_) {\n return function() {\n super_.call(this);\n if (this.enableChaptersPlugin && this.ui !== 'embed') {\n this.getOpenLibraryRecord();\n }\n if (this.enableMobileNav) {\n this.bind(BookReader.eventNames.mobileNavOpen,\n () => {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n if ($('table-contents-list').parent().hasClass('mm-opened')) {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n }\n }\n );\n $(\".BRmobileMenu__tableContents\").on(\"click\", () => {\n this.updateTOCState(this.firstIndex, this._tocEntries);\n });\n }\n };\n})(BookReader.prototype.init);\n\n/**\n * Adds chapter marker to navigation scrubber\n *\n * @param {string} chapterTitle\n * @param {string} pageNumber\n * @param {number} pageIndex\n */\nBookReader.prototype.addChapter = function(chapterTitle, pageNumber, pageIndex) {\n const uiStringPage = 'Page'; // i18n\n const percentThrough = BookReader.util.cssPercentage(pageIndex, this.getNumLeafs() - 1);\n const jumpToChapter = (event) => {\n this.jumpToIndex($(event.delegateTarget).data('pageIndex'));\n $('.current-chapter').removeClass('current-chapter');\n $(event.delegateTarget).addClass('current-chapter');\n };\n const title = `${chapterTitle} | `;\n const pageStr = `${uiStringPage} ${pageNumber}`;\n\n //adding items to mobile table of contents\n const mobileChapter = $(`<li></li>`).append($(`<span class='BRTOCElementTitle'></span>`).text(title))\n .append($(`<span class='BRTOCElementPage'></span>`).text(pageStr));\n mobileChapter.addClass('BRtable-contents-el')\n .appendTo(this.$('.table-contents-list'))\n .data({ pageIndex });\n\n //adds .BRchapters to the slider only if pageIndex exists\n if (pageIndex != undefined) {\n $(`<div></div>`)\n .append($('<div />').text(title + pageStr))\n .addClass('BRchapter')\n .css({ left: percentThrough })\n .appendTo(this.$('.BRnavline'))\n .data({ pageIndex })\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.$('.BRsearch,.BRchapter').removeClass('front');\n $(event.target).addClass('front');\n })\n .on(\"mouseleave\", event => $(event.target).removeClass('front'))\n .on('click', jumpToChapter);\n\n //adding clickable properties to mobile chapters\n mobileChapter.bind('click', jumpToChapter)\n .addClass('chapter-clickable')\n .attr(\"data-event-click-tracking\",\"BRTOCPanel|GoToChapter\");\n }\n\n};\n\n/*\n * Remove all chapters.\n */\nBookReader.prototype.removeChapters = function() {\n this.$('.BRnavpos .BRchapter').remove();\n};\n\n/**\n * Update the table of contents based on array of TOC entries.\n * @param {TocEntry[]} tocEntries\n */\nBookReader.prototype.updateTOC = function(tocEntries) {\n this.removeChapters();\n if (this.enableMobileNav && tocEntries.length > 0) {\n this.$(\".BRmobileMenu__tableContents\").show();\n }\n for (let i = 0; i < tocEntries.length; i++) {\n this.addChapterFromEntry(tocEntries[i]);\n }\n this._tocEntries = tocEntries;\n $('.table-contents-list').children().each((i, el) => {\n tocEntries[i].mobileHTML = el;\n });\n};\n\n/**\n * @typedef {Object} TocEntry\n * Table of contents entry as defined -- format is defined by Open Library\n * @property {string} pagenum\n * @property {number} level\n * @property {string} label\n * @property {{type: '/type/toc_item'}} type\n * @property {string} title\n * @property {HTMLElement} mobileHTML\n * @property {number} pageIndex\n\n *\n * @example {\n * \"pagenum\": \"17\",\n * \"level\": 1,\n * \"label\": \"CHAPTER I\",\n * \"type\": {\"key\": \"/type/toc_item\"},\n * \"title\": \"THE COUNTRY AND THE MISSION\"\n * }\n */\n\n/**\n * @param {TocEntry} tocEntryObject\n */\nBookReader.prototype.addChapterFromEntry = function(tocEntryObject) {\n tocEntryObject.pageIndex = this.getPageIndex(tocEntryObject['pagenum']);\n //creates a string with non-void tocEntryObject.label and tocEntryObject.title\n const chapterStr = [tocEntryObject.label, tocEntryObject.title]\n .filter(x => x)\n .join(' ');\n this.addChapter(chapterStr, tocEntryObject['pagenum'], tocEntryObject.pageIndex);\n this.$('.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 * getOpenLibraryRecord\n *\n * The bookreader is designed to call openlibrary API and constructs the\n * \"Return book\" button using the response.\n *\n * This makes a call to OL API and calls the given callback function with the\n * response from the API.\n */\nBookReader.prototype.getOpenLibraryRecord = function () {\n // Try looking up by ocaid first, then by source_record\n const baseURL = `${this.olHost}/query.json?type=/type/edition&*=`;\n const fetchUrlByBookId = `${baseURL}&ocaid=${this.bookId}`;\n\n /*\n * Update Chapter markers based on received record from Open Library.\n * Notes that Open Library record is used for extra metadata, and also for lending\n */\n const setUpChapterMarkers = (olObject) => {\n if (olObject && olObject.table_of_contents) {\n // XXX check here that TOC is valid\n this.updateTOC(olObject.table_of_contents);\n }\n };\n\n $.ajax({ url: fetchUrlByBookId, dataType: 'jsonp' })\n .then(data => {\n if (data && data.length > 0) {\n return data;\n } else {\n // try sourceid\n return $.ajax({ url: `${baseURL}&source_records=ia:${this.bookId}`, dataType: 'jsonp' });\n }\n })\n .then(data => {\n if (data && data.length > 0) {\n setUpChapterMarkers(data[0]);\n }\n });\n};\n\n// Extend buildMobileDrawerElement with table of contents list\nBookReader.prototype.buildMobileDrawerElement = (function (super_) {\n return function () {\n const $el = super_.call(this);\n if (this.enableMobileNav && this.options.enableChaptersPlugin) {\n $el.find('.BRmobileMenu__moreInfoRow').after($(`\n <li class=\"BRmobileMenu__tableContents\" data-event-click-tracking=\"BRSidebar|TOCPanel\">\n <span>\n <span class=\"DrawerIconWrapper\">\n <img class=\"DrawerIcon\" src=\"${this.imagesBaseURL}icon_toc.svg\" alt=\"toc-icon\"/>\n </span>\n Table of Contents\n </span>\n <div>\n <ol class=\"table-contents-list\">\n </ol>\n </div>\n </li>`).hide());\n }\n return $el;\n };\n})(BookReader.prototype.buildMobileDrawerElement);\n\n/**\n * highlights the current chapter based on current page\n * @private\n * @param {TocEntry[]} tocEntries\n * @param {number} tocEntries\n */\nBookReader.prototype.updateTOCState = function(currIndex, tocEntries) {\n //this function won't have any effects if called before OpenLibrary request is finished\n if (!tocEntries) {return;}\n $('.current-chapter').removeClass('current-chapter');\n const tocEntriesIndexed = tocEntries.filter((el) => el.pageIndex != undefined).reverse();\n const currChapter = tocEntriesIndexed[tocEntriesIndexed.findIndex(\n (el) => el.pageIndex <= currIndex)];\n if (currChapter != undefined) {\n $(currChapter.mobileHTML).addClass('current-chapter');\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\nvar nativeReverse = [].reverse;\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return nativeReverse.call(this);\n }\n});\n"],"names":["super_","jQuery","extend","BookReader","defaultOptions","olHost","enableChaptersPlugin","bookId","prototype","setup","options","call","this","init","ui","getOpenLibraryRecord","enableMobileNav","bind","eventNames","mobileNavOpen","updateTOCState","firstIndex","_tocEntries","$","parent","hasClass","on","addChapter","chapterTitle","pageNumber","pageIndex","percentThrough","util","cssPercentage","getNumLeafs","jumpToChapter","event","jumpToIndex","delegateTarget","data","removeClass","addClass","title","pageStr","mobileChapter","append","text","appendTo","undefined","css","left","marker","currentTarget","tooltip","querySelector","tooltipOffset","getBoundingClientRect","targetOffset","boxSizeAdjust","parseInt","getComputedStyle","paddingLeft","x","style","setProperty","target","attr","removeChapters","remove","updateTOC","tocEntries","length","show","i","addChapterFromEntry","children","each","el","mobileHTML","tocEntryObject","getPageIndex","chapterStr","label","filter","join","$el","baseURL","fetchUrlByBookId","ajax","url","dataType","then","olObject","table_of_contents","buildMobileDrawerElement","find","after","imagesBaseURL","hide","currIndex","tocEntriesIndexed","reverse","currChapter","findIndex","isArray","nativeReverse","test","proto","forced","String"],"sourceRoot":""}
@@ -1,73 +1,2 @@
1
- "use strict";
2
- (self["webpackChunk_internetarchive_bookreader"] = self["webpackChunk_internetarchive_bookreader"] || []).push([["plugins/plugin.iframe.js"],{
3
-
4
- /***/ "./src/plugins/plugin.iframe.js":
5
- /*!**************************************!*\
6
- !*** ./src/plugins/plugin.iframe.js ***!
7
- \**************************************/
8
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9
-
10
- __webpack_require__.r(__webpack_exports__);
11
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
- /* harmony export */ "_attachEventListeners": function() { return /* binding */ _attachEventListeners; }
13
- /* harmony export */ });
14
- /* global BookReader */
15
-
16
- /**
17
- * Plugin for two-way communication between a BookReader in an IFrame and the
18
- * parent web page
19
- */
20
- var MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';
21
-
22
- BookReader.prototype.init = function (super_) {
23
- return function () {
24
- super_.call(this);
25
-
26
- _attachEventListeners(this);
27
- };
28
- }(BookReader.prototype.init);
29
- /**
30
- * @private
31
- * Using window.postMessage() and event listeners, the plugin notifies the
32
- * parent window when pages change, and the parent window can also
33
- * explicitly request a page change by sending its own message.
34
- *
35
- * @param {BookReader} br
36
- * @param {Window?} [parent]
37
- */
38
-
39
-
40
- function _attachEventListeners(br) {
41
- var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.parent;
42
-
43
- // Not embedded, abort
44
- if (!parent) {
45
- return;
46
- }
47
-
48
- br.bind(BookReader.eventNames.fragmentChange, function () {
49
- var fragment = br.fragmentFromParams(br.paramsFromCurrent());
50
- parent.postMessage({
51
- type: MESSAGE_TYPE_FRAGMENT_CHANGE,
52
- fragment: fragment
53
- }, '*');
54
- });
55
- window.addEventListener('message', function (event) {
56
- // Not a recognized message type, abort
57
- if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {
58
- return;
59
- }
60
-
61
- br.updateFromParams(br.paramsFromFragment(event.data.fragment));
62
- });
63
- }
64
-
65
- /***/ })
66
-
67
- },
68
- /******/ function(__webpack_require__) { // webpackRuntimeModules
69
- /******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
70
- /******/ var __webpack_exports__ = (__webpack_exec__("./src/plugins/plugin.iframe.js"));
71
- /******/ }
72
- ]);
1
+ "use strict";(self.webpackChunk_internetarchive_bookreader=self.webpackChunk_internetarchive_bookreader||[]).push([[697],{5206:function(e,a,t){var n,r="bookReaderFragmentChange";BookReader.prototype.init=(n=BookReader.prototype.init,function(){n.call(this),function(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:window.parent;a&&(e.bind(BookReader.eventNames.fragmentChange,(function(){var t=e.fragmentFromParams(e.paramsFromCurrent());a.postMessage({type:r,fragment:t},"*")})),window.addEventListener("message",(function(a){a.data&&a.data.type===r&&e.updateFromParams(e.paramsFromFragment(a.data.fragment))})))}(this)})}},function(e){e(e.s=5206)}]);
73
2
  //# sourceMappingURL=plugin.iframe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins/plugin.iframe.js","mappings":";;;;;;;;;;;;;AAAA;;AACA;AACA;AACA;AACA;AAEA,IAAMA,4BAA4B,GAAG,0BAArC;;AAEAC,UAAU,CAACC,SAAX,CAAqBC,IAArB,GAA6B,UAAUC,MAAV,EAAkB;AAC7C,SAAO,YAAY;AACjBA,IAAAA,MAAM,CAACC,IAAP,CAAY,IAAZ;;AACAC,IAAAA,qBAAqB,CAAC,IAAD,CAArB;AACD,GAHD;AAID,CAL2B,CAKzBL,UAAU,CAACC,SAAX,CAAqBC,IALI,CAA5B;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,SAASG,qBAAT,CAA+BC,EAA/B,EAA2D;AAAA,MAAxBC,MAAwB,uEAAfC,MAAM,CAACD,MAAQ;;AAChE;AACA,MAAI,CAACA,MAAL,EAAa;AACX;AACD;;AAEDD,EAAAA,EAAE,CAACG,IAAH,CAAQT,UAAU,CAACU,UAAX,CAAsBC,cAA9B,EAA8C,YAAM;AAClD,QAAMC,QAAQ,GAAGN,EAAE,CAACO,kBAAH,CAAsBP,EAAE,CAACQ,iBAAH,EAAtB,CAAjB;AAEAP,IAAAA,MAAM,CAACQ,WAAP,CACE;AAAEC,MAAAA,IAAI,EAAEjB,4BAAR;AAAsCa,MAAAA,QAAQ,EAARA;AAAtC,KADF,EAEE,GAFF;AAID,GAPD;AASAJ,EAAAA,MAAM,CAACS,gBAAP,CAAwB,SAAxB,EAAmC,UAAAC,KAAK,EAAI;AAC1C;AACA,QAAI,CAACA,KAAK,CAACC,IAAP,IAAeD,KAAK,CAACC,IAAN,CAAWH,IAAX,KAAoBjB,4BAAvC,EAAqE;AACnE;AACD;;AAEDO,IAAAA,EAAE,CAACc,gBAAH,CAAoBd,EAAE,CAACe,kBAAH,CAAsBH,KAAK,CAACC,IAAN,CAAWP,QAAjC,CAApB;AACD,GAPD;AAQD","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.iframe.js"],"sourcesContent":["/* global BookReader */\n/**\n * Plugin for two-way communication between a BookReader in an IFrame and the\n * parent web page\n */\n\nconst MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';\n\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n _attachEventListeners(this);\n };\n})(BookReader.prototype.init);\n\n/**\n * @private\n * Using window.postMessage() and event listeners, the plugin notifies the\n * parent window when pages change, and the parent window can also\n * explicitly request a page change by sending its own message.\n *\n * @param {BookReader} br\n * @param {Window?} [parent]\n */\nexport function _attachEventListeners(br, parent = window.parent) {\n // Not embedded, abort\n if (!parent) {\n return;\n }\n\n br.bind(BookReader.eventNames.fragmentChange, () => {\n const fragment = br.fragmentFromParams(br.paramsFromCurrent());\n\n parent.postMessage(\n { type: MESSAGE_TYPE_FRAGMENT_CHANGE, fragment },\n '*'\n );\n });\n\n window.addEventListener('message', event => {\n // Not a recognized message type, abort\n if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {\n return;\n }\n\n br.updateFromParams(br.paramsFromFragment(event.data.fragment));\n });\n}\n"],"names":["MESSAGE_TYPE_FRAGMENT_CHANGE","BookReader","prototype","init","super_","call","_attachEventListeners","br","parent","window","bind","eventNames","fragmentChange","fragment","fragmentFromParams","paramsFromCurrent","postMessage","type","addEventListener","event","data","updateFromParams","paramsFromFragment"],"sourceRoot":""}
1
+ {"version":3,"file":"plugins/plugin.iframe.js","mappings":"+IAMA,IAEuCA,EAFjCC,EAA+B,2BAErCC,WAAWC,UAAUC,MAAkBJ,EAKpCE,WAAWC,UAAUC,KAJf,WACLJ,EAAOK,KAAKC,MAcT,SAA+BC,GAA4B,IAAxBC,EAAwB,uDAAfC,OAAOD,OAEnDA,IAILD,EAAGG,KAAKR,WAAWS,WAAWC,gBAAgB,WAC5C,IAAMC,EAAWN,EAAGO,mBAAmBP,EAAGQ,qBAE1CP,EAAOQ,YACL,CAAEC,KAAMhB,EAA8BY,SAAAA,GACtC,QAIJJ,OAAOS,iBAAiB,WAAW,SAAAC,GAE5BA,EAAMC,MAAQD,EAAMC,KAAKH,OAAShB,GAIvCM,EAAGc,iBAAiBd,EAAGe,mBAAmBH,EAAMC,KAAKP,eAlCrDU,CAAsBjB,U","sources":["webpack://@internetarchive/bookreader/./src/plugins/plugin.iframe.js"],"sourcesContent":["/* global BookReader */\n/**\n * Plugin for two-way communication between a BookReader in an IFrame and the\n * parent web page\n */\n\nconst MESSAGE_TYPE_FRAGMENT_CHANGE = 'bookReaderFragmentChange';\n\nBookReader.prototype.init = (function (super_) {\n return function () {\n super_.call(this);\n _attachEventListeners(this);\n };\n})(BookReader.prototype.init);\n\n/**\n * @private\n * Using window.postMessage() and event listeners, the plugin notifies the\n * parent window when pages change, and the parent window can also\n * explicitly request a page change by sending its own message.\n *\n * @param {BookReader} br\n * @param {Window?} [parent]\n */\nexport function _attachEventListeners(br, parent = window.parent) {\n // Not embedded, abort\n if (!parent) {\n return;\n }\n\n br.bind(BookReader.eventNames.fragmentChange, () => {\n const fragment = br.fragmentFromParams(br.paramsFromCurrent());\n\n parent.postMessage(\n { type: MESSAGE_TYPE_FRAGMENT_CHANGE, fragment },\n '*'\n );\n });\n\n window.addEventListener('message', event => {\n // Not a recognized message type, abort\n if (!event.data || event.data.type !== MESSAGE_TYPE_FRAGMENT_CHANGE) {\n return;\n }\n\n br.updateFromParams(br.paramsFromFragment(event.data.fragment));\n });\n}\n"],"names":["super_","MESSAGE_TYPE_FRAGMENT_CHANGE","BookReader","prototype","init","call","this","br","parent","window","bind","eventNames","fragmentChange","fragment","fragmentFromParams","paramsFromCurrent","postMessage","type","addEventListener","event","data","updateFromParams","paramsFromFragment","_attachEventListeners"],"sourceRoot":""}