@internetarchive/bookreader 5.0.0-30-d → 5.0.0-32-shadydom
Sign up to get free protection for your applications and to get access to all the features.
- package/BookReader/BookReader.js +2 -32261
- package/BookReader/BookReader.js.LICENSE.txt +117 -0
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/ia-bookreader-bundle.js +1146 -14911
- package/BookReader/ia-bookreader-bundle.js.LICENSE.txt +39 -0
- package/BookReader/ia-bookreader-bundle.js.map +1 -1
- package/BookReader/jquery-1.10.1.js +2 -108
- package/BookReader/jquery-1.10.1.js.LICENSE.txt +24 -0
- package/BookReader/plugins/plugin.archive_analytics.js +1 -170
- package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
- package/BookReader/plugins/plugin.autoplay.js +1 -163
- package/BookReader/plugins/plugin.autoplay.js.map +1 -1
- package/BookReader/plugins/plugin.chapters.js +1 -333
- package/BookReader/plugins/plugin.chapters.js.map +1 -1
- package/BookReader/plugins/plugin.iframe.js +1 -72
- package/BookReader/plugins/plugin.iframe.js.map +1 -1
- package/BookReader/plugins/plugin.mobile_nav.js +1 -332
- package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
- package/BookReader/plugins/plugin.resume.js +1 -241
- package/BookReader/plugins/plugin.resume.js.map +1 -1
- package/BookReader/plugins/plugin.search.js +1 -1261
- package/BookReader/plugins/plugin.search.js.map +1 -1
- package/BookReader/plugins/plugin.text_selection.js +1 -839
- package/BookReader/plugins/plugin.text_selection.js.map +1 -1
- package/BookReader/plugins/plugin.tts.js +2 -9115
- package/BookReader/plugins/plugin.tts.js.LICENSE.txt +27 -0
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +1 -811
- package/BookReader/plugins/plugin.url.js.map +1 -1
- package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -326
- package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
- package/BookReader/webcomponents-bundle.js +2 -411
- package/BookReader/webcomponents-bundle.js.LICENSE.txt +9 -0
- package/BookReader/webcomponents-bundle.js.map +1 -1
- package/BookReaderDemo/demo-internetarchive.html +2 -1
- package/CHANGELOG.md +6 -0
- package/package.json +2 -2
- package/src/BookNavigator/book-navigator.js +2 -1
- package/src/ia-bookreader/ia-bookreader.js +29 -21
- package/stat/BookNavigator/BookNavigator.js +1 -1
- package/stat/BookReaderComponent/BookReaderComponent.js +2 -2
- package/tests/karma/BookNavigator/book-navigator.test.js +1 -1
- 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":"
|
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":""}
|