@internetarchive/collection-browser 0.4.2 → 0.4.3-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +29 -29
- package/.github/workflows/ci.yml +26 -26
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +48 -48
- package/dist/src/app-root.js +258 -258
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +315 -315
- package/dist/src/collection-browser.js +1279 -1270
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
- package/dist/src/collection-facets/facets-template.d.ts +16 -16
- package/dist/src/collection-facets/facets-template.js +125 -125
- package/dist/src/collection-facets/more-facets-content.d.ts +77 -77
- package/dist/src/collection-facets/more-facets-content.js +357 -357
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +192 -192
- package/dist/src/collection-facets.d.ts +78 -78
- package/dist/src/collection-facets.js +391 -391
- package/dist/src/empty-placeholder.d.ts +11 -11
- package/dist/src/empty-placeholder.js +42 -42
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +85 -85
- package/dist/src/models.d.ts +112 -112
- package/dist/src/models.js +125 -125
- package/dist/src/restoration-state-handler.d.ts +46 -45
- package/dist/src/restoration-state-handler.js +269 -230
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +12 -12
- package/dist/src/sort-filter-bar/alpha-bar.js +52 -52
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +108 -108
- package/dist/src/sort-filter-bar/sort-filter-bar.js +428 -428
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +8 -8
- package/dist/src/tiles/grid/account-tile.js +20 -20
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
- package/dist/src/tiles/grid/collection-tile.js +23 -23
- package/dist/src/tiles/grid/item-tile.d.ts +24 -24
- package/dist/src/tiles/grid/item-tile.js +87 -87
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
- package/dist/src/tiles/grid/tile-stats.js +40 -40
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +69 -69
- package/dist/src/tiles/item-image.d.ts +31 -31
- package/dist/src/tiles/item-image.js +106 -106
- package/dist/src/tiles/list/account-label.d.ts +1 -1
- package/dist/src/tiles/list/account-label.js +6 -6
- package/dist/src/tiles/list/date-label.d.ts +1 -1
- package/dist/src/tiles/list/date-label.js +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
- package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
- package/dist/src/tiles/list/tile-list-compact.js +93 -93
- package/dist/src/tiles/list/tile-list.d.ts +50 -50
- package/dist/src/tiles/list/tile-list.js +276 -276
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
- package/dist/src/tiles/overlay/icon-overlay.js +40 -40
- package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
- package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
- package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
- package/dist/src/tiles/overlay/text-overlay.js +42 -42
- package/dist/src/tiles/text-snippet-block.d.ts +29 -29
- package/dist/src/tiles/text-snippet-block.js +81 -81
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
- package/dist/src/tiles/tile-dispatcher.js +128 -128
- package/dist/src/utils/analytics-events.d.ts +22 -22
- package/dist/src/utils/analytics-events.js +24 -24
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +23 -23
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +646 -646
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +62 -62
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +114 -114
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +544 -544
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +33 -33
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +80 -80
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
- package/dist/test/mocks/mock-collection-name-cache.js +13 -13
- package/dist/test/mocks/mock-search-responses.d.ts +12 -12
- package/dist/test/mocks/mock-search-responses.js +341 -341
- package/dist/test/mocks/mock-search-service.d.ts +13 -13
- package/dist/test/mocks/mock-search-service.js +40 -40
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +125 -125
- package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +43 -43
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +141 -141
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +48 -48
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +107 -107
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +123 -123
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +1 -1
- package/renovate.json +6 -6
- package/src/collection-browser.ts +18 -1
- package/src/restoration-state-handler.ts +59 -12
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
package/local.archive.org.key
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
-
MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
|
|
3
|
-
DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
|
|
4
|
-
9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
|
|
5
|
-
pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
|
|
6
|
-
HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
|
|
7
|
-
s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
|
|
8
|
-
BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
|
|
9
|
-
0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
|
|
10
|
-
PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
|
|
11
|
-
fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
|
|
12
|
-
dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
|
|
13
|
-
MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
|
|
14
|
-
sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
|
|
15
|
-
foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
|
|
16
|
-
o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
|
|
17
|
-
9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
|
|
18
|
-
Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
|
|
19
|
-
Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
|
|
20
|
-
sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
|
|
21
|
-
Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
|
|
22
|
-
49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
|
|
23
|
-
ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
|
|
24
|
-
WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
|
|
25
|
-
wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
|
|
26
|
-
g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
|
|
27
|
-
-----END RSA PRIVATE KEY-----
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
+
MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
|
|
3
|
+
DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
|
|
4
|
+
9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
|
|
5
|
+
pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
|
|
6
|
+
HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
|
|
7
|
+
s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
|
|
8
|
+
BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
|
|
9
|
+
0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
|
|
10
|
+
PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
|
|
11
|
+
fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
|
|
12
|
+
dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
|
|
13
|
+
MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
|
|
14
|
+
sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
|
|
15
|
+
foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
|
|
16
|
+
o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
|
|
17
|
+
9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
|
|
18
|
+
Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
|
|
19
|
+
Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
|
|
20
|
+
sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
|
|
21
|
+
Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
|
|
22
|
+
49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
|
|
23
|
+
ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
|
|
24
|
+
WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
|
|
25
|
+
wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
|
|
26
|
+
g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
|
|
27
|
+
-----END RSA PRIVATE KEY-----
|
package/package.json
CHANGED
package/renovate.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": [
|
|
3
|
-
"config:base",
|
|
4
|
-
":preserveSemverRanges"
|
|
5
|
-
]
|
|
6
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"config:base",
|
|
4
|
+
":preserveSemverRanges"
|
|
5
|
+
]
|
|
6
|
+
}
|
|
@@ -618,10 +618,12 @@ export class CollectionBrowser
|
|
|
618
618
|
|
|
619
619
|
firstUpdated(): void {
|
|
620
620
|
this.setupStateRestorationObserver();
|
|
621
|
+
console.log('first updated - restoring state');
|
|
621
622
|
this.restoreState();
|
|
622
623
|
}
|
|
623
624
|
|
|
624
625
|
updated(changed: PropertyValues) {
|
|
626
|
+
console.log('updated', changed);
|
|
625
627
|
if (
|
|
626
628
|
changed.has('displayMode') ||
|
|
627
629
|
changed.has('baseNavigationUrl') ||
|
|
@@ -631,12 +633,19 @@ export class CollectionBrowser
|
|
|
631
633
|
this.infiniteScroller?.reload();
|
|
632
634
|
}
|
|
633
635
|
if (changed.has('baseQuery')) {
|
|
636
|
+
console.log('base query changed', changed.get('baseQuery'));
|
|
634
637
|
this.emitBaseQueryChanged();
|
|
635
638
|
}
|
|
636
639
|
if (changed.has('searchType')) {
|
|
640
|
+
console.log('search type changed', changed.get('searchType'));
|
|
637
641
|
this.emitSearchTypeChanged();
|
|
638
642
|
}
|
|
639
643
|
if (changed.has('currentPage') || changed.has('displayMode')) {
|
|
644
|
+
console.log(
|
|
645
|
+
'current page or display mode changed',
|
|
646
|
+
changed.get('currentPage'),
|
|
647
|
+
changed.get('displayMode')
|
|
648
|
+
);
|
|
640
649
|
this.persistState();
|
|
641
650
|
}
|
|
642
651
|
if (
|
|
@@ -649,6 +658,7 @@ export class CollectionBrowser
|
|
|
649
658
|
changed.has('selectedFacets') ||
|
|
650
659
|
changed.has('searchService')
|
|
651
660
|
) {
|
|
661
|
+
console.log('handling query change', changed);
|
|
652
662
|
this.handleQueryChange();
|
|
653
663
|
}
|
|
654
664
|
if (
|
|
@@ -783,6 +793,11 @@ export class CollectionBrowser
|
|
|
783
793
|
private previousQueryKey?: string;
|
|
784
794
|
|
|
785
795
|
private async handleQueryChange() {
|
|
796
|
+
console.log(
|
|
797
|
+
'handleQueryChange',
|
|
798
|
+
this.pageFetchQueryKey,
|
|
799
|
+
this.previousQueryKey
|
|
800
|
+
);
|
|
786
801
|
// only reset if the query has actually changed
|
|
787
802
|
if (!this.searchService || this.pageFetchQueryKey === this.previousQueryKey)
|
|
788
803
|
return;
|
|
@@ -804,9 +819,9 @@ export class CollectionBrowser
|
|
|
804
819
|
this.scrollToPage(this.initialPageNumber);
|
|
805
820
|
}
|
|
806
821
|
this.initialQueryChangeHappened = true;
|
|
822
|
+
|
|
807
823
|
// if the query changed as part of a window.history pop event, we don't want to
|
|
808
824
|
// persist the state because it overwrites the forward history
|
|
809
|
-
|
|
810
825
|
if (!this.historyPopOccurred) {
|
|
811
826
|
this.persistState();
|
|
812
827
|
this.historyPopOccurred = false;
|
|
@@ -1290,6 +1305,7 @@ export class CollectionBrowser
|
|
|
1290
1305
|
private pageFetchesInProgress: Record<string, Set<number>> = {};
|
|
1291
1306
|
|
|
1292
1307
|
async fetchPage(pageNumber: number) {
|
|
1308
|
+
console.log('maybe fetch page', pageNumber);
|
|
1293
1309
|
if (!this.filteredQuery) return;
|
|
1294
1310
|
|
|
1295
1311
|
// if we already have data, don't fetch again
|
|
@@ -1304,6 +1320,7 @@ export class CollectionBrowser
|
|
|
1304
1320
|
if (pageFetches.has(pageNumber)) return;
|
|
1305
1321
|
pageFetches.add(pageNumber);
|
|
1306
1322
|
this.pageFetchesInProgress[pageFetchQueryKey] = pageFetches;
|
|
1323
|
+
console.log('fetching page', pageNumber);
|
|
1307
1324
|
|
|
1308
1325
|
const sortParams = this.sortParam ? [this.sortParam] : [];
|
|
1309
1326
|
const params: SearchParams = {
|
|
@@ -89,6 +89,7 @@ export class RestorationStateHandler
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
private persistQueryStateToUrl(state: RestorationState) {
|
|
92
|
+
console.log('persistQueryStateToUrl', state);
|
|
92
93
|
const url = new URL(window.location.href);
|
|
93
94
|
const { searchParams } = url;
|
|
94
95
|
searchParams.delete('sin');
|
|
@@ -98,6 +99,10 @@ export class RestorationStateHandler
|
|
|
98
99
|
searchParams.delete('and[]');
|
|
99
100
|
searchParams.delete('not[]');
|
|
100
101
|
|
|
102
|
+
if (state.baseQuery) {
|
|
103
|
+
searchParams.set('query', state.baseQuery);
|
|
104
|
+
}
|
|
105
|
+
|
|
101
106
|
if (state.searchType) {
|
|
102
107
|
searchParams.set(
|
|
103
108
|
'sin',
|
|
@@ -105,15 +110,6 @@ export class RestorationStateHandler
|
|
|
105
110
|
);
|
|
106
111
|
}
|
|
107
112
|
|
|
108
|
-
if (state.sortParam) {
|
|
109
|
-
const prefix = state.sortParam.direction === 'desc' ? '-' : '';
|
|
110
|
-
searchParams.set('sort', `${prefix}${state.sortParam.field}`);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
if (state.baseQuery) {
|
|
114
|
-
searchParams.set('query', state.baseQuery);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
113
|
if (state.currentPage) {
|
|
118
114
|
if (state.currentPage > 1) {
|
|
119
115
|
searchParams.set('page', state.currentPage.toString());
|
|
@@ -122,6 +118,11 @@ export class RestorationStateHandler
|
|
|
122
118
|
}
|
|
123
119
|
}
|
|
124
120
|
|
|
121
|
+
if (state.sortParam) {
|
|
122
|
+
const prefix = state.sortParam.direction === 'desc' ? '-' : '';
|
|
123
|
+
searchParams.set('sort', `${prefix}${state.sortParam.field}`);
|
|
124
|
+
}
|
|
125
|
+
|
|
125
126
|
if (state.selectedFacets) {
|
|
126
127
|
for (const [facetName, facetValues] of Object.entries(
|
|
127
128
|
state.selectedFacets
|
|
@@ -147,22 +148,41 @@ export class RestorationStateHandler
|
|
|
147
148
|
`year:[${state.minSelectedDate} TO ${state.maxSelectedDate}]`
|
|
148
149
|
);
|
|
149
150
|
}
|
|
151
|
+
|
|
150
152
|
if (state.titleQuery) {
|
|
151
153
|
searchParams.append('and[]', state.titleQuery);
|
|
152
154
|
}
|
|
155
|
+
|
|
153
156
|
if (state.creatorQuery) {
|
|
154
157
|
searchParams.append('and[]', state.creatorQuery);
|
|
155
158
|
}
|
|
156
159
|
|
|
160
|
+
// Ensure we aren't pushing an identical state to the stack
|
|
161
|
+
const prevState = window.history.state;
|
|
162
|
+
if (
|
|
163
|
+
prevState &&
|
|
164
|
+
prevState.query === state.baseQuery &&
|
|
165
|
+
prevState.searchType === state.searchType &&
|
|
166
|
+
prevState.page === state.currentPage &&
|
|
167
|
+
prevState.sort?.field === state.sortParam?.field &&
|
|
168
|
+
prevState.sort?.direction === state.sortParam?.direction &&
|
|
169
|
+
prevState.minDate === state.minSelectedDate &&
|
|
170
|
+
prevState.maxDate === state.maxSelectedDate &&
|
|
171
|
+
this.selectedFacetStatesEqual(prevState.facets, state.selectedFacets)
|
|
172
|
+
) {
|
|
173
|
+
console.log('Ignoring identical history state');
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
|
|
157
177
|
window.history.pushState(
|
|
158
178
|
{
|
|
159
|
-
sort: state.sortParam,
|
|
160
179
|
query: state.baseQuery,
|
|
180
|
+
searchType: state.searchType,
|
|
161
181
|
page: state.currentPage,
|
|
162
|
-
|
|
163
|
-
not: state.selectedFacets,
|
|
182
|
+
sort: state.sortParam,
|
|
164
183
|
minDate: state.minSelectedDate,
|
|
165
184
|
maxDate: state.maxSelectedDate,
|
|
185
|
+
facets: state.selectedFacets,
|
|
166
186
|
},
|
|
167
187
|
'',
|
|
168
188
|
url
|
|
@@ -170,6 +190,7 @@ export class RestorationStateHandler
|
|
|
170
190
|
}
|
|
171
191
|
|
|
172
192
|
private loadQueryStateFromUrl(): RestorationState {
|
|
193
|
+
console.log('loadQueryStateFromUrl', window.location.href);
|
|
173
194
|
const url = new URL(window.location.href);
|
|
174
195
|
const searchInside = url.searchParams.get('sin');
|
|
175
196
|
const pageNumber = url.searchParams.get('page');
|
|
@@ -295,6 +316,32 @@ export class RestorationStateHandler
|
|
|
295
316
|
return value;
|
|
296
317
|
}
|
|
297
318
|
|
|
319
|
+
private selectedFacetStatesEqual(
|
|
320
|
+
facets1: SelectedFacets,
|
|
321
|
+
facets2: SelectedFacets
|
|
322
|
+
): boolean {
|
|
323
|
+
if (facets1 === facets2) return true;
|
|
324
|
+
|
|
325
|
+
// We can assume they both have the same top-level entries (the allowable facet fields)
|
|
326
|
+
for (const [key, values] of Object.entries(facets1)) {
|
|
327
|
+
const facetField = key as keyof SelectedFacets;
|
|
328
|
+
|
|
329
|
+
// They must have the same number of bucket entries for each field
|
|
330
|
+
const bucketEntries1 = Object.entries(values);
|
|
331
|
+
const bucketEntries2 = Object.entries(facets2[facetField]);
|
|
332
|
+
if (bucketEntries1.length !== bucketEntries2.length) return false;
|
|
333
|
+
|
|
334
|
+
// And since they have the same length, we just ensure every bucket state from the
|
|
335
|
+
// first object matches a corresponding bucket state in the second object.
|
|
336
|
+
// If the corresponding bucket doesn't exist or has a different state, we're done.
|
|
337
|
+
for (const [value, bucket] of bucketEntries1) {
|
|
338
|
+
if (bucket.state !== facets2[facetField][value]?.state) return false;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
return true;
|
|
343
|
+
}
|
|
344
|
+
|
|
298
345
|
/**
|
|
299
346
|
* Sets the facet state for the given field & value to the given state,
|
|
300
347
|
* creating any previously-undefined buckets as needed.
|
package/tsconfig.json
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "es2018",
|
|
4
|
-
"module": "esnext",
|
|
5
|
-
"moduleResolution": "node",
|
|
6
|
-
"noEmitOnError": true,
|
|
7
|
-
"lib": ["es2017", "dom"],
|
|
8
|
-
"strict": true,
|
|
9
|
-
"esModuleInterop": false,
|
|
10
|
-
"allowSyntheticDefaultImports": true,
|
|
11
|
-
"experimentalDecorators": true,
|
|
12
|
-
"importHelpers": true,
|
|
13
|
-
"outDir": "dist",
|
|
14
|
-
"sourceMap": true,
|
|
15
|
-
"inlineSources": true,
|
|
16
|
-
"rootDir": "./",
|
|
17
|
-
"declaration": true,
|
|
18
|
-
"importsNotUsedAsValues": "error"
|
|
19
|
-
},
|
|
20
|
-
"include": ["src", "test", "index.ts", "types"],
|
|
21
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es2018",
|
|
4
|
+
"module": "esnext",
|
|
5
|
+
"moduleResolution": "node",
|
|
6
|
+
"noEmitOnError": true,
|
|
7
|
+
"lib": ["es2017", "dom"],
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": false,
|
|
10
|
+
"allowSyntheticDefaultImports": true,
|
|
11
|
+
"experimentalDecorators": true,
|
|
12
|
+
"importHelpers": true,
|
|
13
|
+
"outDir": "dist",
|
|
14
|
+
"sourceMap": true,
|
|
15
|
+
"inlineSources": true,
|
|
16
|
+
"rootDir": "./",
|
|
17
|
+
"declaration": true,
|
|
18
|
+
"importsNotUsedAsValues": "error"
|
|
19
|
+
},
|
|
20
|
+
"include": ["src", "test", "index.ts", "types"],
|
|
21
|
+
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
// import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
|
|
2
|
-
|
|
3
|
-
/** Use Hot Module replacement by adding --hmr to the start command */
|
|
4
|
-
const hmr = process.argv.includes('--hmr');
|
|
5
|
-
|
|
6
|
-
export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
|
|
7
|
-
nodeResolve: true,
|
|
8
|
-
open: '/',
|
|
9
|
-
watch: !hmr,
|
|
10
|
-
|
|
11
|
-
/** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
|
|
12
|
-
// esbuildTarget: 'auto'
|
|
13
|
-
|
|
14
|
-
/** Set appIndex to enable SPA routing */
|
|
15
|
-
// appIndex: 'demo/index.html',
|
|
16
|
-
|
|
17
|
-
/** Confgure bare import resolve plugin */
|
|
18
|
-
// nodeResolve: {
|
|
19
|
-
// exportConditions: ['browser', 'development']
|
|
20
|
-
// },
|
|
21
|
-
|
|
22
|
-
plugins: [
|
|
23
|
-
/** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
|
|
24
|
-
// hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
|
|
25
|
-
],
|
|
26
|
-
|
|
27
|
-
http2: true,
|
|
28
|
-
sslCert: './local.archive.org.cert',
|
|
29
|
-
sslKey: './local.archive.org.key',
|
|
30
|
-
});
|
|
1
|
+
// import { hmrPlugin, presets } from '@open-wc/dev-server-hmr';
|
|
2
|
+
|
|
3
|
+
/** Use Hot Module replacement by adding --hmr to the start command */
|
|
4
|
+
const hmr = process.argv.includes('--hmr');
|
|
5
|
+
|
|
6
|
+
export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
|
|
7
|
+
nodeResolve: true,
|
|
8
|
+
open: '/',
|
|
9
|
+
watch: !hmr,
|
|
10
|
+
|
|
11
|
+
/** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
|
|
12
|
+
// esbuildTarget: 'auto'
|
|
13
|
+
|
|
14
|
+
/** Set appIndex to enable SPA routing */
|
|
15
|
+
// appIndex: 'demo/index.html',
|
|
16
|
+
|
|
17
|
+
/** Confgure bare import resolve plugin */
|
|
18
|
+
// nodeResolve: {
|
|
19
|
+
// exportConditions: ['browser', 'development']
|
|
20
|
+
// },
|
|
21
|
+
|
|
22
|
+
plugins: [
|
|
23
|
+
/** Use Hot Module Replacement by uncommenting. Requires @open-wc/dev-server-hmr plugin */
|
|
24
|
+
// hmr && hmrPlugin({ exclude: ['**/*/node_modules/**/*'], presets: [presets.litElement] }),
|
|
25
|
+
],
|
|
26
|
+
|
|
27
|
+
http2: true,
|
|
28
|
+
sslCert: './local.archive.org.cert',
|
|
29
|
+
sslKey: './local.archive.org.key',
|
|
30
|
+
});
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
// import { playwrightLauncher } from '@web/test-runner-playwright';
|
|
2
|
-
|
|
3
|
-
const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
|
|
4
|
-
|
|
5
|
-
export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
|
|
6
|
-
/** Test files to run */
|
|
7
|
-
files: 'dist/test/**/*.test.js',
|
|
8
|
-
|
|
9
|
-
/** Resolve bare module imports */
|
|
10
|
-
nodeResolve: {
|
|
11
|
-
exportConditions: ['browser', 'development'],
|
|
12
|
-
},
|
|
13
|
-
|
|
14
|
-
/** Filter out lit dev mode logs */
|
|
15
|
-
filterBrowserLogs(log) {
|
|
16
|
-
for (const arg of log.args) {
|
|
17
|
-
if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return true;
|
|
22
|
-
},
|
|
23
|
-
|
|
24
|
-
/** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
|
|
25
|
-
// esbuildTarget: 'auto',
|
|
26
|
-
|
|
27
|
-
/** Amount of browsers to run concurrently */
|
|
28
|
-
// concurrentBrowsers: 2,
|
|
29
|
-
|
|
30
|
-
/** Amount of test files per browser to test concurrently */
|
|
31
|
-
// concurrency: 1,
|
|
32
|
-
|
|
33
|
-
/** Browsers to run tests on */
|
|
34
|
-
// browsers: [
|
|
35
|
-
// playwrightLauncher({ product: 'chromium' }),
|
|
36
|
-
// playwrightLauncher({ product: 'firefox' }),
|
|
37
|
-
// playwrightLauncher({ product: 'webkit' }),
|
|
38
|
-
// ],
|
|
39
|
-
|
|
40
|
-
// See documentation for all available options
|
|
41
|
-
});
|
|
1
|
+
// import { playwrightLauncher } from '@web/test-runner-playwright';
|
|
2
|
+
|
|
3
|
+
const filteredLogs = ['Running in dev mode', 'lit-html is in dev mode'];
|
|
4
|
+
|
|
5
|
+
export default /** @type {import("@web/test-runner").TestRunnerConfig} */ ({
|
|
6
|
+
/** Test files to run */
|
|
7
|
+
files: 'dist/test/**/*.test.js',
|
|
8
|
+
|
|
9
|
+
/** Resolve bare module imports */
|
|
10
|
+
nodeResolve: {
|
|
11
|
+
exportConditions: ['browser', 'development'],
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
/** Filter out lit dev mode logs */
|
|
15
|
+
filterBrowserLogs(log) {
|
|
16
|
+
for (const arg of log.args) {
|
|
17
|
+
if (typeof arg === 'string' && filteredLogs.some(l => arg.includes(l))) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
/** Compile JS for older browsers. Requires @web/dev-server-esbuild plugin */
|
|
25
|
+
// esbuildTarget: 'auto',
|
|
26
|
+
|
|
27
|
+
/** Amount of browsers to run concurrently */
|
|
28
|
+
// concurrentBrowsers: 2,
|
|
29
|
+
|
|
30
|
+
/** Amount of test files per browser to test concurrently */
|
|
31
|
+
// concurrency: 1,
|
|
32
|
+
|
|
33
|
+
/** Browsers to run tests on */
|
|
34
|
+
// browsers: [
|
|
35
|
+
// playwrightLauncher({ product: 'chromium' }),
|
|
36
|
+
// playwrightLauncher({ product: 'firefox' }),
|
|
37
|
+
// playwrightLauncher({ product: 'webkit' }),
|
|
38
|
+
// ],
|
|
39
|
+
|
|
40
|
+
// See documentation for all available options
|
|
41
|
+
});
|