@internetarchive/bookreader 5.0.0-32-shadydom2 → 5.0.0-33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/BookReader/BookReader.js +2 -32261
  2. package/BookReader/BookReader.js.map +1 -1
  3. package/BookReader/ia-bookreader-bundle.js +1138 -14867
  4. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  5. package/BookReader/icons/1up.svg +1 -12
  6. package/BookReader/icons/2up.svg +1 -15
  7. package/BookReader/icons/advance.svg +3 -26
  8. package/BookReader/icons/chevron-right.svg +1 -1
  9. package/BookReader/icons/close-circle-dark.svg +1 -1
  10. package/BookReader/icons/close-circle.svg +1 -1
  11. package/BookReader/icons/fullscreen.svg +1 -17
  12. package/BookReader/icons/fullscreen_exit.svg +1 -17
  13. package/BookReader/icons/hamburger.svg +1 -15
  14. package/BookReader/icons/left-arrow.svg +1 -12
  15. package/BookReader/icons/magnify-minus.svg +1 -16
  16. package/BookReader/icons/magnify-plus.svg +1 -17
  17. package/BookReader/icons/magnify.svg +1 -15
  18. package/BookReader/icons/pause.svg +1 -23
  19. package/BookReader/icons/play.svg +1 -22
  20. package/BookReader/icons/playback-speed.svg +1 -34
  21. package/BookReader/icons/read-aloud.svg +1 -22
  22. package/BookReader/icons/review.svg +3 -22
  23. package/BookReader/icons/thumbnails.svg +1 -17
  24. package/BookReader/icons/voice.svg +1 -1
  25. package/BookReader/icons/volume-full.svg +1 -22
  26. package/BookReader/images/BRicons.svg +5 -94
  27. package/BookReader/images/books_graphic.svg +1 -177
  28. package/BookReader/images/icon_book.svg +1 -12
  29. package/BookReader/images/icon_bookmark.svg +1 -12
  30. package/BookReader/images/icon_gear.svg +1 -14
  31. package/BookReader/images/icon_hamburger.svg +1 -20
  32. package/BookReader/images/icon_home.svg +1 -21
  33. package/BookReader/images/icon_info.svg +1 -11
  34. package/BookReader/images/icon_one_page.svg +1 -8
  35. package/BookReader/images/icon_pause.svg +1 -1
  36. package/BookReader/images/icon_play.svg +1 -1
  37. package/BookReader/images/icon_playback-rate.svg +1 -15
  38. package/BookReader/images/icon_search_button.svg +1 -8
  39. package/BookReader/images/icon_share.svg +1 -9
  40. package/BookReader/images/icon_skip-ahead.svg +1 -6
  41. package/BookReader/images/icon_skip-back.svg +2 -13
  42. package/BookReader/images/icon_speaker.svg +1 -18
  43. package/BookReader/images/icon_speaker_open.svg +1 -10
  44. package/BookReader/images/icon_thumbnails.svg +1 -12
  45. package/BookReader/images/icon_toc.svg +1 -5
  46. package/BookReader/images/icon_two_pages.svg +1 -9
  47. package/BookReader/images/marker_chap-off.svg +1 -11
  48. package/BookReader/images/marker_chap-on.svg +1 -11
  49. package/BookReader/images/marker_srch-on.svg +1 -11
  50. package/BookReader/jquery-1.10.1.js +2 -108
  51. package/BookReader/plugins/plugin.archive_analytics.js +1 -170
  52. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  53. package/BookReader/plugins/plugin.autoplay.js +1 -163
  54. package/BookReader/plugins/plugin.autoplay.js.map +1 -1
  55. package/BookReader/plugins/plugin.chapters.js +1 -333
  56. package/BookReader/plugins/plugin.chapters.js.map +1 -1
  57. package/BookReader/plugins/plugin.iframe.js +1 -72
  58. package/BookReader/plugins/plugin.iframe.js.map +1 -1
  59. package/BookReader/plugins/plugin.mobile_nav.js +1 -332
  60. package/BookReader/plugins/plugin.mobile_nav.js.map +1 -1
  61. package/BookReader/plugins/plugin.resume.js +1 -241
  62. package/BookReader/plugins/plugin.resume.js.map +1 -1
  63. package/BookReader/plugins/plugin.search.js +1 -1261
  64. package/BookReader/plugins/plugin.search.js.map +1 -1
  65. package/BookReader/plugins/plugin.text_selection.js +1 -839
  66. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  67. package/BookReader/plugins/plugin.tts.js +2 -9115
  68. package/BookReader/plugins/plugin.tts.js.map +1 -1
  69. package/BookReader/plugins/plugin.url.js +1 -811
  70. package/BookReader/plugins/plugin.url.js.map +1 -1
  71. package/BookReader/plugins/plugin.vendor-fullscreen.js +1 -326
  72. package/BookReader/plugins/plugin.vendor-fullscreen.js.map +1 -1
  73. package/BookReader/webcomponents-bundle.js +2 -411
  74. package/BookReader/webcomponents-bundle.js.map +1 -1
  75. package/CHANGELOG.md +6 -0
  76. package/package.json +2 -2
  77. package/src/BookNavigator/book-navigator.js +19 -10
  78. package/src/BookNavigator/bookmarks/bookmarks-provider.js +1 -1
  79. package/src/BookNavigator/bookmarks/ia-bookmarks.js +5 -3
  80. package/tests/karma/BookNavigator/book-navigator.test.js +0 -5
  81. package/tests/karma/BookNavigator/bookmarks/ia-bookmarks.test.js +57 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 5.0.0-33
2
+ Fix: restricted books get cover image @iisa
3
+
4
+ # 5.0.0-32
5
+ Fix: fetch bookmarks from service when logged in @iisa
6
+ Fix: adjust css to help shadydom render properly @iisa
1
7
  # 5.0.0-31
2
8
  Fix: modal loads into dom from `<ia-bookreader>` @iisa
3
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/bookreader",
3
- "version": "5.0.0-32-shadydom2",
3
+ "version": "5.0.0-33",
4
4
  "description": "The Internet Archive BookReader.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "private": false,
27
27
  "dependencies": {
28
28
  "@internetarchive/ia-activity-indicator": "^0.0.1",
29
- "@internetarchive/ia-item-navigator": "0.0.5-2",
29
+ "@internetarchive/ia-item-navigator": "0.0.5",
30
30
  "@internetarchive/ia-menu-slider": "^1.1.1",
31
31
  "@internetarchive/ia-sharing-options": "^0.1.4",
32
32
  "@internetarchive/icon-bookmark": "^1.1.3",
@@ -3,6 +3,7 @@ import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
3
3
  // eslint-disable-next-line no-unused-vars
4
4
  import { ModalManager } from '@internetarchive/modal-manager';
5
5
  import { css, html, LitElement } from 'lit-element';
6
+ import { nothing } from 'lit-html';
6
7
  import SearchProvider from './search/search-provider.js';
7
8
  import DownloadProvider from './downloads/downloads-provider.js';
8
9
  import VisualAdjustmentProvider from './visual-adjustments/visual-adjustments-provider.js';
@@ -417,6 +418,7 @@ export class BookNavigator extends LitElement {
417
418
  this.lendingStatus = lendingStatus;
418
419
  this.isAdmin = isAdmin;
419
420
  this.bookReaderCannotLoad = previewType === 'singlePagePreview';
421
+ this.emitLoadingStatusUpdate(true);
420
422
  });
421
423
  window.addEventListener('BRJSIA:PostInit', ({ detail }) => {
422
424
  const { isRestricted, downloadURLs } = detail;
@@ -491,20 +493,20 @@ export class BookNavigator extends LitElement {
491
493
  this.dispatchEvent(event);
492
494
  }
493
495
 
494
- get loadingClass() {
495
- return !this.bookReaderLoaded ? 'loading' : '';
496
+ get itemImage() {
497
+ const identifier = this.itemMD?.metadata.identifier;
498
+ const url = `https://${this.baseHost}/services/img/${identifier}`;
499
+ return html`<img class="cover-img" src=${url} alt="cover image for ${identifier}">`;
496
500
  }
497
501
 
498
- get itemImage() {
499
- const url = `https://${this.baseHost}/services/img/${this.item.metadata.identifier}`;
500
- return html`<img class="cover-img" src=${url} alt="cover image for ${this.item.metadata.identifier}">`;
502
+ get placeholder() {
503
+ return html`<div class="placeholder">${this.itemImage}</div>`;
501
504
  }
502
505
 
503
506
  render() {
504
- const placeholder = this.bookReaderCannotLoad ? this.itemImage : this.loader;
505
- return html`<div id="book-navigator" class="${this.loadingClass}">
506
- ${placeholder}
507
- <slot name="main"></slot>
507
+ return html`<div id="book-navigator__root">
508
+ ${this.bookReaderCannotLoad ? this.placeholder : nothing}
509
+ ${!this.bookReaderCannotLoad ? html`<slot name="main"></slot>` : nothing}
508
510
  </div>
509
511
  `;
510
512
  }
@@ -512,13 +514,20 @@ export class BookNavigator extends LitElement {
512
514
  static get styles() {
513
515
  return css`
514
516
  :host,
515
- #book-navigator,
517
+ #book-navigator__root,
516
518
  slot,
517
519
  slot > * {
518
520
  display: block;
519
521
  height: inherit;
520
522
  width: inherit;
521
523
  }
524
+ .placeholder {
525
+ display: flex;
526
+ align-items: center;
527
+ justify-content: center;
528
+ flex-direction: column;
529
+ margin: 5%;
530
+ }
522
531
  .cover-img {
523
532
  max-height: 300px;
524
533
  }
@@ -16,7 +16,7 @@ export default class BookmarksProvider {
16
16
  signedIn,
17
17
  bookreader,
18
18
  modal,
19
- onProviderChange
19
+ onProviderChange,
20
20
  } = options;
21
21
 
22
22
  const referrerStr = `referer=${encodeURIComponent(location.href)}`;
@@ -142,9 +142,8 @@ class IABookmarks extends LitElement {
142
142
  if (this.displayMode === 'login') {
143
143
  return;
144
144
  }
145
- this.updateDisplay();
146
- this.setBREventListeners();
147
145
  this.fetchUserBookmarks();
146
+ this.setBREventListeners();
148
147
  }
149
148
 
150
149
  updateDisplay() {
@@ -154,6 +153,9 @@ class IABookmarks extends LitElement {
154
153
  }
155
154
 
156
155
  fetchUserBookmarks() {
156
+ if (!this.api.identifier) {
157
+ return;
158
+ }
157
159
  this.fetchBookmarks()
158
160
  .then(() => {
159
161
  this.initializeBookmarks();
@@ -228,7 +230,7 @@ class IABookmarks extends LitElement {
228
230
  }
229
231
 
230
232
  fetchBookmarks() {
231
- return this.api.getAll().then((res) => {
233
+ return this.api.getAll().then(res => res.text()).then((res) => {
232
234
  let response;
233
235
  try {
234
236
  response = JSON.parse(res);
@@ -111,11 +111,6 @@ describe('<book-navigator>', () => {
111
111
 
112
112
  it('creates an item image from metadata', async () => {
113
113
  const el = fixtureSync(container());
114
- el.item = {
115
- metadata: { identifier: 'foo' },
116
- };
117
- await elementUpdated(el);
118
-
119
114
  const itemImage = fixtureSync(el.itemImage);
120
115
  expect(itemImage).to.be.instanceOf(HTMLImageElement);
121
116
  expect(itemImage.getAttribute('class')).to.equal('cover-img');
@@ -0,0 +1,57 @@
1
+ import {
2
+ html,
3
+ fixtureSync,
4
+ expect,
5
+ fixtureCleanup,
6
+ } from '@open-wc/testing';
7
+ import '../../../../src/BookNavigator/bookmarks/ia-bookmarks.js';
8
+ import sinon from 'sinon';
9
+
10
+ afterEach(() => {
11
+ sinon.restore();
12
+ fixtureCleanup();
13
+ });
14
+
15
+ describe('<ia-bookmarks>', () => {
16
+ it('uses `setup` to start component', async () => {
17
+ const el = fixtureSync(html`<ia-bookmarks></ia-bookmarks>`);
18
+ await el.updateComplete;
19
+
20
+ let fetchHappened = false;
21
+ el.bookreader.bookId = 'foo';
22
+ el.displayMode = 'bookmarks';
23
+
24
+ el.fetchBookmarks = async () => {
25
+ fetchHappened = true;
26
+ return await Promise.resolve();
27
+ };
28
+
29
+ const fetchSpy = sinon.spy(el, 'fetchUserBookmarks');
30
+
31
+ el.setup();
32
+ await el.updateComplete;
33
+
34
+ expect(fetchSpy.callCount).to.equal(1);
35
+ expect(fetchHappened).to.equal(true);
36
+ });
37
+ it('does not fetch user bookmarks if displayMode = login', async () => {
38
+ const el = fixtureSync(html`<ia-bookmarks></ia-bookmarks>`);
39
+ await el.updateComplete;
40
+
41
+ let fetchHappened = false;
42
+ el.displayMode = 'login';
43
+
44
+ el.fetchBookmarks = async () => {
45
+ fetchHappened = true;
46
+ return await Promise.resolve();
47
+ };
48
+
49
+ const fetchSpy = sinon.spy(el, 'fetchUserBookmarks');
50
+
51
+ el.setup();
52
+ await el.updateComplete;
53
+
54
+ expect(fetchSpy.callCount).to.equal(0);
55
+ expect(fetchHappened).to.equal(false);
56
+ });
57
+ });