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