@internetarchive/ia-item-navigator 1.1.1 → 2.0.0-alpha1
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/demo/app-root.ts +190 -28
- package/dist/demo/app-root.d.ts +7 -3
- package/dist/demo/app-root.js +158 -22
- package/dist/demo/app-root.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/src/{item-navigator.js → iaux-item-navigator.js} +3 -10
- package/dist/src/iaux-item-navigator.js.map +1 -0
- package/dist/src/menus/iaux-sharing-options.d.ts +28 -0
- package/dist/src/menus/iaux-sharing-options.js +277 -0
- package/dist/src/menus/iaux-sharing-options.js.map +1 -0
- package/dist/src/menus/iaux-viewable-files.d.ts +32 -0
- package/dist/src/menus/iaux-viewable-files.js +367 -0
- package/dist/src/menus/iaux-viewable-files.js.map +1 -0
- package/dist/src/menus/share-providers/email.d.ts +11 -0
- package/dist/src/menus/share-providers/email.js +15 -0
- package/dist/src/menus/share-providers/email.js.map +1 -0
- package/dist/src/menus/share-providers/facebook.d.ts +11 -0
- package/dist/src/menus/share-providers/facebook.js +15 -0
- package/dist/src/menus/share-providers/facebook.js.map +1 -0
- package/dist/src/menus/share-providers/pinterest.d.ts +11 -0
- package/dist/src/menus/share-providers/pinterest.js +15 -0
- package/dist/src/menus/share-providers/pinterest.js.map +1 -0
- package/dist/src/menus/share-providers/provider.d.ts +20 -0
- package/dist/src/menus/share-providers/provider.js +37 -0
- package/dist/src/menus/share-providers/provider.js.map +1 -0
- package/dist/src/menus/share-providers/share-provider-interface.d.ts +13 -0
- package/dist/src/menus/share-providers/share-provider-interface.js +2 -0
- package/dist/src/menus/share-providers/share-provider-interface.js.map +1 -0
- package/dist/src/menus/share-providers/tumblr.d.ts +11 -0
- package/dist/src/menus/share-providers/tumblr.js +15 -0
- package/dist/src/menus/share-providers/tumblr.js.map +1 -0
- package/dist/src/menus/share-providers/twitter.d.ts +11 -0
- package/dist/src/menus/share-providers/twitter.js +15 -0
- package/dist/src/menus/share-providers/twitter.js.map +1 -0
- package/dist/test/iaux-item-navigator.test.d.ts +1 -0
- package/dist/test/{ia-item-navigator.test.js → iaux-item-navigator.test.js} +49 -27
- package/dist/test/iaux-item-navigator.test.js.map +1 -0
- package/dist/test/iaux-sharing-options.test.d.ts +1 -0
- package/dist/test/iaux-sharing-options.test.js +64 -0
- package/dist/test/iaux-sharing-options.test.js.map +1 -0
- package/index.ts +9 -1
- package/package.json +11 -4
- package/src/{item-navigator.ts → iaux-item-navigator.ts} +2 -10
- package/src/menus/foo.json +84 -0
- package/src/menus/iaux-sharing-options.ts +281 -0
- package/src/menus/iaux-viewable-files.ts +377 -0
- package/src/menus/share-providers/email.ts +23 -0
- package/src/menus/share-providers/facebook.ts +23 -0
- package/src/menus/share-providers/pinterest.ts +23 -0
- package/src/menus/share-providers/provider.ts +63 -0
- package/src/menus/share-providers/share-provider-interface.ts +17 -0
- package/src/menus/share-providers/tumblr.ts +23 -0
- package/src/menus/share-providers/twitter.ts +23 -0
- package/test/ia-sharing-options.test.js +78 -0
- package/test/{iaux-item-navigator.test.txt → iaux-item-navigator.test.ts} +46 -24
- package/dist/src/item-navigator.js.map +0 -1
- package/dist/test/ia-item-navigator.test.d.ts +0 -1
- package/dist/test/ia-item-navigator.test.js.map +0 -1
- package/test/ia-item-navigator.test.ts +0 -417
- /package/dist/src/{item-navigator.d.ts → iaux-item-navigator.d.ts} +0 -0
- /package/test/{iaux-sharing-options.test.txt → iaux-sharing-options.test.ts} +0 -0
package/demo/app-root.ts
CHANGED
@@ -8,17 +8,123 @@ import {
|
|
8
8
|
import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
|
9
9
|
import { ModalManager } from '@internetarchive/modal-manager';
|
10
10
|
import '@internetarchive/modal-manager';
|
11
|
-
import { ItemNavigator } from '../src/item-navigator';
|
12
|
-
import '../src/item-navigator';
|
11
|
+
import type { ItemNavigator } from '../src/iaux-item-navigator';
|
12
|
+
import '../src/iaux-item-navigator';
|
13
|
+
import '../src/menus/iaux-sharing-options';
|
13
14
|
import {
|
14
15
|
MenuShortcutInterface,
|
15
16
|
MenuProviderInterface,
|
16
17
|
} from '../src/interfaces/menu-interfaces';
|
17
|
-
|
18
|
+
import { iauxShareIcon } from '../src/menus/iaux-sharing-options';
|
19
|
+
import { viewableFilesIcon } from '../src/menus/iaux-viewable-files';
|
20
|
+
|
21
|
+
const fileList = [
|
22
|
+
{
|
23
|
+
url_path: '/details/masterbookofamericanfolksong00shep',
|
24
|
+
file_subprefix: '01-The Master Book of American Folk Song',
|
25
|
+
title: 'The Master Book of American Folk Song',
|
26
|
+
file_source: '/01-The Master Book of American Folk Song_jp2.zip',
|
27
|
+
orig_sort: 0,
|
28
|
+
},
|
29
|
+
{
|
30
|
+
url_path:
|
31
|
+
'/details/masterbookofamericanfolksong00shep/02-Encyclopedia%20of%20the%20Traditional%20Music%20and%20Folk%20Songs%20of%20the%20United%20States%20Index%20A%20through%20M',
|
32
|
+
file_subprefix:
|
33
|
+
'02-Encyclopedia of the Traditional Music and Folk Songs of the United States Index A through M',
|
34
|
+
title:
|
35
|
+
'Encyclopedia of the Traditional Music and Folk Songs of the United States Index A through M',
|
36
|
+
file_source:
|
37
|
+
'/02-Encyclopedia of the Traditional Music and Folk Songs of the United States Index A through M_jp2.zip',
|
38
|
+
orig_sort: 1,
|
39
|
+
},
|
40
|
+
{
|
41
|
+
url_path:
|
42
|
+
'/details/masterbookofamericanfolksong00shep/03-Encyclopedia%20of%20the%20Traditional%20Music%20and%20Folk%20Songs%20of%20the%20United%20States%20Index%20N%20through%20Z',
|
43
|
+
file_subprefix:
|
44
|
+
'03-Encyclopedia of the Traditional Music and Folk Songs of the United States Index N through Z',
|
45
|
+
title:
|
46
|
+
'Encyclopedia of the Traditional Music and Folk Songs of the United States Index N through Z',
|
47
|
+
file_source:
|
48
|
+
'/03-Encyclopedia of the Traditional Music and Folk Songs of the United States Index N through Z_jp2.zip',
|
49
|
+
orig_sort: 2,
|
50
|
+
},
|
51
|
+
{
|
52
|
+
url_path:
|
53
|
+
'/details/masterbookofamericanfolksong00shep/04-Letters%20to%20Riley%20Shepard',
|
54
|
+
file_subprefix: '04-Letters to Riley Shepard',
|
55
|
+
title: 'Letters to Riley Shepard',
|
56
|
+
file_source: '/04-Letters to Riley Shepard_jp2.zip',
|
57
|
+
orig_sort: 3,
|
58
|
+
},
|
59
|
+
{
|
60
|
+
url_path:
|
61
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%201',
|
62
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 1',
|
63
|
+
title: 'Master Book of American Folk Song Vol. 1.pdf',
|
64
|
+
file_source: '/Master Book of American Folk Song Vol. 1_jp2.zip',
|
65
|
+
orig_sort: 4,
|
66
|
+
},
|
67
|
+
{
|
68
|
+
url_path:
|
69
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%202',
|
70
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 2',
|
71
|
+
title: 'Master Book of American Folk Song Vol. 2.pdf',
|
72
|
+
file_source: '/Master Book of American Folk Song Vol. 2_jp2.zip',
|
73
|
+
orig_sort: 5,
|
74
|
+
},
|
75
|
+
{
|
76
|
+
url_path:
|
77
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%203',
|
78
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 3',
|
79
|
+
title: 'Master Book of American Folk Song Vol. 3.pdf',
|
80
|
+
file_source: '/Master Book of American Folk Song Vol. 3_jp2.zip',
|
81
|
+
orig_sort: 6,
|
82
|
+
},
|
83
|
+
{
|
84
|
+
url_path:
|
85
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%204',
|
86
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 4',
|
87
|
+
title: 'Master Book of American Folk Song Vol. 4.pdf',
|
88
|
+
file_source: '/Master Book of American Folk Song Vol. 4_jp2.zip',
|
89
|
+
orig_sort: 7,
|
90
|
+
},
|
91
|
+
{
|
92
|
+
url_path:
|
93
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%205',
|
94
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 5',
|
95
|
+
title: 'Master Book of American Folk Song Vol. 5',
|
96
|
+
file_source: '/Master Book of American Folk Song Vol. 5_jp2.zip',
|
97
|
+
orig_sort: 8,
|
98
|
+
},
|
99
|
+
{
|
100
|
+
url_path:
|
101
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%206',
|
102
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 6',
|
103
|
+
title: 'Master Book of American Folk Song Vol. 6.pdf',
|
104
|
+
file_source: '/Master Book of American Folk Song Vol. 6_jp2.zip',
|
105
|
+
orig_sort: 9,
|
106
|
+
},
|
107
|
+
{
|
108
|
+
url_path:
|
109
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%207',
|
110
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 7',
|
111
|
+
title: 'Master Book of American Folk Song Vol. 7.pdf',
|
112
|
+
file_source: '/Master Book of American Folk Song Vol. 7_jp2.zip',
|
113
|
+
orig_sort: 10,
|
114
|
+
},
|
115
|
+
{
|
116
|
+
url_path:
|
117
|
+
'/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%208',
|
118
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 8',
|
119
|
+
title: 'Master Book of American Folk Song Vol. 8.pdf',
|
120
|
+
file_source: '/Master Book of American Folk Song Vol. 8_jp2.zip',
|
121
|
+
orig_sort: 11,
|
122
|
+
},
|
123
|
+
];
|
18
124
|
@customElement('app-root')
|
19
125
|
export class AppRoot extends LitElement {
|
20
126
|
/**
|
21
|
-
* Example controller to connect to `<
|
127
|
+
* Example controller to connect to `<iaux-item-navigator>`
|
22
128
|
*/
|
23
129
|
@property({ type: Object }) itemMD?: MetadataResponse;
|
24
130
|
|
@@ -32,21 +138,28 @@ export class AppRoot extends LitElement {
|
|
32
138
|
@property({ type: Array, attribute: false })
|
33
139
|
menuShortcuts: MenuShortcutInterface[] = [];
|
34
140
|
|
35
|
-
@property({ reflect: true, attribute: true }) fullscreen:
|
36
|
-
|
37
|
-
|
38
|
-
@property({ reflect: true, attribute: true }) headerOn: true | null = null;
|
141
|
+
@property({ reflect: true, attribute: true, type: Boolean }) fullscreen:
|
142
|
+
| boolean
|
143
|
+
| null = null;
|
39
144
|
|
40
|
-
@property({ reflect: true, attribute: true })
|
145
|
+
@property({ reflect: true, attribute: true, type: Boolean }) headerOn:
|
146
|
+
| true
|
147
|
+
| null = null;
|
41
148
|
|
42
|
-
@property({ reflect: true, attribute: true })
|
43
|
-
|
149
|
+
@property({ reflect: true, attribute: true, type: Boolean }) loaded:
|
150
|
+
| true
|
151
|
+
| null = null;
|
44
152
|
|
45
|
-
@property({ reflect: true, attribute: true })
|
153
|
+
@property({ reflect: true, attribute: true, type: Boolean }) showPlaceholder:
|
46
154
|
| true
|
47
|
-
| null =
|
155
|
+
| null = null;
|
48
156
|
|
49
|
-
@
|
157
|
+
@property({ reflect: true, attribute: true, type: Boolean })
|
158
|
+
showTheaterExample: true | null = null;
|
159
|
+
|
160
|
+
@property({ type: Array }) fileListToDisplay: any[] = fileList;
|
161
|
+
|
162
|
+
@query('iaux-item-navigator') private itemNav!: ItemNavigator;
|
50
163
|
|
51
164
|
@query('modal-manager') modalMgr!: ModalManager;
|
52
165
|
|
@@ -66,11 +179,20 @@ export class AppRoot extends LitElement {
|
|
66
179
|
if (changed.has('itemMD')) {
|
67
180
|
this.fullscreenCheck();
|
68
181
|
}
|
182
|
+
|
183
|
+
if (changed.has('fileList')) {
|
184
|
+
this.drawMenus();
|
185
|
+
}
|
69
186
|
}
|
70
187
|
|
71
188
|
async fetchItemMD() {
|
72
189
|
const searchService = SearchService.default;
|
73
|
-
|
190
|
+
|
191
|
+
// masterbookofamericanfolksong00shep => multiple files
|
192
|
+
// ux-team-books => item
|
193
|
+
const mdResponse = await searchService.fetchMetadata(
|
194
|
+
'masterbookofamericanfolksong00shep',
|
195
|
+
);
|
74
196
|
|
75
197
|
if (mdResponse.error) {
|
76
198
|
console.log('MD Fetch error: ', mdResponse.error);
|
@@ -82,6 +204,7 @@ export class AppRoot extends LitElement {
|
|
82
204
|
|
83
205
|
console.log('mdResponse.success', JSON.stringify(mdResponse.success));
|
84
206
|
this.itemMD = mdResponse.success;
|
207
|
+
this.toggleTheaterExample();
|
85
208
|
}
|
86
209
|
|
87
210
|
get theaterReady(): boolean {
|
@@ -106,7 +229,7 @@ export class AppRoot extends LitElement {
|
|
106
229
|
}
|
107
230
|
}
|
108
231
|
|
109
|
-
/** toggles attr: `<
|
232
|
+
/** toggles attr: `<iaux-item-navigator viewportinfullscreen>` */
|
110
233
|
fullscreenCheck(): void {
|
111
234
|
if (this.showFullscreen && this.itemNav) {
|
112
235
|
this.fullscreen = true;
|
@@ -182,15 +305,54 @@ export class AppRoot extends LitElement {
|
|
182
305
|
// turn off placeholder
|
183
306
|
this.showPlaceholder = null;
|
184
307
|
this.showTheaterExample = true;
|
308
|
+
this.drawMenus();
|
309
|
+
}
|
310
|
+
|
311
|
+
drawMenus() {
|
312
|
+
const shareMenu = {
|
313
|
+
icon: iauxShareIcon,
|
314
|
+
label: 'Share this item',
|
315
|
+
id: 'share',
|
316
|
+
component: html`<iaux-sharing-options
|
317
|
+
.identifier=${this.itemMD?.metadata.identifier || 'ux-team-books'}
|
318
|
+
.type=${`book`}
|
319
|
+
.creator=${`UX Team`}
|
320
|
+
.description=${'list of test books'}
|
321
|
+
.baseHost=${'archive.org'}
|
322
|
+
.fileSubPrefix=${''}
|
323
|
+
></iaux-sharing-options>`,
|
324
|
+
} as unknown as MenuProviderInterface;
|
325
|
+
|
326
|
+
const filesNewArr = [...fileList];
|
327
|
+
const viewableFilesMenu = {
|
328
|
+
id: 'viewable-files',
|
329
|
+
icon: viewableFilesIcon,
|
330
|
+
label: `Viewable Files (${fileList.length})`,
|
331
|
+
baseHost: 'archive.org',
|
332
|
+
item: this.itemMD as MetadataResponse,
|
333
|
+
subPrefix: '',
|
334
|
+
// sorter
|
335
|
+
actionButton: html`<iaux-sort-viewable-files
|
336
|
+
@fileListSorted=${(e: CustomEvent) => this.sortFilesCallback(e)}
|
337
|
+
.fileListRaw=${fileList}
|
338
|
+
></iaux-sort-viewable-files>`,
|
339
|
+
component: html`<iaux-viewable-files
|
340
|
+
.fileList=${filesNewArr}
|
341
|
+
></iaux-viewable-files> `,
|
342
|
+
};
|
343
|
+
|
344
|
+
this.menuContents = [viewableFilesMenu, shareMenu];
|
345
|
+
this.menuShortcuts = [viewableFilesMenu, shareMenu];
|
346
|
+
}
|
185
347
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
this.
|
193
|
-
|
348
|
+
async sortFilesCallback(e: CustomEvent) {
|
349
|
+
const { sortType, sortedFiles } = e.detail;
|
350
|
+
this.fileListToDisplay = sortedFiles;
|
351
|
+
console.log('fileListSorted', { sortType, sortedFiles });
|
352
|
+
await this.updateComplete;
|
353
|
+
console.log('fileListSortedasyncd', { sortType, sortedFiles });
|
354
|
+
this.drawMenus();
|
355
|
+
// debugger;
|
194
356
|
}
|
195
357
|
|
196
358
|
/** Views */
|
@@ -200,7 +362,7 @@ export class AppRoot extends LitElement {
|
|
200
362
|
<div class="theater-example">
|
201
363
|
<img
|
202
364
|
alt="cat theater"
|
203
|
-
src="https://archive.org/download/
|
365
|
+
src="https://archive.org/download/masterbookofamericanfolksong00shep/__ia_thumb.jpg"
|
204
366
|
/>
|
205
367
|
<h3>Welcome to Cat Theater</h3>
|
206
368
|
</div>
|
@@ -256,7 +418,7 @@ export class AppRoot extends LitElement {
|
|
256
418
|
return html`
|
257
419
|
<h1>theater, in page</h1>
|
258
420
|
<section>
|
259
|
-
<
|
421
|
+
<iaux-item-navigator
|
260
422
|
baseHost="https://archive.org"
|
261
423
|
.item=${this.itemMD}
|
262
424
|
.modal=${this.modalMgr}
|
@@ -269,7 +431,7 @@ export class AppRoot extends LitElement {
|
|
269
431
|
>
|
270
432
|
${this.headerOn ? this.headerExample : ''}
|
271
433
|
${this.showTheaterExample ? this.theaterExample : ''}
|
272
|
-
</
|
434
|
+
</iaux-item-navigator>
|
273
435
|
</section>
|
274
436
|
<div>
|
275
437
|
<button @click=${this.toggleHeader}>toggle header</button>
|
@@ -304,7 +466,7 @@ export class AppRoot extends LitElement {
|
|
304
466
|
}
|
305
467
|
|
306
468
|
:host,
|
307
|
-
|
469
|
+
iaux-item-navigator {
|
308
470
|
display: block;
|
309
471
|
position: relative;
|
310
472
|
width: 100%;
|
package/dist/demo/app-root.d.ts
CHANGED
@@ -3,11 +3,12 @@ import { MetadataResponse } from '@internetarchive/search-service';
|
|
3
3
|
import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
|
4
4
|
import { ModalManager } from '@internetarchive/modal-manager';
|
5
5
|
import '@internetarchive/modal-manager';
|
6
|
-
import '../src/item-navigator';
|
6
|
+
import '../src/iaux-item-navigator';
|
7
|
+
import '../src/menus/iaux-sharing-options';
|
7
8
|
import { MenuShortcutInterface, MenuProviderInterface } from '../src/interfaces/menu-interfaces';
|
8
9
|
export declare class AppRoot extends LitElement {
|
9
10
|
/**
|
10
|
-
* Example controller to connect to `<
|
11
|
+
* Example controller to connect to `<iaux-item-navigator>`
|
11
12
|
*/
|
12
13
|
itemMD?: MetadataResponse;
|
13
14
|
encodedManifest: string;
|
@@ -19,6 +20,7 @@ export declare class AppRoot extends LitElement {
|
|
19
20
|
loaded: true | null;
|
20
21
|
showPlaceholder: true | null;
|
21
22
|
showTheaterExample: true | null;
|
23
|
+
fileListToDisplay: any[];
|
22
24
|
private itemNav;
|
23
25
|
modalMgr: ModalManager;
|
24
26
|
firstUpdated(): void;
|
@@ -30,7 +32,7 @@ export declare class AppRoot extends LitElement {
|
|
30
32
|
get showFullscreen(): boolean;
|
31
33
|
/** sets url query param `view=theater` to toggle fullscreen */
|
32
34
|
toggleFS(): void;
|
33
|
-
/** toggles attr: `<
|
35
|
+
/** toggles attr: `<iaux-item-navigator viewportinfullscreen>` */
|
34
36
|
fullscreenCheck(): void;
|
35
37
|
/** End fullscreen */
|
36
38
|
toggleHeader(): void;
|
@@ -38,6 +40,8 @@ export declare class AppRoot extends LitElement {
|
|
38
40
|
togglePlaceholder(): void;
|
39
41
|
toggleImmersion(): void;
|
40
42
|
toggleTheaterExample(): void;
|
43
|
+
drawMenus(): void;
|
44
|
+
sortFilesCallback(e: CustomEvent): Promise<void>;
|
41
45
|
/** Views */
|
42
46
|
get theaterExample(): TemplateResult;
|
43
47
|
get headerExample(): TemplateResult;
|
package/dist/demo/app-root.js
CHANGED
@@ -5,7 +5,96 @@ import { customElement, property, query } from 'lit/decorators.js';
|
|
5
5
|
import { SearchService, } from '@internetarchive/search-service';
|
6
6
|
import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
|
7
7
|
import '@internetarchive/modal-manager';
|
8
|
-
import '../src/item-navigator';
|
8
|
+
import '../src/iaux-item-navigator';
|
9
|
+
import '../src/menus/iaux-sharing-options';
|
10
|
+
import { iauxShareIcon } from '../src/menus/iaux-sharing-options';
|
11
|
+
import { viewableFilesIcon } from '../src/menus/iaux-viewable-files';
|
12
|
+
const fileList = [
|
13
|
+
{
|
14
|
+
url_path: '/details/masterbookofamericanfolksong00shep',
|
15
|
+
file_subprefix: '01-The Master Book of American Folk Song',
|
16
|
+
title: 'The Master Book of American Folk Song',
|
17
|
+
file_source: '/01-The Master Book of American Folk Song_jp2.zip',
|
18
|
+
orig_sort: 0,
|
19
|
+
},
|
20
|
+
{
|
21
|
+
url_path: '/details/masterbookofamericanfolksong00shep/02-Encyclopedia%20of%20the%20Traditional%20Music%20and%20Folk%20Songs%20of%20the%20United%20States%20Index%20A%20through%20M',
|
22
|
+
file_subprefix: '02-Encyclopedia of the Traditional Music and Folk Songs of the United States Index A through M',
|
23
|
+
title: 'Encyclopedia of the Traditional Music and Folk Songs of the United States Index A through M',
|
24
|
+
file_source: '/02-Encyclopedia of the Traditional Music and Folk Songs of the United States Index A through M_jp2.zip',
|
25
|
+
orig_sort: 1,
|
26
|
+
},
|
27
|
+
{
|
28
|
+
url_path: '/details/masterbookofamericanfolksong00shep/03-Encyclopedia%20of%20the%20Traditional%20Music%20and%20Folk%20Songs%20of%20the%20United%20States%20Index%20N%20through%20Z',
|
29
|
+
file_subprefix: '03-Encyclopedia of the Traditional Music and Folk Songs of the United States Index N through Z',
|
30
|
+
title: 'Encyclopedia of the Traditional Music and Folk Songs of the United States Index N through Z',
|
31
|
+
file_source: '/03-Encyclopedia of the Traditional Music and Folk Songs of the United States Index N through Z_jp2.zip',
|
32
|
+
orig_sort: 2,
|
33
|
+
},
|
34
|
+
{
|
35
|
+
url_path: '/details/masterbookofamericanfolksong00shep/04-Letters%20to%20Riley%20Shepard',
|
36
|
+
file_subprefix: '04-Letters to Riley Shepard',
|
37
|
+
title: 'Letters to Riley Shepard',
|
38
|
+
file_source: '/04-Letters to Riley Shepard_jp2.zip',
|
39
|
+
orig_sort: 3,
|
40
|
+
},
|
41
|
+
{
|
42
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%201',
|
43
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 1',
|
44
|
+
title: 'Master Book of American Folk Song Vol. 1.pdf',
|
45
|
+
file_source: '/Master Book of American Folk Song Vol. 1_jp2.zip',
|
46
|
+
orig_sort: 4,
|
47
|
+
},
|
48
|
+
{
|
49
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%202',
|
50
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 2',
|
51
|
+
title: 'Master Book of American Folk Song Vol. 2.pdf',
|
52
|
+
file_source: '/Master Book of American Folk Song Vol. 2_jp2.zip',
|
53
|
+
orig_sort: 5,
|
54
|
+
},
|
55
|
+
{
|
56
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%203',
|
57
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 3',
|
58
|
+
title: 'Master Book of American Folk Song Vol. 3.pdf',
|
59
|
+
file_source: '/Master Book of American Folk Song Vol. 3_jp2.zip',
|
60
|
+
orig_sort: 6,
|
61
|
+
},
|
62
|
+
{
|
63
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%204',
|
64
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 4',
|
65
|
+
title: 'Master Book of American Folk Song Vol. 4.pdf',
|
66
|
+
file_source: '/Master Book of American Folk Song Vol. 4_jp2.zip',
|
67
|
+
orig_sort: 7,
|
68
|
+
},
|
69
|
+
{
|
70
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%205',
|
71
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 5',
|
72
|
+
title: 'Master Book of American Folk Song Vol. 5',
|
73
|
+
file_source: '/Master Book of American Folk Song Vol. 5_jp2.zip',
|
74
|
+
orig_sort: 8,
|
75
|
+
},
|
76
|
+
{
|
77
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%206',
|
78
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 6',
|
79
|
+
title: 'Master Book of American Folk Song Vol. 6.pdf',
|
80
|
+
file_source: '/Master Book of American Folk Song Vol. 6_jp2.zip',
|
81
|
+
orig_sort: 9,
|
82
|
+
},
|
83
|
+
{
|
84
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%207',
|
85
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 7',
|
86
|
+
title: 'Master Book of American Folk Song Vol. 7.pdf',
|
87
|
+
file_source: '/Master Book of American Folk Song Vol. 7_jp2.zip',
|
88
|
+
orig_sort: 10,
|
89
|
+
},
|
90
|
+
{
|
91
|
+
url_path: '/details/masterbookofamericanfolksong00shep/Master%20Book%20of%20American%20Folk%20Song%20Vol.%208',
|
92
|
+
file_subprefix: 'Master Book of American Folk Song Vol. 8',
|
93
|
+
title: 'Master Book of American Folk Song Vol. 8.pdf',
|
94
|
+
file_source: '/Master Book of American Folk Song Vol. 8_jp2.zip',
|
95
|
+
orig_sort: 11,
|
96
|
+
},
|
97
|
+
];
|
9
98
|
let AppRoot = class AppRoot extends LitElement {
|
10
99
|
constructor() {
|
11
100
|
super(...arguments);
|
@@ -15,9 +104,10 @@ let AppRoot = class AppRoot extends LitElement {
|
|
15
104
|
this.menuShortcuts = [];
|
16
105
|
this.fullscreen = null;
|
17
106
|
this.headerOn = null;
|
18
|
-
this.loaded =
|
107
|
+
this.loaded = null;
|
19
108
|
this.showPlaceholder = null;
|
20
|
-
this.showTheaterExample =
|
109
|
+
this.showTheaterExample = null;
|
110
|
+
this.fileListToDisplay = fileList;
|
21
111
|
}
|
22
112
|
firstUpdated() {
|
23
113
|
this.fetchItemMD();
|
@@ -29,10 +119,15 @@ let AppRoot = class AppRoot extends LitElement {
|
|
29
119
|
if (changed.has('itemMD')) {
|
30
120
|
this.fullscreenCheck();
|
31
121
|
}
|
122
|
+
if (changed.has('fileList')) {
|
123
|
+
this.drawMenus();
|
124
|
+
}
|
32
125
|
}
|
33
126
|
async fetchItemMD() {
|
34
127
|
const searchService = SearchService.default;
|
35
|
-
|
128
|
+
// masterbookofamericanfolksong00shep => multiple files
|
129
|
+
// ux-team-books => item
|
130
|
+
const mdResponse = await searchService.fetchMetadata('masterbookofamericanfolksong00shep');
|
36
131
|
if (mdResponse.error) {
|
37
132
|
console.log('MD Fetch error: ', mdResponse.error);
|
38
133
|
window.confirm('There was an error fetching response, please check dev console');
|
@@ -40,6 +135,7 @@ let AppRoot = class AppRoot extends LitElement {
|
|
40
135
|
}
|
41
136
|
console.log('mdResponse.success', JSON.stringify(mdResponse.success));
|
42
137
|
this.itemMD = mdResponse.success;
|
138
|
+
this.toggleTheaterExample();
|
43
139
|
}
|
44
140
|
get theaterReady() {
|
45
141
|
return this.modalMgr && this.sharedObserver && !!this.itemMD;
|
@@ -60,7 +156,7 @@ let AppRoot = class AppRoot extends LitElement {
|
|
60
156
|
location.search = 'view=theater';
|
61
157
|
}
|
62
158
|
}
|
63
|
-
/** toggles attr: `<
|
159
|
+
/** toggles attr: `<iaux-item-navigator viewportinfullscreen>` */
|
64
160
|
fullscreenCheck() {
|
65
161
|
if (this.showFullscreen && this.itemNav) {
|
66
162
|
this.fullscreen = true;
|
@@ -128,14 +224,51 @@ let AppRoot = class AppRoot extends LitElement {
|
|
128
224
|
// turn off placeholder
|
129
225
|
this.showPlaceholder = null;
|
130
226
|
this.showTheaterExample = true;
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
227
|
+
this.drawMenus();
|
228
|
+
}
|
229
|
+
drawMenus() {
|
230
|
+
var _a;
|
231
|
+
const shareMenu = {
|
232
|
+
icon: iauxShareIcon,
|
233
|
+
label: 'Share this item',
|
234
|
+
id: 'share',
|
235
|
+
component: html `<iaux-sharing-options
|
236
|
+
.identifier=${((_a = this.itemMD) === null || _a === void 0 ? void 0 : _a.metadata.identifier) || 'ux-team-books'}
|
237
|
+
.type=${`book`}
|
238
|
+
.creator=${`UX Team`}
|
239
|
+
.description=${'list of test books'}
|
240
|
+
.baseHost=${'archive.org'}
|
241
|
+
.fileSubPrefix=${''}
|
242
|
+
></iaux-sharing-options>`,
|
136
243
|
};
|
137
|
-
|
138
|
-
|
244
|
+
const filesNewArr = [...fileList];
|
245
|
+
const viewableFilesMenu = {
|
246
|
+
id: 'viewable-files',
|
247
|
+
icon: viewableFilesIcon,
|
248
|
+
label: `Viewable Files (${fileList.length})`,
|
249
|
+
baseHost: 'archive.org',
|
250
|
+
item: this.itemMD,
|
251
|
+
subPrefix: '',
|
252
|
+
// sorter
|
253
|
+
actionButton: html `<iaux-sort-viewable-files
|
254
|
+
@fileListSorted=${(e) => this.sortFilesCallback(e)}
|
255
|
+
.fileListRaw=${fileList}
|
256
|
+
></iaux-sort-viewable-files>`,
|
257
|
+
component: html `<iaux-viewable-files
|
258
|
+
.fileList=${filesNewArr}
|
259
|
+
></iaux-viewable-files> `,
|
260
|
+
};
|
261
|
+
this.menuContents = [viewableFilesMenu, shareMenu];
|
262
|
+
this.menuShortcuts = [viewableFilesMenu, shareMenu];
|
263
|
+
}
|
264
|
+
async sortFilesCallback(e) {
|
265
|
+
const { sortType, sortedFiles } = e.detail;
|
266
|
+
this.fileListToDisplay = sortedFiles;
|
267
|
+
console.log('fileListSorted', { sortType, sortedFiles });
|
268
|
+
await this.updateComplete;
|
269
|
+
console.log('fileListSortedasyncd', { sortType, sortedFiles });
|
270
|
+
this.drawMenus();
|
271
|
+
// debugger;
|
139
272
|
}
|
140
273
|
/** Views */
|
141
274
|
get theaterExample() {
|
@@ -144,7 +277,7 @@ let AppRoot = class AppRoot extends LitElement {
|
|
144
277
|
<div class="theater-example">
|
145
278
|
<img
|
146
279
|
alt="cat theater"
|
147
|
-
src="https://archive.org/download/
|
280
|
+
src="https://archive.org/download/masterbookofamericanfolksong00shep/__ia_thumb.jpg"
|
148
281
|
/>
|
149
282
|
<h3>Welcome to Cat Theater</h3>
|
150
283
|
</div>
|
@@ -188,7 +321,7 @@ let AppRoot = class AppRoot extends LitElement {
|
|
188
321
|
return html `
|
189
322
|
<h1>theater, in page</h1>
|
190
323
|
<section>
|
191
|
-
<
|
324
|
+
<iaux-item-navigator
|
192
325
|
baseHost="https://archive.org"
|
193
326
|
.item=${this.itemMD}
|
194
327
|
.modal=${this.modalMgr}
|
@@ -201,7 +334,7 @@ let AppRoot = class AppRoot extends LitElement {
|
|
201
334
|
>
|
202
335
|
${this.headerOn ? this.headerExample : ''}
|
203
336
|
${this.showTheaterExample ? this.theaterExample : ''}
|
204
|
-
</
|
337
|
+
</iaux-item-navigator>
|
205
338
|
</section>
|
206
339
|
<div>
|
207
340
|
<button @click=${this.toggleHeader}>toggle header</button>
|
@@ -236,7 +369,7 @@ AppRoot.styles = css `
|
|
236
369
|
}
|
237
370
|
|
238
371
|
:host,
|
239
|
-
|
372
|
+
iaux-item-navigator {
|
240
373
|
display: block;
|
241
374
|
position: relative;
|
242
375
|
width: 100%;
|
@@ -289,22 +422,25 @@ __decorate([
|
|
289
422
|
property({ type: Array, attribute: false })
|
290
423
|
], AppRoot.prototype, "menuShortcuts", void 0);
|
291
424
|
__decorate([
|
292
|
-
property({ reflect: true, attribute: true })
|
425
|
+
property({ reflect: true, attribute: true, type: Boolean })
|
293
426
|
], AppRoot.prototype, "fullscreen", void 0);
|
294
427
|
__decorate([
|
295
|
-
property({ reflect: true, attribute: true })
|
428
|
+
property({ reflect: true, attribute: true, type: Boolean })
|
296
429
|
], AppRoot.prototype, "headerOn", void 0);
|
297
430
|
__decorate([
|
298
|
-
property({ reflect: true, attribute: true })
|
431
|
+
property({ reflect: true, attribute: true, type: Boolean })
|
299
432
|
], AppRoot.prototype, "loaded", void 0);
|
300
433
|
__decorate([
|
301
|
-
property({ reflect: true, attribute: true })
|
434
|
+
property({ reflect: true, attribute: true, type: Boolean })
|
302
435
|
], AppRoot.prototype, "showPlaceholder", void 0);
|
303
436
|
__decorate([
|
304
|
-
property({ reflect: true, attribute: true })
|
437
|
+
property({ reflect: true, attribute: true, type: Boolean })
|
305
438
|
], AppRoot.prototype, "showTheaterExample", void 0);
|
306
439
|
__decorate([
|
307
|
-
|
440
|
+
property({ type: Array })
|
441
|
+
], AppRoot.prototype, "fileListToDisplay", void 0);
|
442
|
+
__decorate([
|
443
|
+
query('iaux-item-navigator')
|
308
444
|
], AppRoot.prototype, "itemNav", void 0);
|
309
445
|
__decorate([
|
310
446
|
query('modal-manager')
|