@internetarchive/collection-browser 3.4.1-alpha-webdev7761.2 → 3.4.1-alpha-webdev7761.4

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 (208) hide show
  1. package/dist/src/app-root.js +19 -28
  2. package/dist/src/app-root.js.map +1 -1
  3. package/dist/src/collection-browser.d.ts +14 -10
  4. package/dist/src/collection-browser.js +870 -886
  5. package/dist/src/collection-browser.js.map +1 -1
  6. package/dist/src/collection-facets/facet-row.js +3 -4
  7. package/dist/src/collection-facets/facet-row.js.map +1 -1
  8. package/dist/src/collection-facets/models.js.map +1 -1
  9. package/dist/src/collection-facets/more-facets-content.js +145 -156
  10. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  11. package/dist/src/collection-facets/more-facets-pagination.js +6 -10
  12. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  13. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +16 -21
  14. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -1
  15. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +7 -10
  16. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  17. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +3 -2
  18. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  19. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +9 -11
  20. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  21. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +7 -7
  22. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  23. package/dist/src/collection-facets/toggle-switch.js +4 -6
  24. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  25. package/dist/src/collection-facets.js +34 -50
  26. package/dist/src/collection-facets.js.map +1 -1
  27. package/dist/src/combo-box/caret-closed.js +5 -11
  28. package/dist/src/combo-box/caret-closed.js.map +1 -1
  29. package/dist/src/combo-box/caret-open.js +5 -11
  30. package/dist/src/combo-box/caret-open.js.map +1 -1
  31. package/dist/src/combo-box/clear.d.ts +2 -0
  32. package/dist/src/combo-box/clear.js +11 -0
  33. package/dist/src/combo-box/clear.js.map +1 -0
  34. package/dist/src/combo-box/ia-combo-box.d.ts +40 -9
  35. package/dist/src/combo-box/ia-combo-box.js +363 -272
  36. package/dist/src/combo-box/ia-combo-box.js.map +1 -1
  37. package/dist/src/combo-box/models.d.ts +14 -0
  38. package/dist/src/combo-box/models.js +32 -1
  39. package/dist/src/combo-box/models.js.map +1 -1
  40. package/dist/src/data-source/collection-browser-data-source.js +35 -47
  41. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  42. package/dist/src/empty-placeholder.js +19 -18
  43. package/dist/src/empty-placeholder.js.map +1 -1
  44. package/dist/src/expanded-date-picker.js +6 -10
  45. package/dist/src/expanded-date-picker.js.map +1 -1
  46. package/dist/src/language-code-handler/language-code-handler.js +2 -2
  47. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  48. package/dist/src/manage/manage-bar.js +86 -92
  49. package/dist/src/manage/manage-bar.js.map +1 -1
  50. package/dist/src/manage/remove-items-modal-content.js +2 -2
  51. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  52. package/dist/src/models.js +36 -40
  53. package/dist/src/models.js.map +1 -1
  54. package/dist/src/restoration-state-handler.js +9 -10
  55. package/dist/src/restoration-state-handler.js.map +1 -1
  56. package/dist/src/sort-filter-bar/alpha-bar.js +9 -14
  57. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  58. package/dist/src/sort-filter-bar/sort-filter-bar.js +14 -24
  59. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  60. package/dist/src/tiles/base-tile-component.js +1 -2
  61. package/dist/src/tiles/base-tile-component.js.map +1 -1
  62. package/dist/src/tiles/grid/account-tile.js +36 -38
  63. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  64. package/dist/src/tiles/grid/collection-tile.js +79 -82
  65. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  66. package/dist/src/tiles/grid/item-tile.js +154 -164
  67. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  68. package/dist/src/tiles/grid/search-tile.js +42 -43
  69. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  70. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
  71. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
  72. package/dist/src/tiles/grid/tile-stats.js +2 -3
  73. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  74. package/dist/src/tiles/hover/hover-pane-controller.js +42 -49
  75. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  76. package/dist/src/tiles/hover/tile-hover-pane.js +113 -114
  77. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  78. package/dist/src/tiles/image-block.js +5 -8
  79. package/dist/src/tiles/image-block.js.map +1 -1
  80. package/dist/src/tiles/item-image.js +12 -19
  81. package/dist/src/tiles/item-image.js.map +1 -1
  82. package/dist/src/tiles/list/tile-list-compact.js +114 -122
  83. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  84. package/dist/src/tiles/list/tile-list.js +326 -347
  85. package/dist/src/tiles/list/tile-list.js.map +1 -1
  86. package/dist/src/tiles/overlay/icon-overlay.js +1 -2
  87. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  88. package/dist/src/tiles/overlay/text-overlay.js +2 -4
  89. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  90. package/dist/src/tiles/text-snippet-block.js +2 -4
  91. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  92. package/dist/src/tiles/tile-dispatcher.js +233 -241
  93. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  94. package/dist/src/tiles/tile-display-value-provider.js +5 -9
  95. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  96. package/dist/src/tiles/tile-mediatype-icon.js +12 -19
  97. package/dist/src/tiles/tile-mediatype-icon.js.map +1 -1
  98. package/dist/src/utils/collapse-repeated-quotes.js +1 -1
  99. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -1
  100. package/dist/src/utils/facet-utils.js +3 -5
  101. package/dist/src/utils/facet-utils.js.map +1 -1
  102. package/dist/src/utils/format-count.js +10 -10
  103. package/dist/src/utils/format-count.js.map +1 -1
  104. package/dist/src/utils/format-date.js.map +1 -1
  105. package/dist/src/utils/resolve-mediatype.js +2 -3
  106. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  107. package/dist/test/collection-browser.test.js +131 -185
  108. package/dist/test/collection-browser.test.js.map +1 -1
  109. package/dist/test/collection-facets/facet-row.test.js +60 -75
  110. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  111. package/dist/test/collection-facets/facets-template.test.js +17 -23
  112. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  113. package/dist/test/collection-facets/more-facets-content.test.js +22 -32
  114. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  115. package/dist/test/collection-facets/more-facets-pagination.test.js +16 -22
  116. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  117. package/dist/test/collection-facets/toggle-switch.test.js +22 -19
  118. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  119. package/dist/test/collection-facets.test.js +80 -97
  120. package/dist/test/collection-facets.test.js.map +1 -1
  121. package/dist/test/empty-placeholder.test.js +11 -17
  122. package/dist/test/empty-placeholder.test.js.map +1 -1
  123. package/dist/test/expanded-date-picker.test.js +8 -14
  124. package/dist/test/expanded-date-picker.test.js.map +1 -1
  125. package/dist/test/icon-overlay.test.js +7 -6
  126. package/dist/test/icon-overlay.test.js.map +1 -1
  127. package/dist/test/image-block.test.js +16 -26
  128. package/dist/test/image-block.test.js.map +1 -1
  129. package/dist/test/item-image.test.js +23 -32
  130. package/dist/test/item-image.test.js.map +1 -1
  131. package/dist/test/manage/manage-bar.test.js +21 -33
  132. package/dist/test/manage/manage-bar.test.js.map +1 -1
  133. package/dist/test/manage/remove-items-modal-content.test.js +10 -15
  134. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
  135. package/dist/test/mocks/mock-search-service.js +2 -3
  136. package/dist/test/mocks/mock-search-service.js.map +1 -1
  137. package/dist/test/restoration-state-handler.test.js +13 -21
  138. package/dist/test/restoration-state-handler.test.js.map +1 -1
  139. package/dist/test/review-block.test.js +16 -18
  140. package/dist/test/review-block.test.js.map +1 -1
  141. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +2 -3
  142. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  143. package/dist/test/sort-filter-bar/alpha-bar.test.js +18 -24
  144. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  145. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +178 -180
  146. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  147. package/dist/test/text-overlay.test.js +16 -15
  148. package/dist/test/text-overlay.test.js.map +1 -1
  149. package/dist/test/text-snippet-block.test.js +14 -19
  150. package/dist/test/text-snippet-block.test.js.map +1 -1
  151. package/dist/test/tile-stats.test.js +73 -34
  152. package/dist/test/tile-stats.test.js.map +1 -1
  153. package/dist/test/tiles/grid/account-tile.test.js +25 -25
  154. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  155. package/dist/test/tiles/grid/collection-tile.test.js +13 -19
  156. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  157. package/dist/test/tiles/grid/item-tile.test.js +141 -168
  158. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  159. package/dist/test/tiles/grid/search-tile.test.js +9 -13
  160. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  161. package/dist/test/tiles/hover/hover-pane-controller.test.js +50 -62
  162. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  163. package/dist/test/tiles/hover/tile-hover-pane.test.js +12 -16
  164. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  165. package/dist/test/tiles/list/tile-list-compact.test.js +104 -118
  166. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  167. package/dist/test/tiles/list/tile-list.test.js +202 -231
  168. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  169. package/dist/test/tiles/tile-dispatcher.test.js +97 -110
  170. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  171. package/dist/test/tiles/tile-mediatype-icon.test.js +12 -24
  172. package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -1
  173. package/dist/test/utils/format-date.test.js.map +1 -1
  174. package/index.html +1 -1
  175. package/package.json +5 -3
  176. package/src/collection-browser.ts +3060 -3030
  177. package/src/collection-facets/models.ts +10 -10
  178. package/src/collection-facets/more-facets-content.ts +639 -639
  179. package/src/collection-facets.ts +1 -1
  180. package/src/combo-box/caret-closed.ts +5 -11
  181. package/src/combo-box/caret-open.ts +5 -11
  182. package/src/combo-box/clear.ts +11 -0
  183. package/src/combo-box/ia-combo-box.ts +1288 -1180
  184. package/src/combo-box/models.ts +31 -1
  185. package/src/manage/manage-bar.ts +247 -247
  186. package/src/restoration-state-handler.ts +5 -1
  187. package/src/tiles/base-tile-component.ts +65 -65
  188. package/src/tiles/grid/account-tile.ts +113 -113
  189. package/src/tiles/grid/collection-tile.ts +163 -163
  190. package/src/tiles/grid/item-tile.ts +340 -340
  191. package/src/tiles/grid/search-tile.ts +90 -90
  192. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
  193. package/src/tiles/hover/hover-pane-controller.ts +613 -613
  194. package/src/tiles/hover/tile-hover-pane.ts +184 -184
  195. package/src/tiles/list/tile-list-compact.ts +239 -239
  196. package/src/tiles/list/tile-list.ts +700 -700
  197. package/src/tiles/tile-dispatcher.ts +517 -517
  198. package/src/utils/format-date.ts +62 -62
  199. package/test/collection-facets/facet-row.test.ts +375 -375
  200. package/test/collection-facets.test.ts +928 -928
  201. package/test/tiles/grid/item-tile.test.ts +520 -520
  202. package/test/tiles/hover/hover-pane-controller.test.ts +418 -418
  203. package/test/tiles/list/tile-list-compact.test.ts +282 -282
  204. package/test/tiles/list/tile-list.test.ts +552 -552
  205. package/test/tiles/tile-dispatcher.test.ts +283 -283
  206. package/test/utils/format-date.test.ts +89 -89
  207. package/tsconfig.json +8 -3
  208. package/vite.config.ts +29 -22
@@ -8,58 +8,52 @@ describe('Mediatype Icon', () => {
8
8
  model = new TileModel({});
9
9
  });
10
10
  it('renders component', async () => {
11
- var _a;
12
11
  model.mediatype = 'texts';
13
12
  const el = await fixture(html `
14
13
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
15
14
  `);
16
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
15
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
17
16
  expect(iconDiv).to.exist;
18
17
  });
19
18
  it('renders basic mediatype correctly', async () => {
20
- var _a;
21
19
  model.mediatype = 'movies';
22
20
  const el = await fixture(html `
23
21
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
24
22
  `);
25
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
23
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
26
24
  expect(iconDiv.title).to.equal('Movie');
27
25
  expect(iconDiv.getAttribute('style')).to.include('#f1644b');
28
26
  expect(iconDiv.children[0]).to.be.instanceOf(SVGElement);
29
27
  });
30
28
  it('renders TV mediatype', async () => {
31
- var _a;
32
29
  model.mediatype = 'movies';
33
30
  model.collections = ['tvnews'];
34
31
  const el = await fixture(html `
35
32
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
36
33
  `);
37
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
34
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
38
35
  expect(iconDiv.title).to.equal('TV');
39
36
  });
40
37
  it('renders TV Commercial mediatype for TV items with ad ids', async () => {
41
- var _a;
42
38
  model.mediatype = 'movies';
43
39
  model.collections = ['tvnews'];
44
40
  model.adIds = ['foo'];
45
41
  const el = await fixture(html `
46
42
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
47
43
  `);
48
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
44
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
49
45
  expect(iconDiv.title).to.equal('TV Commercial');
50
46
  });
51
47
  it('renders TV Commercial mediatype for TV items in tv_ads collection', async () => {
52
- var _a;
53
48
  model.mediatype = 'movies';
54
49
  model.collections = ['tvnews', 'tv_ads'];
55
50
  const el = await fixture(html `
56
51
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
57
52
  `);
58
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
53
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
59
54
  expect(iconDiv.title).to.equal('TV Commercial');
60
55
  });
61
56
  it('renders TV Fact Check mediatype for TV search results with fact check URLs', async () => {
62
- var _a;
63
57
  model.hitType = 'tv_clip';
64
58
  model.hitRequestSource = 'search_query';
65
59
  model.mediatype = 'movies';
@@ -68,11 +62,10 @@ describe('Mediatype Icon', () => {
68
62
  const el = await fixture(html `
69
63
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
70
64
  `);
71
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
65
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
72
66
  expect(iconDiv.title).to.equal('TV Fact Check');
73
67
  });
74
68
  it('renders TV Fact Check mediatype for TV search results in factchecked collection', async () => {
75
- var _a;
76
69
  model.hitType = 'tv_clip';
77
70
  model.hitRequestSource = 'search_query';
78
71
  model.mediatype = 'movies';
@@ -80,11 +73,10 @@ describe('Mediatype Icon', () => {
80
73
  const el = await fixture(html `
81
74
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
82
75
  `);
83
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
76
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
84
77
  expect(iconDiv.title).to.equal('TV Fact Check');
85
78
  });
86
79
  it('does not use TV Fact Check mediatype for non-search results', async () => {
87
- var _a;
88
80
  model.hitType = 'tv_clip';
89
81
  model.hitRequestSource = 'collection_members';
90
82
  model.mediatype = 'movies';
@@ -93,11 +85,10 @@ describe('Mediatype Icon', () => {
93
85
  const el = await fixture(html `
94
86
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
95
87
  `);
96
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
88
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
97
89
  expect(iconDiv.title).to.equal('TV');
98
90
  });
99
91
  it('renders TV Quote mediatype for TV search results that are clips', async () => {
100
- var _a;
101
92
  model.hitType = 'tv_clip';
102
93
  model.hitRequestSource = 'search_query';
103
94
  model.mediatype = 'movies';
@@ -106,11 +97,10 @@ describe('Mediatype Icon', () => {
106
97
  const el = await fixture(html `
107
98
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
108
99
  `);
109
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
100
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
110
101
  expect(iconDiv.title).to.equal('TV Quote');
111
102
  });
112
103
  it('does not use TV Quote mediatype for non-search results', async () => {
113
- var _a;
114
104
  model.hitType = 'tv_clip';
115
105
  model.hitRequestSource = 'collection_members';
116
106
  model.mediatype = 'movies';
@@ -119,26 +109,24 @@ describe('Mediatype Icon', () => {
119
109
  const el = await fixture(html `
120
110
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
121
111
  `);
122
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
112
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
123
113
  expect(iconDiv.title).to.equal('TV');
124
114
  });
125
115
  it('renders radio mediatype', async () => {
126
- var _a;
127
116
  model.mediatype = 'audio';
128
117
  model.collections = ['radio'];
129
118
  const el = await fixture(html `
130
119
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
131
120
  `);
132
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
121
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
133
122
  expect(iconDiv.title).to.equal('Radio');
134
123
  });
135
124
  it('renders no icon if mediatype is unrecognized', async () => {
136
- var _a;
137
125
  model.mediatype = 'foobar';
138
126
  const el = await fixture(html `
139
127
  <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
140
128
  `);
141
- const iconDiv = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#icon');
129
+ const iconDiv = el.shadowRoot?.querySelector('#icon');
142
130
  expect(iconDiv).not.to.exist;
143
131
  });
144
132
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tile-mediatype-icon.test.js","sourceRoot":"","sources":["../../../test/tiles/tile-mediatype-icon.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileMediatypeIcon } from '../../src/tiles/tile-mediatype-icon';\n\nimport '../../src/tiles/tile-mediatype-icon';\nimport { TileModel } from '../../src/models';\nimport { MediaType } from '@internetarchive/field-parsers';\n\ndescribe('Mediatype Icon', () => {\n let model: TileModel;\n beforeEach(() => {\n model = new TileModel({});\n });\n\n it('renders component', async () => {\n model.mediatype = 'texts';\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon');\n expect(iconDiv).to.exist;\n });\n\n it('renders basic mediatype correctly', async () => {\n model.mediatype = 'movies';\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('Movie');\n expect(iconDiv.getAttribute('style')).to.include('#f1644b');\n expect(iconDiv.children[0]).to.be.instanceOf(SVGElement);\n });\n\n it('renders TV mediatype', async () => {\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders TV Commercial mediatype for TV items with ad ids', async () => {\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.adIds = ['foo'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Commercial');\n });\n\n it('renders TV Commercial mediatype for TV items in tv_ads collection', async () => {\n model.mediatype = 'movies';\n model.collections = ['tvnews', 'tv_ads'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Commercial');\n });\n\n it('renders TV Fact Check mediatype for TV search results with fact check URLs', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'search_query';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.factChecks = ['https://example.com'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Fact Check');\n });\n\n it('renders TV Fact Check mediatype for TV search results in factchecked collection', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'search_query';\n model.mediatype = 'movies';\n model.collections = ['tvnews', 'factchecked'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Fact Check');\n });\n\n it('does not use TV Fact Check mediatype for non-search results', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'collection_members';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.factChecks = ['https://example.com'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders TV Quote mediatype for TV search results that are clips', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'search_query';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.isClip = true;\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Quote');\n });\n\n it('does not use TV Quote mediatype for non-search results', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'collection_members';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.isClip = true;\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders radio mediatype', async () => {\n model.mediatype = 'audio';\n model.collections = ['radio'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('Radio');\n });\n\n it('renders no icon if mediatype is unrecognized', async () => {\n model.mediatype = 'foobar' as MediaType;\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon');\n expect(iconDiv).not.to.exist;\n });\n});\n"]}
1
+ {"version":3,"file":"tile-mediatype-icon.test.js","sourceRoot":"","sources":["../../../test/tiles/tile-mediatype-icon.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { TileMediatypeIcon } from '../../src/tiles/tile-mediatype-icon';\n\nimport '../../src/tiles/tile-mediatype-icon';\nimport { TileModel } from '../../src/models';\nimport { MediaType } from '@internetarchive/field-parsers';\n\ndescribe('Mediatype Icon', () => {\n let model: TileModel;\n beforeEach(() => {\n model = new TileModel({});\n });\n\n it('renders component', async () => {\n model.mediatype = 'texts';\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon');\n expect(iconDiv).to.exist;\n });\n\n it('renders basic mediatype correctly', async () => {\n model.mediatype = 'movies';\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('Movie');\n expect(iconDiv.getAttribute('style')).to.include('#f1644b');\n expect(iconDiv.children[0]).to.be.instanceOf(SVGElement);\n });\n\n it('renders TV mediatype', async () => {\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders TV Commercial mediatype for TV items with ad ids', async () => {\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.adIds = ['foo'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Commercial');\n });\n\n it('renders TV Commercial mediatype for TV items in tv_ads collection', async () => {\n model.mediatype = 'movies';\n model.collections = ['tvnews', 'tv_ads'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Commercial');\n });\n\n it('renders TV Fact Check mediatype for TV search results with fact check URLs', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'search_query';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.factChecks = ['https://example.com'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Fact Check');\n });\n\n it('renders TV Fact Check mediatype for TV search results in factchecked collection', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'search_query';\n model.mediatype = 'movies';\n model.collections = ['tvnews', 'factchecked'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Fact Check');\n });\n\n it('does not use TV Fact Check mediatype for non-search results', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'collection_members';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.factChecks = ['https://example.com'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders TV Quote mediatype for TV search results that are clips', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'search_query';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.isClip = true;\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV Quote');\n });\n\n it('does not use TV Quote mediatype for non-search results', async () => {\n model.hitType = 'tv_clip';\n model.hitRequestSource = 'collection_members';\n model.mediatype = 'movies';\n model.collections = ['tvnews'];\n model.isClip = true;\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('TV');\n });\n\n it('renders radio mediatype', async () => {\n model.mediatype = 'audio';\n model.collections = ['radio'];\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;\n expect(iconDiv.title).to.equal('Radio');\n });\n\n it('renders no icon if mediatype is unrecognized', async () => {\n model.mediatype = 'foobar' as MediaType;\n const el = await fixture<TileMediatypeIcon>(html`\n <tile-mediatype-icon .model=${model}></tile-mediatype-icon>\n `);\n\n const iconDiv = el.shadowRoot?.querySelector('#icon');\n expect(iconDiv).not.to.exist;\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"format-date.test.js","sourceRoot":"","sources":["../../../test/utils/format-date.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\r\nimport { formatDate } from '../../src/utils/format-date';\r\n\r\nconst testDate = new Date(2020, 11, 9);\r\n\r\ndescribe('formatDate', () => {\r\n it('returns blank when undefined date', () => {\r\n expect(formatDate(undefined)).to.equal('');\r\n });\r\n\r\n it('returns short date when no DateFormat', () => {\r\n expect(formatDate(testDate)).to.equal('Dec 2020');\r\n });\r\n\r\n it('returns long date when long DateFormat', () => {\r\n expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');\r\n });\r\n\r\n it('returns year-only date when year-only DateFormat', () => {\r\n expect(formatDate(testDate, 'year-only')).to.equal('2020');\r\n });\r\n\r\n it('returns correct year for old \"Jan 1 at midnight\" dates and year-only DateFormat', () => {\r\n // Many standard timezones have a discontinuity in date parsing at some point during\r\n // the 19th or 20th century, corresponding to the creation of the timezone.\r\n // Dates prior to the discontinuity generally have a non-hour-aligned timezone offset\r\n // which can throw off the calculated year for dates which are close to a year boundary.\r\n // This is particularly problematic for \"Jan 1 at midnight\" dates, which are what we\r\n // receive from the search engine for date metadata that only specifies the year.\r\n // So we must ensure these older dates still output the correct year, not the prior one.\r\n expect(formatDate(new Date('1234-01-01T00:00:00Z'), 'year-only')).to.equal(\r\n '1234',\r\n );\r\n });\r\n\r\n it('uses UTC time zone by default or when useLocalTime is explicitly false', () => {\r\n // Default options\r\n expect(formatDate(new Date('2025-02-15T00:00:00Z'), 'long')).to.equal(\r\n 'Feb 15, 2025',\r\n );\r\n expect(formatDate(new Date('2025-02-15T23:59:59Z'), 'long')).to.equal(\r\n 'Feb 15, 2025',\r\n );\r\n\r\n // Explicit `useLocalTime: false` option\r\n const options = { useLocalTime: false };\r\n expect(\r\n formatDate(new Date('2025-02-15T00:00:00Z'), 'long', options),\r\n ).to.equal('Feb 15, 2025');\r\n expect(\r\n formatDate(new Date('2025-02-15T23:59:59Z'), 'long', options),\r\n ).to.equal('Feb 15, 2025');\r\n });\r\n\r\n it('uses local time zone when specified', () => {\r\n // N.B.:\r\n // - Positive offset corresponds to UTC-x zones\r\n // - Negative offset corresponds to UTC+x zones\r\n const offset = new Date().getTimezoneOffset();\r\n const options = { useLocalTime: true };\r\n\r\n // The expected behavior depends on the local time where the tests are run:\r\n if (offset > 0) {\r\n // If we're testing under a positive offset, the first second of the UTC day should locally fall on the previous day\r\n expect(\r\n formatDate(new Date('2025-02-15T00:00:00Z'), 'long', options),\r\n ).to.equal('Feb 14, 2025');\r\n } else if (offset < 0) {\r\n // If we're testing under a negative offset, the last second of the UTC day should locally fall on the next day\r\n expect(\r\n formatDate(new Date('2025-02-15T23:59:59Z'), 'long', options),\r\n ).to.equal('Feb 16, 2025');\r\n } else {\r\n // If we're testing *in* UTC, then both seconds should locally fall on the same day\r\n expect(\r\n formatDate(new Date('2025-02-15T00:00:00Z'), 'long', options),\r\n ).to.equal('Feb 15, 2025');\r\n expect(\r\n formatDate(new Date('2025-02-15T23:59:59Z'), 'long', options),\r\n ).to.equal('Feb 15, 2025');\r\n }\r\n });\r\n\r\n it('returns locale formatted date', () => {\r\n expect(formatDate(testDate, 'long', { locale: 'de-DE' })).to.equal(\r\n '09. Dez. 2020',\r\n );\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"format-date.test.js","sourceRoot":"","sources":["../../../test/utils/format-date.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { formatDate } from '../../src/utils/format-date';\n\nconst testDate = new Date(2020, 11, 9);\n\ndescribe('formatDate', () => {\n it('returns blank when undefined date', () => {\n expect(formatDate(undefined)).to.equal('');\n });\n\n it('returns short date when no DateFormat', () => {\n expect(formatDate(testDate)).to.equal('Dec 2020');\n });\n\n it('returns long date when long DateFormat', () => {\n expect(formatDate(testDate, 'long')).to.equal('Dec 09, 2020');\n });\n\n it('returns year-only date when year-only DateFormat', () => {\n expect(formatDate(testDate, 'year-only')).to.equal('2020');\n });\n\n it('returns correct year for old \"Jan 1 at midnight\" dates and year-only DateFormat', () => {\n // Many standard timezones have a discontinuity in date parsing at some point during\n // the 19th or 20th century, corresponding to the creation of the timezone.\n // Dates prior to the discontinuity generally have a non-hour-aligned timezone offset\n // which can throw off the calculated year for dates which are close to a year boundary.\n // This is particularly problematic for \"Jan 1 at midnight\" dates, which are what we\n // receive from the search engine for date metadata that only specifies the year.\n // So we must ensure these older dates still output the correct year, not the prior one.\n expect(formatDate(new Date('1234-01-01T00:00:00Z'), 'year-only')).to.equal(\n '1234',\n );\n });\n\n it('uses UTC time zone by default or when useLocalTime is explicitly false', () => {\n // Default options\n expect(formatDate(new Date('2025-02-15T00:00:00Z'), 'long')).to.equal(\n 'Feb 15, 2025',\n );\n expect(formatDate(new Date('2025-02-15T23:59:59Z'), 'long')).to.equal(\n 'Feb 15, 2025',\n );\n\n // Explicit `useLocalTime: false` option\n const options = { useLocalTime: false };\n expect(\n formatDate(new Date('2025-02-15T00:00:00Z'), 'long', options),\n ).to.equal('Feb 15, 2025');\n expect(\n formatDate(new Date('2025-02-15T23:59:59Z'), 'long', options),\n ).to.equal('Feb 15, 2025');\n });\n\n it('uses local time zone when specified', () => {\n // N.B.:\n // - Positive offset corresponds to UTC-x zones\n // - Negative offset corresponds to UTC+x zones\n const offset = new Date().getTimezoneOffset();\n const options = { useLocalTime: true };\n\n // The expected behavior depends on the local time where the tests are run:\n if (offset > 0) {\n // If we're testing under a positive offset, the first second of the UTC day should locally fall on the previous day\n expect(\n formatDate(new Date('2025-02-15T00:00:00Z'), 'long', options),\n ).to.equal('Feb 14, 2025');\n } else if (offset < 0) {\n // If we're testing under a negative offset, the last second of the UTC day should locally fall on the next day\n expect(\n formatDate(new Date('2025-02-15T23:59:59Z'), 'long', options),\n ).to.equal('Feb 16, 2025');\n } else {\n // If we're testing *in* UTC, then both seconds should locally fall on the same day\n expect(\n formatDate(new Date('2025-02-15T00:00:00Z'), 'long', options),\n ).to.equal('Feb 15, 2025');\n expect(\n formatDate(new Date('2025-02-15T23:59:59Z'), 'long', options),\n ).to.equal('Feb 15, 2025');\n }\n });\n\n it('returns locale formatted date', () => {\n expect(formatDate(testDate, 'long', { locale: 'de-DE' })).to.equal(\n '09. Dez. 2020',\n );\n });\n});\n"]}
package/index.html CHANGED
@@ -19,6 +19,6 @@
19
19
  </head>
20
20
  <body>
21
21
  <app-root></app-root>
22
- <script type="module" src="./dist/src/app-root.js"></script>
22
+ <script type="module" src="./src/app-root"></script>
23
23
  </body>
24
24
  </html>
package/package.json CHANGED
@@ -3,11 +3,11 @@
3
3
  "description": "The Internet Archive Collection Browser.",
4
4
  "license": "AGPL-3.0-only",
5
5
  "author": "Internet Archive",
6
- "version": "3.4.1-alpha-webdev7761.2",
6
+ "version": "3.4.1-alpha-webdev7761.4",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
10
- "start": "yarn run prepare && tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds\"",
10
+ "start": "vite",
11
11
  "prepare:ghpages": "rimraf ghpages && yarn run prepare && vite build",
12
12
  "prepare": "rimraf dist && tsc && husky install",
13
13
  "lint": "eslint . && prettier \"**/*.ts\" --check",
@@ -25,6 +25,7 @@
25
25
  "dependencies": {
26
26
  "@a11y/focus-trap": "^1.0.5",
27
27
  "@internetarchive/analytics-manager": "^0.1.4",
28
+ "@internetarchive/elements": "0.1.1-webdev-8119.1",
28
29
  "@internetarchive/feature-feedback": "^1.0.0",
29
30
  "@internetarchive/field-parsers": "^1.0.0",
30
31
  "@internetarchive/histogram-date-range": "^1.4.1",
@@ -37,7 +38,7 @@
37
38
  "@internetarchive/shared-resize-observer": "^0.2.0",
38
39
  "@lit/localize": "^0.12.2",
39
40
  "dompurify": "^3.2.4",
40
- "lit": "^2.8.0",
41
+ "lit": "^3.3.1",
41
42
  "typescript-cookie": "^1.0.6"
42
43
  },
43
44
  "devDependencies": {
@@ -48,6 +49,7 @@
48
49
  "@types/mocha": "^10.0.10",
49
50
  "@typescript-eslint/eslint-plugin": "^8.27.0",
50
51
  "@typescript-eslint/parser": "^8.27.0",
52
+ "@vitejs/plugin-basic-ssl": "^2.1.4",
51
53
  "@web/dev-server": "^0.4.6",
52
54
  "@web/test-runner": "^0.20.0",
53
55
  "concurrently": "^9.1.2",