@internetarchive/bookreader 5.0.0-24-sortingstate-1 → 5.0.0-24-sortingstate-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BookReader/BookReader.js +1 -4
- package/BookReader/BookReader.js.map +1 -1
- package/BookReader/bookreader-component-bundle.js +16 -22
- package/BookReader/bookreader-component-bundle.js.map +1 -1
- package/BookReader/icons/1up.svg +1 -12
- package/BookReader/icons/2up.svg +1 -15
- package/BookReader/icons/advance.svg +3 -26
- package/BookReader/icons/chevron-right.svg +1 -1
- package/BookReader/icons/close-circle-dark.svg +1 -1
- package/BookReader/icons/close-circle.svg +1 -1
- package/BookReader/icons/fullscreen.svg +1 -17
- package/BookReader/icons/fullscreen_exit.svg +1 -17
- package/BookReader/icons/hamburger.svg +1 -15
- package/BookReader/icons/left-arrow.svg +1 -12
- package/BookReader/icons/magnify-minus.svg +1 -16
- package/BookReader/icons/magnify-plus.svg +1 -17
- package/BookReader/icons/magnify.svg +1 -15
- package/BookReader/icons/pause.svg +1 -23
- package/BookReader/icons/play.svg +1 -22
- package/BookReader/icons/playback-speed.svg +1 -34
- package/BookReader/icons/read-aloud.svg +1 -22
- package/BookReader/icons/review.svg +3 -22
- package/BookReader/icons/thumbnails.svg +1 -17
- package/BookReader/icons/voice.svg +1 -1
- package/BookReader/icons/volume-full.svg +1 -22
- package/BookReader/images/BRicons.svg +5 -94
- package/BookReader/images/books_graphic.svg +1 -177
- package/BookReader/images/icon_book.svg +1 -12
- package/BookReader/images/icon_bookmark.svg +1 -12
- package/BookReader/images/icon_gear.svg +1 -14
- package/BookReader/images/icon_hamburger.svg +1 -20
- package/BookReader/images/icon_home.svg +1 -21
- package/BookReader/images/icon_info.svg +1 -11
- package/BookReader/images/icon_one_page.svg +1 -8
- package/BookReader/images/icon_pause.svg +1 -1
- package/BookReader/images/icon_play.svg +1 -1
- package/BookReader/images/icon_playback-rate.svg +1 -15
- package/BookReader/images/icon_search_button.svg +1 -8
- package/BookReader/images/icon_share.svg +1 -9
- package/BookReader/images/icon_skip-ahead.svg +1 -6
- package/BookReader/images/icon_skip-back.svg +2 -13
- package/BookReader/images/icon_speaker.svg +1 -18
- package/BookReader/images/icon_speaker_open.svg +1 -10
- package/BookReader/images/icon_thumbnails.svg +1 -12
- package/BookReader/images/icon_toc.svg +1 -5
- package/BookReader/images/icon_two_pages.svg +1 -9
- package/BookReader/images/marker_chap-off.svg +1 -11
- package/BookReader/images/marker_chap-on.svg +1 -11
- package/BookReader/images/marker_srch-on.svg +1 -11
- package/BookReader/jquery-1.10.1.js +2 -108
- 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 -1263
- 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 -9114
- package/BookReader/plugins/plugin.tts.js.map +1 -1
- package/BookReader/plugins/plugin.url.js +46 -33
- 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.map +1 -1
- package/package.json +1 -1
- package/src/BookNavigator/volumes/volumes-provider.js +1 -1
- package/src/BookReader.js +0 -4
- package/src/plugins/plugin.url.js +22 -16
- package/tests/jest/plugins/plugin.url.test.js +4 -4
- package/tests/karma/BookNavigator/volumes/volumes-provider.test.js +6 -6
@@ -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":""}
|