@internetarchive/bookreader 5.0.0-88-alpha.10 → 5.0.0-88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/BookReader/BookReader.css +3 -3
  2. package/BookReader/BookReader.js +1 -1
  3. package/BookReader/BookReader.js.map +1 -1
  4. package/BookReader/ia-bookreader-bundle.js +87 -108
  5. package/BookReader/ia-bookreader-bundle.js.map +1 -1
  6. package/BookReader/plugins/plugin.archive_analytics.js +1 -1
  7. package/BookReader/plugins/plugin.archive_analytics.js.map +1 -1
  8. package/BookReader/plugins/plugin.search.js +1 -1
  9. package/BookReader/plugins/plugin.search.js.map +1 -1
  10. package/BookReader/plugins/plugin.text_selection.js +1 -1
  11. package/BookReader/plugins/plugin.text_selection.js.map +1 -1
  12. package/BookReader/plugins/plugin.tts.js +1 -1
  13. package/BookReader/plugins/plugin.tts.js.map +1 -1
  14. package/BookReader/plugins/plugin.url.js +1 -1
  15. package/BookReader/plugins/plugin.url.js.map +1 -1
  16. package/CHANGELOG.md +4 -0
  17. package/babel.config.js +12 -30
  18. package/jsconfig.json +1 -3
  19. package/package.json +14 -16
  20. package/src/BookNavigator/search/search-results.js +1 -1
  21. package/src/BookReader/Mode1UpLit.js +56 -86
  22. package/src/BookReader/Mode2UpLit.js +2 -3
  23. package/src/BookReader/Navbar/Navbar.js +53 -11
  24. package/src/BookReader/options.js +3 -0
  25. package/src/BookReader.js +49 -1
  26. package/src/BookReaderPlugin.js +28 -0
  27. package/src/css/_BRnav.scss +0 -3
  28. package/src/css/_controls.scss +4 -0
  29. package/src/plugins/plugin.archive_analytics.js +84 -78
  30. package/src/plugins/plugin.chapters.js +17 -22
  31. package/src/plugins/plugin.text_selection.js +1 -1
  32. package/src/plugins/tts/plugin.tts.js +2 -2
  33. package/tests/jest/BookReader/Navbar/Navbar.test.js +16 -3
  34. package/tests/jest/plugins/plugin.archive_analytics.test.js +8 -11
  35. package/dist/esm/BookNavigator/assets/bookmark-colors.js +0 -4
  36. package/dist/esm/BookNavigator/assets/button-base.js +0 -4
  37. package/dist/esm/BookNavigator/assets/ia-logo.js +0 -4
  38. package/dist/esm/BookNavigator/assets/icon_checkmark.js +0 -8
  39. package/dist/esm/BookNavigator/assets/icon_close.js +0 -4
  40. package/dist/esm/BookNavigator/book-navigator.js +0 -612
  41. package/dist/esm/BookNavigator/bookmarks/bookmark-button.js +0 -35
  42. package/dist/esm/BookNavigator/bookmarks/bookmark-edit.js +0 -78
  43. package/dist/esm/BookNavigator/bookmarks/bookmarks-list.js +0 -160
  44. package/dist/esm/BookNavigator/bookmarks/bookmarks-loginCTA.js +0 -24
  45. package/dist/esm/BookNavigator/bookmarks/bookmarks-provider.js +0 -55
  46. package/dist/esm/BookNavigator/bookmarks/ia-bookmarks.js +0 -521
  47. package/dist/esm/BookNavigator/delete-modal-actions.js +0 -29
  48. package/dist/esm/BookNavigator/downloads/downloads-provider.js +0 -84
  49. package/dist/esm/BookNavigator/downloads/downloads.js +0 -69
  50. package/dist/esm/BookNavigator/search/search-provider.js +0 -238
  51. package/dist/esm/BookNavigator/search/search-results.js +0 -161
  52. package/dist/esm/BookNavigator/sharing.js +0 -26
  53. package/dist/esm/BookNavigator/viewable-files.js +0 -94
  54. package/dist/esm/BookNavigator/visual-adjustments/visual-adjustments-provider.js +0 -83
  55. package/dist/esm/BookNavigator/visual-adjustments/visual-adjustments.js +0 -131
  56. package/dist/esm/BookReader/BookModel.js +0 -575
  57. package/dist/esm/BookReader/DragScrollable.js +0 -224
  58. package/dist/esm/BookReader/ImageCache.js +0 -122
  59. package/dist/esm/BookReader/Mode1Up.js +0 -114
  60. package/dist/esm/BookReader/Mode1UpLit.js +0 -579
  61. package/dist/esm/BookReader/Mode2Up.js +0 -106
  62. package/dist/esm/BookReader/Mode2UpLit.js +0 -1020
  63. package/dist/esm/BookReader/ModeCoordinateSpace.js +0 -28
  64. package/dist/esm/BookReader/ModeSmoothZoom.js +0 -318
  65. package/dist/esm/BookReader/ModeThumb.js +0 -366
  66. package/dist/esm/BookReader/Navbar/Navbar.js +0 -253
  67. package/dist/esm/BookReader/PageContainer.js +0 -165
  68. package/dist/esm/BookReader/ReduceSet.js +0 -27
  69. package/dist/esm/BookReader/Toolbar/Toolbar.js +0 -242
  70. package/dist/esm/BookReader/events.js +0 -20
  71. package/dist/esm/BookReader/options.js +0 -331
  72. package/dist/esm/BookReader/utils/HTMLDimensionsCacher.js +0 -48
  73. package/dist/esm/BookReader/utils/ScrollClassAdder.js +0 -31
  74. package/dist/esm/BookReader/utils/SelectionObserver.js +0 -42
  75. package/dist/esm/BookReader/utils/classes.js +0 -37
  76. package/dist/esm/BookReader/utils.js +0 -315
  77. package/dist/esm/BookReader.js +0 -1827
  78. package/dist/esm/assets/icons/1up.svg +0 -12
  79. package/dist/esm/assets/icons/2up.svg +0 -15
  80. package/dist/esm/assets/icons/advance.svg +0 -26
  81. package/dist/esm/assets/icons/chevron-right.svg +0 -1
  82. package/dist/esm/assets/icons/close-circle-dark.svg +0 -1
  83. package/dist/esm/assets/icons/close-circle.svg +0 -1
  84. package/dist/esm/assets/icons/fullscreen.svg +0 -17
  85. package/dist/esm/assets/icons/fullscreen_exit.svg +0 -17
  86. package/dist/esm/assets/icons/hamburger.svg +0 -15
  87. package/dist/esm/assets/icons/left-arrow.svg +0 -12
  88. package/dist/esm/assets/icons/magnify-minus.svg +0 -12
  89. package/dist/esm/assets/icons/magnify-plus.svg +0 -13
  90. package/dist/esm/assets/icons/magnify.svg +0 -15
  91. package/dist/esm/assets/icons/pause.svg +0 -23
  92. package/dist/esm/assets/icons/play.svg +0 -22
  93. package/dist/esm/assets/icons/playback-speed.svg +0 -34
  94. package/dist/esm/assets/icons/read-aloud.svg +0 -22
  95. package/dist/esm/assets/icons/review.svg +0 -22
  96. package/dist/esm/assets/icons/thumbnails.svg +0 -17
  97. package/dist/esm/assets/icons/voice.svg +0 -1
  98. package/dist/esm/assets/icons/volume-full.svg +0 -22
  99. package/dist/esm/assets/images/BRicons.png +0 -0
  100. package/dist/esm/assets/images/BRicons.svg +0 -94
  101. package/dist/esm/assets/images/BRicons_ia.png +0 -0
  102. package/dist/esm/assets/images/back_pages.png +0 -0
  103. package/dist/esm/assets/images/book_bottom_icon.png +0 -0
  104. package/dist/esm/assets/images/book_down_icon.png +0 -0
  105. package/dist/esm/assets/images/book_left_icon.png +0 -0
  106. package/dist/esm/assets/images/book_leftmost_icon.png +0 -0
  107. package/dist/esm/assets/images/book_right_icon.png +0 -0
  108. package/dist/esm/assets/images/book_rightmost_icon.png +0 -0
  109. package/dist/esm/assets/images/book_top_icon.png +0 -0
  110. package/dist/esm/assets/images/book_up_icon.png +0 -0
  111. package/dist/esm/assets/images/books_graphic.svg +0 -177
  112. package/dist/esm/assets/images/booksplit.png +0 -0
  113. package/dist/esm/assets/images/control_pause_icon.png +0 -0
  114. package/dist/esm/assets/images/control_play_icon.png +0 -0
  115. package/dist/esm/assets/images/embed_icon.png +0 -0
  116. package/dist/esm/assets/images/icon-home-ia.png +0 -0
  117. package/dist/esm/assets/images/icon_OL-logo-xs.png +0 -0
  118. package/dist/esm/assets/images/icon_alert-xs.png +0 -0
  119. package/dist/esm/assets/images/icon_book.svg +0 -12
  120. package/dist/esm/assets/images/icon_bookmark.svg +0 -12
  121. package/dist/esm/assets/images/icon_close-pop.png +0 -0
  122. package/dist/esm/assets/images/icon_download.png +0 -0
  123. package/dist/esm/assets/images/icon_gear.svg +0 -14
  124. package/dist/esm/assets/images/icon_hamburger.svg +0 -20
  125. package/dist/esm/assets/images/icon_home.png +0 -0
  126. package/dist/esm/assets/images/icon_home.svg +0 -21
  127. package/dist/esm/assets/images/icon_home_ia.png +0 -0
  128. package/dist/esm/assets/images/icon_indicator.png +0 -0
  129. package/dist/esm/assets/images/icon_info.svg +0 -11
  130. package/dist/esm/assets/images/icon_one_page.svg +0 -8
  131. package/dist/esm/assets/images/icon_pause.svg +0 -1
  132. package/dist/esm/assets/images/icon_play.svg +0 -1
  133. package/dist/esm/assets/images/icon_playback-rate.svg +0 -15
  134. package/dist/esm/assets/images/icon_return.png +0 -0
  135. package/dist/esm/assets/images/icon_search_button.svg +0 -8
  136. package/dist/esm/assets/images/icon_share.svg +0 -9
  137. package/dist/esm/assets/images/icon_skip-ahead.svg +0 -6
  138. package/dist/esm/assets/images/icon_skip-back.svg +0 -13
  139. package/dist/esm/assets/images/icon_speaker.svg +0 -18
  140. package/dist/esm/assets/images/icon_speaker_open.svg +0 -10
  141. package/dist/esm/assets/images/icon_thumbnails.svg +0 -12
  142. package/dist/esm/assets/images/icon_toc.svg +0 -5
  143. package/dist/esm/assets/images/icon_two_pages.svg +0 -9
  144. package/dist/esm/assets/images/icon_zoomer.png +0 -0
  145. package/dist/esm/assets/images/loading.gif +0 -0
  146. package/dist/esm/assets/images/logo_icon.png +0 -0
  147. package/dist/esm/assets/images/marker_chap-off.png +0 -0
  148. package/dist/esm/assets/images/marker_chap-off.svg +0 -11
  149. package/dist/esm/assets/images/marker_chap-off_ia.png +0 -0
  150. package/dist/esm/assets/images/marker_chap-on.png +0 -0
  151. package/dist/esm/assets/images/marker_chap-on.svg +0 -11
  152. package/dist/esm/assets/images/marker_srch-on.svg +0 -11
  153. package/dist/esm/assets/images/marker_srchchap-off.png +0 -0
  154. package/dist/esm/assets/images/marker_srchchap-on.png +0 -0
  155. package/dist/esm/assets/images/nav_control-dn.png +0 -0
  156. package/dist/esm/assets/images/nav_control-dn_ia.png +0 -0
  157. package/dist/esm/assets/images/nav_control-up.png +0 -0
  158. package/dist/esm/assets/images/nav_control-up_ia.png +0 -0
  159. package/dist/esm/assets/images/nav_control.png +0 -0
  160. package/dist/esm/assets/images/one_page_mode_icon.png +0 -0
  161. package/dist/esm/assets/images/paper-badge.png +0 -0
  162. package/dist/esm/assets/images/print_icon.png +0 -0
  163. package/dist/esm/assets/images/progressbar.gif +0 -0
  164. package/dist/esm/assets/images/right_edges.png +0 -0
  165. package/dist/esm/assets/images/slider.png +0 -0
  166. package/dist/esm/assets/images/slider_ia.png +0 -0
  167. package/dist/esm/assets/images/thumbnail_mode_icon.png +0 -0
  168. package/dist/esm/assets/images/transparent.png +0 -0
  169. package/dist/esm/assets/images/two_page_mode_icon.png +0 -0
  170. package/dist/esm/assets/images/unviewable_page.png +0 -0
  171. package/dist/esm/assets/images/zoom_in_icon.png +0 -0
  172. package/dist/esm/assets/images/zoom_out_icon.png +0 -0
  173. package/dist/esm/css/BookReader.scss +0 -85
  174. package/dist/esm/css/_BRBookmarks.scss +0 -29
  175. package/dist/esm/css/_BRComponent.scss +0 -13
  176. package/dist/esm/css/_BRfloat.scss +0 -197
  177. package/dist/esm/css/_BRicon.scss +0 -54
  178. package/dist/esm/css/_BRmain.scss +0 -262
  179. package/dist/esm/css/_BRnav.scss +0 -354
  180. package/dist/esm/css/_BRpages.scss +0 -213
  181. package/dist/esm/css/_BRsearch.scss +0 -268
  182. package/dist/esm/css/_BRtoolbar.scss +0 -84
  183. package/dist/esm/css/_BRvendor.scss +0 -5
  184. package/dist/esm/css/_TextSelection.scss +0 -108
  185. package/dist/esm/css/_colorbox.scss +0 -52
  186. package/dist/esm/css/_controls.scss +0 -257
  187. package/dist/esm/css/_icons.scss +0 -121
  188. package/dist/esm/ia-bookreader/ia-bookreader.js +0 -141
  189. package/dist/esm/jquery-wrapper.js +0 -3
  190. package/dist/esm/plugins/plugin.archive_analytics.js +0 -72
  191. package/dist/esm/plugins/plugin.autoplay.js +0 -119
  192. package/dist/esm/plugins/plugin.chapters.js +0 -288
  193. package/dist/esm/plugins/plugin.iframe.js +0 -44
  194. package/dist/esm/plugins/plugin.iiif.js +0 -146
  195. package/dist/esm/plugins/plugin.resume.js +0 -66
  196. package/dist/esm/plugins/plugin.text_selection.js +0 -621
  197. package/dist/esm/plugins/plugin.vendor-fullscreen.js +0 -227
  198. package/dist/esm/plugins/search/plugin.search.js +0 -499
  199. package/dist/esm/plugins/search/utils.js +0 -42
  200. package/dist/esm/plugins/search/view.js +0 -360
  201. package/dist/esm/plugins/tts/AbstractTTSEngine.js +0 -282
  202. package/dist/esm/plugins/tts/FestivalTTSEngine.js +0 -192
  203. package/dist/esm/plugins/tts/PageChunk.js +0 -105
  204. package/dist/esm/plugins/tts/PageChunkIterator.js +0 -155
  205. package/dist/esm/plugins/tts/WebTTSEngine.js +0 -364
  206. package/dist/esm/plugins/tts/plugin.tts.js +0 -315
  207. package/dist/esm/plugins/tts/tooltip_dict.js +0 -14
  208. package/dist/esm/plugins/tts/utils.js +0 -79
  209. package/dist/esm/plugins/url/UrlPlugin.js +0 -197
  210. package/dist/esm/plugins/url/plugin.url.js +0 -212
  211. package/dist/esm/util/browserSniffing.js +0 -56
  212. package/dist/esm/util/debouncer.js +0 -25
  213. package/dist/esm/util/docCookies.js +0 -75
  214. package/dist/esm/util/strings.js +0 -34
  215. package/index.js +0 -2
@@ -1,612 +0,0 @@
1
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
2
- function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
- // eslint-disable-next-line no-unused-vars
9
- import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
10
- // eslint-disable-next-line no-unused-vars
11
- import { ModalManager } from '@internetarchive/modal-manager';
12
- import { css, html, LitElement, nothing } from 'lit';
13
- import SearchProvider from './search/search-provider.js';
14
- import DownloadProvider from './downloads/downloads-provider.js';
15
- import VisualAdjustmentProvider from './visual-adjustments/visual-adjustments-provider.js';
16
- import BookmarksProvider from './bookmarks/bookmarks-provider.js';
17
- import SharingProvider from './sharing.js';
18
- import ViewableFilesProvider from './viewable-files.js';
19
- import iaLogo from './assets/ia-logo.js';
20
- var events = {
21
- menuUpdated: 'menuUpdated',
22
- updateSideMenu: 'updateSideMenu',
23
- PostInit: 'PostInit',
24
- ViewportInFullScreen: 'ViewportInFullScreen'
25
- };
26
- export class BookNavigator extends LitElement {
27
- static get properties() {
28
- return {
29
- itemMD: {
30
- type: Object
31
- },
32
- bookReaderLoaded: {
33
- type: Boolean
34
- },
35
- bookreader: {
36
- type: Object
37
- },
38
- bookIsRestricted: {
39
- type: Boolean
40
- },
41
- downloadableTypes: {
42
- type: Array
43
- },
44
- isAdmin: {
45
- type: Boolean
46
- },
47
- lendingInitialized: {
48
- type: Boolean
49
- },
50
- lendingStatus: {
51
- type: Object
52
- },
53
- menuProviders: {
54
- type: Object
55
- },
56
- menuShortcuts: {
57
- type: Array
58
- },
59
- signedIn: {
60
- type: Boolean
61
- },
62
- loaded: {
63
- type: Boolean
64
- },
65
- sharedObserver: {
66
- type: Object,
67
- attribute: false
68
- },
69
- modal: {
70
- type: Object,
71
- attribute: false
72
- },
73
- fullscreenBranding: {
74
- type: Object
75
- }
76
- };
77
- }
78
- constructor() {
79
- super();
80
- this.itemMD = undefined;
81
- this.loaded = false;
82
- this.bookReaderCannotLoad = false;
83
- this.bookReaderLoaded = false;
84
- this.bookreader = null;
85
- this.bookIsRestricted = false;
86
- this.downloadableTypes = [];
87
- this.isAdmin = false;
88
- this.lendingInitialized = false;
89
- this.lendingStatus = {};
90
- this.menuProviders = {};
91
- this.menuShortcuts = [];
92
- this.signedIn = false;
93
- /** @type {ModalManager} */
94
- this.modal = undefined;
95
- /** @type {SharedResizeObserver} */
96
- this.sharedObserver = undefined;
97
- this.fullscreenBranding = iaLogo;
98
- // Untracked properties
99
- this.sharedObserverHandler = undefined;
100
- this.brWidth = 0;
101
- this.brHeight = 0;
102
- this.shortcutOrder = [
103
- /**
104
- * sets exit FS button (`this.fullscreenBranding1)
105
- * when `br.options.enableFSLogoShortcut`
106
- */
107
- 'fullscreen', 'volumes', 'chapters', 'search', 'bookmarks'];
108
- }
109
- disconnectedCallback() {
110
- this.sharedObserver.removeObserver({
111
- target: this.mainBRContainer,
112
- handler: this.sharedObserverHandler
113
- });
114
- }
115
- firstUpdated() {
116
- this.bindEventListeners();
117
- this.emitPostInit();
118
- this.loaded = true;
119
- }
120
- updated(changed) {
121
- if (!this.bookreader || !this.itemMD || !this.bookReaderLoaded) {
122
- return;
123
- }
124
- var reload = changed.has('loaded') && this.loaded;
125
- if (reload || changed.has('itemMD') || changed.has('bookreader') || changed.has('signedIn') || changed.has('isAdmin') || changed.has('modal')) {
126
- this.initializeBookSubmenus();
127
- }
128
- if (changed.has('sharedObserver') && this.bookreader) {
129
- this.loadSharedObserver();
130
- this.initializeBookSubmenus();
131
- }
132
- if (changed.has('downloadableTypes')) {
133
- this.initializeBookSubmenus();
134
- }
135
- }
136
-
137
- /**
138
- * Global event emitter for when Book Navigator loads
139
- */
140
- emitPostInit() {
141
- var _this$bookreader;
142
- // emit global event when book nav has loaded with current bookreader selector
143
- this.dispatchEvent(new CustomEvent("BrBookNav:".concat(events.PostInit), {
144
- detail: {
145
- brSelector: (_this$bookreader = this.bookreader) === null || _this$bookreader === void 0 ? void 0 : _this$bookreader.el
146
- },
147
- bubbles: true,
148
- composed: true
149
- }));
150
- }
151
-
152
- /**
153
- * @typedef {{
154
- * baseHost: string,
155
- * modal: ModalManager,
156
- * sharedObserver: SharedResizeObserver,
157
- * bookreader: BookReader,
158
- * item: Item,
159
- * signedIn: boolean,
160
- * isAdmin: boolean,
161
- * onProviderChange: (BookReader, object) => void,
162
- * }} baseProviderConfig
163
- *
164
- * @return {baseProviderConfig}
165
- */
166
- get baseProviderConfig() {
167
- return {
168
- baseHost: this.baseHost,
169
- modal: this.modal,
170
- sharedObserver: this.sharedObserver,
171
- bookreader: this.bookreader,
172
- item: this.itemMD,
173
- signedIn: this.signedIn,
174
- isAdmin: this.isAdmin,
175
- onProviderChange: () => {}
176
- };
177
- }
178
- get isWideEnoughToOpenMenu() {
179
- return this.brWidth >= 640;
180
- }
181
- /**
182
- * Instantiates books submenus & their update callbacks
183
- *
184
- * NOTE: we are doing our best to scope bookreader's instance.
185
- * If your submenu provider uses a bookreader instance to read, manually
186
- * manipulate BookReader, please update the navigator's instance of it
187
- * to keep it in sync.
188
- */
189
- initializeBookSubmenus() {
190
- var _this = this;
191
- var providers = {
192
- visualAdjustments: new VisualAdjustmentProvider(_objectSpread(_objectSpread({}, this.baseProviderConfig), {}, {
193
- /** Update menu contents */
194
- onProviderChange: () => {
195
- this.updateMenuContents();
196
- }
197
- }))
198
- };
199
- if (this.baseProviderConfig.item) {
200
- // Share options currently rely on IA item metadata
201
- providers.share = new SharingProvider(this.baseProviderConfig);
202
- }
203
- if (this.shouldShowDownloadsMenu()) {
204
- providers.downloads = new DownloadProvider(this.baseProviderConfig);
205
- }
206
- if (this.bookreader.options.enableSearch) {
207
- providers.search = new SearchProvider(_objectSpread(_objectSpread({}, this.baseProviderConfig), {}, {
208
- /**
209
- * Search specific menu updates
210
- * @param {BookReader} brInstance
211
- * @param {{ searchCanceled: boolean }} searchUpdates
212
- */
213
- onProviderChange: function onProviderChange() {
214
- var brInstance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
215
- var searchUpdates = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
216
- if (brInstance) {
217
- /* refresh br instance reference */
218
- _this.bookreader = brInstance;
219
- }
220
- _this.updateMenuContents();
221
- if (searchUpdates.openMenu === false) {
222
- return;
223
- }
224
- if (_this.isWideEnoughToOpenMenu && !(searchUpdates !== null && searchUpdates !== void 0 && searchUpdates.searchCanceled)) {
225
- /* open side search menu */
226
- setTimeout(() => {
227
- _this.updateSideMenu('search', 'open');
228
- }, 0);
229
- }
230
- }
231
- }));
232
- }
233
- if (this.bookreader.options.enableBookmarks) {
234
- providers.bookmarks = new BookmarksProvider(_objectSpread(_objectSpread({}, this.baseProviderConfig), {}, {
235
- onProviderChange: bookmarks => {
236
- var method = Object.keys(bookmarks).length ? 'add' : 'remove';
237
- this["".concat(method, "MenuShortcut")]('bookmarks');
238
- this.updateMenuContents();
239
- }
240
- }));
241
- }
242
-
243
- // add shortcut for volumes if multipleBooksList exists
244
- if (this.bookreader.options.enableMultipleBooks) {
245
- providers.volumes = new ViewableFilesProvider(_objectSpread(_objectSpread({}, this.baseProviderConfig), {}, {
246
- onProviderChange: function onProviderChange() {
247
- var brInstance = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
248
- var volumesUpdates = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
249
- if (brInstance) {
250
- /* refresh br instance reference */
251
- _this.bookreader = brInstance;
252
- }
253
- _this.updateMenuContents();
254
- if (_this.isWideEnoughToOpenMenu) {
255
- /* open side search menu */
256
- setTimeout(() => {
257
- _this.updateSideMenu('volumes', 'open');
258
- });
259
- }
260
- }
261
- }));
262
- }
263
- Object.assign(this.menuProviders, providers);
264
- this.addMenuShortcut('search');
265
- this.addMenuShortcut('volumes');
266
- this.updateMenuContents();
267
- }
268
-
269
- /** gets element that houses the bookreader in light dom */
270
- get mainBRContainer() {
271
- var _this$bookreader2;
272
- return document.querySelector((_this$bookreader2 = this.bookreader) === null || _this$bookreader2 === void 0 ? void 0 : _this$bookreader2.el);
273
- }
274
-
275
- /** Fullscreen Shortcut */
276
- addFullscreenShortcut() {
277
- var closeFS = {
278
- icon: this.fullscreenShortcut,
279
- id: 'fullscreen'
280
- };
281
- this.menuShortcuts.push(closeFS);
282
- this.sortMenuShortcuts();
283
- this.emitMenuShortcutsUpdated();
284
- }
285
- deleteFullscreenShortcut() {
286
- var updatedShortcuts = this.menuShortcuts.filter(_ref => {
287
- var {
288
- id
289
- } = _ref;
290
- return id !== 'fullscreen';
291
- });
292
- this.menuShortcuts = updatedShortcuts;
293
- this.sortMenuShortcuts();
294
- this.emitMenuShortcutsUpdated();
295
- }
296
- closeFullscreen() {
297
- this.bookreader.exitFullScreen();
298
- }
299
- get fullscreenShortcut() {
300
- return html(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n <button\n @click=", "\n title=\"Exit fullscreen view\"\n >", "</button>\n "])), () => this.closeFullscreen(), this.fullscreenBranding);
301
- }
302
- /** End Fullscreen Shortcut */
303
-
304
- /**
305
- * Open side menu
306
- * @param {string} menuId
307
- * @param {('open'|'close'|'toggle')} action
308
- */
309
- updateSideMenu() {
310
- var menuId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
311
- var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'open';
312
- if (!menuId) {
313
- return;
314
- }
315
- var event = new CustomEvent(events.updateSideMenu, {
316
- detail: {
317
- menuId,
318
- action
319
- }
320
- });
321
- this.dispatchEvent(event);
322
- }
323
-
324
- /**
325
- * Sets order of menu and emits custom event when done
326
- */
327
- updateMenuContents() {
328
- var {
329
- search,
330
- downloads,
331
- visualAdjustments,
332
- share,
333
- bookmarks,
334
- volumes,
335
- chapters
336
- } = this.menuProviders;
337
- var availableMenus = [volumes, chapters, search, bookmarks, visualAdjustments, share].filter(menu => !!menu);
338
- if (this.shouldShowDownloadsMenu()) {
339
- downloads === null || downloads === void 0 || downloads.update(this.downloadableTypes);
340
- availableMenus.splice(-2, 0, downloads);
341
- }
342
- var event = new CustomEvent(events.menuUpdated, {
343
- detail: availableMenus
344
- });
345
- this.dispatchEvent(event);
346
- }
347
-
348
- /**
349
- * Confirms if we should show the downloads menu
350
- * @returns {bool}
351
- */
352
- shouldShowDownloadsMenu() {
353
- if (!this.downloadableTypes.length) {
354
- return false;
355
- }
356
- if (this.bookIsRestricted === false) {
357
- return true;
358
- }
359
- if (this.isAdmin) {
360
- return true;
361
- }
362
- var {
363
- user_loan_record = {}
364
- } = this.lendingStatus;
365
- var hasNoLoanRecord = Array.isArray(user_loan_record); /* (bc PHP assoc. arrays) */
366
-
367
- if (hasNoLoanRecord) {
368
- return false;
369
- }
370
- var hasValidLoan = user_loan_record.type && user_loan_record.type !== 'SESSION_LOAN';
371
- return hasValidLoan;
372
- }
373
-
374
- /**
375
- * Adds a provider object to the menuShortcuts array property if it isn't
376
- * already added. menuShortcuts are then sorted by shortcutOrder and
377
- * a menuShortcutsUpdated event is emitted.
378
- *
379
- * @param {string} menuId - a string matching the id property of a provider
380
- */
381
- addMenuShortcut(menuId) {
382
- if (this.menuShortcuts.find(m => m.id === menuId)) {
383
- // menu is already there
384
- return;
385
- }
386
- if (!this.menuProviders[menuId]) {
387
- // no provider for this menu
388
- return;
389
- }
390
- this.menuShortcuts.push(this.menuProviders[menuId]);
391
- this.sortMenuShortcuts();
392
- this.emitMenuShortcutsUpdated();
393
- }
394
-
395
- /**
396
- * Removes a provider object from the menuShortcuts array and emits a
397
- * menuShortcutsUpdated event.
398
- *
399
- * @param {string} menuId - a string matching the id property of a provider
400
- */
401
- removeMenuShortcut(menuId) {
402
- this.menuShortcuts = this.menuShortcuts.filter(m => m.id !== menuId);
403
- this.emitMenuShortcutsUpdated();
404
- }
405
-
406
- /**
407
- * Sorts the menuShortcuts property by comparing each provider's id to
408
- * the id in each iteration over the shortcutOrder array.
409
- */
410
- sortMenuShortcuts() {
411
- this.menuShortcuts = this.shortcutOrder.reduce((shortcuts, id) => {
412
- var menu = this.menuShortcuts.find(m => m.id === id);
413
- if (menu) {
414
- shortcuts.push(menu);
415
- }
416
- return shortcuts;
417
- }, []);
418
- }
419
- emitMenuShortcutsUpdated() {
420
- var event = new CustomEvent('menuShortcutsUpdated', {
421
- detail: this.menuShortcuts
422
- });
423
- this.dispatchEvent(event);
424
- }
425
- emitLoadingStatusUpdate(loaded) {
426
- var event = new CustomEvent('loadingStateUpdated', {
427
- detail: {
428
- loaded
429
- }
430
- });
431
- this.dispatchEvent(event);
432
- }
433
-
434
- /**
435
- * Core bookreader event handler registry
436
- *
437
- * NOTE: we are trying to keep bookreader's instance in scope
438
- * Please update Book Navigator's instance reference of it to keep it current
439
- */
440
- bindEventListeners() {
441
- window.addEventListener('BookReader:PostInit', e => {
442
- this.bookreader = e.detail.props;
443
- this.bookreader.shell = this;
444
- this.bookReaderLoaded = true;
445
- this.bookReaderCannotLoad = false;
446
- this.emitLoadingStatusUpdate(true);
447
- this.loadSharedObserver();
448
- setTimeout(() => {
449
- this.bookreader.resize();
450
- }, 0);
451
- });
452
- window.addEventListener('BookReader:fullscreenToggled', event => {
453
- var {
454
- detail: {
455
- props: brInstance = null
456
- }
457
- } = event;
458
- if (brInstance) {
459
- this.bookreader = brInstance;
460
- }
461
- this.manageFullScreenBehavior();
462
- }, {
463
- passive: true
464
- });
465
- window.addEventListener('BookReader:ToggleSearchMenu', event => {
466
- this.dispatchEvent(new CustomEvent(events.updateSideMenu, {
467
- detail: {
468
- menuId: 'search',
469
- action: 'toggle'
470
- }
471
- }));
472
- });
473
- window.addEventListener('LendingFlow:PostInit', _ref2 => {
474
- var {
475
- detail
476
- } = _ref2;
477
- var {
478
- downloadTypesAvailable,
479
- lendingStatus,
480
- isAdmin,
481
- previewType
482
- } = detail;
483
- this.lendingInitialized = true;
484
- this.downloadableTypes = downloadTypesAvailable;
485
- this.lendingStatus = lendingStatus;
486
- this.isAdmin = isAdmin;
487
- this.bookReaderCannotLoad = previewType === 'singlePagePreview';
488
- this.emitLoadingStatusUpdate(true);
489
- });
490
- window.addEventListener('BRJSIA:PostInit', _ref3 => {
491
- var {
492
- detail
493
- } = _ref3;
494
- var {
495
- isRestricted,
496
- downloadURLs
497
- } = detail;
498
- this.bookReaderLoaded = true;
499
- this.downloadableTypes = downloadURLs;
500
- this.bookIsRestricted = isRestricted;
501
- });
502
- window.addEventListener('contextmenu', e => this.manageContextMenuVisibility(e), {
503
- capture: true
504
- });
505
- }
506
-
507
- /** Display an element's context menu */
508
- manageContextMenuVisibility(e) {
509
- var _window$archive_analy, _e$target;
510
- (_window$archive_analy = window.archive_analytics) === null || _window$archive_analy === void 0 || _window$archive_analy.send_event('BookReader', "contextmenu-".concat(this.bookIsRestricted ? 'restricted' : 'unrestricted'), (_e$target = e.target) === null || _e$target === void 0 || (_e$target = _e$target.classList) === null || _e$target === void 0 ? void 0 : _e$target.value);
511
- if (!this.bookIsRestricted) {
512
- return;
513
- }
514
- var imagePane = e.target.classList.value.match(/BRscreen|BRpageimage/g);
515
- if (!imagePane) {
516
- return;
517
- }
518
- e.preventDefault();
519
- return false;
520
- }
521
- loadSharedObserver() {
522
- var _this$sharedObserver;
523
- this.sharedObserverHandler = {
524
- handleResize: this.handleResize.bind(this)
525
- };
526
- (_this$sharedObserver = this.sharedObserver) === null || _this$sharedObserver === void 0 || _this$sharedObserver.addObserver({
527
- target: this.mainBRContainer,
528
- handler: this.sharedObserverHandler
529
- });
530
- }
531
-
532
- /**
533
- * Uses resize observer to fire BookReader's `resize` functionality
534
- * We do not want to trigger resize IF:
535
- * - book animation is happening
536
- * - book is in fullscreen (fullscreen is handled separately)
537
- *
538
- * @param { target: HTMLElement, contentRect: DOMRectReadOnly } entry
539
- */
540
- handleResize(_ref4) {
541
- var {
542
- contentRect,
543
- target
544
- } = _ref4;
545
- var startBrWidth = this.brWidth;
546
- var startBrHeight = this.brHeight;
547
- var {
548
- animating
549
- } = this.bookreader;
550
- if (target === this.mainBRContainer) {
551
- this.brWidth = contentRect.width;
552
- this.brHeight = contentRect.height;
553
- }
554
- if (!startBrWidth && this.brWidth) {
555
- // loading up, let's update side menus
556
- this.initializeBookSubmenus();
557
- }
558
- var widthChange = startBrWidth !== this.brWidth;
559
- var heightChange = startBrHeight !== this.brHeight;
560
- if (!animating && (widthChange || heightChange)) {
561
- var _this$bookreader3;
562
- (_this$bookreader3 = this.bookreader) === null || _this$bookreader3 === void 0 || _this$bookreader3.resize();
563
- }
564
- }
565
-
566
- /**
567
- * Manages Fullscreen behavior
568
- * This makes sure that controls are _always_ in view
569
- * We need this to accommodate LOAN BAR during fullscreen
570
- */
571
- manageFullScreenBehavior() {
572
- this.emitFullScreenState();
573
- if (!this.bookreader.options.enableFSLogoShortcut) {
574
- return;
575
- }
576
- var isFullScreen = this.bookreader.isFullscreen();
577
- if (isFullScreen) {
578
- this.addFullscreenShortcut();
579
- } else {
580
- this.deleteFullscreenShortcut();
581
- }
582
- }
583
-
584
- /**
585
- * Relays fullscreen toggle events
586
- */
587
- emitFullScreenState() {
588
- var isFullScreen = this.bookreader.isFullscreen();
589
- var event = new CustomEvent('ViewportInFullScreen', {
590
- detail: {
591
- isFullScreen
592
- }
593
- });
594
- this.dispatchEvent(event);
595
- }
596
- get itemImage() {
597
- var _this$itemMD;
598
- var identifier = (_this$itemMD = this.itemMD) === null || _this$itemMD === void 0 ? void 0 : _this$itemMD.metadata.identifier;
599
- var url = "https://".concat(this.baseHost, "/services/img/").concat(identifier);
600
- return html(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["<img class=\"cover-img\" src=", " alt=\"cover image for ", "\">"])), url, identifier);
601
- }
602
- get placeholder() {
603
- return html(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["<div class=\"placeholder\">", "</div>"])), this.itemImage);
604
- }
605
- render() {
606
- return html(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["<div id=\"book-navigator__root\">\n ", "\n ", "\n </div>\n "])), this.bookReaderCannotLoad ? this.placeholder : nothing, !this.bookReaderCannotLoad ? html(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["<slot name=\"main\"></slot>"]))) : nothing);
607
- }
608
- static get styles() {
609
- return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n :host,\n #book-navigator__root,\n slot,\n slot > * {\n display: block;\n height: inherit;\n width: inherit;\n }\n .placeholder {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n margin: 5%;\n }\n .cover-img {\n max-height: 300px;\n }\n "])));
610
- }
611
- }
612
- customElements.define('book-navigator', BookNavigator);
@@ -1,35 +0,0 @@
1
- var _templateObject, _templateObject2;
2
- function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
3
- import { LitElement, html, css } from 'lit';
4
- export default class BookmarkButton extends LitElement {
5
- static get styles() {
6
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n button {\n -webkit-appearance: none;\n appearance: none;\n outline: 0;\n border: none;\n padding: 0;\n height: 4rem;\n width: 4rem;\n background: transparent;\n cursor: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 0 16 24' width='16'%3E%3Cg fill='%23333' fill-rule='evenodd'%3E%3Cpath d='m15 0c.5522847 0 1 .44771525 1 1v23l-8-5.4545455-8 5.4545455v-23c0-.55228475.44771525-1 1-1zm-2 2h-10c-.51283584 0-.93550716.38604019-.99327227.88337887l-.00672773.11662113v18l6-4.3181818 6 4.3181818v-18c0-.51283584-.3860402-.93550716-.8833789-.99327227z'/%3E%3Cpath d='m8.75 6v2.25h2.25v1.5h-2.25v2.25h-1.5v-2.25h-2.25v-1.5h2.25v-2.25z' fill-rule='nonzero'/%3E%3C/g%3E%3C/svg%3E\"), pointer;\n position: relative;\n }\n button > * {\n display: block;\n position: absolute;\n top: 0.2rem;\n }\n button.left > * {\n left: 0.2rem;\n }\n\n button.right > * {\n right: 0.2rem;\n }\n "])));
7
- }
8
- static get properties() {
9
- return {
10
- side: {
11
- type: String
12
- },
13
- state: {
14
- type: String
15
- }
16
- };
17
- }
18
- constructor() {
19
- super();
20
- this.state = 'hollow';
21
- this.side = undefined;
22
- }
23
- handleClick(e) {
24
- e.preventDefault();
25
- this.dispatchEvent(new CustomEvent('bookmarkButtonClicked'));
26
- }
27
- get title() {
28
- return "".concat(this.state === 'hollow' ? 'Add' : 'Remove', " bookmark");
29
- }
30
- render() {
31
- var position = this.side || 'right';
32
- return html(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n <button title=", " @click=", " class=", ">\n <icon-bookmark state=", "></icon-bookmark>\n </button>\n "])), this.title, this.handleClick, position, this.state);
33
- }
34
- }
35
- customElements.define('bookmark-button', BookmarkButton);