@internetarchive/collection-browser 0.3.5-alpha.1 → 0.3.5

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 (236) 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 +47 -43
  12. package/dist/src/app-root.js +331 -285
  13. package/dist/src/app-root.js.map +1 -1
  14. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  15. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  17. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  18. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  19. package/dist/src/assets/img/icons/chevron.js +2 -2
  20. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  21. package/dist/src/assets/img/icons/empty-query.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  29. package/dist/src/assets/img/icons/login-required.js +2 -2
  30. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  56. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  57. package/dist/src/assets/img/icons/null-result.js +2 -2
  58. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  59. package/dist/src/assets/img/icons/restricted.js +2 -2
  60. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  61. package/dist/src/assets/img/icons/reviews.js +2 -2
  62. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  63. package/dist/src/assets/img/icons/upload.js +2 -2
  64. package/dist/src/assets/img/icons/views.d.ts +1 -1
  65. package/dist/src/assets/img/icons/views.js +2 -2
  66. package/dist/src/circular-activity-indicator.d.ts +5 -5
  67. package/dist/src/circular-activity-indicator.js +17 -17
  68. package/dist/src/collection-browser.d.ts +246 -245
  69. package/dist/src/collection-browser.js +1370 -1359
  70. package/dist/src/collection-browser.js.map +1 -1
  71. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  72. package/dist/src/collection-facets/facet-tombstone-row.js +42 -42
  73. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
  74. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  75. package/dist/src/collection-facets/facets-template.js +130 -128
  76. package/dist/src/collection-facets/facets-template.js.map +1 -1
  77. package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
  78. package/dist/src/collection-facets/more-facets-content.js +353 -353
  79. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  80. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  81. package/dist/src/collection-facets.d.ts +77 -77
  82. package/dist/src/collection-facets.js +551 -551
  83. package/dist/src/collection-facets.js.map +1 -1
  84. package/dist/src/empty-placeholder.d.ts +11 -11
  85. package/dist/src/empty-placeholder.js +42 -42
  86. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  87. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  88. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  89. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  90. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  91. package/dist/src/mediatype/mediatype-config.js +85 -85
  92. package/dist/src/models.d.ts +103 -102
  93. package/dist/src/models.js +117 -117
  94. package/dist/src/models.js.map +1 -1
  95. package/dist/src/restoration-state-handler.d.ts +46 -45
  96. package/dist/src/restoration-state-handler.js +230 -220
  97. package/dist/src/restoration-state-handler.js.map +1 -1
  98. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  99. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  100. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  102. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/list.js +2 -2
  104. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  105. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  106. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  107. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  108. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  109. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  110. package/dist/src/styles/item-image-styles.d.ts +8 -8
  111. package/dist/src/styles/item-image-styles.js +9 -9
  112. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  113. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  114. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  115. package/dist/src/tiles/grid/account-tile.js +20 -20
  116. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  117. package/dist/src/tiles/grid/collection-tile.js +23 -23
  118. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  119. package/dist/src/tiles/grid/item-tile.js +87 -87
  120. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  121. package/dist/src/tiles/grid/tile-stats.js +46 -40
  122. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  123. package/dist/src/tiles/image-block.d.ts +17 -17
  124. package/dist/src/tiles/image-block.js +69 -69
  125. package/dist/src/tiles/item-image.d.ts +31 -31
  126. package/dist/src/tiles/item-image.js +103 -103
  127. package/dist/src/tiles/list/account-label.d.ts +1 -1
  128. package/dist/src/tiles/list/account-label.js +6 -6
  129. package/dist/src/tiles/list/date-label.d.ts +1 -1
  130. package/dist/src/tiles/list/date-label.js +12 -12
  131. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  132. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  133. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -20
  134. package/dist/src/tiles/list/tile-list-compact.js +94 -90
  135. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  136. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  137. package/dist/src/tiles/list/tile-list.js +271 -268
  138. package/dist/src/tiles/list/tile-list.js.map +1 -1
  139. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  140. package/dist/src/tiles/mediatype-icon.js +49 -47
  141. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  142. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  143. package/dist/src/tiles/overlay/icon-overlay.js +30 -30
  144. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  145. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  146. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  147. package/dist/src/tiles/text-snippet-block.js +81 -81
  148. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  149. package/dist/src/tiles/tile-dispatcher.js +128 -128
  150. package/dist/src/utils/analytics-events.d.ts +22 -22
  151. package/dist/src/utils/analytics-events.js +24 -24
  152. package/dist/src/utils/format-count.d.ts +7 -7
  153. package/dist/src/utils/format-count.js +76 -76
  154. package/dist/src/utils/format-date.d.ts +2 -2
  155. package/dist/src/utils/format-date.js +23 -23
  156. package/dist/test/collection-browser.test.d.ts +1 -1
  157. package/dist/test/collection-browser.test.js +481 -415
  158. package/dist/test/collection-browser.test.js.map +1 -1
  159. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  160. package/dist/test/collection-facets/facets-template.test.js +62 -62
  161. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  162. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  163. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  164. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  165. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  166. package/dist/test/collection-facets.test.d.ts +2 -2
  167. package/dist/test/collection-facets.test.js +498 -498
  168. package/dist/test/empty-placeholder.test.d.ts +1 -1
  169. package/dist/test/empty-placeholder.test.js +33 -33
  170. package/dist/test/icon-overlay.test.d.ts +1 -1
  171. package/dist/test/icon-overlay.test.js +24 -24
  172. package/dist/test/image-block.test.d.ts +1 -1
  173. package/dist/test/image-block.test.js +48 -48
  174. package/dist/test/item-image.test.d.ts +1 -1
  175. package/dist/test/item-image.test.js +56 -56
  176. package/dist/test/mediatype-config.test.d.ts +1 -1
  177. package/dist/test/mediatype-config.test.js +16 -16
  178. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  179. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  180. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  181. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  182. package/dist/test/mocks/mock-search-responses.d.ts +8 -8
  183. package/dist/test/mocks/mock-search-responses.js +198 -198
  184. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  185. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  186. package/dist/test/mocks/mock-search-service.js +32 -32
  187. package/dist/test/mocks/mock-search-service.js.map +1 -1
  188. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  189. package/dist/test/restoration-state-handler.test.js +126 -117
  190. package/dist/test/restoration-state-handler.test.js.map +1 -1
  191. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  192. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  193. package/dist/test/text-overlay.test.d.ts +1 -1
  194. package/dist/test/text-overlay.test.js +41 -41
  195. package/dist/test/text-snippet-block.test.d.ts +1 -1
  196. package/dist/test/text-snippet-block.test.js +57 -57
  197. package/dist/test/tile-stats.test.d.ts +1 -1
  198. package/dist/test/tile-stats.test.js +33 -33
  199. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  200. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  201. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  202. package/dist/test/tiles/list/tile-list-compact.test.js +125 -26
  203. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  204. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  205. package/dist/test/tiles/list/tile-list.test.js +79 -47
  206. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  207. package/dist/test/utils/format-count.test.d.ts +1 -1
  208. package/dist/test/utils/format-count.test.js +23 -23
  209. package/dist/test/utils/format-date.test.d.ts +1 -1
  210. package/dist/test/utils/format-date.test.js +17 -17
  211. package/index.html +24 -24
  212. package/local.archive.org.cert +86 -86
  213. package/local.archive.org.key +27 -27
  214. package/package.json +115 -115
  215. package/renovate.json +6 -6
  216. package/src/app-root.ts +104 -55
  217. package/src/collection-browser.ts +1503 -1488
  218. package/src/collection-facets/facet-tombstone-row.ts +40 -40
  219. package/src/collection-facets/facets-template.ts +5 -3
  220. package/src/collection-facets.ts +635 -635
  221. package/src/models.ts +1 -0
  222. package/src/restoration-state-handler.ts +19 -1
  223. package/src/tiles/grid/tile-stats.ts +18 -5
  224. package/src/tiles/list/tile-list-compact.ts +7 -3
  225. package/src/tiles/list/tile-list.ts +6 -1
  226. package/src/tiles/mediatype-icon.ts +2 -0
  227. package/test/collection-browser.test.ts +679 -599
  228. package/test/collection-facets/facets-template.test.ts +5 -3
  229. package/test/mocks/mock-search-responses.ts +226 -226
  230. package/test/mocks/mock-search-service.ts +61 -61
  231. package/test/restoration-state-handler.test.ts +12 -0
  232. package/test/tiles/list/tile-list-compact.test.ts +110 -0
  233. package/test/tiles/list/tile-list.test.ts +36 -0
  234. package/tsconfig.json +21 -21
  235. package/web-dev-server.config.mjs +30 -30
  236. package/web-test-runner.config.mjs +41 -41
@@ -1,68 +1,77 @@
1
- import { __decorate } from "tslib";
2
- /* eslint-disable no-console */
3
- import { AnalyticsManager, } from '@internetarchive/analytics-manager';
4
- import { SearchService, SearchType, StringField, } from '@internetarchive/search-service';
5
- import { LocalCache } from '@internetarchive/local-cache';
6
- import { html, css, LitElement } from 'lit';
7
- import { customElement, property, query, state } from 'lit/decorators.js';
8
- import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
9
- import { CollectionNameCache } from '@internetarchive/collection-name-cache';
10
- import '../src/collection-browser';
11
- let AppRoot = class AppRoot extends LitElement {
12
- constructor() {
13
- super(...arguments);
14
- this.searchService = SearchService.default;
15
- this.resizeObserver = new SharedResizeObserver();
16
- this.localCache = new LocalCache();
17
- this.collectionNameCache = new CollectionNameCache({
18
- searchService: this.searchService,
19
- localCache: this.localCache,
20
- });
21
- this.cellWidth = 18;
22
- this.cellHeight = 29;
23
- this.rowGap = 1.7;
24
- this.colGap = 1.7;
25
- this.loggedIn = false;
26
- this.searchType = SearchType.METADATA;
27
- this.analyticsManager = new AnalyticsManager();
28
- this.analyticsHandler = {
29
- sendPing: this.sendAnalytics.bind(this),
30
- sendEvent: this.sendAnalytics.bind(this),
31
- sendEventNoSampling: this.sendAnalytics.bind(this),
32
- };
33
- }
34
- sendAnalytics(ae) {
35
- var _a;
36
- console.log('Analytics Received ----', ae);
37
- this.latestAction = ae;
38
- (_a = this.analyticsManager) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling(ae);
39
- }
40
- searchPressed(e) {
41
- var _a, _b;
42
- e.preventDefault();
43
- this.searchQuery = this.baseQueryField.value;
44
- if (((_a = this.currentPage) !== null && _a !== void 0 ? _a : 1) > 1) {
45
- this.collectionBrowser.goToPage((_b = this.currentPage) !== null && _b !== void 0 ? _b : 1);
46
- }
47
- }
48
- changePagePressed(e) {
49
- e.preventDefault();
50
- this.currentPage = this.pageNumberInput.valueAsNumber;
51
- this.collectionBrowser.goToPage(this.currentPage);
52
- }
53
- updated(changed) {
54
- if (changed.has('currentPage') && this.currentPage) {
55
- this.pageNumberInput.value = this.currentPage.toString();
56
- }
57
- if (changed.has('searchQuery')) {
58
- this.queryUpdated();
59
- }
60
- }
61
- queryUpdated() {
62
- this.collectionBrowser.baseQuery = this.searchQuery;
63
- }
64
- render() {
65
- var _a;
1
+ import { __decorate } from "tslib";
2
+ /* eslint-disable no-console */
3
+ import { AnalyticsManager, } from '@internetarchive/analytics-manager';
4
+ import { SearchService, SearchType, StringField, } from '@internetarchive/search-service';
5
+ import { LocalCache } from '@internetarchive/local-cache';
6
+ import { html, css, LitElement } from 'lit';
7
+ import { customElement, property, query, state } from 'lit/decorators.js';
8
+ import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
9
+ import { CollectionNameCache } from '@internetarchive/collection-name-cache';
10
+ import '../src/collection-browser';
11
+ let AppRoot = class AppRoot extends LitElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.searchService = this.initSearchServiceFromUrlParams();
15
+ this.resizeObserver = new SharedResizeObserver();
16
+ this.localCache = new LocalCache();
17
+ this.collectionNameCache = new CollectionNameCache({
18
+ searchService: this.searchService,
19
+ localCache: this.localCache,
20
+ });
21
+ this.cellWidth = 18;
22
+ this.cellHeight = 29;
23
+ this.rowGap = 1.7;
24
+ this.colGap = 1.7;
25
+ this.loggedIn = false;
26
+ this.searchType = SearchType.METADATA;
27
+ this.analyticsManager = new AnalyticsManager();
28
+ this.analyticsHandler = {
29
+ sendPing: this.sendAnalytics.bind(this),
30
+ sendEvent: this.sendAnalytics.bind(this),
31
+ sendEventNoSampling: this.sendAnalytics.bind(this),
32
+ };
33
+ }
34
+ sendAnalytics(ae) {
35
+ var _a;
36
+ console.log('Analytics Received ----', ae);
37
+ this.latestAction = ae;
38
+ (_a = this.analyticsManager) === null || _a === void 0 ? void 0 : _a.sendEventNoSampling(ae);
39
+ }
40
+ initSearchServiceFromUrlParams() {
41
+ var _a, _b, _c;
42
+ const params = new URL(window.location.href).searchParams;
43
+ return new SearchService({
44
+ baseUrl: (_a = params.get('search_base_url')) !== null && _a !== void 0 ? _a : undefined,
45
+ servicePath: (_b = params.get('search_service_path')) !== null && _b !== void 0 ? _b : undefined,
46
+ debuggingEnabled: (_c = !!params.get('debugging')) !== null && _c !== void 0 ? _c : undefined,
47
+ });
48
+ }
49
+ searchPressed(e) {
50
+ var _a, _b;
51
+ e.preventDefault();
52
+ this.searchQuery = this.baseQueryField.value;
53
+ if (((_a = this.currentPage) !== null && _a !== void 0 ? _a : 1) > 1) {
54
+ this.collectionBrowser.goToPage((_b = this.currentPage) !== null && _b !== void 0 ? _b : 1);
55
+ }
56
+ }
57
+ changePagePressed(e) {
58
+ e.preventDefault();
59
+ this.currentPage = this.pageNumberInput.valueAsNumber;
60
+ this.collectionBrowser.goToPage(this.currentPage);
61
+ }
62
+ updated(changed) {
63
+ if (changed.has('currentPage') && this.currentPage) {
64
+ this.pageNumberInput.value = this.currentPage.toString();
65
+ }
66
+ if (changed.has('searchQuery')) {
67
+ this.queryUpdated();
68
+ }
69
+ }
70
+ queryUpdated() {
71
+ this.collectionBrowser.baseQuery = this.searchQuery;
72
+ }
73
+ render() {
74
+ var _a;
66
75
  return html `
67
76
  <div id="dev-tools">
68
77
  <div id="search-and-page-inputs">
@@ -83,42 +92,47 @@ let AppRoot = class AppRoot extends LitElement {
83
92
 
84
93
  <div id="search-types">
85
94
  Search type:
86
- <input
87
- type="radio"
88
- id="metadata-search"
89
- name="search-type"
90
- value="metadata"
91
- checked
92
- @click=${this.searchTypeChanged}
93
- />
94
- <label for="metadata-search">Metadata</label>
95
- <input
96
- type="radio"
97
- id="fulltext-search"
98
- name="search-type"
99
- value="fulltext"
100
- @click=${this.searchTypeChanged}
101
- />
102
- <label for="fulltext-search">Full text</label>
95
+ <span class="search-type">
96
+ <input
97
+ type="radio"
98
+ id="metadata-search"
99
+ name="search-type"
100
+ value="metadata"
101
+ ?checked=${this.searchType === SearchType.METADATA}
102
+ @click=${this.searchTypeSelected}
103
+ />
104
+ <label for="metadata-search">Metadata</label>
105
+ </span>
106
+ <span class="search-type">
107
+ <input
108
+ type="radio"
109
+ id="fulltext-search"
110
+ name="search-type"
111
+ value="fulltext"
112
+ ?checked=${this.searchType === SearchType.FULLTEXT}
113
+ @click=${this.searchTypeSelected}
114
+ />
115
+ <label for="fulltext-search">Full text</label>
116
+ </span>
103
117
  </div>
104
118
 
105
119
  <div id="toggle-controls">
106
120
  <button
107
- @click=${() => {
108
- var _a, _b;
109
- const details = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('cell-size-control');
110
- details === null || details === void 0 ? void 0 : details.classList.toggle('hidden');
111
- const rowGapControls = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById('cell-gap-control');
112
- rowGapControls === null || rowGapControls === void 0 ? void 0 : rowGapControls.classList.toggle('hidden');
121
+ @click=${() => {
122
+ var _a, _b;
123
+ const details = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('cell-size-control');
124
+ details === null || details === void 0 ? void 0 : details.classList.toggle('hidden');
125
+ const rowGapControls = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById('cell-gap-control');
126
+ rowGapControls === null || rowGapControls === void 0 ? void 0 : rowGapControls.classList.toggle('hidden');
113
127
  }}
114
128
  >
115
129
  Toggle Cell Controls
116
130
  </button>
117
131
  <button
118
- @click=${() => {
119
- var _a;
120
- const details = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('latest-event-details');
121
- details === null || details === void 0 ? void 0 : details.classList.toggle('hidden');
132
+ @click=${() => {
133
+ var _a;
134
+ const details = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('latest-event-details');
135
+ details === null || details === void 0 ? void 0 : details.classList.toggle('hidden');
122
136
  }}
123
137
  >
124
138
  Last Event Captured
@@ -135,7 +149,7 @@ let AppRoot = class AppRoot extends LitElement {
135
149
  <div id="cell-controls" class="hidden">
136
150
  <div id="cell-size-control">
137
151
  <div>
138
- <label for="cell-width-slider">Minimum cell width:</label>
152
+ <label for="cell-width-slider">Min cell width:</label>
139
153
  <input
140
154
  type="range"
141
155
  min="10"
@@ -160,40 +174,6 @@ let AppRoot = class AppRoot extends LitElement {
160
174
  />
161
175
  <span>${this.cellHeight}rem</span>
162
176
  </div>
163
- <div>
164
- <label for="show-outline-check">Show outlines:</label>
165
- <input
166
- type="checkbox"
167
- id="show-outline-check"
168
- @click=${this.outlineChanged}
169
- />
170
- </div>
171
- <div>
172
- <label for="show-facet-group-outline-check"
173
- >Show Facet Group Outlines:</label
174
- >
175
- <input
176
- type="checkbox"
177
- id="show-facet-group-outline-check"
178
- @click=${this.toggleFacetGroupOutline}
179
- />
180
- </div>
181
- <div>
182
- <label for="simulate-login">Simulate Login:</label>
183
- <input
184
- type="checkbox"
185
- id="simulate-login"
186
- @click=${this.loginChanged}
187
- />
188
- </div>
189
- <div>
190
- <label for="show-dummy-snippets">Show dummy snippets:</label>
191
- <input
192
- type="checkbox"
193
- id="show-dummy-snippets"
194
- @click=${this.snippetsChanged}
195
- />
196
- </div>
197
177
  </div>
198
178
  <div id="cell-gap-control">
199
179
  <div>
@@ -224,6 +204,42 @@ let AppRoot = class AppRoot extends LitElement {
224
204
  </div>
225
205
  </div>
226
206
  </div>
207
+ <div id="checkbox-controls">
208
+ <div class="checkbox-control">
209
+ <input
210
+ type="checkbox"
211
+ id="show-outline-check"
212
+ @click=${this.outlineChanged}
213
+ />
214
+ <label for="show-outline-check">Show cell outlines</label>
215
+ </div>
216
+ <div class="checkbox-control">
217
+ <input
218
+ type="checkbox"
219
+ id="show-facet-group-outline-check"
220
+ @click=${this.toggleFacetGroupOutline}
221
+ />
222
+ <label for="show-facet-group-outline-check">
223
+ Show facet group outlines
224
+ </label>
225
+ </div>
226
+ <div class="checkbox-control">
227
+ <input
228
+ type="checkbox"
229
+ id="simulate-login"
230
+ @click=${this.loginChanged}
231
+ />
232
+ <label for="simulate-login">Simulate login</label>
233
+ </div>
234
+ <div class="checkbox-control">
235
+ <input
236
+ type="checkbox"
237
+ id="show-dummy-snippets"
238
+ @click=${this.snippetsChanged}
239
+ />
240
+ <label for="show-dummy-snippets">Show dummy snippets</label>
241
+ </div>
242
+ </div>
227
243
  </div>
228
244
 
229
245
  <div id="collection-browser-container">
@@ -240,124 +256,130 @@ let AppRoot = class AppRoot extends LitElement {
240
256
  .analyticsHandler=${this.analyticsHandler}
241
257
  @visiblePageChanged=${this.visiblePageChanged}
242
258
  @baseQueryChanged=${this.baseQueryChanged}
259
+ @searchTypeChanged=${this.searchTypeChanged}
243
260
  >
244
261
  </collection-browser>
245
262
  </div>
246
263
  <modal-manager></modal-manager>
247
- `;
248
- }
249
- baseQueryChanged(e) {
250
- this.searchQuery = e.detail.baseQuery;
251
- }
252
- searchTypeChanged(e) {
253
- const target = e.target;
254
- this.searchType =
255
- target.value === 'fulltext' ? SearchType.FULLTEXT : SearchType.METADATA;
256
- // Re-perform the current search with the new search target
257
- this.reperformCurrentSearch();
258
- }
259
- loginChanged(e) {
260
- const target = e.target;
261
- if (target.checked) {
262
- this.loggedIn = true;
263
- }
264
- else {
265
- this.loggedIn = false;
266
- }
267
- }
268
- outlineChanged(e) {
269
- const target = e.target;
270
- if (target.checked) {
271
- this.collectionBrowser.style.setProperty('--infiniteScrollerCellOutline', '1px solid #33D1FF');
272
- }
273
- else {
274
- this.collectionBrowser.style.removeProperty('--infiniteScrollerCellOutline');
275
- }
276
- }
277
- toggleFacetGroupOutline(e) {
278
- const target = e.target;
279
- if (target.checked) {
280
- this.collectionBrowser.classList.add('showFacetGroupOutlines');
281
- this.modalManager.classList.add('showFacetGroupOutlines');
282
- }
283
- else {
284
- this.collectionBrowser.classList.remove('showFacetGroupOutlines');
285
- this.modalManager.classList.remove('showFacetGroupOutlines');
286
- }
287
- }
288
- async snippetsChanged(e) {
289
- const target = e.target;
290
- if (target.checked) {
291
- // Decorate the default search service with a wrapper that adds
292
- // dummy snippets to any successful searches
293
- this.searchService = {
294
- async search(params, searchType) {
295
- var _a;
296
- const searchResponse = await SearchService.default.search(params, searchType);
297
- (_a = searchResponse.success) === null || _a === void 0 ? void 0 : _a.response.results.forEach(result => {
298
- Object.defineProperty(result, 'highlight', {
299
- value: new StringField([
300
- 'this is a text {{{snippet}}} block with potentially',
301
- 'multiple {{{snippets}}} and such',
302
- 'but the {{{snippet}}} block may be quite long perhaps',
303
- 'depending on how many {{{snippet}}} matches there are',
304
- 'there may be multiple lines of {{{snippets}}} to show',
305
- 'but each {{{snippet}}} should be relatively short',
306
- 'and {{{snippets}}} are each a {{{snippet}}} of text',
307
- 'but every {{{snippet}}} might have multiple matches',
308
- 'the {{{snippets}}} should be separated and surrounded by ellipses',
309
- ]),
310
- });
311
- });
312
- return searchResponse;
313
- },
314
- };
315
- }
316
- else {
317
- // Restore the default seach service
318
- this.searchService = SearchService.default;
319
- }
320
- // Re-perform the current search to show/hide the snippets immediately
321
- this.reperformCurrentSearch();
322
- }
323
- async reperformCurrentSearch() {
324
- const oldQuery = this.searchQuery;
325
- this.searchQuery = ''; // Should just reset to the placeholder
326
- await this.updateComplete;
327
- // For unclear reasons, Safari refuses to re-apply the old query until the next tick, hence:
328
- await new Promise(res => {
329
- setTimeout(res, 0);
330
- });
331
- this.searchQuery = oldQuery; // Re-apply the original query
332
- }
333
- rowGapChanged(e) {
334
- const input = e.target;
335
- this.rowGap = parseFloat(input.value);
336
- this.collectionBrowser.style.setProperty('--collectionBrowserRowGap', `${input.value}rem`);
337
- }
338
- colGapChanged(e) {
339
- const input = e.target;
340
- this.colGap = parseFloat(input.value);
341
- this.collectionBrowser.style.setProperty('--collectionBrowserColGap', `${input.value}rem`);
342
- }
343
- widthChanged(e) {
344
- const input = e.target;
345
- this.cellWidth = parseFloat(input.value);
346
- this.collectionBrowser.style.setProperty('--collectionBrowserCellMinWidth', `${input.value}rem`);
347
- }
348
- heightChanged(e) {
349
- const input = e.target;
350
- this.cellHeight = parseFloat(input.value);
351
- this.collectionBrowser.style.setProperty('--collectionBrowserCellMinHeight', `${input.value}rem`);
352
- this.collectionBrowser.style.setProperty('--collectionBrowserCellMaxHeight', `${input.value}rem`);
353
- }
354
- visiblePageChanged(e) {
355
- const { pageNumber } = e.detail;
356
- if (pageNumber === this.currentPage)
357
- return;
358
- this.currentPage = pageNumber;
359
- }
360
- };
264
+ `;
265
+ }
266
+ baseQueryChanged(e) {
267
+ this.searchQuery = e.detail.baseQuery;
268
+ }
269
+ /** Handler for search type changes coming from collection browser */
270
+ searchTypeChanged(e) {
271
+ this.searchType = e.detail;
272
+ }
273
+ /** Handler for user input selecting a search type */
274
+ searchTypeSelected(e) {
275
+ const target = e.target;
276
+ this.searchType =
277
+ target.value === 'fulltext' ? SearchType.FULLTEXT : SearchType.METADATA;
278
+ // Re-perform the current search with the new search target
279
+ this.reperformCurrentSearch();
280
+ }
281
+ loginChanged(e) {
282
+ const target = e.target;
283
+ if (target.checked) {
284
+ this.loggedIn = true;
285
+ }
286
+ else {
287
+ this.loggedIn = false;
288
+ }
289
+ }
290
+ outlineChanged(e) {
291
+ const target = e.target;
292
+ if (target.checked) {
293
+ this.collectionBrowser.style.setProperty('--infiniteScrollerCellOutline', '1px solid #33D1FF');
294
+ }
295
+ else {
296
+ this.collectionBrowser.style.removeProperty('--infiniteScrollerCellOutline');
297
+ }
298
+ }
299
+ toggleFacetGroupOutline(e) {
300
+ const target = e.target;
301
+ if (target.checked) {
302
+ this.collectionBrowser.classList.add('showFacetGroupOutlines');
303
+ this.modalManager.classList.add('showFacetGroupOutlines');
304
+ }
305
+ else {
306
+ this.collectionBrowser.classList.remove('showFacetGroupOutlines');
307
+ this.modalManager.classList.remove('showFacetGroupOutlines');
308
+ }
309
+ }
310
+ async snippetsChanged(e) {
311
+ const target = e.target;
312
+ if (target.checked) {
313
+ // Decorate the default search service with a wrapper that adds
314
+ // dummy snippets to any successful searches
315
+ this.searchService = {
316
+ async search(params, searchType) {
317
+ var _a;
318
+ const searchResponse = await SearchService.default.search(params, searchType);
319
+ (_a = searchResponse.success) === null || _a === void 0 ? void 0 : _a.response.results.forEach(result => {
320
+ Object.defineProperty(result, 'highlight', {
321
+ value: new StringField([
322
+ 'this is a text {{{snippet}}} block with potentially',
323
+ 'multiple {{{snippets}}} and such',
324
+ 'but the {{{snippet}}} block may be quite long perhaps',
325
+ 'depending on how many {{{snippet}}} matches there are',
326
+ 'there may be multiple lines of {{{snippets}}} to show',
327
+ 'but each {{{snippet}}} should be relatively short',
328
+ 'and {{{snippets}}} are each a {{{snippet}}} of text',
329
+ 'but every {{{snippet}}} might have multiple matches',
330
+ 'the {{{snippets}}} should be separated and surrounded by ellipses',
331
+ ]),
332
+ });
333
+ });
334
+ return searchResponse;
335
+ },
336
+ };
337
+ }
338
+ else {
339
+ // Restore the default seach service
340
+ this.searchService = SearchService.default;
341
+ }
342
+ // Re-perform the current search to show/hide the snippets immediately
343
+ this.reperformCurrentSearch();
344
+ }
345
+ async reperformCurrentSearch() {
346
+ const oldQuery = this.searchQuery;
347
+ this.searchQuery = ''; // Should just reset to the placeholder
348
+ await this.updateComplete;
349
+ // For unclear reasons, Safari refuses to re-apply the old query until the next tick, hence:
350
+ await new Promise(res => {
351
+ setTimeout(res, 0);
352
+ });
353
+ this.searchQuery = oldQuery; // Re-apply the original query
354
+ }
355
+ rowGapChanged(e) {
356
+ const input = e.target;
357
+ this.rowGap = parseFloat(input.value);
358
+ this.collectionBrowser.style.setProperty('--collectionBrowserRowGap', `${input.value}rem`);
359
+ }
360
+ colGapChanged(e) {
361
+ const input = e.target;
362
+ this.colGap = parseFloat(input.value);
363
+ this.collectionBrowser.style.setProperty('--collectionBrowserColGap', `${input.value}rem`);
364
+ }
365
+ widthChanged(e) {
366
+ const input = e.target;
367
+ this.cellWidth = parseFloat(input.value);
368
+ this.collectionBrowser.style.setProperty('--collectionBrowserCellMinWidth', `${input.value}rem`);
369
+ }
370
+ heightChanged(e) {
371
+ const input = e.target;
372
+ this.cellHeight = parseFloat(input.value);
373
+ this.collectionBrowser.style.setProperty('--collectionBrowserCellMinHeight', `${input.value}rem`);
374
+ this.collectionBrowser.style.setProperty('--collectionBrowserCellMaxHeight', `${input.value}rem`);
375
+ }
376
+ visiblePageChanged(e) {
377
+ const { pageNumber } = e.detail;
378
+ if (pageNumber === this.currentPage)
379
+ return;
380
+ this.currentPage = pageNumber;
381
+ }
382
+ };
361
383
  AppRoot.styles = css `
362
384
  :host {
363
385
  display: block;
@@ -422,8 +444,17 @@ AppRoot.styles = css `
422
444
  display: flex;
423
445
  }
424
446
 
447
+ #search-and-page-inputs > form {
448
+ margin-right: 1rem;
449
+ }
450
+
451
+ .search-type {
452
+ margin-right: 1rem;
453
+ }
454
+
425
455
  #cell-controls {
426
456
  display: flex;
457
+ flex-wrap: wrap;
427
458
  }
428
459
 
429
460
  #cell-controls label {
@@ -431,10 +462,25 @@ AppRoot.styles = css `
431
462
  width: 10rem;
432
463
  }
433
464
 
465
+ #cell-size-control,
466
+ #cell-gap-control {
467
+ flex-basis: calc(50% - 1rem);
468
+ flex-grow: 1;
469
+ }
470
+
434
471
  #cell-gap-control {
435
472
  margin-left: 1rem;
436
473
  }
437
474
 
475
+ #checkbox-controls {
476
+ padding-top: 0.5rem;
477
+ flex-wrap: wrap;
478
+ }
479
+
480
+ .checkbox-control {
481
+ flex-basis: 50%;
482
+ }
483
+
438
484
  #last-event {
439
485
  background-color: aliceblue;
440
486
  padding: 5px;
@@ -456,48 +502,48 @@ AppRoot.styles = css `
456
502
  background-color: aliceblue;
457
503
  font-size: 1.6rem;
458
504
  }
459
- `;
460
- __decorate([
461
- state()
462
- ], AppRoot.prototype, "currentPage", void 0);
463
- __decorate([
464
- state()
465
- ], AppRoot.prototype, "searchQuery", void 0);
466
- __decorate([
467
- state()
468
- ], AppRoot.prototype, "cellWidth", void 0);
469
- __decorate([
470
- state()
471
- ], AppRoot.prototype, "cellHeight", void 0);
472
- __decorate([
473
- state()
474
- ], AppRoot.prototype, "rowGap", void 0);
475
- __decorate([
476
- state()
477
- ], AppRoot.prototype, "colGap", void 0);
478
- __decorate([
479
- state()
480
- ], AppRoot.prototype, "loggedIn", void 0);
481
- __decorate([
482
- state()
483
- ], AppRoot.prototype, "searchType", void 0);
484
- __decorate([
485
- property({ type: Object, reflect: false })
486
- ], AppRoot.prototype, "latestAction", void 0);
487
- __decorate([
488
- query('#base-query-field')
489
- ], AppRoot.prototype, "baseQueryField", void 0);
490
- __decorate([
491
- query('#page-number-input')
492
- ], AppRoot.prototype, "pageNumberInput", void 0);
493
- __decorate([
494
- query('collection-browser')
495
- ], AppRoot.prototype, "collectionBrowser", void 0);
496
- __decorate([
497
- query('modal-manager')
498
- ], AppRoot.prototype, "modalManager", void 0);
499
- AppRoot = __decorate([
500
- customElement('app-root')
501
- ], AppRoot);
502
- export { AppRoot };
505
+ `;
506
+ __decorate([
507
+ state()
508
+ ], AppRoot.prototype, "currentPage", void 0);
509
+ __decorate([
510
+ state()
511
+ ], AppRoot.prototype, "searchQuery", void 0);
512
+ __decorate([
513
+ state()
514
+ ], AppRoot.prototype, "cellWidth", void 0);
515
+ __decorate([
516
+ state()
517
+ ], AppRoot.prototype, "cellHeight", void 0);
518
+ __decorate([
519
+ state()
520
+ ], AppRoot.prototype, "rowGap", void 0);
521
+ __decorate([
522
+ state()
523
+ ], AppRoot.prototype, "colGap", void 0);
524
+ __decorate([
525
+ state()
526
+ ], AppRoot.prototype, "loggedIn", void 0);
527
+ __decorate([
528
+ state()
529
+ ], AppRoot.prototype, "searchType", void 0);
530
+ __decorate([
531
+ property({ type: Object, reflect: false })
532
+ ], AppRoot.prototype, "latestAction", void 0);
533
+ __decorate([
534
+ query('#base-query-field')
535
+ ], AppRoot.prototype, "baseQueryField", void 0);
536
+ __decorate([
537
+ query('#page-number-input')
538
+ ], AppRoot.prototype, "pageNumberInput", void 0);
539
+ __decorate([
540
+ query('collection-browser')
541
+ ], AppRoot.prototype, "collectionBrowser", void 0);
542
+ __decorate([
543
+ query('modal-manager')
544
+ ], AppRoot.prototype, "modalManager", void 0);
545
+ AppRoot = __decorate([
546
+ customElement('app-root')
547
+ ], AppRoot);
548
+ export { AppRoot };
503
549
  //# sourceMappingURL=app-root.js.map