@internetarchive/collection-browser 2.7.7-alpha.2 → 2.7.7

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 (488) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +3 -3
  3. package/.husky/pre-commit +4 -4
  4. package/LICENSE +661 -661
  5. package/README.md +83 -83
  6. package/dist/index.d.ts +13 -13
  7. package/dist/index.js +13 -11
  8. package/dist/index.js.map +1 -1
  9. package/dist/src/app-root.d.ts +99 -99
  10. package/dist/src/app-root.js +503 -503
  11. package/dist/src/app-root.js.map +1 -1
  12. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  13. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  14. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  16. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  17. package/dist/src/assets/img/icons/chevron.js +2 -2
  18. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  19. package/dist/src/assets/img/icons/contract.js +2 -2
  20. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  21. package/dist/src/assets/img/icons/empty-query.js +2 -2
  22. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  23. package/dist/src/assets/img/icons/expand.js +2 -2
  24. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  26. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  27. package/dist/src/assets/img/icons/eye.js +2 -2
  28. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  29. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  30. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  31. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  32. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  33. package/dist/src/assets/img/icons/filter.js +2 -2
  34. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  35. package/dist/src/assets/img/icons/login-required.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  60. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  61. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  62. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  63. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  64. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  65. package/dist/src/assets/img/icons/null-result.js +2 -2
  66. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  67. package/dist/src/assets/img/icons/restricted.js +2 -2
  68. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  69. package/dist/src/assets/img/icons/reviews.js +2 -2
  70. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  71. package/dist/src/assets/img/icons/upload.js +2 -2
  72. package/dist/src/assets/img/icons/views.d.ts +1 -1
  73. package/dist/src/assets/img/icons/views.js +2 -2
  74. package/dist/src/circular-activity-indicator.d.ts +5 -5
  75. package/dist/src/circular-activity-indicator.js +17 -17
  76. package/dist/src/circular-activity-indicator.js.map +1 -1
  77. package/dist/src/collection-browser.d.ts +582 -582
  78. package/dist/src/collection-browser.js +1627 -1626
  79. package/dist/src/collection-browser.js.map +1 -1
  80. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  81. package/dist/src/collection-facets/facet-row.js +118 -118
  82. package/dist/src/collection-facets/facet-row.js.map +1 -1
  83. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  84. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  85. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
  86. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  87. package/dist/src/collection-facets/facets-template.js +49 -49
  88. package/dist/src/collection-facets/facets-template.js.map +1 -1
  89. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  90. package/dist/src/collection-facets/more-facets-content.js +408 -406
  91. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  92. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  93. package/dist/src/collection-facets/more-facets-pagination.js +196 -197
  94. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  95. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  96. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  97. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -1
  98. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  99. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  100. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  101. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  102. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js.map +1 -1
  103. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  104. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  105. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js.map +1 -1
  106. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  107. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  108. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  109. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -237
  110. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  111. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  112. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  113. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  114. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  115. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  116. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  117. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  118. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  119. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  120. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  121. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  122. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  123. package/dist/src/collection-facets/toggle-switch.js +94 -94
  124. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  125. package/dist/src/collection-facets.d.ts +103 -103
  126. package/dist/src/collection-facets.js +522 -521
  127. package/dist/src/collection-facets.js.map +1 -1
  128. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  129. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  130. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  131. package/dist/src/data-source/collection-browser-data-source.d.ts +373 -373
  132. package/dist/src/data-source/collection-browser-data-source.js +982 -981
  133. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  134. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  135. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  136. package/dist/src/data-source/models.d.ts +28 -28
  137. package/dist/src/data-source/models.js +8 -8
  138. package/dist/src/empty-placeholder.d.ts +23 -23
  139. package/dist/src/empty-placeholder.js +88 -87
  140. package/dist/src/empty-placeholder.js.map +1 -1
  141. package/dist/src/expanded-date-picker.d.ts +43 -43
  142. package/dist/src/expanded-date-picker.js +109 -109
  143. package/dist/src/expanded-date-picker.js.map +1 -1
  144. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  145. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  146. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  147. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  148. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  149. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -1
  150. package/dist/src/manage/manage-bar.d.ts +35 -35
  151. package/dist/src/manage/manage-bar.js +79 -79
  152. package/dist/src/manage/manage-bar.js.map +1 -1
  153. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  154. package/dist/src/mediatype/mediatype-config.js +91 -92
  155. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  156. package/dist/src/models.d.ts +219 -219
  157. package/dist/src/models.js +401 -401
  158. package/dist/src/models.js.map +1 -1
  159. package/dist/src/restoration-state-handler.d.ts +70 -70
  160. package/dist/src/restoration-state-handler.js +363 -362
  161. package/dist/src/restoration-state-handler.js.map +1 -1
  162. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  163. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  164. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  165. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  166. package/dist/src/sort-filter-bar/alpha-bar.js +136 -136
  167. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  168. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  169. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  170. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  171. package/dist/src/sort-filter-bar/img/list.js +2 -2
  172. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  173. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  174. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  175. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  176. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  177. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  178. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  179. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  180. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  181. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  182. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  183. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -696
  184. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  185. package/dist/src/styles/ia-button.d.ts +2 -2
  186. package/dist/src/styles/ia-button.js +17 -17
  187. package/dist/src/styles/item-image-styles.d.ts +8 -8
  188. package/dist/src/styles/item-image-styles.js +9 -9
  189. package/dist/src/styles/sr-only.d.ts +1 -1
  190. package/dist/src/styles/sr-only.js +2 -2
  191. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  192. package/dist/src/tiles/base-tile-component.js +64 -64
  193. package/dist/src/tiles/base-tile-component.js.map +1 -1
  194. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  195. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  196. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
  197. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  198. package/dist/src/tiles/grid/account-tile.js +72 -72
  199. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  200. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  201. package/dist/src/tiles/grid/collection-tile.js +80 -80
  202. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  203. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  204. package/dist/src/tiles/grid/item-tile.js +160 -159
  205. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  206. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  207. package/dist/src/tiles/grid/search-tile.js +51 -51
  208. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  209. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  210. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  211. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  212. package/dist/src/tiles/grid/tile-stats.js +54 -54
  213. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  214. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  215. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  216. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  217. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  218. package/dist/src/tiles/hover/tile-hover-pane.js +70 -72
  219. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  220. package/dist/src/tiles/image-block.d.ts +18 -18
  221. package/dist/src/tiles/image-block.js +89 -89
  222. package/dist/src/tiles/image-block.js.map +1 -1
  223. package/dist/src/tiles/item-image.d.ts +39 -39
  224. package/dist/src/tiles/item-image.js +154 -154
  225. package/dist/src/tiles/item-image.js.map +1 -1
  226. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  227. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  228. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  229. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  230. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  231. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  232. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  233. package/dist/src/tiles/list/tile-list.js +326 -324
  234. package/dist/src/tiles/list/tile-list.js.map +1 -1
  235. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  236. package/dist/src/tiles/mediatype-icon.js +47 -47
  237. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  238. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  239. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  240. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  241. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  242. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  243. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  244. package/dist/src/tiles/review-block.d.ts +12 -12
  245. package/dist/src/tiles/review-block.js +56 -56
  246. package/dist/src/tiles/review-block.js.map +1 -1
  247. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  248. package/dist/src/tiles/text-snippet-block.js +73 -73
  249. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  250. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  251. package/dist/src/tiles/tile-dispatcher.js +230 -230
  252. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  253. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  254. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  255. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  256. package/dist/src/utils/analytics-events.d.ts +28 -28
  257. package/dist/src/utils/analytics-events.js +30 -30
  258. package/dist/src/utils/array-equals.d.ts +4 -4
  259. package/dist/src/utils/array-equals.js +10 -10
  260. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  261. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  262. package/dist/src/utils/facet-utils.d.ts +83 -83
  263. package/dist/src/utils/facet-utils.js +145 -145
  264. package/dist/src/utils/facet-utils.js.map +1 -1
  265. package/dist/src/utils/format-count.d.ts +7 -7
  266. package/dist/src/utils/format-count.js +76 -75
  267. package/dist/src/utils/format-count.js.map +1 -1
  268. package/dist/src/utils/format-date.d.ts +2 -2
  269. package/dist/src/utils/format-date.js +27 -27
  270. package/dist/src/utils/format-date.js.map +1 -1
  271. package/dist/src/utils/format-unit-size.d.ts +2 -2
  272. package/dist/src/utils/format-unit-size.js +33 -33
  273. package/dist/src/utils/format-unit-size.js.map +1 -1
  274. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  275. package/dist/src/utils/local-date-from-utc.js +15 -15
  276. package/dist/src/utils/log.d.ts +7 -7
  277. package/dist/src/utils/log.js +15 -13
  278. package/dist/src/utils/log.js.map +1 -1
  279. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  280. package/dist/src/utils/resolve-mediatype.js +23 -23
  281. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  282. package/dist/src/utils/sha1.d.ts +2 -2
  283. package/dist/src/utils/sha1.js +8 -8
  284. package/dist/test/collection-browser.test.d.ts +1 -1
  285. package/dist/test/collection-browser.test.js +1293 -1294
  286. package/dist/test/collection-browser.test.js.map +1 -1
  287. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  288. package/dist/test/collection-facets/facet-row.test.js +227 -230
  289. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  290. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  291. package/dist/test/collection-facets/facets-template.test.js +91 -91
  292. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  293. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  294. package/dist/test/collection-facets/more-facets-content.test.js +141 -140
  295. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  296. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  297. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -116
  298. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  299. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  300. package/dist/test/collection-facets/toggle-switch.test.js +73 -82
  301. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  302. package/dist/test/collection-facets.test.d.ts +2 -2
  303. package/dist/test/collection-facets.test.js +690 -689
  304. package/dist/test/collection-facets.test.js.map +1 -1
  305. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  306. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  307. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -1
  308. package/dist/test/empty-placeholder.test.d.ts +1 -1
  309. package/dist/test/empty-placeholder.test.js +63 -62
  310. package/dist/test/empty-placeholder.test.js.map +1 -1
  311. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  312. package/dist/test/expanded-date-picker.test.js +95 -95
  313. package/dist/test/expanded-date-picker.test.js.map +1 -1
  314. package/dist/test/icon-overlay.test.d.ts +1 -1
  315. package/dist/test/icon-overlay.test.js +24 -23
  316. package/dist/test/icon-overlay.test.js.map +1 -1
  317. package/dist/test/image-block.test.d.ts +1 -1
  318. package/dist/test/image-block.test.js +107 -106
  319. package/dist/test/image-block.test.js.map +1 -1
  320. package/dist/test/item-image.test.d.ts +1 -1
  321. package/dist/test/item-image.test.js +85 -84
  322. package/dist/test/item-image.test.js.map +1 -1
  323. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  324. package/dist/test/manage/manage-bar.test.js +91 -90
  325. package/dist/test/manage/manage-bar.test.js.map +1 -1
  326. package/dist/test/mediatype-config.test.d.ts +1 -1
  327. package/dist/test/mediatype-config.test.js +16 -16
  328. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  329. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  330. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  331. package/dist/test/mocks/mock-search-responses.js +942 -942
  332. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  333. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  334. package/dist/test/mocks/mock-search-service.js +54 -54
  335. package/dist/test/mocks/mock-search-service.js.map +1 -1
  336. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  337. package/dist/test/restoration-state-handler.test.js +270 -270
  338. package/dist/test/restoration-state-handler.test.js.map +1 -1
  339. package/dist/test/review-block.test.d.ts +1 -1
  340. package/dist/test/review-block.test.js +44 -43
  341. package/dist/test/review-block.test.js.map +1 -1
  342. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  343. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  344. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  345. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  346. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  347. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  348. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  349. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -425
  350. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  351. package/dist/test/text-overlay.test.d.ts +1 -1
  352. package/dist/test/text-overlay.test.js +38 -37
  353. package/dist/test/text-overlay.test.js.map +1 -1
  354. package/dist/test/text-snippet-block.test.d.ts +1 -1
  355. package/dist/test/text-snippet-block.test.js +57 -56
  356. package/dist/test/text-snippet-block.test.js.map +1 -1
  357. package/dist/test/tile-stats.test.d.ts +1 -1
  358. package/dist/test/tile-stats.test.js +99 -98
  359. package/dist/test/tile-stats.test.js.map +1 -1
  360. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  361. package/dist/test/tiles/grid/account-tile.test.js +76 -75
  362. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  363. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  364. package/dist/test/tiles/grid/collection-tile.test.js +73 -72
  365. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  366. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  367. package/dist/test/tiles/grid/item-tile.test.js +312 -311
  368. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  369. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  370. package/dist/test/tiles/grid/search-tile.test.js +51 -50
  371. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  372. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  373. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  374. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  375. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  376. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  377. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  378. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  379. package/dist/test/tiles/list/tile-list-compact.test.js +143 -142
  380. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  381. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  382. package/dist/test/tiles/list/tile-list.test.js +297 -296
  383. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  384. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  385. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  386. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  387. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  388. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  389. package/dist/test/utils/array-equals.test.d.ts +1 -1
  390. package/dist/test/utils/array-equals.test.js +26 -26
  391. package/dist/test/utils/format-count.test.d.ts +1 -1
  392. package/dist/test/utils/format-count.test.js +23 -23
  393. package/dist/test/utils/format-count.test.js.map +1 -1
  394. package/dist/test/utils/format-date.test.d.ts +1 -1
  395. package/dist/test/utils/format-date.test.js +30 -30
  396. package/dist/test/utils/format-date.test.js.map +1 -1
  397. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  398. package/dist/test/utils/format-unit-size.test.js +17 -17
  399. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  400. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  401. package/dist/test/utils/local-date-from-utc.test.js.map +1 -1
  402. package/index.html +3 -0
  403. package/local.archive.org.cert +86 -86
  404. package/local.archive.org.key +27 -27
  405. package/package.json +38 -40
  406. package/renovate.json +6 -6
  407. package/src/app-root.ts +22 -21
  408. package/src/collection-browser.ts +35 -33
  409. package/src/collection-facets/facets-template.ts +6 -7
  410. package/src/collection-facets/more-facets-content.ts +13 -11
  411. package/src/collection-facets/more-facets-pagination.ts +2 -3
  412. package/src/collection-facets/smart-facets/dedupe.ts +2 -2
  413. package/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts +1 -1
  414. package/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts +6 -6
  415. package/src/collection-facets/smart-facets/smart-facet-bar.ts +8 -6
  416. package/src/collection-facets/smart-facets/smart-facet-button.ts +3 -5
  417. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +4 -4
  418. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +1 -1
  419. package/src/collection-facets/toggle-switch.ts +2 -2
  420. package/src/collection-facets.ts +19 -18
  421. package/src/data-source/collection-browser-data-source-interface.ts +1 -5
  422. package/src/data-source/collection-browser-data-source.ts +34 -37
  423. package/src/empty-placeholder.ts +16 -19
  424. package/src/expanded-date-picker.ts +1 -1
  425. package/src/language-code-handler/language-code-handler.ts +1 -1
  426. package/src/manage/manage-bar.ts +12 -14
  427. package/src/mediatype/mediatype-config.ts +0 -1
  428. package/src/models.ts +3 -3
  429. package/src/restoration-state-handler.ts +15 -14
  430. package/src/sort-filter-bar/alpha-bar.ts +17 -16
  431. package/src/sort-filter-bar/sort-filter-bar.ts +15 -14
  432. package/src/tiles/grid/account-tile.ts +1 -1
  433. package/src/tiles/grid/collection-tile.ts +1 -1
  434. package/src/tiles/grid/item-tile.ts +9 -9
  435. package/src/tiles/grid/tile-stats.ts +4 -4
  436. package/src/tiles/hover/hover-pane-controller.ts +1 -1
  437. package/src/tiles/hover/tile-hover-pane.ts +2 -4
  438. package/src/tiles/item-image.ts +1 -1
  439. package/src/tiles/list/tile-list-compact.ts +2 -2
  440. package/src/tiles/list/tile-list.ts +24 -22
  441. package/src/tiles/tile-dispatcher.ts +5 -5
  442. package/src/tiles/tile-display-value-provider.ts +4 -4
  443. package/src/utils/facet-utils.ts +6 -6
  444. package/src/utils/format-count.ts +3 -2
  445. package/src/utils/format-date.ts +1 -1
  446. package/src/utils/format-unit-size.ts +1 -1
  447. package/src/utils/log.ts +3 -1
  448. package/test/collection-browser.test.ts +122 -123
  449. package/test/collection-facets/facet-row.test.ts +28 -31
  450. package/test/collection-facets/facets-template.test.ts +9 -9
  451. package/test/collection-facets/more-facets-content.test.ts +15 -14
  452. package/test/collection-facets/more-facets-pagination.test.ts +19 -18
  453. package/test/collection-facets/toggle-switch.test.ts +18 -28
  454. package/test/collection-facets.test.ts +37 -36
  455. package/test/data-source/collection-browser-data-source.test.ts +2 -2
  456. package/test/empty-placeholder.test.ts +7 -6
  457. package/test/expanded-date-picker.test.ts +18 -17
  458. package/test/icon-overlay.test.ts +1 -0
  459. package/test/image-block.test.ts +7 -6
  460. package/test/item-image.test.ts +1 -0
  461. package/test/manage/manage-bar.test.ts +14 -13
  462. package/test/mocks/mock-search-responses.ts +1 -2
  463. package/test/mocks/mock-search-service.ts +1 -1
  464. package/test/restoration-state-handler.test.ts +12 -12
  465. package/test/review-block.test.ts +2 -1
  466. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +1 -1
  467. package/test/sort-filter-bar/alpha-bar.test.ts +5 -5
  468. package/test/sort-filter-bar/sort-filter-bar.test.ts +39 -38
  469. package/test/text-overlay.test.ts +1 -0
  470. package/test/text-snippet-block.test.ts +6 -5
  471. package/test/tile-stats.test.ts +35 -26
  472. package/test/tiles/grid/account-tile.test.ts +3 -2
  473. package/test/tiles/grid/collection-tile.test.ts +4 -3
  474. package/test/tiles/grid/item-tile.test.ts +14 -13
  475. package/test/tiles/grid/search-tile.test.ts +2 -1
  476. package/test/tiles/hover/hover-pane-controller.test.ts +15 -15
  477. package/test/tiles/hover/tile-hover-pane.test.ts +5 -5
  478. package/test/tiles/list/tile-list-compact.test.ts +2 -1
  479. package/test/tiles/list/tile-list.test.ts +11 -10
  480. package/test/tiles/tile-dispatcher.test.ts +5 -5
  481. package/test/utils/format-count.test.ts +1 -1
  482. package/test/utils/format-date.test.ts +1 -1
  483. package/test/utils/local-date-from-utc.test.ts +1 -1
  484. package/tsconfig.json +1 -0
  485. package/web-dev-server.config.mjs +30 -30
  486. package/web-test-runner.config.mjs +41 -41
  487. package/.prettierignore +0 -1
  488. package/eslint.config.mjs +0 -53
@@ -1,175 +1,175 @@
1
- import { html, nothing, } from 'lit';
2
- const clamp = (val, min = -Infinity, max = Infinity) => Math.max(min, Math.min(val, max));
3
- export class HoverPaneController {
4
- constructor(
5
- /** The host element to which this controller should attach listeners */
6
- host,
7
- /** Options for adjusting the hover pane behavior (offsets, delays, etc.) */
8
- options = {}) {
9
- var _a, _b, _c, _d, _e, _f, _g;
10
- this.host = host;
11
- /**
12
- * The breakpoint (in pixels) below which the mobile interface should be used.
13
- */
14
- this.mobileBreakpoint = 600;
15
- /**
16
- * The number of horizontal pixels the hover pane should be offset from the
17
- * pointer position.
18
- */
19
- this.offsetX = -10;
20
- /**
21
- * The number of vertical pixels the hover pane should be offset from the
22
- * pointer position.
23
- */
24
- this.offsetY = 15;
25
- /**
26
- * The delay between the mouse idling within the host element and when the hover
27
- * pane should begin fading in (in milliseconds).
28
- */
29
- this.showDelay = 300;
30
- /**
31
- * The delay between when the mouse leaves the host element and when the hover
32
- * pane should begin fading out (in milliseconds).
33
- */
34
- this.hideDelay = 100;
35
- /**
36
- * The delay between when a touch event begins on the host element and when the
37
- * hover pane should begin fading in (in milliseconds).
38
- */
39
- this.longPressDelay = 600;
40
- /**
41
- * Whether long press interactions should cause the hover pane to appear (when
42
- * below the mobile breakpoint).
43
- */
44
- this.enableLongPress = false;
45
- /**
46
- * Used to control the current state of this provider's hover pane.
47
- * - `'hidden'` => The hover pane is not present at all.
48
- * - `'shown'` => The hover pane is either fading in or fully visible.
49
- * - `'fading-out'` => The hover pane is fading out and about to be removed.
50
- */
51
- this.hoverPaneState = 'hidden';
52
- /**
53
- * Whether the touch backdrop should currently be rendered irrespective of other touch
54
- * interactions being enabled.
55
- */
56
- this.forceTouchBackdrop = false;
57
- /** A record of the last mouse position on the host element, for positioning the hover pane */
58
- this.lastPointerClientPos = { x: 0, y: 0 };
59
- /**
60
- * Handler for the mouseenter event on the host element.
61
- */
62
- // NB: Arrow function so 'this' remains bound to the controller
63
- this.handleMouseEnter = (e) => {
64
- // Delegate to the mousemove handler, as they are currently processed identically
65
- this.handleMouseMove(e);
66
- };
67
- /**
68
- * Handler for the mousemove event on the host element.
69
- * Aborts any pending hide/fade-out for the hover pane, and restarts the
70
- * timer to show it.
71
- */
72
- // NB: Arrow function so 'this' remains bound to the controller
73
- this.handleMouseMove = (e) => {
74
- var _a;
75
- // The mouse is within the tile, so abort any pending removal of the hover pane
76
- clearTimeout(this.hideTimer);
77
- // If the hover pane is currently fading out, just make it fade back in where it is
78
- if (this.hoverPaneState === 'fading-out') {
79
- this.hoverPaneState = 'shown';
80
- (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.classList.add('fade-in');
81
- }
82
- // Restart the timer to show the hover pane anytime the mouse moves within the tile
83
- if (this.hoverPaneState === 'hidden') {
84
- this.restartShowHoverPaneTimer();
85
- this.lastPointerClientPos = { x: e.clientX, y: e.clientY };
86
- }
87
- };
88
- /**
89
- * Handler for the mouseleave event on the host element.
90
- * Hides the hover pane if present, and aborts the timer for showing it.
91
- */
92
- // NB: Arrow function so 'this' remains bound to the controller
93
- this.handleMouseLeave = () => {
94
- // Abort any timer to show the hover pane, as the mouse has left the tile
95
- clearTimeout(this.showTimer);
96
- // Hide the hover pane if it's already been shown
97
- clearTimeout(this.hideTimer);
98
- if (this.hoverPaneState !== 'hidden') {
99
- this.hideTimer = window.setTimeout(() => {
100
- this.fadeOutHoverPane();
101
- }, this.hideDelay);
102
- }
103
- };
104
- /**
105
- * Handler for the touchstart event on the host element.
106
- * Begins the timer for recognizing a long press event.
107
- */
108
- // NB: Arrow function so 'this' remains bound to the controller
109
- this.handleTouchStart = (e) => {
110
- clearTimeout(this.longPressTimer);
111
- if (e.touches.length === 1) {
112
- this.longPressTimer = window.setTimeout(() => {
113
- if (this.hoverPaneState === 'hidden') {
114
- this.showHoverPane();
115
- }
116
- }, this.longPressDelay);
117
- this.lastPointerClientPos = {
118
- x: e.touches[0].clientX,
119
- y: e.touches[0].clientY,
120
- };
121
- }
122
- };
123
- /**
124
- * Handler for events that should cancel a pending long press event
125
- * (touchmove, touchend, touchcancel). Aborts the timer for recognizing
126
- * a long press.
127
- */
128
- // NB: Arrow function so 'this' remains bound to the controller
129
- this.handleLongPressCancel = () => {
130
- clearTimeout(this.longPressTimer);
131
- };
132
- /**
133
- * Handler for the contextmenu event, which should be suppressed during
134
- * mobile long-press events on the host element.
135
- */
136
- // NB: Arrow function so 'this' remains bound to the controller
137
- this.handleContextMenu = (e) => {
138
- e.preventDefault();
139
- };
140
- /**
141
- * Immediately causes the hover pane to begin fading out, if it is present.
142
- */
143
- // NB: Arrow function so 'this' remains bound to the controller
144
- this.handleBackdropInteraction = (e) => {
145
- if (this.hoverPaneState !== 'hidden') {
146
- this.fadeOutHoverPane();
147
- }
148
- e.stopPropagation();
149
- };
150
- this.mobileBreakpoint = (_a = options.mobileBreakpoint) !== null && _a !== void 0 ? _a : this.mobileBreakpoint;
151
- this.offsetX = (_b = options.offsetX) !== null && _b !== void 0 ? _b : this.offsetX;
152
- this.offsetY = (_c = options.offsetY) !== null && _c !== void 0 ? _c : this.offsetY;
153
- this.showDelay = (_d = options.showDelay) !== null && _d !== void 0 ? _d : this.showDelay;
154
- this.hideDelay = (_e = options.hideDelay) !== null && _e !== void 0 ? _e : this.hideDelay;
155
- this.longPressDelay = (_f = options.longPressDelay) !== null && _f !== void 0 ? _f : this.longPressDelay;
156
- this.enableLongPress = (_g = options.enableLongPress) !== null && _g !== void 0 ? _g : this.enableLongPress;
157
- this.host.addController(this);
158
- }
159
- hostConnected() {
160
- this.attachListeners();
161
- }
162
- hostDisconnected() {
163
- this.detachListeners();
164
- }
165
- hostUpdated() {
166
- this.hoverPane = this.host.getHoverPane();
167
- this.hoverPaneProps = this.host.getHoverPaneProps();
168
- }
169
- /** @inheritdoc */
170
- getTemplate() {
171
- var _a, _b, _c, _d, _e, _f;
172
- return this.shouldRenderHoverPane
1
+ import { html, nothing, } from 'lit';
2
+ const clamp = (val, min = -Infinity, max = Infinity) => Math.max(min, Math.min(val, max));
3
+ export class HoverPaneController {
4
+ constructor(
5
+ /** The host element to which this controller should attach listeners */
6
+ host,
7
+ /** Options for adjusting the hover pane behavior (offsets, delays, etc.) */
8
+ options = {}) {
9
+ var _a, _b, _c, _d, _e, _f, _g;
10
+ this.host = host;
11
+ /**
12
+ * The breakpoint (in pixels) below which the mobile interface should be used.
13
+ */
14
+ this.mobileBreakpoint = 600;
15
+ /**
16
+ * The number of horizontal pixels the hover pane should be offset from the
17
+ * pointer position.
18
+ */
19
+ this.offsetX = -10;
20
+ /**
21
+ * The number of vertical pixels the hover pane should be offset from the
22
+ * pointer position.
23
+ */
24
+ this.offsetY = 15;
25
+ /**
26
+ * The delay between the mouse idling within the host element and when the hover
27
+ * pane should begin fading in (in milliseconds).
28
+ */
29
+ this.showDelay = 300;
30
+ /**
31
+ * The delay between when the mouse leaves the host element and when the hover
32
+ * pane should begin fading out (in milliseconds).
33
+ */
34
+ this.hideDelay = 100;
35
+ /**
36
+ * The delay between when a touch event begins on the host element and when the
37
+ * hover pane should begin fading in (in milliseconds).
38
+ */
39
+ this.longPressDelay = 600;
40
+ /**
41
+ * Whether long press interactions should cause the hover pane to appear (when
42
+ * below the mobile breakpoint).
43
+ */
44
+ this.enableLongPress = false;
45
+ /**
46
+ * Used to control the current state of this provider's hover pane.
47
+ * - `'hidden'` => The hover pane is not present at all.
48
+ * - `'shown'` => The hover pane is either fading in or fully visible.
49
+ * - `'fading-out'` => The hover pane is fading out and about to be removed.
50
+ */
51
+ this.hoverPaneState = 'hidden';
52
+ /**
53
+ * Whether the touch backdrop should currently be rendered irrespective of other touch
54
+ * interactions being enabled.
55
+ */
56
+ this.forceTouchBackdrop = false;
57
+ /** A record of the last mouse position on the host element, for positioning the hover pane */
58
+ this.lastPointerClientPos = { x: 0, y: 0 };
59
+ /**
60
+ * Handler for the mouseenter event on the host element.
61
+ */
62
+ // NB: Arrow function so 'this' remains bound to the controller
63
+ this.handleMouseEnter = (e) => {
64
+ // Delegate to the mousemove handler, as they are currently processed identically
65
+ this.handleMouseMove(e);
66
+ };
67
+ /**
68
+ * Handler for the mousemove event on the host element.
69
+ * Aborts any pending hide/fade-out for the hover pane, and restarts the
70
+ * timer to show it.
71
+ */
72
+ // NB: Arrow function so 'this' remains bound to the controller
73
+ this.handleMouseMove = (e) => {
74
+ var _a;
75
+ // The mouse is within the tile, so abort any pending removal of the hover pane
76
+ clearTimeout(this.hideTimer);
77
+ // If the hover pane is currently fading out, just make it fade back in where it is
78
+ if (this.hoverPaneState === 'fading-out') {
79
+ this.hoverPaneState = 'shown';
80
+ (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.classList.add('fade-in');
81
+ }
82
+ // Restart the timer to show the hover pane anytime the mouse moves within the tile
83
+ if (this.hoverPaneState === 'hidden') {
84
+ this.restartShowHoverPaneTimer();
85
+ this.lastPointerClientPos = { x: e.clientX, y: e.clientY };
86
+ }
87
+ };
88
+ /**
89
+ * Handler for the mouseleave event on the host element.
90
+ * Hides the hover pane if present, and aborts the timer for showing it.
91
+ */
92
+ // NB: Arrow function so 'this' remains bound to the controller
93
+ this.handleMouseLeave = () => {
94
+ // Abort any timer to show the hover pane, as the mouse has left the tile
95
+ clearTimeout(this.showTimer);
96
+ // Hide the hover pane if it's already been shown
97
+ clearTimeout(this.hideTimer);
98
+ if (this.hoverPaneState !== 'hidden') {
99
+ this.hideTimer = window.setTimeout(() => {
100
+ this.fadeOutHoverPane();
101
+ }, this.hideDelay);
102
+ }
103
+ };
104
+ /**
105
+ * Handler for the touchstart event on the host element.
106
+ * Begins the timer for recognizing a long press event.
107
+ */
108
+ // NB: Arrow function so 'this' remains bound to the controller
109
+ this.handleTouchStart = (e) => {
110
+ clearTimeout(this.longPressTimer);
111
+ if (e.touches.length === 1) {
112
+ this.longPressTimer = window.setTimeout(() => {
113
+ if (this.hoverPaneState === 'hidden') {
114
+ this.showHoverPane();
115
+ }
116
+ }, this.longPressDelay);
117
+ this.lastPointerClientPos = {
118
+ x: e.touches[0].clientX,
119
+ y: e.touches[0].clientY,
120
+ };
121
+ }
122
+ };
123
+ /**
124
+ * Handler for events that should cancel a pending long press event
125
+ * (touchmove, touchend, touchcancel). Aborts the timer for recognizing
126
+ * a long press.
127
+ */
128
+ // NB: Arrow function so 'this' remains bound to the controller
129
+ this.handleLongPressCancel = () => {
130
+ clearTimeout(this.longPressTimer);
131
+ };
132
+ /**
133
+ * Handler for the contextmenu event, which should be suppressed during
134
+ * mobile long-press events on the host element.
135
+ */
136
+ // NB: Arrow function so 'this' remains bound to the controller
137
+ this.handleContextMenu = (e) => {
138
+ e.preventDefault();
139
+ };
140
+ /**
141
+ * Immediately causes the hover pane to begin fading out, if it is present.
142
+ */
143
+ // NB: Arrow function so 'this' remains bound to the controller
144
+ this.handleBackdropInteraction = (e) => {
145
+ if (this.hoverPaneState !== 'hidden') {
146
+ this.fadeOutHoverPane();
147
+ }
148
+ e.stopPropagation();
149
+ };
150
+ this.mobileBreakpoint = (_a = options.mobileBreakpoint) !== null && _a !== void 0 ? _a : this.mobileBreakpoint;
151
+ this.offsetX = (_b = options.offsetX) !== null && _b !== void 0 ? _b : this.offsetX;
152
+ this.offsetY = (_c = options.offsetY) !== null && _c !== void 0 ? _c : this.offsetY;
153
+ this.showDelay = (_d = options.showDelay) !== null && _d !== void 0 ? _d : this.showDelay;
154
+ this.hideDelay = (_e = options.hideDelay) !== null && _e !== void 0 ? _e : this.hideDelay;
155
+ this.longPressDelay = (_f = options.longPressDelay) !== null && _f !== void 0 ? _f : this.longPressDelay;
156
+ this.enableLongPress = (_g = options.enableLongPress) !== null && _g !== void 0 ? _g : this.enableLongPress;
157
+ this.host.addController(this);
158
+ }
159
+ hostConnected() {
160
+ this.attachListeners();
161
+ }
162
+ hostDisconnected() {
163
+ this.detachListeners();
164
+ }
165
+ hostUpdated() {
166
+ this.hoverPane = this.host.getHoverPane();
167
+ this.hoverPaneProps = this.host.getHoverPaneProps();
168
+ }
169
+ /** @inheritdoc */
170
+ getTemplate() {
171
+ var _a, _b, _c, _d, _e, _f;
172
+ return this.shouldRenderHoverPane
173
173
  ? html ` ${this.touchBackdropTemplate}
174
174
  <tile-hover-pane
175
175
  .model=${(_a = this.hoverPaneProps) === null || _a === void 0 ? void 0 : _a.model}
@@ -180,31 +180,31 @@ export class HoverPaneController {
180
180
  .collectionTitles=${(_f = this.hoverPaneProps) === null || _f === void 0 ? void 0 : _f.collectionTitles}
181
181
  .mobileBreakpoint=${this.mobileBreakpoint}
182
182
  .currentWidth=${window.innerWidth}
183
- ></tile-hover-pane>`
184
- : nothing;
185
- }
186
- /** @inheritdoc */
187
- toggleHoverPane(options) {
188
- var _a;
189
- if (this.hoverPaneState === 'shown') {
190
- this.fadeOutHoverPane();
191
- this.forceTouchBackdrop = false;
192
- }
193
- else {
194
- this.lastPointerClientPos = options.coords;
195
- this.forceTouchBackdrop = (_a = options.enableTouchBackdrop) !== null && _a !== void 0 ? _a : false;
196
- this.showHoverPane();
197
- }
198
- }
199
- /**
200
- * Produces a template for the invisible touch capture backdrop that
201
- * is used to cancel the hover pane on touch devices. We want any
202
- * touch interaction on the backdrop to remove the hover pane, and
203
- * we don't want to bubble up mouse events that would otherwise
204
- * affect the state of the hover pane (e.g., fading it back in).
205
- */
206
- get touchBackdropTemplate() {
207
- return this.showTouchBackdrop
183
+ ></tile-hover-pane>`
184
+ : nothing;
185
+ }
186
+ /** @inheritdoc */
187
+ toggleHoverPane(options) {
188
+ var _a;
189
+ if (this.hoverPaneState === 'shown') {
190
+ this.fadeOutHoverPane();
191
+ this.forceTouchBackdrop = false;
192
+ }
193
+ else {
194
+ this.lastPointerClientPos = options.coords;
195
+ this.forceTouchBackdrop = (_a = options.enableTouchBackdrop) !== null && _a !== void 0 ? _a : false;
196
+ this.showHoverPane();
197
+ }
198
+ }
199
+ /**
200
+ * Produces a template for the invisible touch capture backdrop that
201
+ * is used to cancel the hover pane on touch devices. We want any
202
+ * touch interaction on the backdrop to remove the hover pane, and
203
+ * we don't want to bubble up mouse events that would otherwise
204
+ * affect the state of the hover pane (e.g., fading it back in).
205
+ */
206
+ get touchBackdropTemplate() {
207
+ return this.showTouchBackdrop
208
208
  ? html `<div
209
209
  id="touch-backdrop"
210
210
  @touchstart=${this.handleBackdropInteraction}
@@ -214,159 +214,159 @@ export class HoverPaneController {
214
214
  @mouseenter=${(e) => e.stopPropagation()}
215
215
  @mousemove=${(e) => e.stopPropagation()}
216
216
  @mouseleave=${(e) => e.stopPropagation()}
217
- ></div>`
218
- : nothing;
219
- }
220
- get showTouchBackdrop() {
221
- return ((this.isTouchEnabled && this.enableLongPress) || this.forceTouchBackdrop);
222
- }
223
- /** Whether to use the mobile layout */
224
- get isMobileView() {
225
- return !!this.mobileBreakpoint && window.innerWidth < this.mobileBreakpoint;
226
- }
227
- get isHoverEnabled() {
228
- return window.matchMedia('(hover: hover)').matches;
229
- }
230
- get isTouchEnabled() {
231
- return ('ontouchstart' in window &&
232
- window.matchMedia('(any-pointer: coarse)').matches);
233
- }
234
- /** Whether this controller should currently render its hover pane. */
235
- get shouldRenderHoverPane() {
236
- return this.hoverPaneState !== 'hidden';
237
- }
238
- /**
239
- * Returns the desired top/left offsets (in pixels) for this tile's hover pane.
240
- * The desired offsets balance positioning the hover pane under the primary pointer
241
- * while preventing it from flowing outside the viewport. The returned offsets are
242
- * given relative to this tile's content box.
243
- *
244
- * These offsets are only valid if the hover pane is already rendered with its
245
- * correct width and height. If the hover pane is not present, the returned offsets
246
- * will simply represent the current pointer position.
247
- */
248
- get hoverPaneDesiredOffsets() {
249
- // Try to find offsets for the hover pane that:
250
- // (a) cause it to lie entirely within the viewport, and
251
- // (b) to the extent possible, minimize the distance between the
252
- // nearest corner of the hover pane and the mouse position
253
- // (with some additional offsets applied after the fact).
254
- var _a;
255
- let [left, top] = [
256
- this.lastPointerClientPos.x,
257
- this.lastPointerClientPos.y,
258
- ];
259
- // Flip the hover pane according to which quadrant of the viewport the mouse is in.
260
- // (Similar to how Wikipedia's link hover panes work)
261
- const flipHorizontal = this.lastPointerClientPos.x > window.innerWidth / 2;
262
- const flipVertical = this.lastPointerClientPos.y > window.innerHeight / 2;
263
- const hoverPaneRect = (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
264
- if (hoverPaneRect) {
265
- // If we need to flip the hover pane, do so by subtracting its width/height from left/top
266
- if (flipHorizontal) {
267
- left -= hoverPaneRect.width;
268
- }
269
- if (flipVertical) {
270
- top -= hoverPaneRect.height;
271
- }
272
- // Apply desired offsets from the mouse position
273
- left += (flipHorizontal ? -1 : 1) * this.offsetX;
274
- top += (flipVertical ? -1 : 1) * this.offsetY;
275
- // On mobile view, shunt the hover pane to avoid overflowing the viewport
276
- if (this.isMobileView) {
277
- left = clamp(left, 20, window.innerWidth - hoverPaneRect.width - 20);
278
- top = clamp(top, 20, window.innerHeight - hoverPaneRect.height - 20);
279
- }
280
- }
281
- // Subtract off the tile's own offsets
282
- const hostRect = this.host.getBoundingClientRect();
283
- left -= hostRect.left;
284
- top -= hostRect.top;
285
- return { left, top };
286
- }
287
- /**
288
- * Adds to the host element all the listeners necessary to make the
289
- * hover pane functional.
290
- */
291
- attachListeners() {
292
- if (this.isHoverEnabled) {
293
- this.host.addEventListener('mouseenter', this.handleMouseEnter);
294
- this.host.addEventListener('mousemove', this.handleMouseMove);
295
- this.host.addEventListener('mouseleave', this.handleMouseLeave);
296
- }
297
- if (this.isTouchEnabled && this.enableLongPress) {
298
- this.host.addEventListener('touchstart', this.handleTouchStart);
299
- this.host.addEventListener('touchmove', this.handleLongPressCancel);
300
- this.host.addEventListener('touchend', this.handleLongPressCancel);
301
- this.host.addEventListener('touchcancel', this.handleLongPressCancel);
302
- this.host.addEventListener('contextmenu', this.handleContextMenu);
303
- }
304
- }
305
- /**
306
- * Removes all the hover pane listeners from the host element.
307
- */
308
- detachListeners() {
309
- this.host.removeEventListener('mouseenter', this.handleMouseEnter);
310
- this.host.removeEventListener('mousemove', this.handleMouseMove);
311
- this.host.removeEventListener('mouseleave', this.handleMouseLeave);
312
- this.host.removeEventListener('touchstart', this.handleTouchStart);
313
- this.host.removeEventListener('touchmove', this.handleLongPressCancel);
314
- this.host.removeEventListener('touchend', this.handleLongPressCancel);
315
- this.host.removeEventListener('touchcancel', this.handleLongPressCancel);
316
- this.host.removeEventListener('contextmenu', this.handleContextMenu);
317
- }
318
- /**
319
- * Aborts and restarts the timer for showing the hover pane.
320
- */
321
- restartShowHoverPaneTimer() {
322
- clearTimeout(this.showTimer);
323
- this.showTimer = window.setTimeout(() => {
324
- this.showHoverPane();
325
- }, this.showDelay);
326
- }
327
- /**
328
- * Causes this tile's hover pane to be rendered, positioned, and made visible.
329
- */
330
- async showHoverPane() {
331
- var _a;
332
- this.hoverPaneState = 'shown';
333
- this.host.requestUpdate();
334
- // Wait for the state update to render the hover pane
335
- await this.host.updateComplete;
336
- await new Promise(resolve => {
337
- // Pane sizes aren't accurate until next frame
338
- requestAnimationFrame(resolve);
339
- });
340
- // Apply the correct positioning to the hover pane
341
- this.repositionHoverPane();
342
- // The hover pane is initially not visible (to avoid it shifting around
343
- // while being positioned). Since it now has the correct positioning, we
344
- // can make it visible and begin its fade-in animation.
345
- (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.classList.add('visible', 'fade-in');
346
- }
347
- /**
348
- * Causes this tile's hover pane to begin fading out and starts
349
- * the timer for it to be removed.
350
- */
351
- fadeOutHoverPane() {
352
- var _a;
353
- this.hoverPaneState = 'fading-out';
354
- (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.classList.remove('fade-in');
355
- clearTimeout(this.hideTimer);
356
- this.hideTimer = window.setTimeout(() => {
357
- this.hoverPaneState = 'hidden';
358
- this.host.requestUpdate();
359
- }, 100);
360
- }
361
- /**
362
- * Positions the hover pane with the correct offsets.
363
- */
364
- repositionHoverPane() {
365
- if (!this.hoverPane)
366
- return;
367
- const { top, left } = this.hoverPaneDesiredOffsets;
368
- this.hoverPane.style.top = `${top}px`;
369
- this.hoverPane.style.left = `${left}px`;
370
- }
371
- }
217
+ ></div>`
218
+ : nothing;
219
+ }
220
+ get showTouchBackdrop() {
221
+ return ((this.isTouchEnabled && this.enableLongPress) || this.forceTouchBackdrop);
222
+ }
223
+ /** Whether to use the mobile layout */
224
+ get isMobileView() {
225
+ return !!this.mobileBreakpoint && window.innerWidth < this.mobileBreakpoint;
226
+ }
227
+ get isHoverEnabled() {
228
+ return window.matchMedia('(hover: hover)').matches;
229
+ }
230
+ get isTouchEnabled() {
231
+ return ('ontouchstart' in window &&
232
+ window.matchMedia('(any-pointer: coarse)').matches);
233
+ }
234
+ /** Whether this controller should currently render its hover pane. */
235
+ get shouldRenderHoverPane() {
236
+ return this.hoverPaneState !== 'hidden';
237
+ }
238
+ /**
239
+ * Returns the desired top/left offsets (in pixels) for this tile's hover pane.
240
+ * The desired offsets balance positioning the hover pane under the primary pointer
241
+ * while preventing it from flowing outside the viewport. The returned offsets are
242
+ * given relative to this tile's content box.
243
+ *
244
+ * These offsets are only valid if the hover pane is already rendered with its
245
+ * correct width and height. If the hover pane is not present, the returned offsets
246
+ * will simply represent the current pointer position.
247
+ */
248
+ get hoverPaneDesiredOffsets() {
249
+ // Try to find offsets for the hover pane that:
250
+ // (a) cause it to lie entirely within the viewport, and
251
+ // (b) to the extent possible, minimize the distance between the
252
+ // nearest corner of the hover pane and the mouse position
253
+ // (with some additional offsets applied after the fact).
254
+ var _a;
255
+ let [left, top] = [
256
+ this.lastPointerClientPos.x,
257
+ this.lastPointerClientPos.y,
258
+ ];
259
+ // Flip the hover pane according to which quadrant of the viewport the mouse is in.
260
+ // (Similar to how Wikipedia's link hover panes work)
261
+ const flipHorizontal = this.lastPointerClientPos.x > window.innerWidth / 2;
262
+ const flipVertical = this.lastPointerClientPos.y > window.innerHeight / 2;
263
+ const hoverPaneRect = (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
264
+ if (hoverPaneRect) {
265
+ // If we need to flip the hover pane, do so by subtracting its width/height from left/top
266
+ if (flipHorizontal) {
267
+ left -= hoverPaneRect.width;
268
+ }
269
+ if (flipVertical) {
270
+ top -= hoverPaneRect.height;
271
+ }
272
+ // Apply desired offsets from the mouse position
273
+ left += (flipHorizontal ? -1 : 1) * this.offsetX;
274
+ top += (flipVertical ? -1 : 1) * this.offsetY;
275
+ // On mobile view, shunt the hover pane to avoid overflowing the viewport
276
+ if (this.isMobileView) {
277
+ left = clamp(left, 20, window.innerWidth - hoverPaneRect.width - 20);
278
+ top = clamp(top, 20, window.innerHeight - hoverPaneRect.height - 20);
279
+ }
280
+ }
281
+ // Subtract off the tile's own offsets
282
+ const hostRect = this.host.getBoundingClientRect();
283
+ left -= hostRect.left;
284
+ top -= hostRect.top;
285
+ return { left, top };
286
+ }
287
+ /**
288
+ * Adds to the host element all the listeners necessary to make the
289
+ * hover pane functional.
290
+ */
291
+ attachListeners() {
292
+ if (this.isHoverEnabled) {
293
+ this.host.addEventListener('mouseenter', this.handleMouseEnter);
294
+ this.host.addEventListener('mousemove', this.handleMouseMove);
295
+ this.host.addEventListener('mouseleave', this.handleMouseLeave);
296
+ }
297
+ if (this.isTouchEnabled && this.enableLongPress) {
298
+ this.host.addEventListener('touchstart', this.handleTouchStart);
299
+ this.host.addEventListener('touchmove', this.handleLongPressCancel);
300
+ this.host.addEventListener('touchend', this.handleLongPressCancel);
301
+ this.host.addEventListener('touchcancel', this.handleLongPressCancel);
302
+ this.host.addEventListener('contextmenu', this.handleContextMenu);
303
+ }
304
+ }
305
+ /**
306
+ * Removes all the hover pane listeners from the host element.
307
+ */
308
+ detachListeners() {
309
+ this.host.removeEventListener('mouseenter', this.handleMouseEnter);
310
+ this.host.removeEventListener('mousemove', this.handleMouseMove);
311
+ this.host.removeEventListener('mouseleave', this.handleMouseLeave);
312
+ this.host.removeEventListener('touchstart', this.handleTouchStart);
313
+ this.host.removeEventListener('touchmove', this.handleLongPressCancel);
314
+ this.host.removeEventListener('touchend', this.handleLongPressCancel);
315
+ this.host.removeEventListener('touchcancel', this.handleLongPressCancel);
316
+ this.host.removeEventListener('contextmenu', this.handleContextMenu);
317
+ }
318
+ /**
319
+ * Aborts and restarts the timer for showing the hover pane.
320
+ */
321
+ restartShowHoverPaneTimer() {
322
+ clearTimeout(this.showTimer);
323
+ this.showTimer = window.setTimeout(() => {
324
+ this.showHoverPane();
325
+ }, this.showDelay);
326
+ }
327
+ /**
328
+ * Causes this tile's hover pane to be rendered, positioned, and made visible.
329
+ */
330
+ async showHoverPane() {
331
+ var _a;
332
+ this.hoverPaneState = 'shown';
333
+ this.host.requestUpdate();
334
+ // Wait for the state update to render the hover pane
335
+ await this.host.updateComplete;
336
+ await new Promise(resolve => {
337
+ // Pane sizes aren't accurate until next frame
338
+ requestAnimationFrame(resolve);
339
+ });
340
+ // Apply the correct positioning to the hover pane
341
+ this.repositionHoverPane();
342
+ // The hover pane is initially not visible (to avoid it shifting around
343
+ // while being positioned). Since it now has the correct positioning, we
344
+ // can make it visible and begin its fade-in animation.
345
+ (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.classList.add('visible', 'fade-in');
346
+ }
347
+ /**
348
+ * Causes this tile's hover pane to begin fading out and starts
349
+ * the timer for it to be removed.
350
+ */
351
+ fadeOutHoverPane() {
352
+ var _a;
353
+ this.hoverPaneState = 'fading-out';
354
+ (_a = this.hoverPane) === null || _a === void 0 ? void 0 : _a.classList.remove('fade-in');
355
+ clearTimeout(this.hideTimer);
356
+ this.hideTimer = window.setTimeout(() => {
357
+ this.hoverPaneState = 'hidden';
358
+ this.host.requestUpdate();
359
+ }, 100);
360
+ }
361
+ /**
362
+ * Positions the hover pane with the correct offsets.
363
+ */
364
+ repositionHoverPane() {
365
+ if (!this.hoverPane)
366
+ return;
367
+ const { top, left } = this.hoverPaneDesiredOffsets;
368
+ this.hoverPane.style.top = `${top}px`;
369
+ this.hoverPane.style.left = `${left}px`;
370
+ }
371
+ }
372
372
  //# sourceMappingURL=hover-pane-controller.js.map