@internetarchive/collection-browser 0.3.2 → 0.3.3-alpha.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/.editorconfig +29 -29
- package/.github/workflows/ci.yml +26 -26
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +44 -43
- package/dist/src/app-root.js +242 -233
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +247 -247
- package/dist/src/collection-browser.js +1067 -1077
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facets-template.d.ts +16 -16
- package/dist/src/collection-facets/facets-template.js +125 -125
- package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
- package/dist/src/collection-facets/more-facets-content.js +330 -330
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +192 -192
- package/dist/src/collection-facets.d.ts +73 -73
- package/dist/src/collection-facets.js +359 -359
- package/dist/src/empty-placeholder.d.ts +11 -11
- package/dist/src/empty-placeholder.js +42 -42
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +85 -85
- package/dist/src/models.d.ts +97 -97
- package/dist/src/models.js +100 -100
- package/dist/src/restoration-state-handler.d.ts +46 -45
- package/dist/src/restoration-state-handler.js +230 -220
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
- package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
- package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +8 -8
- package/dist/src/tiles/grid/account-tile.js +20 -20
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
- package/dist/src/tiles/grid/collection-tile.js +23 -23
- package/dist/src/tiles/grid/item-tile.d.ts +24 -24
- package/dist/src/tiles/grid/item-tile.js +87 -87
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
- package/dist/src/tiles/grid/tile-stats.js +35 -35
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +69 -69
- package/dist/src/tiles/item-image.d.ts +31 -31
- package/dist/src/tiles/item-image.js +103 -103
- package/dist/src/tiles/list/account-label.d.ts +1 -1
- package/dist/src/tiles/list/account-label.js +6 -6
- package/dist/src/tiles/list/date-label.d.ts +1 -1
- package/dist/src/tiles/list/date-label.js +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
- package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
- package/dist/src/tiles/list/tile-list-compact.js +87 -87
- package/dist/src/tiles/list/tile-list.d.ts +50 -50
- package/dist/src/tiles/list/tile-list.js +264 -264
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
- package/dist/src/tiles/overlay/icon-overlay.js +30 -30
- package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
- package/dist/src/tiles/overlay/text-overlay.js +31 -31
- package/dist/src/tiles/text-snippet-block.d.ts +29 -29
- package/dist/src/tiles/text-snippet-block.js +81 -81
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
- package/dist/src/tiles/tile-dispatcher.js +128 -128
- package/dist/src/utils/analytics-events.d.ts +18 -18
- package/dist/src/utils/analytics-events.js +20 -20
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +23 -23
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +356 -330
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +62 -62
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +91 -91
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +421 -421
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +33 -33
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +56 -56
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
- package/dist/test/mocks/mock-collection-name-cache.js +13 -13
- package/dist/test/mocks/mock-search-responses.d.ts +5 -5
- package/dist/test/mocks/mock-search-responses.js +103 -103
- package/dist/test/mocks/mock-search-service.d.ts +13 -13
- package/dist/test/mocks/mock-search-service.js +25 -25
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +117 -117
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +41 -41
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +107 -107
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +26 -26
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +36 -36
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +115 -115
- package/renovate.json +6 -6
- package/src/app-root.ts +12 -1
- package/src/collection-browser.ts +26 -21
- package/src/restoration-state-handler.ts +19 -1
- package/test/collection-browser.test.ts +31 -2
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { css, html, LitElement, nothing, } from 'lit';
|
|
3
|
-
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
|
-
import { join } from 'lit/directives/join.js';
|
|
5
|
-
import { map } from 'lit/directives/map.js';
|
|
6
|
-
import { customElement, property, state } from 'lit/decorators.js';
|
|
7
|
-
import DOMPurify from 'dompurify';
|
|
8
|
-
import { dateLabel } from './date-label';
|
|
9
|
-
import { accountLabel } from './account-label';
|
|
10
|
-
import { formatCount } from '../../utils/format-count';
|
|
11
|
-
import { formatDate } from '../../utils/format-date';
|
|
12
|
-
import '../image-block';
|
|
13
|
-
import '../mediatype-icon';
|
|
14
|
-
let TileList = class TileList extends LitElement {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
this.sortParam = null;
|
|
18
|
-
this.collectionLinks = [];
|
|
19
|
-
this.loggedIn = false;
|
|
20
|
-
}
|
|
21
|
-
updated(changed) {
|
|
22
|
-
if (changed.has('model')) {
|
|
23
|
-
this.fetchCollectionNames();
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
async fetchCollectionNames() {
|
|
27
|
-
var _a, _b;
|
|
28
|
-
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.collections) ||
|
|
29
|
-
this.model.collections.length === 0 ||
|
|
30
|
-
!this.collectionNameCache) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
// Note: quirk of Lit: need to replace collectionLinks array,
|
|
34
|
-
// otherwise it will not re-render. Can't simply alter the array.
|
|
35
|
-
this.collectionLinks = [];
|
|
36
|
-
const newCollellectionLinks = [];
|
|
37
|
-
const promises = [];
|
|
38
|
-
for (const collection of this.model.collections) {
|
|
39
|
-
promises.push((_b = this.collectionNameCache) === null || _b === void 0 ? void 0 : _b.collectionNameFor(collection).then(name => {
|
|
40
|
-
newCollellectionLinks.push(this.detailsLink(collection, name !== null && name !== void 0 ? name : collection));
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
await Promise.all(promises);
|
|
44
|
-
this.collectionLinks = newCollellectionLinks;
|
|
45
|
-
}
|
|
46
|
-
render() {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { css, html, LitElement, nothing, } from 'lit';
|
|
3
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
|
+
import { join } from 'lit/directives/join.js';
|
|
5
|
+
import { map } from 'lit/directives/map.js';
|
|
6
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
7
|
+
import DOMPurify from 'dompurify';
|
|
8
|
+
import { dateLabel } from './date-label';
|
|
9
|
+
import { accountLabel } from './account-label';
|
|
10
|
+
import { formatCount } from '../../utils/format-count';
|
|
11
|
+
import { formatDate } from '../../utils/format-date';
|
|
12
|
+
import '../image-block';
|
|
13
|
+
import '../mediatype-icon';
|
|
14
|
+
let TileList = class TileList extends LitElement {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.sortParam = null;
|
|
18
|
+
this.collectionLinks = [];
|
|
19
|
+
this.loggedIn = false;
|
|
20
|
+
}
|
|
21
|
+
updated(changed) {
|
|
22
|
+
if (changed.has('model')) {
|
|
23
|
+
this.fetchCollectionNames();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async fetchCollectionNames() {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.collections) ||
|
|
29
|
+
this.model.collections.length === 0 ||
|
|
30
|
+
!this.collectionNameCache) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Note: quirk of Lit: need to replace collectionLinks array,
|
|
34
|
+
// otherwise it will not re-render. Can't simply alter the array.
|
|
35
|
+
this.collectionLinks = [];
|
|
36
|
+
const newCollellectionLinks = [];
|
|
37
|
+
const promises = [];
|
|
38
|
+
for (const collection of this.model.collections) {
|
|
39
|
+
promises.push((_b = this.collectionNameCache) === null || _b === void 0 ? void 0 : _b.collectionNameFor(collection).then(name => {
|
|
40
|
+
newCollellectionLinks.push(this.detailsLink(collection, name !== null && name !== void 0 ? name : collection));
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
await Promise.all(promises);
|
|
44
|
+
this.collectionLinks = newCollellectionLinks;
|
|
45
|
+
}
|
|
46
|
+
render() {
|
|
47
47
|
return html `
|
|
48
48
|
<div id="list-line" class="${this.classSize}">
|
|
49
|
-
${this.classSize === 'mobile'
|
|
50
|
-
? this.mobileTemplate
|
|
49
|
+
${this.classSize === 'mobile'
|
|
50
|
+
? this.mobileTemplate
|
|
51
51
|
: this.desktopTemplate}
|
|
52
52
|
</div>
|
|
53
|
-
`;
|
|
54
|
-
}
|
|
55
|
-
get mobileTemplate() {
|
|
53
|
+
`;
|
|
54
|
+
}
|
|
55
|
+
get mobileTemplate() {
|
|
56
56
|
return html `
|
|
57
57
|
<div id="list-line-top">
|
|
58
58
|
<div id="list-line-left">${this.imageBlockTemplate}</div>
|
|
@@ -64,9 +64,9 @@ let TileList = class TileList extends LitElement {
|
|
|
64
64
|
</div>
|
|
65
65
|
</div>
|
|
66
66
|
<div id="list-line-bottom">${this.detailsTemplate}</div>
|
|
67
|
-
`;
|
|
68
|
-
}
|
|
69
|
-
get desktopTemplate() {
|
|
67
|
+
`;
|
|
68
|
+
}
|
|
69
|
+
get desktopTemplate() {
|
|
70
70
|
return html `
|
|
71
71
|
<div id="list-line-left">${this.imageBlockTemplate}</div>
|
|
72
72
|
<div id="list-line-right">
|
|
@@ -76,9 +76,9 @@ let TileList = class TileList extends LitElement {
|
|
|
76
76
|
</div>
|
|
77
77
|
${this.detailsTemplate}
|
|
78
78
|
</div>
|
|
79
|
-
`;
|
|
80
|
-
}
|
|
81
|
-
get imageBlockTemplate() {
|
|
79
|
+
`;
|
|
80
|
+
}
|
|
81
|
+
get imageBlockTemplate() {
|
|
82
82
|
return html `
|
|
83
83
|
<image-block
|
|
84
84
|
.model=${this.model}
|
|
@@ -89,9 +89,9 @@ let TileList = class TileList extends LitElement {
|
|
|
89
89
|
.loggedIn=${this.loggedIn}
|
|
90
90
|
>
|
|
91
91
|
</image-block>
|
|
92
|
-
`;
|
|
93
|
-
}
|
|
94
|
-
get detailsTemplate() {
|
|
92
|
+
`;
|
|
93
|
+
}
|
|
94
|
+
get detailsTemplate() {
|
|
95
95
|
return html `
|
|
96
96
|
${this.itemLineTemplate} ${this.creatorTemplate}
|
|
97
97
|
<div id="dates-line">
|
|
@@ -102,11 +102,11 @@ let TileList = class TileList extends LitElement {
|
|
|
102
102
|
</div>
|
|
103
103
|
${this.topicsTemplate} ${this.collectionsTemplate}
|
|
104
104
|
${this.descriptionTemplate} ${this.textSnippetsTemplate}
|
|
105
|
-
`;
|
|
106
|
-
}
|
|
107
|
-
// Data templates
|
|
108
|
-
get iconRightTemplate() {
|
|
109
|
-
var _a, _b;
|
|
105
|
+
`;
|
|
106
|
+
}
|
|
107
|
+
// Data templates
|
|
108
|
+
get iconRightTemplate() {
|
|
109
|
+
var _a, _b;
|
|
110
110
|
return html `
|
|
111
111
|
<div id="icon-right">
|
|
112
112
|
<mediatype-icon
|
|
@@ -115,204 +115,204 @@ let TileList = class TileList extends LitElement {
|
|
|
115
115
|
>
|
|
116
116
|
</mediatype-icon>
|
|
117
117
|
</div>
|
|
118
|
-
`;
|
|
119
|
-
}
|
|
120
|
-
get titleTemplate() {
|
|
121
|
-
var _a;
|
|
122
|
-
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
|
|
123
|
-
return nothing;
|
|
124
|
-
}
|
|
125
|
-
return html ` ${this.detailsLink(this.model.identifier, this.model.title)} `;
|
|
126
|
-
}
|
|
127
|
-
get itemLineTemplate() {
|
|
128
|
-
const source = this.sourceTemplate;
|
|
129
|
-
const volume = this.volumeTemplate;
|
|
130
|
-
const issue = this.issueTemplate;
|
|
131
|
-
if (!source && !volume && !issue) {
|
|
132
|
-
return nothing;
|
|
133
|
-
}
|
|
134
|
-
return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
|
|
135
|
-
}
|
|
136
|
-
get sourceTemplate() {
|
|
137
|
-
var _a;
|
|
138
|
-
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
|
|
139
|
-
return nothing;
|
|
140
|
-
}
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
get titleTemplate() {
|
|
121
|
+
var _a;
|
|
122
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
|
|
123
|
+
return nothing;
|
|
124
|
+
}
|
|
125
|
+
return html ` ${this.detailsLink(this.model.identifier, this.model.title)} `;
|
|
126
|
+
}
|
|
127
|
+
get itemLineTemplate() {
|
|
128
|
+
const source = this.sourceTemplate;
|
|
129
|
+
const volume = this.volumeTemplate;
|
|
130
|
+
const issue = this.issueTemplate;
|
|
131
|
+
if (!source && !volume && !issue) {
|
|
132
|
+
return nothing;
|
|
133
|
+
}
|
|
134
|
+
return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
|
|
135
|
+
}
|
|
136
|
+
get sourceTemplate() {
|
|
137
|
+
var _a;
|
|
138
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
|
|
139
|
+
return nothing;
|
|
140
|
+
}
|
|
141
141
|
return html `
|
|
142
142
|
<div id="source" class="metadata">
|
|
143
143
|
${this.labelTemplate('Source')}
|
|
144
144
|
${this.searchLink('source', this.model.source)}
|
|
145
145
|
</div>
|
|
146
|
-
`;
|
|
147
|
-
}
|
|
148
|
-
get volumeTemplate() {
|
|
149
|
-
var _a;
|
|
150
|
-
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, 'Volume');
|
|
151
|
-
}
|
|
152
|
-
get issueTemplate() {
|
|
153
|
-
var _a;
|
|
154
|
-
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, 'Issue');
|
|
155
|
-
}
|
|
156
|
-
get creatorTemplate() {
|
|
157
|
-
var _a, _b, _c;
|
|
158
|
-
// "Achivist since" if account
|
|
159
|
-
if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
|
|
146
|
+
`;
|
|
147
|
+
}
|
|
148
|
+
get volumeTemplate() {
|
|
149
|
+
var _a;
|
|
150
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, 'Volume');
|
|
151
|
+
}
|
|
152
|
+
get issueTemplate() {
|
|
153
|
+
var _a;
|
|
154
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, 'Issue');
|
|
155
|
+
}
|
|
156
|
+
get creatorTemplate() {
|
|
157
|
+
var _a, _b, _c;
|
|
158
|
+
// "Achivist since" if account
|
|
159
|
+
if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
|
|
160
160
|
return html `
|
|
161
161
|
<div id="creator" class="metadata">
|
|
162
162
|
<span class="label"> ${accountLabel((_b = this.model) === null || _b === void 0 ? void 0 : _b.dateAdded)} </span>
|
|
163
163
|
</div>
|
|
164
|
-
`;
|
|
165
|
-
}
|
|
166
|
-
// "Creator" if not account tile
|
|
167
|
-
if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
|
|
168
|
-
return nothing;
|
|
169
|
-
}
|
|
164
|
+
`;
|
|
165
|
+
}
|
|
166
|
+
// "Creator" if not account tile
|
|
167
|
+
if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
|
|
168
|
+
return nothing;
|
|
169
|
+
}
|
|
170
170
|
return html `
|
|
171
171
|
<div id="creator" class="metadata">
|
|
172
172
|
${this.labelTemplate('By')}
|
|
173
173
|
${join(map(this.model.creators, id => this.searchLink('creator', id)), html `, `)}
|
|
174
174
|
</div>
|
|
175
|
-
`;
|
|
176
|
-
}
|
|
177
|
-
get datePublishedTemplate() {
|
|
178
|
-
var _a;
|
|
179
|
-
return this.metadataTemplate(formatDate((_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished, 'long'), 'Published');
|
|
180
|
-
}
|
|
181
|
-
// Show date label/value when sorted by date type
|
|
182
|
-
// Except datePublished which is always shown
|
|
183
|
-
get dateSortByTemplate() {
|
|
184
|
-
if (this.sortParam &&
|
|
185
|
-
(this.sortParam.field === 'addeddate' ||
|
|
186
|
-
this.sortParam.field === 'reviewdate' ||
|
|
187
|
-
this.sortParam.field === 'publicdate')) {
|
|
188
|
-
return this.metadataTemplate(formatDate(this.date, 'long'), dateLabel(this.sortParam.field));
|
|
189
|
-
}
|
|
190
|
-
return nothing;
|
|
191
|
-
}
|
|
192
|
-
get viewsTemplate() {
|
|
193
|
-
var _a, _b;
|
|
194
|
-
return this.metadataTemplate(`${formatCount((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.viewCount) !== null && _b !== void 0 ? _b : 0, this.formatSize)}`, 'Views');
|
|
195
|
-
}
|
|
196
|
-
get ratingTemplate() {
|
|
197
|
-
var _a;
|
|
198
|
-
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, 'Avg Rating');
|
|
199
|
-
}
|
|
200
|
-
get reviewsTemplate() {
|
|
201
|
-
var _a;
|
|
202
|
-
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, 'Reviews');
|
|
203
|
-
}
|
|
204
|
-
get topicsTemplate() {
|
|
205
|
-
var _a;
|
|
206
|
-
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
|
|
207
|
-
return nothing;
|
|
208
|
-
}
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
get datePublishedTemplate() {
|
|
178
|
+
var _a;
|
|
179
|
+
return this.metadataTemplate(formatDate((_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished, 'long'), 'Published');
|
|
180
|
+
}
|
|
181
|
+
// Show date label/value when sorted by date type
|
|
182
|
+
// Except datePublished which is always shown
|
|
183
|
+
get dateSortByTemplate() {
|
|
184
|
+
if (this.sortParam &&
|
|
185
|
+
(this.sortParam.field === 'addeddate' ||
|
|
186
|
+
this.sortParam.field === 'reviewdate' ||
|
|
187
|
+
this.sortParam.field === 'publicdate')) {
|
|
188
|
+
return this.metadataTemplate(formatDate(this.date, 'long'), dateLabel(this.sortParam.field));
|
|
189
|
+
}
|
|
190
|
+
return nothing;
|
|
191
|
+
}
|
|
192
|
+
get viewsTemplate() {
|
|
193
|
+
var _a, _b;
|
|
194
|
+
return this.metadataTemplate(`${formatCount((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.viewCount) !== null && _b !== void 0 ? _b : 0, this.formatSize)}`, 'Views');
|
|
195
|
+
}
|
|
196
|
+
get ratingTemplate() {
|
|
197
|
+
var _a;
|
|
198
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, 'Avg Rating');
|
|
199
|
+
}
|
|
200
|
+
get reviewsTemplate() {
|
|
201
|
+
var _a;
|
|
202
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, 'Reviews');
|
|
203
|
+
}
|
|
204
|
+
get topicsTemplate() {
|
|
205
|
+
var _a;
|
|
206
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
|
|
207
|
+
return nothing;
|
|
208
|
+
}
|
|
209
209
|
return html `
|
|
210
210
|
<div id="topics" class="metadata">
|
|
211
211
|
${this.labelTemplate('Topics')}
|
|
212
212
|
${join(map(this.model.subjects, id => this.searchLink('subject', id)), html `, `)}
|
|
213
213
|
</div>
|
|
214
|
-
`;
|
|
215
|
-
}
|
|
216
|
-
get collectionsTemplate() {
|
|
217
|
-
if (!this.collectionLinks || this.collectionLinks.length === 0) {
|
|
218
|
-
return nothing;
|
|
219
|
-
}
|
|
214
|
+
`;
|
|
215
|
+
}
|
|
216
|
+
get collectionsTemplate() {
|
|
217
|
+
if (!this.collectionLinks || this.collectionLinks.length === 0) {
|
|
218
|
+
return nothing;
|
|
219
|
+
}
|
|
220
220
|
return html `
|
|
221
221
|
<div id="collections" class="metadata">
|
|
222
222
|
${this.labelTemplate('Collections')}
|
|
223
223
|
${join(this.collectionLinks, html `, `)}
|
|
224
224
|
</div>
|
|
225
|
-
`;
|
|
226
|
-
}
|
|
227
|
-
get descriptionTemplate() {
|
|
228
|
-
var _a, _b;
|
|
229
|
-
return this.metadataTemplate(DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ''), '', 'description');
|
|
230
|
-
}
|
|
231
|
-
get textSnippetsTemplate() {
|
|
232
|
-
var _a;
|
|
233
|
-
if (!this.hasSnippets)
|
|
234
|
-
return nothing;
|
|
225
|
+
`;
|
|
226
|
+
}
|
|
227
|
+
get descriptionTemplate() {
|
|
228
|
+
var _a, _b;
|
|
229
|
+
return this.metadataTemplate(DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ''), '', 'description');
|
|
230
|
+
}
|
|
231
|
+
get textSnippetsTemplate() {
|
|
232
|
+
var _a;
|
|
233
|
+
if (!this.hasSnippets)
|
|
234
|
+
return nothing;
|
|
235
235
|
return html `<text-snippet-block
|
|
236
236
|
viewsize="list"
|
|
237
237
|
.snippets=${(_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets}
|
|
238
|
-
></text-snippet-block>`;
|
|
239
|
-
}
|
|
240
|
-
get hasSnippets() {
|
|
241
|
-
var _a, _b;
|
|
242
|
-
return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
|
|
243
|
-
}
|
|
244
|
-
// Utility functions
|
|
245
|
-
// eslint-disable-next-line default-param-last
|
|
246
|
-
metadataTemplate(text, label = '', id) {
|
|
247
|
-
if (!text)
|
|
248
|
-
return nothing;
|
|
238
|
+
></text-snippet-block>`;
|
|
239
|
+
}
|
|
240
|
+
get hasSnippets() {
|
|
241
|
+
var _a, _b;
|
|
242
|
+
return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
|
|
243
|
+
}
|
|
244
|
+
// Utility functions
|
|
245
|
+
// eslint-disable-next-line default-param-last
|
|
246
|
+
metadataTemplate(text, label = '', id) {
|
|
247
|
+
if (!text)
|
|
248
|
+
return nothing;
|
|
249
249
|
return html `
|
|
250
250
|
<div id=${ifDefined(id)} class="metadata">
|
|
251
251
|
${this.labelTemplate(label)} ${text}
|
|
252
252
|
</div>
|
|
253
|
-
`;
|
|
254
|
-
}
|
|
255
|
-
labelTemplate(label) {
|
|
256
|
-
return html ` ${label
|
|
257
|
-
? html `<span class="label">${label}: </span>`
|
|
258
|
-
: nothing}`;
|
|
259
|
-
}
|
|
260
|
-
searchLink(field, searchTerm) {
|
|
261
|
-
if (!field || !searchTerm) {
|
|
262
|
-
return nothing;
|
|
263
|
-
}
|
|
264
|
-
const query = encodeURIComponent(`${field}:"${searchTerm}"`);
|
|
265
|
-
// No whitespace after closing tag
|
|
266
|
-
// Note: single ' for href='' to wrap " in query var gets changed back by yarn format
|
|
267
|
-
// eslint-disable-next-line lit/no-invalid-html
|
|
253
|
+
`;
|
|
254
|
+
}
|
|
255
|
+
labelTemplate(label) {
|
|
256
|
+
return html ` ${label
|
|
257
|
+
? html `<span class="label">${label}: </span>`
|
|
258
|
+
: nothing}`;
|
|
259
|
+
}
|
|
260
|
+
searchLink(field, searchTerm) {
|
|
261
|
+
if (!field || !searchTerm) {
|
|
262
|
+
return nothing;
|
|
263
|
+
}
|
|
264
|
+
const query = encodeURIComponent(`${field}:"${searchTerm}"`);
|
|
265
|
+
// No whitespace after closing tag
|
|
266
|
+
// Note: single ' for href='' to wrap " in query var gets changed back by yarn format
|
|
267
|
+
// eslint-disable-next-line lit/no-invalid-html
|
|
268
268
|
return html `<a href="${this.baseNavigationUrl}/search.php?query=${query}">
|
|
269
269
|
${DOMPurify.sanitize(searchTerm)}</a
|
|
270
|
-
>`;
|
|
271
|
-
}
|
|
272
|
-
detailsLink(identifier, text) {
|
|
273
|
-
const linkText = text !== null && text !== void 0 ? text : identifier;
|
|
274
|
-
// No whitespace after closing tag
|
|
275
|
-
// identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
|
|
270
|
+
>`;
|
|
271
|
+
}
|
|
272
|
+
detailsLink(identifier, text) {
|
|
273
|
+
const linkText = text !== null && text !== void 0 ? text : identifier;
|
|
274
|
+
// No whitespace after closing tag
|
|
275
|
+
// identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
|
|
276
276
|
return html `<a
|
|
277
277
|
href="${this.baseNavigationUrl}/details/${encodeURI(identifier)}"
|
|
278
278
|
>${DOMPurify.sanitize(linkText)}</a
|
|
279
|
-
>`;
|
|
280
|
-
}
|
|
281
|
-
/*
|
|
282
|
-
* TODO: fix field names to match model in src/collection-browser.ts
|
|
283
|
-
* private get dateSortSelector()
|
|
284
|
-
* @see src/models.ts
|
|
285
|
-
*/
|
|
286
|
-
get date() {
|
|
287
|
-
var _a, _b, _c, _d, _e;
|
|
288
|
-
switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
|
|
289
|
-
case 'date':
|
|
290
|
-
return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
|
|
291
|
-
case 'reviewdate':
|
|
292
|
-
return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
|
|
293
|
-
case 'addeddate':
|
|
294
|
-
return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
|
|
295
|
-
default:
|
|
296
|
-
return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
get classSize() {
|
|
300
|
-
if (this.mobileBreakpoint &&
|
|
301
|
-
this.currentWidth &&
|
|
302
|
-
this.currentWidth < this.mobileBreakpoint) {
|
|
303
|
-
return 'mobile';
|
|
304
|
-
}
|
|
305
|
-
return 'desktop';
|
|
306
|
-
}
|
|
307
|
-
get formatSize() {
|
|
308
|
-
if (this.mobileBreakpoint &&
|
|
309
|
-
this.currentWidth &&
|
|
310
|
-
this.currentWidth < this.mobileBreakpoint) {
|
|
311
|
-
return 'short';
|
|
312
|
-
}
|
|
313
|
-
return 'long';
|
|
314
|
-
}
|
|
315
|
-
static get styles() {
|
|
279
|
+
>`;
|
|
280
|
+
}
|
|
281
|
+
/*
|
|
282
|
+
* TODO: fix field names to match model in src/collection-browser.ts
|
|
283
|
+
* private get dateSortSelector()
|
|
284
|
+
* @see src/models.ts
|
|
285
|
+
*/
|
|
286
|
+
get date() {
|
|
287
|
+
var _a, _b, _c, _d, _e;
|
|
288
|
+
switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
|
|
289
|
+
case 'date':
|
|
290
|
+
return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
|
|
291
|
+
case 'reviewdate':
|
|
292
|
+
return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
|
|
293
|
+
case 'addeddate':
|
|
294
|
+
return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
|
|
295
|
+
default:
|
|
296
|
+
return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
get classSize() {
|
|
300
|
+
if (this.mobileBreakpoint &&
|
|
301
|
+
this.currentWidth &&
|
|
302
|
+
this.currentWidth < this.mobileBreakpoint) {
|
|
303
|
+
return 'mobile';
|
|
304
|
+
}
|
|
305
|
+
return 'desktop';
|
|
306
|
+
}
|
|
307
|
+
get formatSize() {
|
|
308
|
+
if (this.mobileBreakpoint &&
|
|
309
|
+
this.currentWidth &&
|
|
310
|
+
this.currentWidth < this.mobileBreakpoint) {
|
|
311
|
+
return 'short';
|
|
312
|
+
}
|
|
313
|
+
return 'long';
|
|
314
|
+
}
|
|
315
|
+
static get styles() {
|
|
316
316
|
return css `
|
|
317
317
|
html {
|
|
318
318
|
font-size: unset;
|
|
@@ -430,41 +430,41 @@ let TileList = class TileList extends LitElement {
|
|
|
430
430
|
flex-direction: row;
|
|
431
431
|
gap: 10px;
|
|
432
432
|
}
|
|
433
|
-
`;
|
|
434
|
-
}
|
|
435
|
-
};
|
|
436
|
-
__decorate([
|
|
437
|
-
property({ type: Object })
|
|
438
|
-
], TileList.prototype, "model", void 0);
|
|
439
|
-
__decorate([
|
|
440
|
-
property({ type: String })
|
|
441
|
-
], TileList.prototype, "baseNavigationUrl", void 0);
|
|
442
|
-
__decorate([
|
|
443
|
-
property({ type: Object })
|
|
444
|
-
], TileList.prototype, "collectionNameCache", void 0);
|
|
445
|
-
__decorate([
|
|
446
|
-
property({ type: Number })
|
|
447
|
-
], TileList.prototype, "currentWidth", void 0);
|
|
448
|
-
__decorate([
|
|
449
|
-
property({ type: Number })
|
|
450
|
-
], TileList.prototype, "currentHeight", void 0);
|
|
451
|
-
__decorate([
|
|
452
|
-
property({ type: Object })
|
|
453
|
-
], TileList.prototype, "sortParam", void 0);
|
|
454
|
-
__decorate([
|
|
455
|
-
property({ type: Number })
|
|
456
|
-
], TileList.prototype, "mobileBreakpoint", void 0);
|
|
457
|
-
__decorate([
|
|
458
|
-
state()
|
|
459
|
-
], TileList.prototype, "collectionLinks", void 0);
|
|
460
|
-
__decorate([
|
|
461
|
-
property({ type: String })
|
|
462
|
-
], TileList.prototype, "baseImageUrl", void 0);
|
|
463
|
-
__decorate([
|
|
464
|
-
property({ type: Boolean })
|
|
465
|
-
], TileList.prototype, "loggedIn", void 0);
|
|
466
|
-
TileList = __decorate([
|
|
467
|
-
customElement('tile-list')
|
|
468
|
-
], TileList);
|
|
469
|
-
export { TileList };
|
|
433
|
+
`;
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
__decorate([
|
|
437
|
+
property({ type: Object })
|
|
438
|
+
], TileList.prototype, "model", void 0);
|
|
439
|
+
__decorate([
|
|
440
|
+
property({ type: String })
|
|
441
|
+
], TileList.prototype, "baseNavigationUrl", void 0);
|
|
442
|
+
__decorate([
|
|
443
|
+
property({ type: Object })
|
|
444
|
+
], TileList.prototype, "collectionNameCache", void 0);
|
|
445
|
+
__decorate([
|
|
446
|
+
property({ type: Number })
|
|
447
|
+
], TileList.prototype, "currentWidth", void 0);
|
|
448
|
+
__decorate([
|
|
449
|
+
property({ type: Number })
|
|
450
|
+
], TileList.prototype, "currentHeight", void 0);
|
|
451
|
+
__decorate([
|
|
452
|
+
property({ type: Object })
|
|
453
|
+
], TileList.prototype, "sortParam", void 0);
|
|
454
|
+
__decorate([
|
|
455
|
+
property({ type: Number })
|
|
456
|
+
], TileList.prototype, "mobileBreakpoint", void 0);
|
|
457
|
+
__decorate([
|
|
458
|
+
state()
|
|
459
|
+
], TileList.prototype, "collectionLinks", void 0);
|
|
460
|
+
__decorate([
|
|
461
|
+
property({ type: String })
|
|
462
|
+
], TileList.prototype, "baseImageUrl", void 0);
|
|
463
|
+
__decorate([
|
|
464
|
+
property({ type: Boolean })
|
|
465
|
+
], TileList.prototype, "loggedIn", void 0);
|
|
466
|
+
TileList = __decorate([
|
|
467
|
+
customElement('tile-list')
|
|
468
|
+
], TileList);
|
|
469
|
+
export { TileList };
|
|
470
470
|
//# sourceMappingURL=tile-list.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { CSSResultGroup, LitElement } from 'lit';
|
|
2
|
-
export declare class MediatypeIcon extends LitElement {
|
|
3
|
-
mediatype: string | undefined;
|
|
4
|
-
collections: string[] | undefined;
|
|
5
|
-
showText: boolean;
|
|
6
|
-
private get displayMediatype();
|
|
7
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
8
|
-
static get styles(): CSSResultGroup;
|
|
9
|
-
}
|
|
1
|
+
import { CSSResultGroup, LitElement } from 'lit';
|
|
2
|
+
export declare class MediatypeIcon extends LitElement {
|
|
3
|
+
mediatype: string | undefined;
|
|
4
|
+
collections: string[] | undefined;
|
|
5
|
+
showText: boolean;
|
|
6
|
+
private get displayMediatype();
|
|
7
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
8
|
+
static get styles(): CSSResultGroup;
|
|
9
|
+
}
|