@internetarchive/collection-browser 0.0.1-alpha.21 → 0.0.1-alpha.22

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 (58) hide show
  1. package/demo/app-root.ts +10 -0
  2. package/dist/demo/app-root.d.ts +2 -0
  3. package/dist/demo/app-root.js +8 -0
  4. package/dist/demo/app-root.js.map +1 -1
  5. package/dist/src/async-collection-name.d.ts +11 -0
  6. package/dist/src/async-collection-name.js +38 -0
  7. package/dist/src/async-collection-name.js.map +1 -0
  8. package/dist/src/collection-browser.d.ts +4 -2
  9. package/dist/src/collection-browser.js +36 -13
  10. package/dist/src/collection-browser.js.map +1 -1
  11. package/dist/src/collection-facets.d.ts +3 -0
  12. package/dist/src/collection-facets.js +18 -1
  13. package/dist/src/collection-facets.js.map +1 -1
  14. package/dist/src/collection-name-cache.d.ts +18 -0
  15. package/dist/src/collection-name-cache.js +89 -0
  16. package/dist/src/collection-name-cache.js.map +1 -0
  17. package/dist/src/models.d.ts +3 -0
  18. package/dist/src/models.js.map +1 -1
  19. package/dist/src/tiles/grid/item-tile.d.ts +3 -0
  20. package/dist/src/tiles/grid/item-tile.js +13 -3
  21. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  22. package/dist/src/tiles/list/tile-list.d.ts +5 -0
  23. package/dist/src/tiles/list/tile-list.js +73 -70
  24. package/dist/src/tiles/list/tile-list.js.map +1 -1
  25. package/dist/src/tiles/tile-dispatcher.d.ts +3 -0
  26. package/dist/src/tiles/tile-dispatcher.js +10 -1
  27. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  28. package/dist/test/collection-name-cache.test.d.ts +1 -0
  29. package/dist/test/collection-name-cache.test.js +158 -0
  30. package/dist/test/collection-name-cache.test.js.map +1 -0
  31. package/dist/test/mocks/mock-search-response.d.ts +5 -0
  32. package/dist/test/mocks/mock-search-response.js +62 -0
  33. package/dist/test/mocks/mock-search-response.js.map +1 -0
  34. package/dist/test/mocks/mock-search-service.d.ts +13 -0
  35. package/dist/test/mocks/mock-search-service.js +20 -0
  36. package/dist/test/mocks/mock-search-service.js.map +1 -0
  37. package/package.json +4 -1
  38. package/src/collection-browser.ts +32 -3
  39. package/src/collection-facets.ts +21 -1
  40. package/src/models.ts +3 -0
  41. package/src/tiles/grid/item-tile.ts +14 -3
  42. package/src/tiles/list/tile-list.ts +84 -66
  43. package/src/tiles/tile-dispatcher.ts +11 -0
  44. package/dist/src/assets/img/icons/arrow-right.d.ts +0 -2
  45. package/dist/src/assets/img/icons/arrow-right.js +0 -4
  46. package/dist/src/assets/img/icons/arrow-right.js.map +0 -1
  47. package/dist/src/data-manager.d.ts +0 -68
  48. package/dist/src/data-manager.js +0 -266
  49. package/dist/src/data-manager.js.map +0 -1
  50. package/dist/src/url-manager.d.ts +0 -0
  51. package/dist/src/url-manager.js +0 -2
  52. package/dist/src/url-manager.js.map +0 -1
  53. package/dist/src/your-webcomponent.d.ts +0 -8
  54. package/dist/src/your-webcomponent.js +0 -38
  55. package/dist/src/your-webcomponent.js.map +0 -1
  56. package/dist/test/your-webcomponent.test.d.ts +0 -1
  57. package/dist/test/your-webcomponent.test.js +0 -23
  58. package/dist/test/your-webcomponent.test.js.map +0 -1
package/demo/app-root.ts CHANGED
@@ -1,7 +1,9 @@
1
1
  import { SearchService } from '@internetarchive/search-service';
2
+ import { LocalCache } from '@internetarchive/local-cache';
2
3
  import { html, css, LitElement, PropertyValues } from 'lit';
3
4
  import { customElement, query, state } from 'lit/decorators.js';
4
5
  import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
6
+ import { CollectionNameCache } from '@internetarchive/collection-name-cache';
5
7
  import type { CollectionBrowser } from '../src/collection-browser';
6
8
  import '../src/collection-browser';
7
9
 
@@ -11,6 +13,13 @@ export class AppRoot extends LitElement {
11
13
 
12
14
  private resizeObserver = new SharedResizeObserver();
13
15
 
16
+ private localCache = new LocalCache();
17
+
18
+ private collectionNameCache = new CollectionNameCache({
19
+ searchService: this.searchService,
20
+ localCache: this.localCache,
21
+ });
22
+
14
23
  @state() private currentPage?: number;
15
24
 
16
25
  @state() private searchQuery?: string;
@@ -158,6 +167,7 @@ export class AppRoot extends LitElement {
158
167
  .baseNavigationUrl=${'https://archive.org'}
159
168
  .searchService=${this.searchService}
160
169
  .resizeObserver=${this.resizeObserver}
170
+ .collectionNameCache=${this.collectionNameCache}
161
171
  @visiblePageChanged=${this.visiblePageChanged}
162
172
  >
163
173
  </collection-browser>
@@ -3,6 +3,8 @@ import '../src/collection-browser';
3
3
  export declare class AppRoot extends LitElement {
4
4
  private searchService;
5
5
  private resizeObserver;
6
+ private localCache;
7
+ private collectionNameCache;
6
8
  private currentPage?;
7
9
  private searchQuery?;
8
10
  private cellWidth;
@@ -1,14 +1,21 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { SearchService } from '@internetarchive/search-service';
3
+ import { LocalCache } from '@internetarchive/local-cache';
3
4
  import { html, css, LitElement } from 'lit';
4
5
  import { customElement, query, state } from 'lit/decorators.js';
5
6
  import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
7
+ import { CollectionNameCache } from '@internetarchive/collection-name-cache';
6
8
  import '../src/collection-browser';
7
9
  let AppRoot = class AppRoot extends LitElement {
8
10
  constructor() {
9
11
  super(...arguments);
10
12
  this.searchService = SearchService.default;
11
13
  this.resizeObserver = new SharedResizeObserver();
14
+ this.localCache = new LocalCache();
15
+ this.collectionNameCache = new CollectionNameCache({
16
+ searchService: this.searchService,
17
+ localCache: this.localCache,
18
+ });
12
19
  this.cellWidth = 18;
13
20
  this.cellHeight = 29;
14
21
  this.rowGap = 1.7;
@@ -140,6 +147,7 @@ let AppRoot = class AppRoot extends LitElement {
140
147
  .baseNavigationUrl=${'https://archive.org'}
141
148
  .searchService=${this.searchService}
142
149
  .resizeObserver=${this.resizeObserver}
150
+ .collectionNameCache=${this.collectionNameCache}
143
151
  @visiblePageChanged=${this.visiblePageChanged}
144
152
  >
145
153
  </collection-browser>
@@ -1 +1 @@
1
- {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../demo/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchService } from '@internetarchive/search-service';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n this.currentPage = 1;\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <button\n @click=${() => {\n this.collectionBrowser.showDeleteButtons =\n !this.collectionBrowser.showDeleteButtons;\n }}\n >\n Toggle Delete Mode\n </button>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n @visiblePageChanged=${this.visiblePageChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n `;\n}\n"]}
1
+ {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../demo/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchService } from '@internetarchive/search-service';\nimport { LocalCache } from '@internetarchive/local-cache';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport { CollectionNameCache } from '@internetarchive/collection-name-cache';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n private localCache = new LocalCache();\n\n private collectionNameCache = new CollectionNameCache({\n searchService: this.searchService,\n localCache: this.localCache,\n });\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n this.currentPage = 1;\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <button\n @click=${() => {\n this.collectionBrowser.showDeleteButtons =\n !this.collectionBrowser.showDeleteButtons;\n }}\n >\n Toggle Delete Mode\n </button>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n .collectionNameCache=${this.collectionNameCache}\n @visiblePageChanged=${this.visiblePageChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n `;\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { LitElement, PropertyValues } from "lit";
2
+ import { CollectionNameCacheInterface } from "./collection-name-cache";
3
+ export declare class AsyncCollectionName extends LitElement {
4
+ collectionNameCache?: CollectionNameCacheInterface;
5
+ identifier?: string;
6
+ name?: string | null;
7
+ render(): import("lit-html").TemplateResult<1>;
8
+ protected createRenderRoot(): Element | ShadowRoot;
9
+ updated(changed: PropertyValues): void;
10
+ private fetchName;
11
+ }
@@ -0,0 +1,38 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, LitElement } from "lit";
3
+ import { customElement, property, state } from "lit/decorators.js";
4
+ let AsyncCollectionName = class AsyncCollectionName extends LitElement {
5
+ render() {
6
+ return html `
7
+ ${this.name ? this.name : this.identifier}
8
+ `;
9
+ }
10
+ // disable the shadowRoot for this component so consumers can style it as they need
11
+ createRenderRoot() {
12
+ return this;
13
+ }
14
+ updated(changed) {
15
+ if (changed.has("identifier") || changed.has("collectionNameCache")) {
16
+ this.fetchName();
17
+ }
18
+ }
19
+ async fetchName() {
20
+ if (!this.identifier || !this.collectionNameCache)
21
+ return;
22
+ this.name = await this.collectionNameCache.collectionNameFor(this.identifier);
23
+ }
24
+ };
25
+ __decorate([
26
+ property({ type: Object })
27
+ ], AsyncCollectionName.prototype, "collectionNameCache", void 0);
28
+ __decorate([
29
+ property({ type: String })
30
+ ], AsyncCollectionName.prototype, "identifier", void 0);
31
+ __decorate([
32
+ state()
33
+ ], AsyncCollectionName.prototype, "name", void 0);
34
+ AsyncCollectionName = __decorate([
35
+ customElement('async-collection-name')
36
+ ], AsyncCollectionName);
37
+ export { AsyncCollectionName };
38
+ //# sourceMappingURL=async-collection-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-collection-name.js","sourceRoot":"","sources":["../../src/async-collection-name.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAInE,IAAa,mBAAmB,GAAhC,MAAa,mBAAoB,SAAQ,UAAU;IAOjD,MAAM;QACJ,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;KAC1C,CAAC;IACJ,CAAC;IAED,mFAAmF;IACzE,gBAAgB;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAuB;QAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE;YACnE,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;IACH,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAO;QAC1D,IAAI,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChF,CAAC;CACF,CAAA;AA3B6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAAoD;AAEnD;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDAAqB;AAEvC;IAAR,KAAK,EAAE;iDAAsB;AALnB,mBAAmB;IAD/B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,mBAAmB,CA4B/B;SA5BY,mBAAmB","sourcesContent":["import { html, LitElement, PropertyValues } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { CollectionNameCacheInterface } from \"./collection-name-cache\";\n\n@customElement('async-collection-name')\nexport class AsyncCollectionName extends LitElement {\n @property({ type: Object }) collectionNameCache?: CollectionNameCacheInterface;\n\n @property({ type: String }) identifier?: string;\n\n @state() name?: string | null;\n\n render() {\n return html`\n ${this.name ? this.name : this.identifier}\n `;\n }\n\n // disable the shadowRoot for this component so consumers can style it as they need\n protected createRenderRoot(): Element | ShadowRoot {\n return this;\n }\n\n updated(changed: PropertyValues): void {\n if (changed.has(\"identifier\") || changed.has(\"collectionNameCache\")) {\n this.fetchName();\n }\n }\n\n private async fetchName(): Promise<void> {\n if (!this.identifier || !this.collectionNameCache) return;\n this.name = await this.collectionNameCache.collectionNameFor(this.identifier);\n }\n}\n"]}
@@ -3,15 +3,15 @@ import type { InfiniteScrollerCellProviderInterface } from '@internetarchive/inf
3
3
  import { SearchServiceInterface, SortDirection } from '@internetarchive/search-service';
4
4
  import { SortParam } from '@internetarchive/search-service';
5
5
  import { SharedResizeObserverInterface, SharedResizeObserverResizeHandlerInterface } from '@internetarchive/shared-resize-observer';
6
- import type { CollectionDisplayMode } from './models';
7
6
  import '@internetarchive/infinite-scroller';
7
+ import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
8
8
  import './tiles/tile-dispatcher';
9
9
  import './tiles/loading-tile';
10
10
  import './sort-filter-bar/sort-filter-bar';
11
11
  import './collection-facets';
12
12
  import './circular-activity-indicator';
13
13
  import './sort-filter-bar/sort-filter-bar';
14
- import { SelectedFacets, SortField, CollectionBrowserContext } from './models';
14
+ import { SelectedFacets, SortField, CollectionBrowserContext, CollectionDisplayMode } from './models';
15
15
  import { RestorationStateHandlerInterface } from './restoration-state-handler';
16
16
  export declare class CollectionBrowser extends LitElement implements InfiniteScrollerCellProviderInterface, SharedResizeObserverResizeHandlerInterface {
17
17
  baseNavigationUrl?: string;
@@ -33,6 +33,7 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
33
33
  minSelectedDate?: string;
34
34
  maxSelectedDate?: string;
35
35
  selectedFacets?: SelectedFacets;
36
+ collectionNameCache?: CollectionNameCacheInterface;
36
37
  pageContext: CollectionBrowserContext;
37
38
  restorationStateHandler: RestorationStateHandlerInterface;
38
39
  mobileBreakpoint: number;
@@ -162,6 +163,7 @@ export declare class CollectionBrowser extends LitElement implements InfiniteScr
162
163
  private get pageFetchQueryKey();
163
164
  private pageFetchesInProgress;
164
165
  fetchPage(pageNumber: number): Promise<void>;
166
+ private preloadCollectionNames;
165
167
  /**
166
168
  * This is useful for determining whether we need to reload the scroller.
167
169
  *
@@ -244,6 +244,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
244
244
  .minSelectedDate=${this.minSelectedDate}
245
245
  .maxSelectedDate=${this.maxSelectedDate}
246
246
  .selectedFacets=${this.selectedFacets}
247
+ .collectionNameCache=${this.collectionNameCache}
247
248
  ?collapsableFacets=${this.mobileView}
248
249
  ?facetsLoading=${this.facetDataLoading}
249
250
  ?fullYearAggregationLoading=${this.fullYearAggregationLoading}
@@ -629,6 +630,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
629
630
  'description',
630
631
  'downloads',
631
632
  'identifier',
633
+ 'issue',
632
634
  'item_count',
633
635
  'mediatype',
634
636
  'num_favorites',
@@ -638,6 +640,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
638
640
  'source',
639
641
  'subject',
640
642
  'title',
643
+ 'volume',
641
644
  ],
642
645
  page: pageNumber,
643
646
  rows: this.pageSize,
@@ -658,6 +661,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
658
661
  return;
659
662
  const { docs } = success.response;
660
663
  if (docs && docs.length > 0) {
664
+ this.preloadCollectionNames(docs);
661
665
  this.updateDataSource(pageNumber, docs);
662
666
  }
663
667
  if (docs.length < this.pageSize) {
@@ -668,6 +672,12 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
668
672
  (_d = this.pageFetchesInProgress[pageFetchQueryKey]) === null || _d === void 0 ? void 0 : _d.delete(pageNumber);
669
673
  this.searchResultsLoading = false;
670
674
  }
675
+ preloadCollectionNames(docs) {
676
+ var _a;
677
+ const collectionIds = docs.map(doc => { var _a; return (_a = doc.collections_raw) === null || _a === void 0 ? void 0 : _a.values; }).flat();
678
+ const collectionIdsArray = Array.from(new Set(collectionIds));
679
+ (_a = this.collectionNameCache) === null || _a === void 0 ? void 0 : _a.preloadIdentifiers(collectionIdsArray);
680
+ }
671
681
  /**
672
682
  * This is useful for determining whether we need to reload the scroller.
673
683
  *
@@ -696,7 +706,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
696
706
  const datasource = { ...this.dataSource };
697
707
  const tiles = [];
698
708
  docs === null || docs === void 0 ? void 0 : docs.forEach(doc => {
699
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
709
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
700
710
  if (!doc.identifier)
701
711
  return;
702
712
  tiles.push({
@@ -704,19 +714,22 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
704
714
  collections: (_c = (_b = doc.collections_raw) === null || _b === void 0 ? void 0 : _b.values) !== null && _c !== void 0 ? _c : [],
705
715
  commentCount: (_e = (_d = doc.num_reviews) === null || _d === void 0 ? void 0 : _d.value) !== null && _e !== void 0 ? _e : 0,
706
716
  creator: (_f = doc.creator) === null || _f === void 0 ? void 0 : _f.value,
707
- dateAdded: (_g = doc.addeddate) === null || _g === void 0 ? void 0 : _g.value,
708
- dateArchived: (_h = doc.publicdate) === null || _h === void 0 ? void 0 : _h.value,
709
- datePublished: (_j = doc.date) === null || _j === void 0 ? void 0 : _j.value,
710
- dateReviewed: (_k = doc.reviewdate) === null || _k === void 0 ? void 0 : _k.value,
711
- description: (_l = doc.description) === null || _l === void 0 ? void 0 : _l.value,
712
- favCount: (_o = (_m = doc.num_favorites) === null || _m === void 0 ? void 0 : _m.value) !== null && _o !== void 0 ? _o : 0,
717
+ creators: (_h = (_g = doc.creator) === null || _g === void 0 ? void 0 : _g.values) !== null && _h !== void 0 ? _h : [],
718
+ dateAdded: (_j = doc.addeddate) === null || _j === void 0 ? void 0 : _j.value,
719
+ dateArchived: (_k = doc.publicdate) === null || _k === void 0 ? void 0 : _k.value,
720
+ datePublished: (_l = doc.date) === null || _l === void 0 ? void 0 : _l.value,
721
+ dateReviewed: (_m = doc.reviewdate) === null || _m === void 0 ? void 0 : _m.value,
722
+ description: (_o = doc.description) === null || _o === void 0 ? void 0 : _o.value,
723
+ favCount: (_q = (_p = doc.num_favorites) === null || _p === void 0 ? void 0 : _p.value) !== null && _q !== void 0 ? _q : 0,
713
724
  identifier: doc.identifier,
714
- itemCount: (_q = (_p = doc.item_count) === null || _p === void 0 ? void 0 : _p.value) !== null && _q !== void 0 ? _q : 0,
715
- mediatype: (_s = (_r = doc.mediatype) === null || _r === void 0 ? void 0 : _r.value) !== null && _s !== void 0 ? _s : 'data',
716
- source: (_t = doc.source) === null || _t === void 0 ? void 0 : _t.value,
717
- subjects: (_v = (_u = doc.subject) === null || _u === void 0 ? void 0 : _u.values) !== null && _v !== void 0 ? _v : [],
718
- title: (_x = (_w = doc.title) === null || _w === void 0 ? void 0 : _w.value) !== null && _x !== void 0 ? _x : '',
719
- viewCount: (_z = (_y = doc.downloads) === null || _y === void 0 ? void 0 : _y.value) !== null && _z !== void 0 ? _z : 0,
725
+ issue: (_r = doc.issue) === null || _r === void 0 ? void 0 : _r.value,
726
+ itemCount: (_t = (_s = doc.item_count) === null || _s === void 0 ? void 0 : _s.value) !== null && _t !== void 0 ? _t : 0,
727
+ mediatype: (_v = (_u = doc.mediatype) === null || _u === void 0 ? void 0 : _u.value) !== null && _v !== void 0 ? _v : 'data',
728
+ source: (_w = doc.source) === null || _w === void 0 ? void 0 : _w.value,
729
+ subjects: (_y = (_x = doc.subject) === null || _x === void 0 ? void 0 : _x.values) !== null && _y !== void 0 ? _y : [],
730
+ title: this.etreeTitle((_z = doc.title) === null || _z === void 0 ? void 0 : _z.value, (_0 = doc.mediatype) === null || _0 === void 0 ? void 0 : _0.value, (_1 = doc.collection) === null || _1 === void 0 ? void 0 : _1.values),
731
+ volume: (_2 = doc.volume) === null || _2 === void 0 ? void 0 : _2.value,
732
+ viewCount: (_4 = (_3 = doc.downloads) === null || _3 === void 0 ? void 0 : _3.value) !== null && _4 !== void 0 ? _4 : 0,
720
733
  });
721
734
  });
722
735
  datasource[pageNumber] = tiles;
@@ -754,6 +767,7 @@ let CollectionBrowser = class CollectionBrowser extends LitElement {
754
767
  .displayMode=${this.displayMode}
755
768
  .resizeObserver=${this.resizeObserver}
756
769
  .sortParam=${this.sortParam}
770
+ .collectionNameCache=${this.collectionNameCache}
757
771
  ?showDeleteButton=${this.showDeleteButtons}
758
772
  ></tile-dispatcher>`;
759
773
  }
@@ -833,6 +847,10 @@ CollectionBrowser.styles = css `
833
847
  position: relative;
834
848
  max-height: 0;
835
849
  transition: max-height 0.2s ease-in-out;
850
+ z-index: 1;
851
+ }
852
+
853
+ .mobile #facets-container {
836
854
  overflow: hidden;
837
855
  }
838
856
 
@@ -913,6 +931,8 @@ CollectionBrowser.styles = css `
913
931
  --collectionBrowserCellMinHeight,
914
932
  5rem
915
933
  );
934
+ /* 30px, but compensating for a -5px margin */
935
+ --infiniteScrollerRowGap: 35px;
916
936
  }
917
937
 
918
938
  infinite-scroller.grid {
@@ -988,6 +1008,9 @@ __decorate([
988
1008
  __decorate([
989
1009
  property({ type: Object })
990
1010
  ], CollectionBrowser.prototype, "selectedFacets", void 0);
1011
+ __decorate([
1012
+ property({ type: Object })
1013
+ ], CollectionBrowser.prototype, "collectionNameCache", void 0);
991
1014
  __decorate([
992
1015
  property({ type: String })
993
1016
  ], CollectionBrowser.prototype, "pageContext", void 0);