@internetarchive/ia-book-actions 0.1.5-alpha3 → 0.1.5-b1

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.
@@ -0,0 +1,146 @@
1
+ <!doctype html>
2
+ <html lang="en-GB">
3
+
4
+ <head>
5
+ <meta charset="utf-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
7
+ <style>
8
+ html {
9
+ font-size: 10px;
10
+ /* This is to match petabox's base font size */
11
+ }
12
+ body {
13
+ margin: 0;
14
+ text-align: center;
15
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
16
+ }
17
+ #demo {
18
+ height: 50px;
19
+ }
20
+ ia-book-actions {
21
+ --white: #fff;
22
+ --black: #000;
23
+ --primaryBGColor: var(--black);
24
+ --secondaryBGColor: #222;
25
+ --tertiaryBGColor: #333;
26
+ --primaryTextColor: var(--white);
27
+ --primaryCTAFill: #194880;
28
+ --primaryCTABorder: #c5d1df;
29
+ --secondaryCTAFill: #333;
30
+ --secondaryCTABorder: #999;
31
+ --secondaryCTAFillRGB: 51, 51, 51;
32
+ --primaryErrorCTAFill: #e51c26;
33
+ --primaryErrorCTABorder: #f8c6c8;
34
+ --primaryCTAFillRGB: 25, 72, 128;
35
+ --primaryErrorCTAFillRGB: 229, 28, 38;
36
+ --primaryDisableCTAFill: #767676;
37
+ }
38
+
39
+ fieldset {
40
+ width: fit-content;
41
+ margin-top: 50px;
42
+ }
43
+ fieldset legend {
44
+ text-align: left;
45
+ font-size: 12px;
46
+ }
47
+ td {
48
+ color: white;
49
+ font-size: 14px;
50
+ border-radius: 5%;
51
+ display: table-cell;
52
+ text-align: initial;
53
+ margin: 5px 0;
54
+ width: max-content;
55
+ display: block;
56
+ }
57
+ label {
58
+ padding: 10px;
59
+ display: block;
60
+ cursor: pointer;
61
+ margin: 2px;
62
+ background: #4e545a;
63
+ border-radius: 10px;
64
+ }
65
+ input[type="radio"], input[type="checkbox"] {
66
+ margin-top: 0;
67
+ vertical-align: middle;
68
+ }
69
+
70
+ .initial td {
71
+ float: left;
72
+ margin: 2px;
73
+ }
74
+
75
+ body.modal-manager-open {
76
+ overflow: hidden;
77
+ }
78
+
79
+ modal-manager[mode='closed'] {
80
+ display: none;
81
+ }
82
+ </style>
83
+ </head>
84
+
85
+ <body>
86
+ <ia-bookreader class="focus-on-child-only" signedin="" fullscreen="">
87
+ <div slot="header">
88
+ <ia-book-actions></ia-book-actions>
89
+ </div>
90
+ <div slot="main">
91
+ <div id="BookReader"></div>
92
+ </div>
93
+ </ia-bookreader>
94
+
95
+
96
+ <script type="module">
97
+ /* eslint-disable */
98
+ import '@internetarchive/bookreader';
99
+ import '@internetarchive/bookreader/BookReader/jquery-1.10.1.js';
100
+ import '@internetarchive/bookreader/BookReader/BookReader.js';
101
+ import '../src/ia-book-actions.js';
102
+ import {
103
+ defaultLendingStatus,
104
+ canBrowseAndBorrow,
105
+ } from '../src/assets/data/lending-get-status-service.js';
106
+ import { ModalConfig } from '@internetarchive/modal-manager';
107
+
108
+ const userid = '@neeraj-archive';
109
+ const identifier = 'naturalhistoryof00unse_4111';
110
+ let bwbPurchaseUrl = 'https://www.betterworldbooks.com/product/detail/cambridge-ancient-hist-v04-0521044863';
111
+
112
+ let iaBookActions = document.querySelector('ia-book-actions');
113
+
114
+ // for debugging
115
+ window.iaBookActions = iaBookActions;
116
+
117
+ const modalConfig = new ModalConfig();
118
+ modalConfig.headerColor = '#d9534f';
119
+
120
+ let lendingBarPostInit = function lendingBarPostInit() {
121
+ setTimeout(function() {
122
+ console.log('executed', 'br.init()');
123
+ }, 100);
124
+ }
125
+
126
+ // set defaultLendingStatus for unavailable (without borrowables) book
127
+ iaBookActions.userid = userid;
128
+ iaBookActions.identifier = identifier;
129
+ iaBookActions.bookTitle = 'Contemporary Black biography. Volume 39 : profiles from the interContemporary Black biography. Volume 39';
130
+ iaBookActions.lendingStatus = canBrowseAndBorrow;
131
+ iaBookActions.bwbPurchaseUrl = '';
132
+ iaBookActions.modalConfig = modalConfig;
133
+ iaBookActions.lendingBarPostInit = lendingBarPostInit;
134
+ iaBookActions.tokenDelay = 2000; // 2 seconds
135
+ iaBookActions.returnUrl = 'https://openlibrary.org';
136
+
137
+ let lendingStatus1 = iaBookActions.lendingStatus;
138
+
139
+ const manifest = await fetch('https://ia801302.us.archive.org/BookReader/BookReaderJSIA.php?id=goody&itemPath=/29/items/goody&server=ia801302.us.archive.org&format=jsonp&subPrefix=goody&requestUri=/details/goody/mode/1up%3Fview%3Dtheater%26ui%3Dembed%26wrapper%3Dfalse');
140
+
141
+ console.log('manifest ****', manifest).then(res => res.json());
142
+ </script>
143
+
144
+ </div>
145
+ </body>
146
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/ia-book-actions",
3
- "version": "0.1.5-alpha3",
3
+ "version": "0.1.5-b1",
4
4
  "description": "Bookreader actions for borrowable book",
5
5
  "author": "Internet Archive",
6
6
  "license": "AGPL-3.0-only",
@@ -2,8 +2,6 @@ import ActionsHandlerService from './actions-handler/actions-handler-service.js'
2
2
  import LoanAnanlytics from './loan-analytics.js';
3
3
  import { sentryLogs } from '../config/sentry-events.js';
4
4
 
5
- import * as Cookies from './doc-cookies.js';
6
-
7
5
  /**
8
6
  * This class is used to create loan token for borrowed books
9
7
  *
@@ -33,7 +31,7 @@ export class LoanTokenPoller {
33
31
  }
34
32
 
35
33
  async bookAccessed() {
36
- let consecutiveLoanCounts = 1;
34
+ // let consecutiveLoanCounts = 1;
37
35
 
38
36
  if (this.borrowType) {
39
37
  // send consecutiveLoanCounts for browsed books only.
@@ -256,6 +256,11 @@ export default class IABookActions extends LitElement {
256
256
  * dispatched this event from bookreader page changed
257
257
  */
258
258
  window.addEventListener('BookReader:userAction', () => {
259
+ console.log('** BR user Action', {
260
+ suppressAutoRenew: this.suppressAutoRenew,
261
+ borrowType: this.borrowType,
262
+ });
263
+
259
264
  this.suppressToast = true;
260
265
  this.closeToastManager();
261
266
 
@@ -272,6 +277,7 @@ export default class IABookActions extends LitElement {
272
277
  * detect click-event on document to close toast-template
273
278
  */
274
279
  document.addEventListener('click', e => {
280
+ console.log('*** top level click handler to remove toast on click');
275
281
  if (this.loanRenewHelper && this.loanRenewResult.secondsLeft > 0) {
276
282
  this.suppressToast = true;
277
283
  }
@@ -292,6 +298,7 @@ export default class IABookActions extends LitElement {
292
298
  * @see TimerCountdown::timerCountdown
293
299
  */
294
300
  this.addEventListener('IABookActions:loanRenew', async event => {
301
+ console.log('** IABookActions:loanRenew', event.detail);
295
302
  await this.autoLoanRenewChecker(false);
296
303
 
297
304
  // maybe the renew with-in last 1 minute is too short of a transition time between xhr, loading images etc... let NOT renew in last 50 seconds.
@@ -302,6 +309,7 @@ export default class IABookActions extends LitElement {
302
309
  // show warning message with remaining time to auto returned it.
303
310
  if (this.loanRenewResult.renewNow === false) {
304
311
  this.loanRenewResult.secondsLeft = event.detail.secondsLeft;
312
+ this.suppressToast = false;
305
313
  this.showToastMessage();
306
314
  }
307
315
  });
@@ -329,6 +337,7 @@ export default class IABookActions extends LitElement {
329
337
  * close/hide toast message
330
338
  */
331
339
  async closeToastManager() {
340
+ console.log('** closeToastManager');
332
341
  const toastTemplate = this.shadowRoot.querySelector('toast-template');
333
342
  if (toastTemplate) {
334
343
  toastTemplate?.remove();
@@ -342,6 +351,10 @@ export default class IABookActions extends LitElement {
342
351
  * - show message having remaining time when book is about to auto returned
343
352
  */
344
353
  async showToastMessage() {
354
+ console.log('** showToastMessage', {
355
+ suppressToast: this.suppressToast,
356
+ loanRenewResult: this.loanRenewResult,
357
+ });
345
358
  if (this.suppressToast) return;
346
359
 
347
360
  let toastTemplate = this.shadowRoot.querySelector('toast-template');