@internetarchive/collection-browser 2.7.12 → 2.7.13
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/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +13 -13
- package/dist/index.js +13 -13
- package/dist/src/app-root.d.ts +107 -107
- package/dist/src/app-root.js +531 -531
- 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/contract.d.ts +2 -2
- package/dist/src/assets/img/icons/contract.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/expand.d.ts +2 -2
- package/dist/src/assets/img/icons/expand.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/favorite-unfilled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
- package/dist/src/assets/img/icons/filter.d.ts +2 -2
- package/dist/src/assets/img/icons/filter.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/search.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/search.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 +606 -606
- package/dist/src/collection-browser.js +1677 -1677
- package/dist/src/collection-facets/facet-row.d.ts +30 -30
- package/dist/src/collection-facets/facet-row.js +118 -118
- 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 +13 -13
- package/dist/src/collection-facets/facets-template.js +44 -44
- package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
- package/dist/src/collection-facets/more-facets-content.js +407 -407
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +196 -196
- package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
- package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
- package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
- package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
- package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
- package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
- package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
- package/dist/src/collection-facets/smart-facets/models.js +1 -1
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
- package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
- package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
- package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
- package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
- package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
- package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
- package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
- package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
- package/dist/src/collection-facets/toggle-switch.js +94 -94
- package/dist/src/collection-facets.d.ts +103 -103
- package/dist/src/collection-facets.js +522 -522
- package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -245
- package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
- package/dist/src/data-source/collection-browser-data-source.d.ts +377 -377
- package/dist/src/data-source/collection-browser-data-source.js +1004 -1001
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/data-source/collection-browser-query-state.d.ts +44 -44
- package/dist/src/data-source/collection-browser-query-state.js +1 -1
- package/dist/src/data-source/models.d.ts +28 -28
- package/dist/src/data-source/models.js +8 -8
- package/dist/src/empty-placeholder.d.ts +23 -23
- package/dist/src/empty-placeholder.js +79 -79
- package/dist/src/expanded-date-picker.d.ts +43 -43
- package/dist/src/expanded-date-picker.js +109 -109
- 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/manage/manage-bar.d.ts +58 -58
- package/dist/src/manage/manage-bar.js +159 -159
- package/dist/src/manage/remove-items-modal-content.d.ts +9 -9
- package/dist/src/manage/remove-items-modal-content.js +34 -34
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +91 -91
- package/dist/src/models.d.ts +228 -228
- package/dist/src/models.js +401 -401
- package/dist/src/restoration-state-handler.d.ts +70 -70
- package/dist/src/restoration-state-handler.js +363 -363
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
- package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
- 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-toggle-disabled.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-up.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 +223 -223
- package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
- package/dist/src/styles/ia-button.d.ts +2 -2
- package/dist/src/styles/ia-button.js +17 -17
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/styles/sr-only.d.ts +1 -1
- package/dist/src/styles/sr-only.js +2 -2
- package/dist/src/tiles/base-tile-component.d.ts +19 -19
- package/dist/src/tiles/base-tile-component.js +64 -64
- 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 +18 -18
- package/dist/src/tiles/grid/account-tile.js +72 -72
- package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
- package/dist/src/tiles/grid/collection-tile.js +80 -80
- package/dist/src/tiles/grid/item-tile.d.ts +34 -34
- package/dist/src/tiles/grid/item-tile.js +158 -158
- package/dist/src/tiles/grid/search-tile.d.ts +10 -10
- package/dist/src/tiles/grid/search-tile.js +51 -51
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
- package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
- package/dist/src/tiles/grid/tile-stats.js +53 -53
- package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
- package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
- package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
- package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
- package/dist/src/tiles/image-block.d.ts +18 -18
- package/dist/src/tiles/image-block.js +89 -89
- package/dist/src/tiles/item-image.d.ts +39 -39
- package/dist/src/tiles/item-image.js +154 -154
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
- package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
- package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
- package/dist/src/tiles/list/tile-list-compact.js +122 -122
- package/dist/src/tiles/list/tile-list.d.ts +54 -54
- package/dist/src/tiles/list/tile-list.js +323 -323
- 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 +8 -8
- package/dist/src/tiles/overlay/icon-overlay.js +25 -25
- package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
- package/dist/src/tiles/overlay/text-overlay.js +31 -31
- package/dist/src/tiles/review-block.d.ts +12 -12
- package/dist/src/tiles/review-block.js +56 -56
- package/dist/src/tiles/text-snippet-block.d.ts +27 -27
- package/dist/src/tiles/text-snippet-block.js +73 -73
- package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
- package/dist/src/tiles/tile-dispatcher.js +230 -230
- package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
- package/dist/src/tiles/tile-display-value-provider.js +94 -94
- package/dist/src/utils/analytics-events.d.ts +28 -28
- package/dist/src/utils/analytics-events.js +30 -30
- package/dist/src/utils/array-equals.d.ts +4 -4
- package/dist/src/utils/array-equals.js +10 -10
- package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
- package/dist/src/utils/collapse-repeated-quotes.js +13 -13
- package/dist/src/utils/facet-utils.d.ts +83 -83
- package/dist/src/utils/facet-utils.js +145 -145
- 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 +27 -27
- package/dist/src/utils/format-unit-size.d.ts +2 -2
- package/dist/src/utils/format-unit-size.js +33 -33
- package/dist/src/utils/local-date-from-utc.d.ts +9 -9
- package/dist/src/utils/local-date-from-utc.js +15 -15
- package/dist/src/utils/log.d.ts +7 -7
- package/dist/src/utils/log.js +15 -15
- package/dist/src/utils/resolve-mediatype.d.ts +8 -8
- package/dist/src/utils/resolve-mediatype.js +23 -23
- package/dist/src/utils/sha1.d.ts +2 -2
- package/dist/src/utils/sha1.js +8 -8
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +1308 -1308
- package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
- package/dist/test/collection-facets/facet-row.test.js +227 -227
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +91 -91
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +141 -141
- 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/toggle-switch.test.d.ts +1 -1
- package/dist/test/collection-facets/toggle-switch.test.js +73 -73
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +690 -690
- package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
- package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +63 -63
- package/dist/test/expanded-date-picker.test.d.ts +1 -1
- package/dist/test/expanded-date-picker.test.js +95 -95
- 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 +107 -107
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +85 -85
- package/dist/test/manage/manage-bar.test.d.ts +2 -2
- package/dist/test/manage/manage-bar.test.js +100 -100
- package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -1
- package/dist/test/manage/remove-items-modal-content.test.js +45 -45
- 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-search-responses.d.ts +25 -25
- package/dist/test/mocks/mock-search-responses.js +942 -942
- package/dist/test/mocks/mock-search-service.d.ts +15 -15
- package/dist/test/mocks/mock-search-service.js +54 -54
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +270 -270
- package/dist/test/review-block.test.d.ts +1 -1
- package/dist/test/review-block.test.js +44 -44
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
- package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
- 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 +426 -426
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +38 -38
- 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 +81 -81
- package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/account-tile.test.js +76 -76
- package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/collection-tile.test.js +73 -73
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +312 -312
- package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/search-tile.test.js +51 -51
- package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
- package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +297 -297
- package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +100 -100
- package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
- package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
- package/dist/test/utils/array-equals.test.d.ts +1 -1
- package/dist/test/utils/array-equals.test.js +26 -26
- 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 +30 -30
- package/dist/test/utils/format-unit-size.test.d.ts +1 -1
- package/dist/test/utils/format-unit-size.test.js +17 -17
- package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
- package/dist/test/utils/local-date-from-utc.test.js +26 -26
- 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/data-source/collection-browser-data-source.ts +5 -1
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
import { html, nothing } from 'lit';
|
|
2
|
-
import { msg, str } from '@lit/localize';
|
|
3
|
-
import { formatDate } from '../utils/format-date';
|
|
4
|
-
/**
|
|
5
|
-
* A class encapsulating shared logic for converting model values into display values
|
|
6
|
-
* across different types of tiles.
|
|
7
|
-
*/
|
|
8
|
-
export class TileDisplayValueProvider {
|
|
9
|
-
constructor(options = {}) {
|
|
10
|
-
var _a;
|
|
11
|
-
this.model = options.model;
|
|
12
|
-
this.baseNavigationUrl = options.baseNavigationUrl;
|
|
13
|
-
this.collectionPagePath = (_a = options.collectionPagePath) !== null && _a !== void 0 ? _a : '/details/';
|
|
14
|
-
this.sortParam = options.sortParam;
|
|
15
|
-
this.creatorFilter = options.creatorFilter;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Examines the creator(s) for the given tile model, returning
|
|
19
|
-
* the first creator whose name matches the provided filter
|
|
20
|
-
* (or simply the first creator overall if no filter is provided).
|
|
21
|
-
*/
|
|
22
|
-
get firstCreatorMatchingFilter() {
|
|
23
|
-
var _a, _b;
|
|
24
|
-
let matchingCreator;
|
|
25
|
-
// If we're filtering by creator initial and have multiple creators, we want
|
|
26
|
-
// to surface the first creator who matches the filter.
|
|
27
|
-
if (this.creatorFilter && ((_a = this.model) === null || _a === void 0 ? void 0 : _a.creators.length)) {
|
|
28
|
-
const firstLetter = this.creatorFilter; // This is just to satisfy tsc
|
|
29
|
-
matchingCreator = this.model.creators.find(creator =>
|
|
30
|
-
// Decompose combining characters first, so that e.g., filtering on E matches É too.
|
|
31
|
-
// Then remove anything that isn't strictly alphabetic, since our filters currently
|
|
32
|
-
// only handle A-Z. The first such letter (if one exists) is what needs to match.
|
|
33
|
-
creator
|
|
34
|
-
.normalize('NFD')
|
|
35
|
-
.replace(/[^A-Z]+/gi, '')
|
|
36
|
-
.toUpperCase()
|
|
37
|
-
.startsWith(firstLetter));
|
|
38
|
-
}
|
|
39
|
-
return matchingCreator !== null && matchingCreator !== void 0 ? matchingCreator : (_b = this.model) === null || _b === void 0 ? void 0 : _b.creator;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* The label indicating what year an account item was created.
|
|
43
|
-
* E.g., "Archivist since 2015"
|
|
44
|
-
*/
|
|
45
|
-
get accountLabel() {
|
|
46
|
-
var _a;
|
|
47
|
-
return ((_a = this.model) === null || _a === void 0 ? void 0 : _a.dateAdded)
|
|
48
|
-
? msg(str `Archivist since ${this.model.dateAdded.getFullYear()}`)
|
|
49
|
-
: '';
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* The readable label for the current sort if it is a type of date sort,
|
|
53
|
-
* or the empty string otherwise.
|
|
54
|
-
*/
|
|
55
|
-
get dateLabel() {
|
|
56
|
-
var _a;
|
|
57
|
-
switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
|
|
58
|
-
case 'publicdate':
|
|
59
|
-
return msg('Archived');
|
|
60
|
-
case 'reviewdate':
|
|
61
|
-
return msg('Reviewed');
|
|
62
|
-
case 'addeddate':
|
|
63
|
-
return msg('Added');
|
|
64
|
-
case 'date':
|
|
65
|
-
return msg('Published');
|
|
66
|
-
default:
|
|
67
|
-
return '';
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Produces a URL pointing at the item page for the given identifier,
|
|
72
|
-
* using the current base URL and the correct path based on whether the
|
|
73
|
-
* item is specified to be a collection (default false).
|
|
74
|
-
*/
|
|
75
|
-
itemPageUrl(identifier, isCollection = false) {
|
|
76
|
-
if (!identifier || this.baseNavigationUrl == null)
|
|
77
|
-
return nothing;
|
|
78
|
-
const basePath = isCollection ? this.collectionPagePath : '/details/';
|
|
79
|
-
return `${this.baseNavigationUrl}${basePath}${identifier}`;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Produces a template for a link to a single web capture of the given URL and date
|
|
83
|
-
*/
|
|
84
|
-
webArchivesCaptureLink(url, date) {
|
|
85
|
-
// Convert the date into the format used to identify wayback captures (e.g., '20150102124550')
|
|
86
|
-
const captureDateStr = date
|
|
87
|
-
.toISOString()
|
|
88
|
-
.replace(/[TZ:-]/g, '')
|
|
89
|
-
.replace(/\..*/, '');
|
|
90
|
-
const captureHref = `https://web.archive.org/web/${captureDateStr}/${encodeURIComponent(url)}`;
|
|
91
|
-
const captureText = formatDate(date, 'long');
|
|
92
|
-
return html ` <a href=${captureHref}> ${captureText} </a> `;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
1
|
+
import { html, nothing } from 'lit';
|
|
2
|
+
import { msg, str } from '@lit/localize';
|
|
3
|
+
import { formatDate } from '../utils/format-date';
|
|
4
|
+
/**
|
|
5
|
+
* A class encapsulating shared logic for converting model values into display values
|
|
6
|
+
* across different types of tiles.
|
|
7
|
+
*/
|
|
8
|
+
export class TileDisplayValueProvider {
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
var _a;
|
|
11
|
+
this.model = options.model;
|
|
12
|
+
this.baseNavigationUrl = options.baseNavigationUrl;
|
|
13
|
+
this.collectionPagePath = (_a = options.collectionPagePath) !== null && _a !== void 0 ? _a : '/details/';
|
|
14
|
+
this.sortParam = options.sortParam;
|
|
15
|
+
this.creatorFilter = options.creatorFilter;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Examines the creator(s) for the given tile model, returning
|
|
19
|
+
* the first creator whose name matches the provided filter
|
|
20
|
+
* (or simply the first creator overall if no filter is provided).
|
|
21
|
+
*/
|
|
22
|
+
get firstCreatorMatchingFilter() {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
let matchingCreator;
|
|
25
|
+
// If we're filtering by creator initial and have multiple creators, we want
|
|
26
|
+
// to surface the first creator who matches the filter.
|
|
27
|
+
if (this.creatorFilter && ((_a = this.model) === null || _a === void 0 ? void 0 : _a.creators.length)) {
|
|
28
|
+
const firstLetter = this.creatorFilter; // This is just to satisfy tsc
|
|
29
|
+
matchingCreator = this.model.creators.find(creator =>
|
|
30
|
+
// Decompose combining characters first, so that e.g., filtering on E matches É too.
|
|
31
|
+
// Then remove anything that isn't strictly alphabetic, since our filters currently
|
|
32
|
+
// only handle A-Z. The first such letter (if one exists) is what needs to match.
|
|
33
|
+
creator
|
|
34
|
+
.normalize('NFD')
|
|
35
|
+
.replace(/[^A-Z]+/gi, '')
|
|
36
|
+
.toUpperCase()
|
|
37
|
+
.startsWith(firstLetter));
|
|
38
|
+
}
|
|
39
|
+
return matchingCreator !== null && matchingCreator !== void 0 ? matchingCreator : (_b = this.model) === null || _b === void 0 ? void 0 : _b.creator;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The label indicating what year an account item was created.
|
|
43
|
+
* E.g., "Archivist since 2015"
|
|
44
|
+
*/
|
|
45
|
+
get accountLabel() {
|
|
46
|
+
var _a;
|
|
47
|
+
return ((_a = this.model) === null || _a === void 0 ? void 0 : _a.dateAdded)
|
|
48
|
+
? msg(str `Archivist since ${this.model.dateAdded.getFullYear()}`)
|
|
49
|
+
: '';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The readable label for the current sort if it is a type of date sort,
|
|
53
|
+
* or the empty string otherwise.
|
|
54
|
+
*/
|
|
55
|
+
get dateLabel() {
|
|
56
|
+
var _a;
|
|
57
|
+
switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
|
|
58
|
+
case 'publicdate':
|
|
59
|
+
return msg('Archived');
|
|
60
|
+
case 'reviewdate':
|
|
61
|
+
return msg('Reviewed');
|
|
62
|
+
case 'addeddate':
|
|
63
|
+
return msg('Added');
|
|
64
|
+
case 'date':
|
|
65
|
+
return msg('Published');
|
|
66
|
+
default:
|
|
67
|
+
return '';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Produces a URL pointing at the item page for the given identifier,
|
|
72
|
+
* using the current base URL and the correct path based on whether the
|
|
73
|
+
* item is specified to be a collection (default false).
|
|
74
|
+
*/
|
|
75
|
+
itemPageUrl(identifier, isCollection = false) {
|
|
76
|
+
if (!identifier || this.baseNavigationUrl == null)
|
|
77
|
+
return nothing;
|
|
78
|
+
const basePath = isCollection ? this.collectionPagePath : '/details/';
|
|
79
|
+
return `${this.baseNavigationUrl}${basePath}${identifier}`;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Produces a template for a link to a single web capture of the given URL and date
|
|
83
|
+
*/
|
|
84
|
+
webArchivesCaptureLink(url, date) {
|
|
85
|
+
// Convert the date into the format used to identify wayback captures (e.g., '20150102124550')
|
|
86
|
+
const captureDateStr = date
|
|
87
|
+
.toISOString()
|
|
88
|
+
.replace(/[TZ:-]/g, '')
|
|
89
|
+
.replace(/\..*/, '');
|
|
90
|
+
const captureHref = `https://web.archive.org/web/${captureDateStr}/${encodeURIComponent(url)}`;
|
|
91
|
+
const captureText = formatDate(date, 'long');
|
|
92
|
+
return html ` <a href=${captureHref}> ${captureText} </a> `;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
95
|
//# sourceMappingURL=tile-display-value-provider.js.map
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analytics categories and events. Used when building actions in
|
|
3
|
-
*/
|
|
4
|
-
export declare enum analyticsCategories {
|
|
5
|
-
default = "collection-browser"
|
|
6
|
-
}
|
|
7
|
-
export declare enum analyticsActions {
|
|
8
|
-
sortBy = "sortBy",
|
|
9
|
-
filterByCreator = "filterByCreator",
|
|
10
|
-
filterByTitle = "filterByTitle",
|
|
11
|
-
displayMode = "displayMode",
|
|
12
|
-
loadDesktopView = "loadDesktopView",
|
|
13
|
-
loadMobileView = "loadMobileView",
|
|
14
|
-
facetSelected = "facetSelected",
|
|
15
|
-
facetDeselected = "facetDeselected",
|
|
16
|
-
facetNegativeSelected = "facetNegativeSelected",
|
|
17
|
-
facetNegativeDeselected = "facetNegativeDeselected",
|
|
18
|
-
mobileFacetsToggled = "mobileFacetsToggled",
|
|
19
|
-
partOfCollectionClicked = "partOfCollectionClicked",
|
|
20
|
-
histogramChanged = "histogramChanged",
|
|
21
|
-
histogramChangedFromModal = "histogramChangedFromModal",
|
|
22
|
-
histogramExpanded = "histogramExpanded",
|
|
23
|
-
resultSelected = "resultSelected",
|
|
24
|
-
moreFacetsPageChange = "moreFacetsPageChange",
|
|
25
|
-
showMoreFacetsModal = "showMoreFacetsModal",
|
|
26
|
-
closeMoreFacetsModal = "closeMoreFacetsModal",
|
|
27
|
-
applyMoreFacetsModal = "applyMoreFacetsModal"
|
|
28
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Analytics categories and events. Used when building actions in
|
|
3
|
+
*/
|
|
4
|
+
export declare enum analyticsCategories {
|
|
5
|
+
default = "collection-browser"
|
|
6
|
+
}
|
|
7
|
+
export declare enum analyticsActions {
|
|
8
|
+
sortBy = "sortBy",
|
|
9
|
+
filterByCreator = "filterByCreator",
|
|
10
|
+
filterByTitle = "filterByTitle",
|
|
11
|
+
displayMode = "displayMode",
|
|
12
|
+
loadDesktopView = "loadDesktopView",
|
|
13
|
+
loadMobileView = "loadMobileView",
|
|
14
|
+
facetSelected = "facetSelected",
|
|
15
|
+
facetDeselected = "facetDeselected",
|
|
16
|
+
facetNegativeSelected = "facetNegativeSelected",
|
|
17
|
+
facetNegativeDeselected = "facetNegativeDeselected",
|
|
18
|
+
mobileFacetsToggled = "mobileFacetsToggled",
|
|
19
|
+
partOfCollectionClicked = "partOfCollectionClicked",
|
|
20
|
+
histogramChanged = "histogramChanged",
|
|
21
|
+
histogramChangedFromModal = "histogramChangedFromModal",
|
|
22
|
+
histogramExpanded = "histogramExpanded",
|
|
23
|
+
resultSelected = "resultSelected",
|
|
24
|
+
moreFacetsPageChange = "moreFacetsPageChange",
|
|
25
|
+
showMoreFacetsModal = "showMoreFacetsModal",
|
|
26
|
+
closeMoreFacetsModal = "closeMoreFacetsModal",
|
|
27
|
+
applyMoreFacetsModal = "applyMoreFacetsModal"
|
|
28
|
+
}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Analytics categories and events. Used when building actions in
|
|
3
|
-
*/
|
|
4
|
-
export var analyticsCategories;
|
|
5
|
-
(function (analyticsCategories) {
|
|
6
|
-
analyticsCategories["default"] = "collection-browser";
|
|
7
|
-
})(analyticsCategories || (analyticsCategories = {}));
|
|
8
|
-
export var analyticsActions;
|
|
9
|
-
(function (analyticsActions) {
|
|
10
|
-
analyticsActions["sortBy"] = "sortBy";
|
|
11
|
-
analyticsActions["filterByCreator"] = "filterByCreator";
|
|
12
|
-
analyticsActions["filterByTitle"] = "filterByTitle";
|
|
13
|
-
analyticsActions["displayMode"] = "displayMode";
|
|
14
|
-
analyticsActions["loadDesktopView"] = "loadDesktopView";
|
|
15
|
-
analyticsActions["loadMobileView"] = "loadMobileView";
|
|
16
|
-
analyticsActions["facetSelected"] = "facetSelected";
|
|
17
|
-
analyticsActions["facetDeselected"] = "facetDeselected";
|
|
18
|
-
analyticsActions["facetNegativeSelected"] = "facetNegativeSelected";
|
|
19
|
-
analyticsActions["facetNegativeDeselected"] = "facetNegativeDeselected";
|
|
20
|
-
analyticsActions["mobileFacetsToggled"] = "mobileFacetsToggled";
|
|
21
|
-
analyticsActions["partOfCollectionClicked"] = "partOfCollectionClicked";
|
|
22
|
-
analyticsActions["histogramChanged"] = "histogramChanged";
|
|
23
|
-
analyticsActions["histogramChangedFromModal"] = "histogramChangedFromModal";
|
|
24
|
-
analyticsActions["histogramExpanded"] = "histogramExpanded";
|
|
25
|
-
analyticsActions["resultSelected"] = "resultSelected";
|
|
26
|
-
analyticsActions["moreFacetsPageChange"] = "moreFacetsPageChange";
|
|
27
|
-
analyticsActions["showMoreFacetsModal"] = "showMoreFacetsModal";
|
|
28
|
-
analyticsActions["closeMoreFacetsModal"] = "closeMoreFacetsModal";
|
|
29
|
-
analyticsActions["applyMoreFacetsModal"] = "applyMoreFacetsModal";
|
|
30
|
-
})(analyticsActions || (analyticsActions = {}));
|
|
1
|
+
/**
|
|
2
|
+
* Analytics categories and events. Used when building actions in
|
|
3
|
+
*/
|
|
4
|
+
export var analyticsCategories;
|
|
5
|
+
(function (analyticsCategories) {
|
|
6
|
+
analyticsCategories["default"] = "collection-browser";
|
|
7
|
+
})(analyticsCategories || (analyticsCategories = {}));
|
|
8
|
+
export var analyticsActions;
|
|
9
|
+
(function (analyticsActions) {
|
|
10
|
+
analyticsActions["sortBy"] = "sortBy";
|
|
11
|
+
analyticsActions["filterByCreator"] = "filterByCreator";
|
|
12
|
+
analyticsActions["filterByTitle"] = "filterByTitle";
|
|
13
|
+
analyticsActions["displayMode"] = "displayMode";
|
|
14
|
+
analyticsActions["loadDesktopView"] = "loadDesktopView";
|
|
15
|
+
analyticsActions["loadMobileView"] = "loadMobileView";
|
|
16
|
+
analyticsActions["facetSelected"] = "facetSelected";
|
|
17
|
+
analyticsActions["facetDeselected"] = "facetDeselected";
|
|
18
|
+
analyticsActions["facetNegativeSelected"] = "facetNegativeSelected";
|
|
19
|
+
analyticsActions["facetNegativeDeselected"] = "facetNegativeDeselected";
|
|
20
|
+
analyticsActions["mobileFacetsToggled"] = "mobileFacetsToggled";
|
|
21
|
+
analyticsActions["partOfCollectionClicked"] = "partOfCollectionClicked";
|
|
22
|
+
analyticsActions["histogramChanged"] = "histogramChanged";
|
|
23
|
+
analyticsActions["histogramChangedFromModal"] = "histogramChangedFromModal";
|
|
24
|
+
analyticsActions["histogramExpanded"] = "histogramExpanded";
|
|
25
|
+
analyticsActions["resultSelected"] = "resultSelected";
|
|
26
|
+
analyticsActions["moreFacetsPageChange"] = "moreFacetsPageChange";
|
|
27
|
+
analyticsActions["showMoreFacetsModal"] = "showMoreFacetsModal";
|
|
28
|
+
analyticsActions["closeMoreFacetsModal"] = "closeMoreFacetsModal";
|
|
29
|
+
analyticsActions["applyMoreFacetsModal"] = "applyMoreFacetsModal";
|
|
30
|
+
})(analyticsActions || (analyticsActions = {}));
|
|
31
31
|
//# sourceMappingURL=analytics-events.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Determines whether two arrays have the same (shallow) contents in the same order
|
|
3
|
-
*/
|
|
4
|
-
export declare function arrayEquals(arr1: unknown[], arr2: unknown[]): boolean;
|
|
1
|
+
/**
|
|
2
|
+
* Determines whether two arrays have the same (shallow) contents in the same order
|
|
3
|
+
*/
|
|
4
|
+
export declare function arrayEquals(arr1: unknown[], arr2: unknown[]): boolean;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Determines whether two arrays have the same (shallow) contents in the same order
|
|
3
|
-
*/
|
|
4
|
-
export function arrayEquals(arr1, arr2) {
|
|
5
|
-
if (arr1 === arr2)
|
|
6
|
-
return true;
|
|
7
|
-
if (arr1.length !== arr2.length)
|
|
8
|
-
return false;
|
|
9
|
-
return arr1.every((val, i) => val === arr2[i]);
|
|
10
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Determines whether two arrays have the same (shallow) contents in the same order
|
|
3
|
+
*/
|
|
4
|
+
export function arrayEquals(arr1, arr2) {
|
|
5
|
+
if (arr1 === arr2)
|
|
6
|
+
return true;
|
|
7
|
+
if (arr1.length !== arr2.length)
|
|
8
|
+
return false;
|
|
9
|
+
return arr1.every((val, i) => val === arr2[i]);
|
|
10
|
+
}
|
|
11
11
|
//# sourceMappingURL=array-equals.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns the input string, but removing one set of quotes from all instances of
|
|
3
|
-
* ""clauses wrapped in two sets of quotes"". This assumes the quotes are already
|
|
4
|
-
* URL-encoded.
|
|
5
|
-
*
|
|
6
|
-
* This should be a temporary measure to address the fact that the __href__ field
|
|
7
|
-
* sometimes acquires extra quotation marks during query rewriting. Once there is a
|
|
8
|
-
* full Lucene parser in place that handles quoted queries correctly, this can likely
|
|
9
|
-
* be removed.
|
|
10
|
-
*/
|
|
11
|
-
export declare function collapseRepeatedQuotes(str?: string): string | undefined;
|
|
1
|
+
/**
|
|
2
|
+
* Returns the input string, but removing one set of quotes from all instances of
|
|
3
|
+
* ""clauses wrapped in two sets of quotes"". This assumes the quotes are already
|
|
4
|
+
* URL-encoded.
|
|
5
|
+
*
|
|
6
|
+
* This should be a temporary measure to address the fact that the __href__ field
|
|
7
|
+
* sometimes acquires extra quotation marks during query rewriting. Once there is a
|
|
8
|
+
* full Lucene parser in place that handles quoted queries correctly, this can likely
|
|
9
|
+
* be removed.
|
|
10
|
+
*/
|
|
11
|
+
export declare function collapseRepeatedQuotes(str?: string): string | undefined;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns the input string, but removing one set of quotes from all instances of
|
|
3
|
-
* ""clauses wrapped in two sets of quotes"". This assumes the quotes are already
|
|
4
|
-
* URL-encoded.
|
|
5
|
-
*
|
|
6
|
-
* This should be a temporary measure to address the fact that the __href__ field
|
|
7
|
-
* sometimes acquires extra quotation marks during query rewriting. Once there is a
|
|
8
|
-
* full Lucene parser in place that handles quoted queries correctly, this can likely
|
|
9
|
-
* be removed.
|
|
10
|
-
*/
|
|
11
|
-
export function collapseRepeatedQuotes(str) {
|
|
12
|
-
return str === null || str === void 0 ? void 0 : str.replace(/%22%22(?!%22%22)(.+?)%22%22/g, '%22$1%22');
|
|
13
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Returns the input string, but removing one set of quotes from all instances of
|
|
3
|
+
* ""clauses wrapped in two sets of quotes"". This assumes the quotes are already
|
|
4
|
+
* URL-encoded.
|
|
5
|
+
*
|
|
6
|
+
* This should be a temporary measure to address the fact that the __href__ field
|
|
7
|
+
* sometimes acquires extra quotation marks during query rewriting. Once there is a
|
|
8
|
+
* full Lucene parser in place that handles quoted queries correctly, this can likely
|
|
9
|
+
* be removed.
|
|
10
|
+
*/
|
|
11
|
+
export function collapseRepeatedQuotes(str) {
|
|
12
|
+
return str === null || str === void 0 ? void 0 : str.replace(/%22%22(?!%22%22)(.+?)%22%22/g, '%22$1%22');
|
|
13
|
+
}
|
|
14
14
|
//# sourceMappingURL=collapse-repeated-quotes.js.map
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import { AggregationSortType } from '@internetarchive/search-service';
|
|
2
|
-
import { FacetOption, type FacetBucket, type SelectedFacets } from '../models';
|
|
3
|
-
/**
|
|
4
|
-
* Calls the given function for each FacetBucket specified in the given SelectedFacets
|
|
5
|
-
* object. The function is always called with the facet type, bucket key, bucket object,
|
|
6
|
-
* and the given SelectedFacets object.
|
|
7
|
-
*
|
|
8
|
-
* @param selectedFacets The SelectedFacets object whose buckets should be iterated over
|
|
9
|
-
* @param fn The function to apply to each facet bucket.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* forEachFacetBucket(
|
|
13
|
-
* myFacets,
|
|
14
|
-
* (facetType, bucketKey, bucket) => {
|
|
15
|
-
* if (facetType === 'collection' && bucket.state === 'hidden') {
|
|
16
|
-
* console.log(`Excluding any results in the ${bucketKey} collection`);
|
|
17
|
-
* }
|
|
18
|
-
* }
|
|
19
|
-
* );
|
|
20
|
-
*/
|
|
21
|
-
export declare function forEachFacetBucket(selectedFacets: SelectedFacets | undefined, fn: (facetType: FacetOption, bucketKey: string, bucket: FacetBucket, selectedFacets: SelectedFacets) => unknown): void;
|
|
22
|
-
/**
|
|
23
|
-
* Returns a new SelectedFacets object having only the specified bucket changed to
|
|
24
|
-
* reflect its new provided value. The bucket key is determined from the provided
|
|
25
|
-
* `bucket` itself.
|
|
26
|
-
* @param selectedFacets The SelectedFacets object to produce an updated clone of
|
|
27
|
-
* @param facetType The type of facet to be modified (e.g., 'mediatype', 'subject', ...)
|
|
28
|
-
* @param bucket The new bucket that should be present on the result
|
|
29
|
-
* @param omitNoneState If set to true, the returned object will omit the given
|
|
30
|
-
* bucket entirely if it is updated to state `'none'`. Default is false, which leaves
|
|
31
|
-
* the `'none'` state in place.
|
|
32
|
-
*/
|
|
33
|
-
export declare function updateSelectedFacetBucket(selectedFacets: SelectedFacets | undefined, facetType: FacetOption, bucket: FacetBucket, omitNoneState?: boolean): SelectedFacets;
|
|
34
|
-
/**
|
|
35
|
-
* Creates a clone of the given SelectedFacets object.
|
|
36
|
-
*
|
|
37
|
-
* Note that the underlying FacetBucket objects are not deep-cloned -- they will
|
|
38
|
-
* be references to the same objects as in the input. However, the objects
|
|
39
|
-
* containing the FacetBuckets for each FacetOption are created anew.
|
|
40
|
-
*
|
|
41
|
-
* If the provided argument is undefined, returns an empty SelectedFacets object.
|
|
42
|
-
*
|
|
43
|
-
* @param selectedFacets The SelectedFacets object to be cloned
|
|
44
|
-
*/
|
|
45
|
-
export declare function cloneSelectedFacets(selectedFacets: SelectedFacets | undefined): SelectedFacets;
|
|
46
|
-
/**
|
|
47
|
-
* Creates a new SelectedFacets object representing a merge of the `source` facets object
|
|
48
|
-
* into the `destination` facets object. Any facets existing in `source` take precedence
|
|
49
|
-
* over those in `destination` in the event of conflicts.
|
|
50
|
-
*
|
|
51
|
-
* The resulting SelectedFacets object is normalized to omit any facet buckets whose
|
|
52
|
-
* state is `'none'` in the merged result. Consequently, any facets buckets with state
|
|
53
|
-
* `'none'` in `source` will always be absent from the end result. Likewise, any facet
|
|
54
|
-
* buckets with state `'none'` in `destination` will be absent _unless_ they are also
|
|
55
|
-
* present in `source` with a state of `'selected'` or `'hidden'` (in which case `source`
|
|
56
|
-
* takes precedence as usual).
|
|
57
|
-
*
|
|
58
|
-
* @param source The source of the new facets to merge in. Any facet buckets existing in
|
|
59
|
-
* this `source` object will take precedence over those in `destination` having the same
|
|
60
|
-
* key, if they exist in both. Any facet buckets that are _not_ present in `source` will
|
|
61
|
-
* remain unmodified from their state in `destination`, if they are present there at all.
|
|
62
|
-
* @param destination The destination onto which facets should be merged. Note that this
|
|
63
|
-
* object is _not_ re-used for the return value, but it is conceptually the "existing base"
|
|
64
|
-
* onto which the source facets are merged.
|
|
65
|
-
*/
|
|
66
|
-
export declare function mergeSelectedFacets(destination: SelectedFacets | undefined, source: SelectedFacets | undefined): SelectedFacets;
|
|
67
|
-
/**
|
|
68
|
-
* Sorts the provided FacetBuckets so that:
|
|
69
|
-
* - Any selected items come first
|
|
70
|
-
* - Any hidden items come after all the selected items
|
|
71
|
-
* - Any unselected / unhidden items come last
|
|
72
|
-
*
|
|
73
|
-
* Within each of the above groups, the buckets will be sorted according to
|
|
74
|
-
* the provided sort type, or by their bucket count by default.
|
|
75
|
-
*
|
|
76
|
-
* The sort is performed in-place using `Array.sort`, so the return value is
|
|
77
|
-
* a reference to the same array that was passed in, only sorted.
|
|
78
|
-
*
|
|
79
|
-
* @param buckets The array of facet buckets to sort
|
|
80
|
-
* @param sort (Optional) How buckets within each state group should be sorted.
|
|
81
|
-
* Defaults to `AggregationSortType.COUNT` (i.e., descending by bucket count).
|
|
82
|
-
*/
|
|
83
|
-
export declare function sortBucketsBySelectionState(buckets: FacetBucket[], sort?: AggregationSortType): FacetBucket[];
|
|
1
|
+
import { AggregationSortType } from '@internetarchive/search-service';
|
|
2
|
+
import { FacetOption, type FacetBucket, type SelectedFacets } from '../models';
|
|
3
|
+
/**
|
|
4
|
+
* Calls the given function for each FacetBucket specified in the given SelectedFacets
|
|
5
|
+
* object. The function is always called with the facet type, bucket key, bucket object,
|
|
6
|
+
* and the given SelectedFacets object.
|
|
7
|
+
*
|
|
8
|
+
* @param selectedFacets The SelectedFacets object whose buckets should be iterated over
|
|
9
|
+
* @param fn The function to apply to each facet bucket.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* forEachFacetBucket(
|
|
13
|
+
* myFacets,
|
|
14
|
+
* (facetType, bucketKey, bucket) => {
|
|
15
|
+
* if (facetType === 'collection' && bucket.state === 'hidden') {
|
|
16
|
+
* console.log(`Excluding any results in the ${bucketKey} collection`);
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* );
|
|
20
|
+
*/
|
|
21
|
+
export declare function forEachFacetBucket(selectedFacets: SelectedFacets | undefined, fn: (facetType: FacetOption, bucketKey: string, bucket: FacetBucket, selectedFacets: SelectedFacets) => unknown): void;
|
|
22
|
+
/**
|
|
23
|
+
* Returns a new SelectedFacets object having only the specified bucket changed to
|
|
24
|
+
* reflect its new provided value. The bucket key is determined from the provided
|
|
25
|
+
* `bucket` itself.
|
|
26
|
+
* @param selectedFacets The SelectedFacets object to produce an updated clone of
|
|
27
|
+
* @param facetType The type of facet to be modified (e.g., 'mediatype', 'subject', ...)
|
|
28
|
+
* @param bucket The new bucket that should be present on the result
|
|
29
|
+
* @param omitNoneState If set to true, the returned object will omit the given
|
|
30
|
+
* bucket entirely if it is updated to state `'none'`. Default is false, which leaves
|
|
31
|
+
* the `'none'` state in place.
|
|
32
|
+
*/
|
|
33
|
+
export declare function updateSelectedFacetBucket(selectedFacets: SelectedFacets | undefined, facetType: FacetOption, bucket: FacetBucket, omitNoneState?: boolean): SelectedFacets;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a clone of the given SelectedFacets object.
|
|
36
|
+
*
|
|
37
|
+
* Note that the underlying FacetBucket objects are not deep-cloned -- they will
|
|
38
|
+
* be references to the same objects as in the input. However, the objects
|
|
39
|
+
* containing the FacetBuckets for each FacetOption are created anew.
|
|
40
|
+
*
|
|
41
|
+
* If the provided argument is undefined, returns an empty SelectedFacets object.
|
|
42
|
+
*
|
|
43
|
+
* @param selectedFacets The SelectedFacets object to be cloned
|
|
44
|
+
*/
|
|
45
|
+
export declare function cloneSelectedFacets(selectedFacets: SelectedFacets | undefined): SelectedFacets;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a new SelectedFacets object representing a merge of the `source` facets object
|
|
48
|
+
* into the `destination` facets object. Any facets existing in `source` take precedence
|
|
49
|
+
* over those in `destination` in the event of conflicts.
|
|
50
|
+
*
|
|
51
|
+
* The resulting SelectedFacets object is normalized to omit any facet buckets whose
|
|
52
|
+
* state is `'none'` in the merged result. Consequently, any facets buckets with state
|
|
53
|
+
* `'none'` in `source` will always be absent from the end result. Likewise, any facet
|
|
54
|
+
* buckets with state `'none'` in `destination` will be absent _unless_ they are also
|
|
55
|
+
* present in `source` with a state of `'selected'` or `'hidden'` (in which case `source`
|
|
56
|
+
* takes precedence as usual).
|
|
57
|
+
*
|
|
58
|
+
* @param source The source of the new facets to merge in. Any facet buckets existing in
|
|
59
|
+
* this `source` object will take precedence over those in `destination` having the same
|
|
60
|
+
* key, if they exist in both. Any facet buckets that are _not_ present in `source` will
|
|
61
|
+
* remain unmodified from their state in `destination`, if they are present there at all.
|
|
62
|
+
* @param destination The destination onto which facets should be merged. Note that this
|
|
63
|
+
* object is _not_ re-used for the return value, but it is conceptually the "existing base"
|
|
64
|
+
* onto which the source facets are merged.
|
|
65
|
+
*/
|
|
66
|
+
export declare function mergeSelectedFacets(destination: SelectedFacets | undefined, source: SelectedFacets | undefined): SelectedFacets;
|
|
67
|
+
/**
|
|
68
|
+
* Sorts the provided FacetBuckets so that:
|
|
69
|
+
* - Any selected items come first
|
|
70
|
+
* - Any hidden items come after all the selected items
|
|
71
|
+
* - Any unselected / unhidden items come last
|
|
72
|
+
*
|
|
73
|
+
* Within each of the above groups, the buckets will be sorted according to
|
|
74
|
+
* the provided sort type, or by their bucket count by default.
|
|
75
|
+
*
|
|
76
|
+
* The sort is performed in-place using `Array.sort`, so the return value is
|
|
77
|
+
* a reference to the same array that was passed in, only sorted.
|
|
78
|
+
*
|
|
79
|
+
* @param buckets The array of facet buckets to sort
|
|
80
|
+
* @param sort (Optional) How buckets within each state group should be sorted.
|
|
81
|
+
* Defaults to `AggregationSortType.COUNT` (i.e., descending by bucket count).
|
|
82
|
+
*/
|
|
83
|
+
export declare function sortBucketsBySelectionState(buckets: FacetBucket[], sort?: AggregationSortType): FacetBucket[];
|