@internetarchive/collection-browser 3.4.1-alpha-webdev7761.4 → 3.4.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.
Files changed (216) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +27 -27
  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/.prettierignore +1 -1
  8. package/LICENSE +661 -661
  9. package/README.md +83 -83
  10. package/dist/src/app-root.js +28 -19
  11. package/dist/src/app-root.js.map +1 -1
  12. package/dist/src/collection-browser.d.ts +4 -24
  13. package/dist/src/collection-browser.js +125 -286
  14. package/dist/src/collection-browser.js.map +1 -1
  15. package/dist/src/collection-facets/facet-row.js +143 -143
  16. package/dist/src/collection-facets/facet-row.js.map +1 -1
  17. package/dist/src/collection-facets/more-facets-content.d.ts +1 -1
  18. package/dist/src/collection-facets/more-facets-content.js +48 -34
  19. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  20. package/dist/src/collection-facets/more-facets-pagination.js +10 -6
  21. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  22. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +21 -16
  23. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -1
  24. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +10 -7
  25. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  26. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +2 -3
  27. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  28. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +11 -9
  29. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  30. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +7 -7
  31. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  32. package/dist/src/collection-facets/toggle-switch.js +6 -4
  33. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  34. package/dist/src/collection-facets.js +310 -309
  35. package/dist/src/collection-facets.js.map +1 -1
  36. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +1 -10
  37. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  38. package/dist/src/data-source/collection-browser-data-source.d.ts +1 -19
  39. package/dist/src/data-source/collection-browser-data-source.js +65 -71
  40. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  41. package/dist/src/data-source/collection-browser-query-state.d.ts +2 -1
  42. package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
  43. package/dist/src/data-source/models.d.ts +0 -11
  44. package/dist/src/data-source/models.js.map +1 -1
  45. package/dist/src/empty-placeholder.js +18 -19
  46. package/dist/src/empty-placeholder.js.map +1 -1
  47. package/dist/src/expanded-date-picker.js +10 -6
  48. package/dist/src/expanded-date-picker.js.map +1 -1
  49. package/dist/src/language-code-handler/language-code-handler.js +2 -2
  50. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  51. package/dist/src/manage/manage-bar.js +15 -9
  52. package/dist/src/manage/manage-bar.js.map +1 -1
  53. package/dist/src/manage/remove-items-modal-content.js +2 -2
  54. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  55. package/dist/src/models.d.ts +6 -2
  56. package/dist/src/models.js +54 -46
  57. package/dist/src/models.js.map +1 -1
  58. package/dist/src/restoration-state-handler.d.ts +2 -1
  59. package/dist/src/restoration-state-handler.js +19 -12
  60. package/dist/src/restoration-state-handler.js.map +1 -1
  61. package/dist/src/sort-filter-bar/alpha-bar.js +14 -9
  62. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  63. package/dist/src/sort-filter-bar/sort-filter-bar.js +24 -14
  64. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  65. package/dist/src/tiles/base-tile-component.js +2 -1
  66. package/dist/src/tiles/base-tile-component.js.map +1 -1
  67. package/dist/src/tiles/grid/account-tile.js +7 -5
  68. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  69. package/dist/src/tiles/grid/collection-tile.js +6 -3
  70. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  71. package/dist/src/tiles/grid/item-tile.js +33 -23
  72. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  73. package/dist/src/tiles/grid/search-tile.js +2 -1
  74. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  75. package/dist/src/tiles/grid/tile-stats.js +3 -2
  76. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  77. package/dist/src/tiles/hover/hover-pane-controller.js +28 -21
  78. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  79. package/dist/src/tiles/hover/tile-hover-pane.js +4 -3
  80. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  81. package/dist/src/tiles/image-block.js +8 -5
  82. package/dist/src/tiles/image-block.js.map +1 -1
  83. package/dist/src/tiles/item-image.js +19 -12
  84. package/dist/src/tiles/item-image.js.map +1 -1
  85. package/dist/src/tiles/list/tile-list-compact.js +25 -17
  86. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  87. package/dist/src/tiles/list/tile-list.js +55 -34
  88. package/dist/src/tiles/list/tile-list.js.map +1 -1
  89. package/dist/src/tiles/overlay/icon-overlay.js +2 -1
  90. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  91. package/dist/src/tiles/overlay/text-overlay.js +4 -2
  92. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  93. package/dist/src/tiles/text-snippet-block.js +4 -2
  94. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  95. package/dist/src/tiles/tile-dispatcher.js +30 -22
  96. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  97. package/dist/src/tiles/tile-display-value-provider.js +9 -5
  98. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  99. package/dist/src/tiles/tile-mediatype-icon.js +19 -12
  100. package/dist/src/tiles/tile-mediatype-icon.js.map +1 -1
  101. package/dist/src/utils/collapse-repeated-quotes.js +1 -1
  102. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -1
  103. package/dist/src/utils/facet-utils.js +5 -3
  104. package/dist/src/utils/facet-utils.js.map +1 -1
  105. package/dist/src/utils/format-count.js +10 -10
  106. package/dist/src/utils/format-count.js.map +1 -1
  107. package/dist/src/utils/resolve-mediatype.js +3 -2
  108. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  109. package/dist/test/collection-browser.test.js +380 -336
  110. package/dist/test/collection-browser.test.js.map +1 -1
  111. package/dist/test/collection-facets/facet-row.test.js +52 -37
  112. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  113. package/dist/test/collection-facets/facets-template.test.js +23 -17
  114. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  115. package/dist/test/collection-facets/more-facets-content.test.js +32 -22
  116. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  117. package/dist/test/collection-facets/more-facets-pagination.test.js +22 -16
  118. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  119. package/dist/test/collection-facets/toggle-switch.test.js +19 -22
  120. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  121. package/dist/test/collection-facets.test.js +77 -60
  122. package/dist/test/collection-facets.test.js.map +1 -1
  123. package/dist/test/empty-placeholder.test.js +17 -11
  124. package/dist/test/empty-placeholder.test.js.map +1 -1
  125. package/dist/test/expanded-date-picker.test.js +14 -8
  126. package/dist/test/expanded-date-picker.test.js.map +1 -1
  127. package/dist/test/icon-overlay.test.js +6 -7
  128. package/dist/test/icon-overlay.test.js.map +1 -1
  129. package/dist/test/image-block.test.js +26 -16
  130. package/dist/test/image-block.test.js.map +1 -1
  131. package/dist/test/item-image.test.js +32 -23
  132. package/dist/test/item-image.test.js.map +1 -1
  133. package/dist/test/manage/manage-bar.test.js +33 -21
  134. package/dist/test/manage/manage-bar.test.js.map +1 -1
  135. package/dist/test/manage/remove-items-modal-content.test.js +15 -10
  136. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
  137. package/dist/test/mocks/mock-search-service.js +3 -2
  138. package/dist/test/mocks/mock-search-service.js.map +1 -1
  139. package/dist/test/restoration-state-handler.test.js +54 -14
  140. package/dist/test/restoration-state-handler.test.js.map +1 -1
  141. package/dist/test/review-block.test.js +18 -16
  142. package/dist/test/review-block.test.js.map +1 -1
  143. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +3 -2
  144. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  145. package/dist/test/sort-filter-bar/alpha-bar.test.js +24 -18
  146. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  147. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +180 -178
  148. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  149. package/dist/test/text-overlay.test.js +15 -16
  150. package/dist/test/text-overlay.test.js.map +1 -1
  151. package/dist/test/text-snippet-block.test.js +19 -14
  152. package/dist/test/text-snippet-block.test.js.map +1 -1
  153. package/dist/test/tile-stats.test.js +34 -73
  154. package/dist/test/tile-stats.test.js.map +1 -1
  155. package/dist/test/tiles/grid/account-tile.test.js +25 -25
  156. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  157. package/dist/test/tiles/grid/collection-tile.test.js +19 -13
  158. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  159. package/dist/test/tiles/grid/item-tile.test.js +91 -64
  160. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  161. package/dist/test/tiles/grid/search-tile.test.js +13 -9
  162. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  163. package/dist/test/tiles/hover/hover-pane-controller.test.js +35 -23
  164. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  165. package/dist/test/tiles/hover/tile-hover-pane.test.js +16 -12
  166. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  167. package/dist/test/tiles/list/tile-list-compact.test.js +48 -34
  168. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  169. package/dist/test/tiles/list/tile-list.test.js +105 -76
  170. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  171. package/dist/test/tiles/tile-dispatcher.test.js +30 -17
  172. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  173. package/dist/test/tiles/tile-mediatype-icon.test.js +24 -12
  174. package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -1
  175. package/eslint.config.mjs +53 -53
  176. package/index.html +24 -24
  177. package/local.archive.org.cert +86 -86
  178. package/local.archive.org.key +27 -27
  179. package/package.json +118 -120
  180. package/renovate.json +6 -6
  181. package/src/collection-browser.ts +15 -246
  182. package/src/collection-facets/facet-row.ts +296 -299
  183. package/src/collection-facets/more-facets-content.ts +8 -5
  184. package/src/collection-facets.ts +995 -1010
  185. package/src/data-source/collection-browser-data-source-interface.ts +333 -345
  186. package/src/data-source/collection-browser-data-source.ts +1401 -1441
  187. package/src/data-source/collection-browser-query-state.ts +65 -59
  188. package/src/data-source/models.ts +43 -56
  189. package/src/models.ts +870 -866
  190. package/src/restoration-state-handler.ts +544 -546
  191. package/test/collection-browser.test.ts +2403 -2413
  192. package/test/restoration-state-handler.test.ts +510 -480
  193. package/tsconfig.json +20 -25
  194. package/vite.config.ts +22 -29
  195. package/web-dev-server.config.mjs +30 -30
  196. package/web-test-runner.config.mjs +41 -41
  197. package/dist/src/combo-box/caret-closed.d.ts +0 -2
  198. package/dist/src/combo-box/caret-closed.js +0 -7
  199. package/dist/src/combo-box/caret-closed.js.map +0 -1
  200. package/dist/src/combo-box/caret-open.d.ts +0 -2
  201. package/dist/src/combo-box/caret-open.js +0 -7
  202. package/dist/src/combo-box/caret-open.js.map +0 -1
  203. package/dist/src/combo-box/clear.d.ts +0 -2
  204. package/dist/src/combo-box/clear.js +0 -11
  205. package/dist/src/combo-box/clear.js.map +0 -1
  206. package/dist/src/combo-box/ia-combo-box.d.ts +0 -422
  207. package/dist/src/combo-box/ia-combo-box.js +0 -1203
  208. package/dist/src/combo-box/ia-combo-box.js.map +0 -1
  209. package/dist/src/combo-box/models.d.ts +0 -75
  210. package/dist/src/combo-box/models.js +0 -40
  211. package/dist/src/combo-box/models.js.map +0 -1
  212. package/src/combo-box/caret-closed.ts +0 -7
  213. package/src/combo-box/caret-open.ts +0 -7
  214. package/src/combo-box/clear.ts +0 -11
  215. package/src/combo-box/ia-combo-box.ts +0 -1288
  216. package/src/combo-box/models.ts +0 -113
@@ -1 +1 @@
1
- {"version":3,"file":"expanded-date-picker.js","sourceRoot":"","sources":["../../src/expanded-date-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n CSSResultGroup,\n TemplateResult,\n nothing,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { msg } from '@lit/localize';\nimport type { ModalManagerInterface } from '@internetarchive/modal-manager';\nimport type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';\nimport {\n BarScalingOption,\n BinSnappingInterval,\n} from '@internetarchive/histogram-date-range';\nimport {\n analyticsActions,\n analyticsCategories,\n} from './utils/analytics-events';\n\nimport '@internetarchive/histogram-date-range';\n\n@customElement('expanded-date-picker')\nexport class ExpandedDatePicker extends LitElement {\n @property({ type: String }) minDate?: string;\n\n @property({ type: String }) maxDate?: string;\n\n @property({ type: String }) minSelectedDate?: string;\n\n @property({ type: String }) maxSelectedDate?: string;\n\n @property({ type: Array }) buckets?: number[];\n\n @property({ type: String }) customDateFormat?: string;\n\n @property({ type: String }) customTooltipDateFormat?: string;\n\n @property({ type: String }) customTooltipLabel?: string;\n\n @property({ type: String }) binSnapping: BinSnappingInterval = 'none';\n\n @property({ type: String }) barScaling: BarScalingOption = 'logarithmic';\n\n @property({ type: Object, attribute: false })\n modalManager?: ModalManagerInterface;\n\n @property({ type: Object, attribute: false })\n analyticsHandler?: AnalyticsManagerInterface;\n\n render(): TemplateResult {\n return html`\n <div id=\"container\">\n <histogram-date-range\n id=\"date-picker\"\n .minDate=${this.minDate}\n .maxDate=${this.maxDate}\n .minSelectedDate=${this.minSelectedDate ?? this.minDate}\n .maxSelectedDate=${this.maxSelectedDate ?? this.maxDate}\n dateFormat=${ifDefined(this.customDateFormat)}\n tooltipDateFormat=${ifDefined(this.customTooltipDateFormat)}\n tooltipLabel=${ifDefined(this.customTooltipLabel)}\n .binSnapping=${this.binSnapping}\n .barScaling=${this.barScaling ?? nothing}\n .updateDelay=${0}\n updateWhileFocused\n missingDataMessage=\"...\"\n .width=${560}\n .height=${120}\n .bins=${this.buckets}\n @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}\n >\n <button\n id=\"apply-btn\"\n slot=\"inputs-right-side\"\n @click=${this.applyBtnClicked}\n >\n ${msg('Apply date range')}\n </button>\n </histogram-date-range>\n </div>\n `;\n }\n\n connectedCallback(): void {\n super.connectedCallback?.();\n this.setupEscapeListener();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this.removeEscapeListener();\n }\n\n /**\n * Add an event listener to close the date picker modal when the Esc key is pressed\n */\n private setupEscapeListener() {\n document.addEventListener('keydown', this.boundEscapeListener);\n }\n\n /**\n * Remove the Esc key listener that was previously added\n */\n private removeEscapeListener() {\n document.removeEventListener('keydown', this.boundEscapeListener);\n }\n\n /**\n * Closes the modal dialog if the given event is pressing the Esc key.\n * Arrow function to ensure `this` remains bound to the current component.\n */\n private boundEscapeListener = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this.closeModal();\n }\n };\n\n /**\n * When the histogram is updated, keep track of the newly selected date range.\n * We don't commit to the new range until the apply button is clicked.\n */\n private histogramDateRangeUpdated(\n e: CustomEvent<{\n minDate: string;\n maxDate: string;\n }>,\n ): void {\n this.minSelectedDate = e.detail.minDate;\n this.maxSelectedDate = e.detail.maxDate;\n }\n\n /**\n * When the Apply button is clicked, emit the current date range and close the modal.\n */\n private applyBtnClicked(): void {\n const event = new CustomEvent('histogramDateRangeApplied', {\n detail: {\n minDate: this.minSelectedDate,\n maxDate: this.maxSelectedDate,\n },\n });\n this.dispatchEvent(event);\n this.closeModal();\n\n this.analyticsHandler?.sendEvent({\n category: analyticsCategories.default,\n action: analyticsActions.histogramChangedFromModal,\n label: window.location.href,\n });\n }\n\n /**\n * Closes the modal associated with this component (if it exists) and dispatches a\n * modalClosed event.\n */\n private closeModal(): void {\n if (this.modalManager) {\n this.modalManager.closeModal();\n this.dispatchEvent(new CustomEvent('modalClosed'));\n }\n }\n\n static get styles(): CSSResultGroup {\n return css`\n #container {\n display: flex;\n justify-content: center;\n padding: 40px 10px 10px;\n overflow: hidden;\n }\n\n #date-picker {\n --histogramDateRangeInputWidth: 50px;\n --histogramDateRangeInputRowMargin: 5px 0 0 0;\n }\n\n #apply-btn {\n margin: 0 0 0 5px;\n padding: 8px 10px;\n border: 0;\n border-radius: 4px;\n background: var(--primaryButtonBGColor, #194880);\n color: white;\n cursor: pointer;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"expanded-date-picker.js","sourceRoot":"","sources":["../../src/expanded-date-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n css,\n html,\n LitElement,\n CSSResultGroup,\n TemplateResult,\n nothing,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { msg } from '@lit/localize';\nimport type { ModalManagerInterface } from '@internetarchive/modal-manager';\nimport type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';\nimport {\n BarScalingOption,\n BinSnappingInterval,\n} from '@internetarchive/histogram-date-range';\nimport {\n analyticsActions,\n analyticsCategories,\n} from './utils/analytics-events';\n\nimport '@internetarchive/histogram-date-range';\n\n@customElement('expanded-date-picker')\nexport class ExpandedDatePicker extends LitElement {\n @property({ type: String }) minDate?: string;\n\n @property({ type: String }) maxDate?: string;\n\n @property({ type: String }) minSelectedDate?: string;\n\n @property({ type: String }) maxSelectedDate?: string;\n\n @property({ type: Array }) buckets?: number[];\n\n @property({ type: String }) customDateFormat?: string;\n\n @property({ type: String }) customTooltipDateFormat?: string;\n\n @property({ type: String }) customTooltipLabel?: string;\n\n @property({ type: String }) binSnapping: BinSnappingInterval = 'none';\n\n @property({ type: String }) barScaling: BarScalingOption = 'logarithmic';\n\n @property({ type: Object, attribute: false })\n modalManager?: ModalManagerInterface;\n\n @property({ type: Object, attribute: false })\n analyticsHandler?: AnalyticsManagerInterface;\n\n render(): TemplateResult {\n return html`\n <div id=\"container\">\n <histogram-date-range\n id=\"date-picker\"\n .minDate=${this.minDate}\n .maxDate=${this.maxDate}\n .minSelectedDate=${this.minSelectedDate ?? this.minDate}\n .maxSelectedDate=${this.maxSelectedDate ?? this.maxDate}\n dateFormat=${ifDefined(this.customDateFormat)}\n tooltipDateFormat=${ifDefined(this.customTooltipDateFormat)}\n tooltipLabel=${ifDefined(this.customTooltipLabel)}\n .binSnapping=${this.binSnapping}\n .barScaling=${this.barScaling ?? nothing}\n .updateDelay=${0}\n updateWhileFocused\n missingDataMessage=\"...\"\n .width=${560}\n .height=${120}\n .bins=${this.buckets}\n @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}\n >\n <button\n id=\"apply-btn\"\n slot=\"inputs-right-side\"\n @click=${this.applyBtnClicked}\n >\n ${msg('Apply date range')}\n </button>\n </histogram-date-range>\n </div>\n `;\n }\n\n connectedCallback(): void {\n super.connectedCallback?.();\n this.setupEscapeListener();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this.removeEscapeListener();\n }\n\n /**\n * Add an event listener to close the date picker modal when the Esc key is pressed\n */\n private setupEscapeListener() {\n document.addEventListener('keydown', this.boundEscapeListener);\n }\n\n /**\n * Remove the Esc key listener that was previously added\n */\n private removeEscapeListener() {\n document.removeEventListener('keydown', this.boundEscapeListener);\n }\n\n /**\n * Closes the modal dialog if the given event is pressing the Esc key.\n * Arrow function to ensure `this` remains bound to the current component.\n */\n private boundEscapeListener = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this.closeModal();\n }\n };\n\n /**\n * When the histogram is updated, keep track of the newly selected date range.\n * We don't commit to the new range until the apply button is clicked.\n */\n private histogramDateRangeUpdated(\n e: CustomEvent<{\n minDate: string;\n maxDate: string;\n }>,\n ): void {\n this.minSelectedDate = e.detail.minDate;\n this.maxSelectedDate = e.detail.maxDate;\n }\n\n /**\n * When the Apply button is clicked, emit the current date range and close the modal.\n */\n private applyBtnClicked(): void {\n const event = new CustomEvent('histogramDateRangeApplied', {\n detail: {\n minDate: this.minSelectedDate,\n maxDate: this.maxSelectedDate,\n },\n });\n this.dispatchEvent(event);\n this.closeModal();\n\n this.analyticsHandler?.sendEvent({\n category: analyticsCategories.default,\n action: analyticsActions.histogramChangedFromModal,\n label: window.location.href,\n });\n }\n\n /**\n * Closes the modal associated with this component (if it exists) and dispatches a\n * modalClosed event.\n */\n private closeModal(): void {\n if (this.modalManager) {\n this.modalManager.closeModal();\n this.dispatchEvent(new CustomEvent('modalClosed'));\n }\n }\n\n static get styles(): CSSResultGroup {\n return css`\n #container {\n display: flex;\n justify-content: center;\n padding: 40px 10px 10px;\n overflow: hidden;\n }\n\n #date-picker {\n --histogramDateRangeInputWidth: 50px;\n --histogramDateRangeInputRowMargin: 5px 0 0 0;\n }\n\n #apply-btn {\n margin: 0 0 0 5px;\n padding: 8px 10px;\n border: 0;\n border-radius: 4px;\n background: var(--primaryButtonBGColor, #194880);\n color: white;\n cursor: pointer;\n }\n `;\n }\n}\n"]}
@@ -10,12 +10,12 @@ export class LanguageCodeHandler {
10
10
  return '';
11
11
  const languageCode = split[0];
12
12
  const languageName = codeToLanguageMap[languageCode];
13
- return languageName ?? languageCodes;
13
+ return languageName !== null && languageName !== void 0 ? languageName : languageCodes;
14
14
  }
15
15
  /** @inheritdoc */
16
16
  getCodeStringFromLanguageName(languageName) {
17
17
  const languageCodes = Object.keys(codeToLanguageMap).filter(code => codeToLanguageMap[code] === languageName);
18
- const stringifiedCodes = languageCodes?.join(this.delimeter);
18
+ const stringifiedCodes = languageCodes === null || languageCodes === void 0 ? void 0 : languageCodes.join(this.delimeter);
19
19
  return stringifiedCodes;
20
20
  }
21
21
  /** @inheritdoc */
@@ -1 +1 @@
1
- {"version":3,"file":"language-code-handler.js","sourceRoot":"","sources":["../../../src/language-code-handler/language-code-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAqC5D,MAAM,OAAO,mBAAmB;IAAhC;QACU,cAAS,GAAG,GAAG,CAAC;IAyB1B,CAAC;IAvBC,kBAAkB;IAClB,6BAA6B,CAAC,aAAqB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACrD,OAAO,YAAY,IAAI,aAAa,CAAC;IACvC,CAAC;IAED,kBAAkB;IAClB,6BAA6B,CAAC,YAAoB;QAChD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACzD,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,YAAY,CACjD,CAAC;QACF,MAAM,gBAAgB,GAAG,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,0BAA0B,CAAC,aAAqB;QAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import { codeToLanguageMap } from './language-code-mapping';\n\n// To serialize the list of potential language codes, we store\n// the string in the format `en-us|en|en-gb` with `|` being the separator.\n// This allows us to generate a query of `language:(en-us OR en OR en-gb)`\n// when we deserialize the string.\nexport interface LanguageCodeHandlerInterface {\n /**\n * This takes a list of codes in the format `en-us|en|en-gb` and\n * returns the first language code in the list.\n *\n * The codes in the string should always represent the same language name.\n * eg `en-us`, `en-gb`, and `en` should always be \"English\"\n *\n * @param languageCodes\n */\n getLanguageNameFromCodeString(languageCodes: string): string;\n\n /**\n * This creates a serialized string of language codes for the given language.\n *\n * eg. `English` becomes `en-us|en|en-gb|.....`\n *\n * @param languageName\n */\n getCodeStringFromLanguageName(languageName: string): string;\n\n /**\n * Get an array of langauge codes from a serialized string.\n *\n * eg. `en-us|en|en-gb` becomes `['en-us', 'en', 'en-gb']`\n *\n * @param languageCodes\n */\n getCodeArrayFromCodeString(languageCodes: string): string[];\n}\n\nexport class LanguageCodeHandler implements LanguageCodeHandlerInterface {\n private delimeter = '|';\n\n /** @inheritdoc */\n getLanguageNameFromCodeString(languageCodes: string): string {\n const split = this.getCodeArrayFromCodeString(languageCodes);\n if (split.length === 0) return '';\n const languageCode = split[0];\n const languageName = codeToLanguageMap[languageCode];\n return languageName ?? languageCodes;\n }\n\n /** @inheritdoc */\n getCodeStringFromLanguageName(languageName: string): string {\n const languageCodes = Object.keys(codeToLanguageMap).filter(\n code => codeToLanguageMap[code] === languageName,\n );\n const stringifiedCodes = languageCodes?.join(this.delimeter);\n return stringifiedCodes;\n }\n\n /** @inheritdoc */\n getCodeArrayFromCodeString(languageCodes: string): string[] {\n const split = languageCodes.split(this.delimeter);\n return split;\n }\n}\n"]}
1
+ {"version":3,"file":"language-code-handler.js","sourceRoot":"","sources":["../../../src/language-code-handler/language-code-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAqC5D,MAAM,OAAO,mBAAmB;IAAhC;QACU,cAAS,GAAG,GAAG,CAAC;IAyB1B,CAAC;IAvBC,kBAAkB;IAClB,6BAA6B,CAAC,aAAqB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACrD,OAAO,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,aAAa,CAAC;IACvC,CAAC;IAED,kBAAkB;IAClB,6BAA6B,CAAC,YAAoB;QAChD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACzD,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,YAAY,CACjD,CAAC;QACF,MAAM,gBAAgB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,0BAA0B,CAAC,aAAqB;QAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import { codeToLanguageMap } from './language-code-mapping';\n\n// To serialize the list of potential language codes, we store\n// the string in the format `en-us|en|en-gb` with `|` being the separator.\n// This allows us to generate a query of `language:(en-us OR en OR en-gb)`\n// when we deserialize the string.\nexport interface LanguageCodeHandlerInterface {\n /**\n * This takes a list of codes in the format `en-us|en|en-gb` and\n * returns the first language code in the list.\n *\n * The codes in the string should always represent the same language name.\n * eg `en-us`, `en-gb`, and `en` should always be \"English\"\n *\n * @param languageCodes\n */\n getLanguageNameFromCodeString(languageCodes: string): string;\n\n /**\n * This creates a serialized string of language codes for the given language.\n *\n * eg. `English` becomes `en-us|en|en-gb|.....`\n *\n * @param languageName\n */\n getCodeStringFromLanguageName(languageName: string): string;\n\n /**\n * Get an array of langauge codes from a serialized string.\n *\n * eg. `en-us|en|en-gb` becomes `['en-us', 'en', 'en-gb']`\n *\n * @param languageCodes\n */\n getCodeArrayFromCodeString(languageCodes: string): string[];\n}\n\nexport class LanguageCodeHandler implements LanguageCodeHandlerInterface {\n private delimeter = '|';\n\n /** @inheritdoc */\n getLanguageNameFromCodeString(languageCodes: string): string {\n const split = this.getCodeArrayFromCodeString(languageCodes);\n if (split.length === 0) return '';\n const languageCode = split[0];\n const languageName = codeToLanguageMap[languageCode];\n return languageName ?? languageCodes;\n }\n\n /** @inheritdoc */\n getCodeStringFromLanguageName(languageName: string): string {\n const languageCodes = Object.keys(codeToLanguageMap).filter(\n code => codeToLanguageMap[code] === languageName,\n );\n const stringifiedCodes = languageCodes?.join(this.delimeter);\n return stringifiedCodes;\n }\n\n /** @inheritdoc */\n getCodeArrayFromCodeString(languageCodes: string): string[] {\n const split = languageCodes.split(this.delimeter);\n return split;\n }\n}\n"]}
@@ -94,6 +94,7 @@ let ManageBar = class ManageBar extends LitElement {
94
94
  * @param items Which items to list in the modal
95
95
  */
96
96
  showRemoveItemsModal() {
97
+ var _a, _b;
97
98
  const customModalContent = html `
98
99
  <remove-items-modal-content
99
100
  .items=${this.selectedItems}
@@ -110,12 +111,13 @@ let ManageBar = class ManageBar extends LitElement {
110
111
  closeOnBackdropClick: true,
111
112
  title: html `${msg('Are you sure you want to remove these items?')}`,
112
113
  });
113
- this.modalManager?.classList.add('remove-items');
114
- this.modalManager?.showModal({
114
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('remove-items');
115
+ (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
115
116
  config,
116
117
  customModalContent,
117
118
  userClosedModalCallback: () => {
118
- this.modalManager?.classList.remove('remove-items');
119
+ var _a;
120
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('remove-items');
119
121
  },
120
122
  });
121
123
  }
@@ -123,6 +125,7 @@ let ManageBar = class ManageBar extends LitElement {
123
125
  * Shows a modal dialog indicating that item removal is being processed
124
126
  */
125
127
  showRemoveItemsProcessingModal() {
128
+ var _a, _b;
126
129
  const config = new ModalConfig({
127
130
  showProcessingIndicator: true,
128
131
  processingImageMode: 'processing',
@@ -132,11 +135,12 @@ let ManageBar = class ManageBar extends LitElement {
132
135
  closeOnBackdropClick: true,
133
136
  title: html `${msg('Removing selected items...')}`,
134
137
  });
135
- this.modalManager?.classList.add('remove-items');
136
- this.modalManager?.showModal({
138
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('remove-items');
139
+ (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
137
140
  config,
138
141
  userClosedModalCallback: () => {
139
- this.modalManager?.classList.remove('remove-items');
142
+ var _a;
143
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('remove-items');
140
144
  },
141
145
  });
142
146
  }
@@ -144,6 +148,7 @@ let ManageBar = class ManageBar extends LitElement {
144
148
  * Shows a modal dialog indicating that an error occurred while removing items
145
149
  */
146
150
  showRemoveItemsErrorModal() {
151
+ var _a, _b;
147
152
  const config = new ModalConfig({
148
153
  showProcessingIndicator: false,
149
154
  processingImageMode: 'processing',
@@ -154,11 +159,12 @@ let ManageBar = class ManageBar extends LitElement {
154
159
  title: html `${msg('Error: unable to remove items')}`,
155
160
  message: html `${msg('An error occurred while removing items. Please try again in a few minutes.')}`,
156
161
  });
157
- this.modalManager?.classList.add('remove-items');
158
- this.modalManager?.showModal({
162
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('remove-items');
163
+ (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
159
164
  config,
160
165
  userClosedModalCallback: () => {
161
- this.modalManager?.classList.remove('remove-items');
166
+ var _a;
167
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('remove-items');
162
168
  },
163
169
  });
164
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manage-bar.js","sourceRoot":"","sources":["../../../src/manage/manage-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg } from '@lit/localize';\nimport { LitElement, html, css, TemplateResult, CSSResultGroup } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { when } from 'lit/directives/when.js';\nimport {\n ModalConfig,\n type ModalManagerInterface,\n} from '@internetarchive/modal-manager';\nimport type { ManageableItem } from '../models';\nimport iaButtonStyle from '../styles/ia-button';\nimport './remove-items-modal-content';\n\n@customElement('manage-bar')\nexport class ManageBar extends LitElement {\n /**\n * The label displayed in front of the management buttons\n */\n @property({ type: String }) label = msg('Select items to remove');\n\n /**\n * The shared modal manager component for displaying modal dialogs on this page\n */\n @property({ type: Object }) modalManager?: ModalManagerInterface;\n\n /**\n * Array of items that have been selected for management\n */\n @property({ type: Object }) selectedItems: Array<ManageableItem> = [];\n\n /**\n * Message shows as note in the modal when removing items\n */\n @property({ type: String }) manageViewModalMsg?: string;\n\n /**\n * Whether to show the \"Select All\" button (default false)\n */\n @property({ type: Boolean }) showSelectAll = false;\n\n /**\n * Whether to show the \"Unselect All\" button (default false)\n */\n @property({ type: Boolean }) showUnselectAll = false;\n\n /**\n * Whether to show \"Item Manager the items\" button (default false)\n */\n @property({ type: Boolean }) showItemManageButton = false;\n\n /**\n * Whether to active delete button for selectable items\n */\n @property({ type: Boolean }) removeAllowed = false;\n\n render(): TemplateResult {\n return html`\n <div class=\"manage-container\">\n <span class=\"manage-label\">${this.label}</span>\n <div class=\"manage-buttons\">\n <button class=\"ia-button dark\" @click=${this.cancelClicked}>\n ${msg('Cancel')}\n </button>\n <button\n class=\"ia-button danger\"\n ?disabled=${!this.removeAllowed}\n @click=${this.showRemoveItemsModal}\n >\n ${msg('Remove selected items')} (${this.selectedItems.length})...\n </button>\n ${when(\n this.showItemManageButton,\n () =>\n html` <button\n class=\"ia-button warning\"\n ?disabled=${!this.removeAllowed}\n @click=${this.manageItemsClicked}\n >\n ${msg('Item Manager the items')} (${this.selectedItems.length})\n </button>`,\n )}\n <div class=\"selection-buttons\">\n ${when(\n this.showSelectAll,\n () =>\n html` <button\n class=\"ia-button link select-all-btn\"\n @click=${this.selectAllClicked}\n >\n ${msg('Select all')}\n </button>`,\n )}\n ${when(\n this.showUnselectAll,\n () =>\n html` <button\n class=\"ia-button link unselect-all-btn\"\n @click=${this.unselectAllClicked}\n >\n ${msg('Unselect all')}\n </button>`,\n )}\n </div>\n </div>\n </div>\n `;\n }\n\n private cancelClicked(): void {\n this.dispatchEvent(new CustomEvent('cancel'));\n }\n\n private removeItemsClicked(): void {\n this.dispatchEvent(new CustomEvent('removeItems'));\n }\n\n private manageItemsClicked(): void {\n this.dispatchEvent(new CustomEvent('manageItems'));\n }\n\n private selectAllClicked(): void {\n this.dispatchEvent(new CustomEvent('selectAll'));\n }\n\n private unselectAllClicked(): void {\n this.dispatchEvent(new CustomEvent('unselectAll'));\n }\n\n /**\n * Shows a modal dialog confirming the list of items to be removed\n * @param items Which items to list in the modal\n */\n private showRemoveItemsModal(): void {\n const customModalContent = html`\n <remove-items-modal-content\n .items=${this.selectedItems}\n .message=${this.manageViewModalMsg}\n @confirm=${() => this.removeItemsClicked()}\n ></remove-items-modal-content>\n `;\n\n const config = new ModalConfig({\n showProcessingIndicator: false,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#194880',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Are you sure you want to remove these items?')}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n customModalContent,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n /**\n * Shows a modal dialog indicating that item removal is being processed\n */\n showRemoveItemsProcessingModal(): void {\n const config = new ModalConfig({\n showProcessingIndicator: true,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#194880',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Removing selected items...')}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n /**\n * Shows a modal dialog indicating that an error occurred while removing items\n */\n showRemoveItemsErrorModal(): void {\n const config = new ModalConfig({\n showProcessingIndicator: false,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#691916',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Error: unable to remove items')}`,\n message: html`${msg(\n 'An error occurred while removing items. Please try again in a few minutes.',\n )}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n static get styles(): CSSResultGroup {\n return css`\n ${iaButtonStyle}\n .manage-container {\n display: flex;\n align-items: center;\n column-gap: 5px;\n padding: 20px 0 20px;\n flex-wrap: wrap;\n }\n\n .manage-label {\n display: inline-block;\n font-weight: bold;\n font-size: 1.8rem;\n padding-right: 10px;\n }\n\n .manage-buttons {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: 5px;\n }\n\n .selection-buttons {\n display: inherit;\n }\n\n .ia-button,\n button {\n padding: 6px 12px;\n font-size: 1.4rem;\n margin: 3px 0;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"manage-bar.js","sourceRoot":"","sources":["../../../src/manage/manage-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg } from '@lit/localize';\nimport { LitElement, html, css, TemplateResult, CSSResultGroup } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { when } from 'lit/directives/when.js';\nimport {\n ModalConfig,\n type ModalManagerInterface,\n} from '@internetarchive/modal-manager';\nimport type { ManageableItem } from '../models';\nimport iaButtonStyle from '../styles/ia-button';\nimport './remove-items-modal-content';\n\n@customElement('manage-bar')\nexport class ManageBar extends LitElement {\n /**\n * The label displayed in front of the management buttons\n */\n @property({ type: String }) label = msg('Select items to remove');\n\n /**\n * The shared modal manager component for displaying modal dialogs on this page\n */\n @property({ type: Object }) modalManager?: ModalManagerInterface;\n\n /**\n * Array of items that have been selected for management\n */\n @property({ type: Object }) selectedItems: Array<ManageableItem> = [];\n\n /**\n * Message shows as note in the modal when removing items\n */\n @property({ type: String }) manageViewModalMsg?: string;\n\n /**\n * Whether to show the \"Select All\" button (default false)\n */\n @property({ type: Boolean }) showSelectAll = false;\n\n /**\n * Whether to show the \"Unselect All\" button (default false)\n */\n @property({ type: Boolean }) showUnselectAll = false;\n\n /**\n * Whether to show \"Item Manager the items\" button (default false)\n */\n @property({ type: Boolean }) showItemManageButton = false;\n\n /**\n * Whether to active delete button for selectable items\n */\n @property({ type: Boolean }) removeAllowed = false;\n\n render(): TemplateResult {\n return html`\n <div class=\"manage-container\">\n <span class=\"manage-label\">${this.label}</span>\n <div class=\"manage-buttons\">\n <button class=\"ia-button dark\" @click=${this.cancelClicked}>\n ${msg('Cancel')}\n </button>\n <button\n class=\"ia-button danger\"\n ?disabled=${!this.removeAllowed}\n @click=${this.showRemoveItemsModal}\n >\n ${msg('Remove selected items')} (${this.selectedItems.length})...\n </button>\n ${when(\n this.showItemManageButton,\n () =>\n html` <button\n class=\"ia-button warning\"\n ?disabled=${!this.removeAllowed}\n @click=${this.manageItemsClicked}\n >\n ${msg('Item Manager the items')} (${this.selectedItems.length})\n </button>`,\n )}\n <div class=\"selection-buttons\">\n ${when(\n this.showSelectAll,\n () =>\n html` <button\n class=\"ia-button link select-all-btn\"\n @click=${this.selectAllClicked}\n >\n ${msg('Select all')}\n </button>`,\n )}\n ${when(\n this.showUnselectAll,\n () =>\n html` <button\n class=\"ia-button link unselect-all-btn\"\n @click=${this.unselectAllClicked}\n >\n ${msg('Unselect all')}\n </button>`,\n )}\n </div>\n </div>\n </div>\n `;\n }\n\n private cancelClicked(): void {\n this.dispatchEvent(new CustomEvent('cancel'));\n }\n\n private removeItemsClicked(): void {\n this.dispatchEvent(new CustomEvent('removeItems'));\n }\n\n private manageItemsClicked(): void {\n this.dispatchEvent(new CustomEvent('manageItems'));\n }\n\n private selectAllClicked(): void {\n this.dispatchEvent(new CustomEvent('selectAll'));\n }\n\n private unselectAllClicked(): void {\n this.dispatchEvent(new CustomEvent('unselectAll'));\n }\n\n /**\n * Shows a modal dialog confirming the list of items to be removed\n * @param items Which items to list in the modal\n */\n private showRemoveItemsModal(): void {\n const customModalContent = html`\n <remove-items-modal-content\n .items=${this.selectedItems}\n .message=${this.manageViewModalMsg}\n @confirm=${() => this.removeItemsClicked()}\n ></remove-items-modal-content>\n `;\n\n const config = new ModalConfig({\n showProcessingIndicator: false,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#194880',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Are you sure you want to remove these items?')}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n customModalContent,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n /**\n * Shows a modal dialog indicating that item removal is being processed\n */\n showRemoveItemsProcessingModal(): void {\n const config = new ModalConfig({\n showProcessingIndicator: true,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#194880',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Removing selected items...')}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n /**\n * Shows a modal dialog indicating that an error occurred while removing items\n */\n showRemoveItemsErrorModal(): void {\n const config = new ModalConfig({\n showProcessingIndicator: false,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#691916',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Error: unable to remove items')}`,\n message: html`${msg(\n 'An error occurred while removing items. Please try again in a few minutes.',\n )}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n static get styles(): CSSResultGroup {\n return css`\n ${iaButtonStyle}\n .manage-container {\n display: flex;\n align-items: center;\n column-gap: 5px;\n padding: 20px 0 20px;\n flex-wrap: wrap;\n }\n\n .manage-label {\n display: inline-block;\n font-weight: bold;\n font-size: 1.8rem;\n padding-right: 10px;\n }\n\n .manage-buttons {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: 5px;\n }\n\n .selection-buttons {\n display: inherit;\n }\n\n .ia-button,\n button {\n padding: 6px 12px;\n font-size: 1.4rem;\n margin: 3px 0;\n }\n `;\n }\n}\n"]}
@@ -13,8 +13,8 @@ let RemoveItemsModalContent = class RemoveItemsModalContent extends LitElement {
13
13
  <ul>
14
14
  ${map(this.items, ({ title, date }) => html `
15
15
  <li>
16
- <span class="item-title">${title ?? '[untitled]'}</span>
17
- <span class="item-date">${date ?? ''}</span>
16
+ <span class="item-title">${title !== null && title !== void 0 ? title : '[untitled]'}</span>
17
+ <span class="item-date">${date !== null && date !== void 0 ? date : ''}</span>
18
18
  </li>
19
19
  `)}
20
20
  </ul>
@@ -1 +1 @@
1
- {"version":3,"file":"remove-items-modal-content.js","sourceRoot":"","sources":["../../../src/manage/remove-items-modal-content.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAA6B,MAAM,KAAK,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAIrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAAhD;;QACuB,UAAK,GAAqB,EAAE,CAAC;IA6F3D,CAAC;IAzFC,MAAM;QACJ,OAAO,IAAI,CAAA;;UAEL,GAAG,CACH,IAAI,CAAC,KAAK,EACV,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA;;yCAEM,KAAK,IAAI,YAAY;wCACtB,IAAI,IAAI,EAAE;;WAEvC,CACF;;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO;;kDAE3B,IAAI,CAAC,qBAAqB;YAChE,GAAG,CAAC,cAAc,CAAC;;;KAG1B,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAA8B,SAAS,EAAE;YACtD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsDT,CAAC;IACJ,CAAC;CACF,CAAA;AA7F6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAA8B;AAE7B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDAAkB;AAHlC,uBAAuB;IADnC,aAAa,CAAC,4BAA4B,CAAC;GAC/B,uBAAuB,CA8FnC","sourcesContent":["import { LitElement, html, css, nothing, TemplateResult, CSSResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { msg } from '@lit/localize';\nimport { map } from 'lit/directives/map.js';\nimport type { ManageableItem } from '../models';\n\n@customElement('remove-items-modal-content')\nexport class RemoveItemsModalContent extends LitElement {\n @property({ type: Object }) items: ManageableItem[] = [];\n\n @property({ type: String }) message?: string;\n\n render(): TemplateResult {\n return html`\n <ul>\n ${map(\n this.items,\n ({ title, date }) => html`\n <li>\n <span class=\"item-title\">${title ?? '[untitled]'}</span>\n <span class=\"item-date\">${date ?? ''}</span>\n </li>\n `,\n )}\n </ul>\n ${this.message ? html`<p class=\"message\">${this.message}</p>` : nothing}\n <div class=\"button-bar\">\n <button class=\"remove-items-btn\" @click=${this.removeItemsBtnClicked}>\n ${msg('Remove items')}\n </button>\n </div>\n `;\n }\n\n private removeItemsBtnClicked(): void {\n this.dispatchEvent(\n new CustomEvent<{ items: ManageableItem[] }>('confirm', {\n detail: {\n items: this.items,\n },\n }),\n );\n }\n\n static get styles(): CSSResult {\n return css`\n ul {\n margin: 0;\n padding: 0 10px;\n font-size: 1.4rem;\n list-style-type: none;\n max-height: min(400px, 40vh);\n overflow-y: auto;\n }\n\n li {\n display: flex;\n justify-content: space-between;\n padding: 2px 0;\n }\n li:not(:last-of-type) {\n border-bottom: 1px solid rgb(232, 232, 232);\n }\n\n .item-title {\n word-break: break-word;\n }\n\n .item-date {\n white-space: nowrap;\n }\n\n .message {\n font-size: 1.4rem;\n padding: 5px 10px;\n }\n\n .button-bar {\n display: flex;\n justify-content: center;\n margin: 10px 5px;\n }\n\n .remove-items-btn {\n margin-bottom: 10px;\n padding: 10px;\n border: 1px solid var(--primaryErrorCTABorder, #d43f3a);\n border-radius: 4px;\n color: white;\n background: var(--primaryErrorCTAFill, #d9534f);\n appearance: none;\n cursor: pointer;\n }\n .remove-items-btn:hover {\n background: rgba(var(--primaryErrorCTAFillRGB, 229, 28, 38), 0.9);\n }\n .remove-items-btn:active {\n background: rgba(var(--primaryErrorCTAFillRGB, 229, 28, 38), 0.7);\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"remove-items-modal-content.js","sourceRoot":"","sources":["../../../src/manage/remove-items-modal-content.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAA6B,MAAM,KAAK,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAIrC,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAAhD;;QACuB,UAAK,GAAqB,EAAE,CAAC;IA6F3D,CAAC;IAzFC,MAAM;QACJ,OAAO,IAAI,CAAA;;UAEL,GAAG,CACH,IAAI,CAAC,KAAK,EACV,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA;;yCAEM,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY;wCACtB,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE;;WAEvC,CACF;;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO;;kDAE3B,IAAI,CAAC,qBAAqB;YAChE,GAAG,CAAC,cAAc,CAAC;;;KAG1B,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAA8B,SAAS,EAAE;YACtD,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsDT,CAAC;IACJ,CAAC;CACF,CAAA;AA7F6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAA8B;AAE7B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDAAkB;AAHlC,uBAAuB;IADnC,aAAa,CAAC,4BAA4B,CAAC;GAC/B,uBAAuB,CA8FnC","sourcesContent":["import { LitElement, html, css, nothing, TemplateResult, CSSResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { msg } from '@lit/localize';\nimport { map } from 'lit/directives/map.js';\nimport type { ManageableItem } from '../models';\n\n@customElement('remove-items-modal-content')\nexport class RemoveItemsModalContent extends LitElement {\n @property({ type: Object }) items: ManageableItem[] = [];\n\n @property({ type: String }) message?: string;\n\n render(): TemplateResult {\n return html`\n <ul>\n ${map(\n this.items,\n ({ title, date }) => html`\n <li>\n <span class=\"item-title\">${title ?? '[untitled]'}</span>\n <span class=\"item-date\">${date ?? ''}</span>\n </li>\n `,\n )}\n </ul>\n ${this.message ? html`<p class=\"message\">${this.message}</p>` : nothing}\n <div class=\"button-bar\">\n <button class=\"remove-items-btn\" @click=${this.removeItemsBtnClicked}>\n ${msg('Remove items')}\n </button>\n </div>\n `;\n }\n\n private removeItemsBtnClicked(): void {\n this.dispatchEvent(\n new CustomEvent<{ items: ManageableItem[] }>('confirm', {\n detail: {\n items: this.items,\n },\n }),\n );\n }\n\n static get styles(): CSSResult {\n return css`\n ul {\n margin: 0;\n padding: 0 10px;\n font-size: 1.4rem;\n list-style-type: none;\n max-height: min(400px, 40vh);\n overflow-y: auto;\n }\n\n li {\n display: flex;\n justify-content: space-between;\n padding: 2px 0;\n }\n li:not(:last-of-type) {\n border-bottom: 1px solid rgb(232, 232, 232);\n }\n\n .item-title {\n word-break: break-word;\n }\n\n .item-date {\n white-space: nowrap;\n }\n\n .message {\n font-size: 1.4rem;\n padding: 5px 10px;\n }\n\n .button-bar {\n display: flex;\n justify-content: center;\n margin: 10px 5px;\n }\n\n .remove-items-btn {\n margin-bottom: 10px;\n padding: 10px;\n border: 1px solid var(--primaryErrorCTABorder, #d43f3a);\n border-radius: 4px;\n color: white;\n background: var(--primaryErrorCTAFill, #d9534f);\n appearance: none;\n cursor: pointer;\n }\n .remove-items-btn:hover {\n background: rgba(var(--primaryErrorCTAFillRGB, 229, 28, 38), 0.9);\n }\n .remove-items-btn:active {\n background: rgba(var(--primaryErrorCTAFillRGB, 229, 28, 38), 0.7);\n }\n `;\n }\n}\n"]}
@@ -199,7 +199,7 @@ export type FacetLoadStrategy = 'eager' | 'lazy-mobile' | 'opt-in-or-login' | 'o
199
199
  /**
200
200
  * Union of the facet types that are available in the sidebar.
201
201
  */
202
- export type FacetOption = 'subject' | 'lending' | 'mediatype' | 'language' | 'creator' | 'collection' | 'year' | 'clip_type' | 'program' | 'person' | 'sponsor';
202
+ export type FacetOption = 'subject' | 'lending' | 'mediatype' | 'language' | 'creator' | 'collection' | 'year' | 'program' | 'person' | 'sponsor';
203
203
  export type SelectedFacetState = 'selected' | 'hidden';
204
204
  export type FacetState = SelectedFacetState | 'none';
205
205
  export interface FacetBucket {
@@ -238,7 +238,11 @@ export declare const getDefaultSelectedFacets: () => Required<SelectedFacets>;
238
238
  /**
239
239
  * For TV search results, what types of TV clips to restrict the results to.
240
240
  */
241
- export type TvClipFilterType = 'commercial' | 'fact check' | 'quote';
241
+ export type TvClipFilterType = 'all' | 'commercials' | 'factchecks' | 'quotes';
242
+ /**
243
+ * Map from TV clip filter types to their corresponding URL params
244
+ */
245
+ export declare const tvClipFiltersToURLParams: Record<TvClipFilterType, string>;
242
246
  /**
243
247
  * Map from allowed TV filtering parameters in the URL to their corresponding filter type
244
248
  */
@@ -17,42 +17,43 @@ export const TILE_OVERLAY_ICONS = {
17
17
  */
18
18
  export class TileModel {
19
19
  constructor(result, hitRequestSource = 'unknown') {
20
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18;
20
21
  const flags = this.getFlags(result);
21
- this.adIds = result.ad_id?.values;
22
- this.averageRating = result.avg_rating?.value;
23
- this.captureDates = result.capture_dates?.values;
22
+ this.adIds = (_a = result.ad_id) === null || _a === void 0 ? void 0 : _a.values;
23
+ this.averageRating = (_b = result.avg_rating) === null || _b === void 0 ? void 0 : _b.value;
24
+ this.captureDates = (_c = result.capture_dates) === null || _c === void 0 ? void 0 : _c.values;
24
25
  this.checked = false;
25
- this.collections = result.collection?.values ?? [];
26
- this.collectionFilesCount = result.collection_files_count?.value ?? 0;
27
- this.collectionSize = result.collection_size?.value ?? 0;
28
- this.commentCount = result.num_reviews?.value ?? 0;
29
- this.creator = result.creator?.value;
30
- this.creators = result.creator?.values ?? [];
31
- this.dateAdded = result.addeddate?.value;
32
- this.dateArchived = result.publicdate?.value;
33
- this.datePublished = result.date?.value;
34
- this.dateReviewed = result.reviewdate?.value;
35
- this.description = result.description?.values.join('\n');
36
- this.factChecks = result.factcheck?.values;
37
- this.favCount = result.num_favorites?.value ?? 0;
26
+ this.collections = (_e = (_d = result.collection) === null || _d === void 0 ? void 0 : _d.values) !== null && _e !== void 0 ? _e : [];
27
+ this.collectionFilesCount = (_g = (_f = result.collection_files_count) === null || _f === void 0 ? void 0 : _f.value) !== null && _g !== void 0 ? _g : 0;
28
+ this.collectionSize = (_j = (_h = result.collection_size) === null || _h === void 0 ? void 0 : _h.value) !== null && _j !== void 0 ? _j : 0;
29
+ this.commentCount = (_l = (_k = result.num_reviews) === null || _k === void 0 ? void 0 : _k.value) !== null && _l !== void 0 ? _l : 0;
30
+ this.creator = (_m = result.creator) === null || _m === void 0 ? void 0 : _m.value;
31
+ this.creators = (_p = (_o = result.creator) === null || _o === void 0 ? void 0 : _o.values) !== null && _p !== void 0 ? _p : [];
32
+ this.dateAdded = (_q = result.addeddate) === null || _q === void 0 ? void 0 : _q.value;
33
+ this.dateArchived = (_r = result.publicdate) === null || _r === void 0 ? void 0 : _r.value;
34
+ this.datePublished = (_s = result.date) === null || _s === void 0 ? void 0 : _s.value;
35
+ this.dateReviewed = (_t = result.reviewdate) === null || _t === void 0 ? void 0 : _t.value;
36
+ this.description = (_u = result.description) === null || _u === void 0 ? void 0 : _u.values.join('\n');
37
+ this.factChecks = (_v = result.factcheck) === null || _v === void 0 ? void 0 : _v.values;
38
+ this.favCount = (_x = (_w = result.num_favorites) === null || _w === void 0 ? void 0 : _w.value) !== null && _x !== void 0 ? _x : 0;
38
39
  this.hitRequestSource = hitRequestSource;
39
- this.hitType = result.rawMetadata?.hit_type;
40
- this.href = collapseRepeatedQuotes(result.review?.__href__ ?? result.__href__?.value);
40
+ this.hitType = (_y = result.rawMetadata) === null || _y === void 0 ? void 0 : _y.hit_type;
41
+ this.href = collapseRepeatedQuotes((_0 = (_z = result.review) === null || _z === void 0 ? void 0 : _z.__href__) !== null && _0 !== void 0 ? _0 : (_1 = result.__href__) === null || _1 === void 0 ? void 0 : _1.value);
41
42
  this.identifier = TileModel.cleanIdentifier(result.identifier);
42
- this.isClip = result.is_clip?.value;
43
- this.issue = result.issue?.value;
44
- this.itemCount = result.item_count?.value ?? 0;
43
+ this.isClip = (_2 = result.is_clip) === null || _2 === void 0 ? void 0 : _2.value;
44
+ this.issue = (_3 = result.issue) === null || _3 === void 0 ? void 0 : _3.value;
45
+ this.itemCount = (_5 = (_4 = result.item_count) === null || _4 === void 0 ? void 0 : _4.value) !== null && _5 !== void 0 ? _5 : 0;
45
46
  this.mediatype = resolveMediatype(result);
46
47
  this.review = result.review;
47
- this.snippets = result.highlight?.values ?? [];
48
- this.source = result.source?.value;
49
- this.subjects = result.subject?.values ?? [];
50
- this.thumbnailUrl = result.__img__?.value;
51
- this.title = result.title?.value ?? '';
52
- this.tvClipCount = result.num_clips?.value ?? 0;
53
- this.volume = result.volume?.value;
54
- this.viewCount = result.downloads?.value;
55
- this.weeklyViewCount = result.week?.value;
48
+ this.snippets = (_7 = (_6 = result.highlight) === null || _6 === void 0 ? void 0 : _6.values) !== null && _7 !== void 0 ? _7 : [];
49
+ this.source = (_8 = result.source) === null || _8 === void 0 ? void 0 : _8.value;
50
+ this.subjects = (_10 = (_9 = result.subject) === null || _9 === void 0 ? void 0 : _9.values) !== null && _10 !== void 0 ? _10 : [];
51
+ this.thumbnailUrl = (_11 = result.__img__) === null || _11 === void 0 ? void 0 : _11.value;
52
+ this.title = (_13 = (_12 = result.title) === null || _12 === void 0 ? void 0 : _12.value) !== null && _13 !== void 0 ? _13 : '';
53
+ this.tvClipCount = (_15 = (_14 = result.num_clips) === null || _14 === void 0 ? void 0 : _14.value) !== null && _15 !== void 0 ? _15 : 0;
54
+ this.volume = (_16 = result.volume) === null || _16 === void 0 ? void 0 : _16.value;
55
+ this.viewCount = (_17 = result.downloads) === null || _17 === void 0 ? void 0 : _17.value;
56
+ this.weeklyViewCount = (_18 = result.week) === null || _18 === void 0 ? void 0 : _18.value;
56
57
  this.loginRequired = flags.loginRequired;
57
58
  this.contentWarning = flags.contentWarning;
58
59
  }
@@ -111,14 +112,15 @@ export class TileModel {
111
112
  * (login required and/or content warning)
112
113
  */
113
114
  getFlags(result) {
115
+ var _a, _b, _c, _d;
114
116
  const flags = {
115
117
  loginRequired: false,
116
118
  contentWarning: false,
117
119
  };
118
120
  // Check if item and item in "modifying" collection, setting above flags
119
- if (result.collection?.values.length &&
120
- result.mediatype?.value !== 'collection') {
121
- for (const collection of result.collection?.values ?? []) {
121
+ if (((_a = result.collection) === null || _a === void 0 ? void 0 : _a.values.length) &&
122
+ ((_b = result.mediatype) === null || _b === void 0 ? void 0 : _b.value) !== 'collection') {
123
+ for (const collection of (_d = (_c = result.collection) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : []) {
122
124
  if (collection === 'loggedin') {
123
125
  flags.loginRequired = true;
124
126
  if (flags.contentWarning)
@@ -134,11 +136,12 @@ export class TileModel {
134
136
  return flags;
135
137
  }
136
138
  static cleanIdentifier(identifier) {
139
+ var _a;
137
140
  // Some identifiers (e.g., from Whisper) represent documents rather than items, and
138
141
  // are suffixed with values that need to be stripped. Those values are separated
139
142
  // from the item identifier itself with '|'.
140
- const barIndex = identifier?.indexOf('|') ?? -1;
141
- const cleaned = barIndex > 0 ? identifier?.slice(0, barIndex) : identifier;
143
+ const barIndex = (_a = identifier === null || identifier === void 0 ? void 0 : identifier.indexOf('|')) !== null && _a !== void 0 ? _a : -1;
144
+ const cleaned = barIndex > 0 ? identifier === null || identifier === void 0 ? void 0 : identifier.slice(0, barIndex) : identifier;
142
145
  return cleaned;
143
146
  }
144
147
  }
@@ -327,7 +330,8 @@ export const SORT_OPTIONS = {
327
330
  * the "unrecognized" SortOption if none matches.
328
331
  */
329
332
  export function sortOptionFromAPIString(sortName) {
330
- return (Object.values(SORT_OPTIONS).find(opt => opt.urlNames.some(name => sortName === name)) ?? SORT_OPTIONS[SortField.unrecognized]);
333
+ var _a;
334
+ return ((_a = Object.values(SORT_OPTIONS).find(opt => opt.urlNames.some(name => sortName === name))) !== null && _a !== void 0 ? _a : SORT_OPTIONS[SortField.unrecognized]);
331
335
  }
332
336
  export const defaultSortAvailability = {
333
337
  [SortField.relevance]: true,
@@ -375,18 +379,26 @@ export const getDefaultSelectedFacets = () => ({
375
379
  creator: {},
376
380
  collection: {},
377
381
  year: {},
378
- clip_type: {},
379
382
  program: {},
380
383
  person: {},
381
384
  sponsor: {},
382
385
  });
386
+ /**
387
+ * Map from TV clip filter types to their corresponding URL params
388
+ */
389
+ export const tvClipFiltersToURLParams = {
390
+ all: '',
391
+ commercials: 'only_commercials',
392
+ factchecks: 'only_factchecks',
393
+ quotes: 'only_quotes',
394
+ };
383
395
  /**
384
396
  * Map from allowed TV filtering parameters in the URL to their corresponding filter type
385
397
  */
386
398
  export const tvClipURLParamsToFilters = {
387
- only_commercials: 'commercial',
388
- only_factchecks: 'fact check',
389
- only_quotes: 'quote',
399
+ only_commercials: 'commercials',
400
+ only_factchecks: 'factchecks',
401
+ only_quotes: 'quotes',
390
402
  };
391
403
  /**
392
404
  * Facet display order when presenting results for all search types *except* TV (see below).
@@ -408,11 +420,10 @@ export const tvFacetDisplayOrder = [
408
420
  'creator',
409
421
  'year',
410
422
  'subject',
411
- // 'collection',
423
+ 'collection',
412
424
  'person',
413
- // 'sponsor',
425
+ 'sponsor',
414
426
  'language',
415
- 'clip_type',
416
427
  ];
417
428
  /**
418
429
  * Human-readable titles for each facet group.
@@ -425,7 +436,6 @@ export const facetTitles = {
425
436
  creator: 'Creator',
426
437
  collection: 'Collection',
427
438
  year: 'Year',
428
- clip_type: 'Clip Type',
429
439
  program: 'Program',
430
440
  person: 'Person',
431
441
  sponsor: 'Sponsor',
@@ -441,7 +451,6 @@ export const defaultFacetSort = {
441
451
  creator: AggregationSortType.COUNT,
442
452
  collection: AggregationSortType.COUNT,
443
453
  year: AggregationSortType.NUMERIC, // Year facets are ordered by their numeric value by default
444
- clip_type: AggregationSortType.COUNT,
445
454
  program: AggregationSortType.COUNT,
446
455
  person: AggregationSortType.COUNT,
447
456
  sponsor: AggregationSortType.COUNT,
@@ -458,7 +467,6 @@ export const valueFacetSort = {
458
467
  creator: AggregationSortType.ALPHABETICAL,
459
468
  collection: AggregationSortType.ALPHABETICAL,
460
469
  year: AggregationSortType.NUMERIC, // Year facets' values should be compared numerically, not lexicographically (year 2001 > year 3)
461
- clip_type: AggregationSortType.ALPHABETICAL,
462
470
  program: AggregationSortType.ALPHABETICAL,
463
471
  person: AggregationSortType.ALPHABETICAL,
464
472
  sponsor: AggregationSortType.ALPHABETICAL,