@internetarchive/collection-browser 2.7.9 → 2.7.10

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 (316) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +13 -13
  6. package/dist/index.js +13 -13
  7. package/dist/src/app-root.d.ts +107 -107
  8. package/dist/src/app-root.js +531 -531
  9. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  10. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  11. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  13. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  14. package/dist/src/assets/img/icons/chevron.js +2 -2
  15. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  16. package/dist/src/assets/img/icons/contract.js +2 -2
  17. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  18. package/dist/src/assets/img/icons/empty-query.js +2 -2
  19. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  20. package/dist/src/assets/img/icons/expand.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  29. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  30. package/dist/src/assets/img/icons/filter.js +2 -2
  31. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  32. package/dist/src/assets/img/icons/login-required.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  59. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  60. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  61. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  62. package/dist/src/assets/img/icons/null-result.js +2 -2
  63. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  64. package/dist/src/assets/img/icons/restricted.js +2 -2
  65. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  66. package/dist/src/assets/img/icons/reviews.js +2 -2
  67. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  68. package/dist/src/assets/img/icons/upload.js +2 -2
  69. package/dist/src/assets/img/icons/views.d.ts +1 -1
  70. package/dist/src/assets/img/icons/views.js +2 -2
  71. package/dist/src/circular-activity-indicator.d.ts +5 -5
  72. package/dist/src/circular-activity-indicator.js +17 -17
  73. package/dist/src/collection-browser.d.ts +606 -606
  74. package/dist/src/collection-browser.js +1672 -1672
  75. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  76. package/dist/src/collection-facets/facet-row.js +118 -118
  77. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  78. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  79. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  80. package/dist/src/collection-facets/facets-template.js +44 -44
  81. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  82. package/dist/src/collection-facets/more-facets-content.js +407 -407
  83. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  84. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  85. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  86. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  87. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  88. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  89. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  90. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  91. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  92. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  93. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  94. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  95. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  96. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
  97. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  98. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  99. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  100. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  101. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  102. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  103. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  104. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  105. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  106. package/dist/src/collection-facets/toggle-switch.js +94 -94
  107. package/dist/src/collection-facets.d.ts +103 -103
  108. package/dist/src/collection-facets.js +522 -522
  109. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -245
  110. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  111. package/dist/src/data-source/collection-browser-data-source.d.ts +377 -377
  112. package/dist/src/data-source/collection-browser-data-source.js +995 -995
  113. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -44
  114. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  115. package/dist/src/data-source/models.d.ts +28 -28
  116. package/dist/src/data-source/models.js +8 -8
  117. package/dist/src/empty-placeholder.d.ts +23 -23
  118. package/dist/src/empty-placeholder.js +79 -79
  119. package/dist/src/expanded-date-picker.d.ts +43 -43
  120. package/dist/src/expanded-date-picker.js +109 -109
  121. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  122. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  123. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  124. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  125. package/dist/src/manage/manage-bar.d.ts +58 -58
  126. package/dist/src/manage/manage-bar.js +159 -159
  127. package/dist/src/manage/remove-items-modal-content.d.ts +9 -9
  128. package/dist/src/manage/remove-items-modal-content.js +34 -34
  129. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  130. package/dist/src/mediatype/mediatype-config.js +91 -91
  131. package/dist/src/models.d.ts +228 -228
  132. package/dist/src/models.js +401 -401
  133. package/dist/src/restoration-state-handler.d.ts +70 -70
  134. package/dist/src/restoration-state-handler.js +363 -363
  135. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  136. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  137. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  138. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  139. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  140. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  141. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  142. package/dist/src/sort-filter-bar/img/list.js +2 -2
  143. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  144. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  145. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  146. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  147. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  148. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  149. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  150. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  151. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  152. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  153. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  154. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
  155. package/dist/src/styles/ia-button.d.ts +2 -2
  156. package/dist/src/styles/ia-button.js +17 -17
  157. package/dist/src/styles/item-image-styles.d.ts +8 -8
  158. package/dist/src/styles/item-image-styles.js +9 -9
  159. package/dist/src/styles/sr-only.d.ts +1 -1
  160. package/dist/src/styles/sr-only.js +2 -2
  161. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  162. package/dist/src/tiles/base-tile-component.js +64 -64
  163. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  164. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  165. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  166. package/dist/src/tiles/grid/account-tile.js +72 -72
  167. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  168. package/dist/src/tiles/grid/collection-tile.js +80 -80
  169. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  170. package/dist/src/tiles/grid/item-tile.js +158 -158
  171. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  172. package/dist/src/tiles/grid/search-tile.js +51 -51
  173. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  174. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  175. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  176. package/dist/src/tiles/grid/tile-stats.js +53 -53
  177. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  178. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  179. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  180. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  181. package/dist/src/tiles/image-block.d.ts +18 -18
  182. package/dist/src/tiles/image-block.js +89 -89
  183. package/dist/src/tiles/item-image.d.ts +39 -39
  184. package/dist/src/tiles/item-image.js +154 -154
  185. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  186. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  187. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  188. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  189. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  190. package/dist/src/tiles/list/tile-list.js +323 -323
  191. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  192. package/dist/src/tiles/mediatype-icon.js +47 -47
  193. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  194. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  195. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  196. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  197. package/dist/src/tiles/review-block.d.ts +12 -12
  198. package/dist/src/tiles/review-block.js +56 -56
  199. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  200. package/dist/src/tiles/text-snippet-block.js +73 -73
  201. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  202. package/dist/src/tiles/tile-dispatcher.js +230 -230
  203. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  204. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  205. package/dist/src/utils/analytics-events.d.ts +28 -28
  206. package/dist/src/utils/analytics-events.js +30 -30
  207. package/dist/src/utils/array-equals.d.ts +4 -4
  208. package/dist/src/utils/array-equals.js +10 -10
  209. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  210. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  211. package/dist/src/utils/facet-utils.d.ts +83 -83
  212. package/dist/src/utils/facet-utils.js +145 -145
  213. package/dist/src/utils/format-count.d.ts +7 -7
  214. package/dist/src/utils/format-count.js +76 -76
  215. package/dist/src/utils/format-date.d.ts +2 -2
  216. package/dist/src/utils/format-date.js +27 -27
  217. package/dist/src/utils/format-unit-size.d.ts +2 -2
  218. package/dist/src/utils/format-unit-size.js +33 -33
  219. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  220. package/dist/src/utils/local-date-from-utc.js +15 -15
  221. package/dist/src/utils/log.d.ts +7 -7
  222. package/dist/src/utils/log.js +15 -15
  223. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  224. package/dist/src/utils/resolve-mediatype.js +23 -23
  225. package/dist/src/utils/sha1.d.ts +2 -2
  226. package/dist/src/utils/sha1.js +8 -8
  227. package/dist/test/collection-browser.test.d.ts +1 -1
  228. package/dist/test/collection-browser.test.js +1308 -1308
  229. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  230. package/dist/test/collection-facets/facet-row.test.js +227 -227
  231. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  232. package/dist/test/collection-facets/facets-template.test.js +91 -91
  233. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  234. package/dist/test/collection-facets/more-facets-content.test.js +141 -141
  235. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  236. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  237. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  238. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  239. package/dist/test/collection-facets.test.d.ts +2 -2
  240. package/dist/test/collection-facets.test.js +690 -690
  241. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  242. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  243. package/dist/test/empty-placeholder.test.d.ts +1 -1
  244. package/dist/test/empty-placeholder.test.js +63 -63
  245. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  246. package/dist/test/expanded-date-picker.test.js +95 -95
  247. package/dist/test/icon-overlay.test.d.ts +1 -1
  248. package/dist/test/icon-overlay.test.js +24 -24
  249. package/dist/test/image-block.test.d.ts +1 -1
  250. package/dist/test/image-block.test.js +107 -107
  251. package/dist/test/item-image.test.d.ts +1 -1
  252. package/dist/test/item-image.test.js +85 -85
  253. package/dist/test/manage/manage-bar.test.d.ts +2 -2
  254. package/dist/test/manage/manage-bar.test.js +100 -100
  255. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -1
  256. package/dist/test/manage/remove-items-modal-content.test.js +45 -45
  257. package/dist/test/mediatype-config.test.d.ts +1 -1
  258. package/dist/test/mediatype-config.test.js +16 -16
  259. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  260. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  261. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  262. package/dist/test/mocks/mock-search-responses.js +942 -942
  263. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  264. package/dist/test/mocks/mock-search-service.js +54 -54
  265. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  266. package/dist/test/restoration-state-handler.test.js +270 -270
  267. package/dist/test/review-block.test.d.ts +1 -1
  268. package/dist/test/review-block.test.js +44 -44
  269. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  270. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  271. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  272. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  273. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  274. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  275. package/dist/test/text-overlay.test.d.ts +1 -1
  276. package/dist/test/text-overlay.test.js +38 -38
  277. package/dist/test/text-snippet-block.test.d.ts +1 -1
  278. package/dist/test/text-snippet-block.test.js +57 -57
  279. package/dist/test/tile-stats.test.d.ts +1 -1
  280. package/dist/test/tile-stats.test.js +81 -81
  281. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  282. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  283. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  284. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  285. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  286. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  287. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  288. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  289. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  290. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  291. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  292. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  293. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  294. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  295. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  296. package/dist/test/tiles/list/tile-list.test.js +297 -297
  297. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  298. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  299. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  300. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  301. package/dist/test/utils/array-equals.test.d.ts +1 -1
  302. package/dist/test/utils/array-equals.test.js +26 -26
  303. package/dist/test/utils/format-count.test.d.ts +1 -1
  304. package/dist/test/utils/format-count.test.js +23 -23
  305. package/dist/test/utils/format-date.test.d.ts +1 -1
  306. package/dist/test/utils/format-date.test.js +30 -30
  307. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  308. package/dist/test/utils/format-unit-size.test.js +17 -17
  309. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  310. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  311. package/local.archive.org.cert +86 -86
  312. package/local.archive.org.key +27 -27
  313. package/package.json +2 -2
  314. package/renovate.json +6 -6
  315. package/web-dev-server.config.mjs +30 -30
  316. package/web-test-runner.config.mjs +41 -41
@@ -1,281 +1,281 @@
1
- import { __decorate } from "tslib";
2
- import { expect, fixture } from '@open-wc/testing';
3
- import { html, LitElement, nothing } from 'lit';
4
- import { customElement, property, query } from 'lit/decorators.js';
5
- import { HoverPaneController, } from '../../../src/tiles/hover/hover-pane-controller';
6
- import { TileModel } from '../../../src/models';
7
- let HostElement = class HostElement extends LitElement {
8
- constructor() {
9
- super(...arguments);
10
- this.suppressHoverPane = false;
11
- }
12
- render() {
13
- var _a;
14
- return html ` ${(_a = this.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()} `;
15
- }
16
- firstUpdated() {
17
- this.controller = new HoverPaneController(this, this.controllerOptions);
18
- }
19
- getHoverPane() {
20
- return this.suppressHoverPane ? undefined : this.hoverPane;
21
- }
22
- getHoverPaneProps() {
23
- const tileModel = new TileModel({});
24
- tileModel.checked = false;
25
- tileModel.collectionFilesCount = 1;
26
- tileModel.collections = ['foo', 'bar'];
27
- tileModel.collectionSize = 1;
28
- tileModel.commentCount = 1;
29
- tileModel.contentWarning = false;
30
- tileModel.creators = ['foo', 'bar'];
31
- tileModel.favCount = 1;
32
- tileModel.identifier = 'foo';
33
- tileModel.itemCount = 1;
34
- tileModel.loginRequired = false;
35
- tileModel.mediatype = 'data';
36
- tileModel.subjects = ['foo', 'bar'];
37
- tileModel.title = 'foo';
38
- tileModel.viewCount = 1;
39
- return {
40
- model: tileModel,
41
- loggedIn: false,
42
- sortParam: null,
43
- };
44
- }
45
- };
46
- __decorate([
47
- property({ type: Object })
48
- ], HostElement.prototype, "controllerOptions", void 0);
49
- __decorate([
50
- property({ type: Boolean })
51
- ], HostElement.prototype, "suppressHoverPane", void 0);
52
- __decorate([
53
- query('tile-hover-pane')
54
- ], HostElement.prototype, "hoverPane", void 0);
55
- HostElement = __decorate([
56
- customElement('host-element')
57
- ], HostElement);
58
- describe('Hover Pane Controller', () => {
59
- let oldMatchMedia;
60
- let oldOnTouchStart;
61
- before(() => {
62
- oldMatchMedia = window.matchMedia;
63
- oldOnTouchStart = window.ontouchstart;
64
- window.matchMedia = () => ({ matches: true });
65
- window.ontouchstart = () => { };
66
- });
67
- after(() => {
68
- window.matchMedia = oldMatchMedia;
69
- window.ontouchstart = oldOnTouchStart;
70
- });
71
- it('should initially provide empty template', async () => {
72
- var _a;
73
- const host = await fixture(html `<host-element></host-element>`);
74
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
75
- });
76
- it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {
77
- var _a, _b;
1
+ import { __decorate } from "tslib";
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html, LitElement, nothing } from 'lit';
4
+ import { customElement, property, query } from 'lit/decorators.js';
5
+ import { HoverPaneController, } from '../../../src/tiles/hover/hover-pane-controller';
6
+ import { TileModel } from '../../../src/models';
7
+ let HostElement = class HostElement extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.suppressHoverPane = false;
11
+ }
12
+ render() {
13
+ var _a;
14
+ return html ` ${(_a = this.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()} `;
15
+ }
16
+ firstUpdated() {
17
+ this.controller = new HoverPaneController(this, this.controllerOptions);
18
+ }
19
+ getHoverPane() {
20
+ return this.suppressHoverPane ? undefined : this.hoverPane;
21
+ }
22
+ getHoverPaneProps() {
23
+ const tileModel = new TileModel({});
24
+ tileModel.checked = false;
25
+ tileModel.collectionFilesCount = 1;
26
+ tileModel.collections = ['foo', 'bar'];
27
+ tileModel.collectionSize = 1;
28
+ tileModel.commentCount = 1;
29
+ tileModel.contentWarning = false;
30
+ tileModel.creators = ['foo', 'bar'];
31
+ tileModel.favCount = 1;
32
+ tileModel.identifier = 'foo';
33
+ tileModel.itemCount = 1;
34
+ tileModel.loginRequired = false;
35
+ tileModel.mediatype = 'data';
36
+ tileModel.subjects = ['foo', 'bar'];
37
+ tileModel.title = 'foo';
38
+ tileModel.viewCount = 1;
39
+ return {
40
+ model: tileModel,
41
+ loggedIn: false,
42
+ sortParam: null,
43
+ };
44
+ }
45
+ };
46
+ __decorate([
47
+ property({ type: Object })
48
+ ], HostElement.prototype, "controllerOptions", void 0);
49
+ __decorate([
50
+ property({ type: Boolean })
51
+ ], HostElement.prototype, "suppressHoverPane", void 0);
52
+ __decorate([
53
+ query('tile-hover-pane')
54
+ ], HostElement.prototype, "hoverPane", void 0);
55
+ HostElement = __decorate([
56
+ customElement('host-element')
57
+ ], HostElement);
58
+ describe('Hover Pane Controller', () => {
59
+ let oldMatchMedia;
60
+ let oldOnTouchStart;
61
+ before(() => {
62
+ oldMatchMedia = window.matchMedia;
63
+ oldOnTouchStart = window.ontouchstart;
64
+ window.matchMedia = () => ({ matches: true });
65
+ window.ontouchstart = () => { };
66
+ });
67
+ after(() => {
68
+ window.matchMedia = oldMatchMedia;
69
+ window.ontouchstart = oldOnTouchStart;
70
+ });
71
+ it('should initially provide empty template', async () => {
72
+ var _a;
73
+ const host = await fixture(html `<host-element></host-element>`);
74
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
75
+ });
76
+ it('should produce a hover pane template after mousemove, and hide it after mouseleave', async () => {
77
+ var _a, _b;
78
78
  const host = await fixture(html `<host-element
79
79
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
80
- ></host-element>`);
81
- host.dispatchEvent(new MouseEvent('mousemove'));
82
- // Need to wait a tick for the event handlers to run
83
- await new Promise(resolve => {
84
- setTimeout(resolve, 0);
85
- });
86
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
87
- host.dispatchEvent(new MouseEvent('mouseleave'));
88
- // Need to wait for the fade out transition
89
- await new Promise(resolve => {
90
- setTimeout(resolve, 150);
91
- });
92
- expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
93
- });
94
- it('should produce a hover pane template after mouseenter, even without mousemove', async () => {
95
- var _a;
80
+ ></host-element>`);
81
+ host.dispatchEvent(new MouseEvent('mousemove'));
82
+ // Need to wait a tick for the event handlers to run
83
+ await new Promise(resolve => {
84
+ setTimeout(resolve, 0);
85
+ });
86
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
87
+ host.dispatchEvent(new MouseEvent('mouseleave'));
88
+ // Need to wait for the fade out transition
89
+ await new Promise(resolve => {
90
+ setTimeout(resolve, 150);
91
+ });
92
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
93
+ });
94
+ it('should produce a hover pane template after mouseenter, even without mousemove', async () => {
95
+ var _a;
96
96
  const host = await fixture(html `<host-element
97
97
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
98
- ></host-element>`);
99
- host.dispatchEvent(new MouseEvent('mouseenter'));
100
- // Need to wait a tick for the event handlers to run
101
- await new Promise(resolve => {
102
- setTimeout(resolve, 0);
103
- });
104
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
105
- });
106
- it('should immediately fade back in if mouse enters while fading out', async () => {
107
- var _a;
98
+ ></host-element>`);
99
+ host.dispatchEvent(new MouseEvent('mouseenter'));
100
+ // Need to wait a tick for the event handlers to run
101
+ await new Promise(resolve => {
102
+ setTimeout(resolve, 0);
103
+ });
104
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
105
+ });
106
+ it('should immediately fade back in if mouse enters while fading out', async () => {
107
+ var _a;
108
108
  const host = await fixture(html `<host-element
109
109
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
110
- ></host-element>`);
111
- // Enter the host element and wait for the show handlers to run
112
- host.dispatchEvent(new MouseEvent('mousemove'));
113
- await new Promise(resolve => {
114
- setTimeout(resolve, 0);
115
- });
116
- // Leave the host element so it begins fading out, but not all the way
117
- host.dispatchEvent(new MouseEvent('mouseleave'));
118
- await new Promise(resolve => {
119
- setTimeout(resolve, 20);
120
- });
121
- // Re-enter the host element and wait long enough that it would disappear
122
- // if the hide were not cancelled
123
- host.dispatchEvent(new MouseEvent('mousemove'));
124
- await new Promise(resolve => {
125
- setTimeout(resolve, 150);
126
- });
127
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
128
- });
129
- it('should flip hover pane if it would overflow the viewport', async () => {
130
- var _a, _b, _c, _d, _e;
110
+ ></host-element>`);
111
+ // Enter the host element and wait for the show handlers to run
112
+ host.dispatchEvent(new MouseEvent('mousemove'));
113
+ await new Promise(resolve => {
114
+ setTimeout(resolve, 0);
115
+ });
116
+ // Leave the host element so it begins fading out, but not all the way
117
+ host.dispatchEvent(new MouseEvent('mouseleave'));
118
+ await new Promise(resolve => {
119
+ setTimeout(resolve, 20);
120
+ });
121
+ // Re-enter the host element and wait long enough that it would disappear
122
+ // if the hide were not cancelled
123
+ host.dispatchEvent(new MouseEvent('mousemove'));
124
+ await new Promise(resolve => {
125
+ setTimeout(resolve, 150);
126
+ });
127
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
128
+ });
129
+ it('should flip hover pane if it would overflow the viewport', async () => {
130
+ var _a, _b, _c, _d, _e;
131
131
  const host = await fixture(html `<host-element
132
132
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
133
- ></host-element>`);
134
- host.dispatchEvent(new MouseEvent('mousemove', { clientX: 800, clientY: 600 }));
135
- // Need to wait a tick for the event handlers to run
136
- await new Promise(resolve => {
137
- setTimeout(resolve, 0);
138
- });
139
- await host.updateComplete;
140
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
141
- expect((_c = (_b = host.getHoverPane()) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect()) === null || _c === void 0 ? void 0 : _c.right).to.be.lessThan(window.innerWidth);
142
- expect((_e = (_d = host.getHoverPane()) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect()) === null || _e === void 0 ? void 0 : _e.bottom).to.be.lessThan(window.innerHeight);
143
- });
144
- it('should gracefully handle undefined hover pane from host element', async () => {
145
- var _a, _b;
133
+ ></host-element>`);
134
+ host.dispatchEvent(new MouseEvent('mousemove', { clientX: 800, clientY: 600 }));
135
+ // Need to wait a tick for the event handlers to run
136
+ await new Promise(resolve => {
137
+ setTimeout(resolve, 0);
138
+ });
139
+ await host.updateComplete;
140
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
141
+ expect((_c = (_b = host.getHoverPane()) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect()) === null || _c === void 0 ? void 0 : _c.right).to.be.lessThan(window.innerWidth);
142
+ expect((_e = (_d = host.getHoverPane()) === null || _d === void 0 ? void 0 : _d.getBoundingClientRect()) === null || _e === void 0 ? void 0 : _e.bottom).to.be.lessThan(window.innerHeight);
143
+ });
144
+ it('should gracefully handle undefined hover pane from host element', async () => {
145
+ var _a, _b;
146
146
  const host = await fixture(html `<host-element
147
147
  .controllerOptions=${{ showDelay: 0, hideDelay: 0 }}
148
148
  ?suppressHoverPane=${true}
149
- ></host-element>`);
150
- host.dispatchEvent(new MouseEvent('mousemove'));
151
- // Need to wait a tick for the event handlers to run
152
- await new Promise(resolve => {
153
- setTimeout(resolve, 0);
154
- });
155
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
156
- host.dispatchEvent(new MouseEvent('mouseleave'));
157
- await new Promise(resolve => {
158
- setTimeout(resolve, 20);
159
- });
160
- host.dispatchEvent(new MouseEvent('mousemove'));
161
- await new Promise(resolve => {
162
- setTimeout(resolve, 0);
163
- });
164
- host.dispatchEvent(new MouseEvent('mouseleave'));
165
- // Need to wait for the fade out transition
166
- await new Promise(resolve => {
167
- setTimeout(resolve, 150);
168
- });
169
- expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
170
- });
171
- describe('Touch & long-press', () => {
172
- const getTouchStartEvent = (host) => new TouchEvent('touchstart', {
173
- touches: [new Touch({ identifier: 0, target: host })],
174
- });
175
- it('should produce a hover pane after long press', async () => {
176
- var _a;
149
+ ></host-element>`);
150
+ host.dispatchEvent(new MouseEvent('mousemove'));
151
+ // Need to wait a tick for the event handlers to run
152
+ await new Promise(resolve => {
153
+ setTimeout(resolve, 0);
154
+ });
155
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
156
+ host.dispatchEvent(new MouseEvent('mouseleave'));
157
+ await new Promise(resolve => {
158
+ setTimeout(resolve, 20);
159
+ });
160
+ host.dispatchEvent(new MouseEvent('mousemove'));
161
+ await new Promise(resolve => {
162
+ setTimeout(resolve, 0);
163
+ });
164
+ host.dispatchEvent(new MouseEvent('mouseleave'));
165
+ // Need to wait for the fade out transition
166
+ await new Promise(resolve => {
167
+ setTimeout(resolve, 150);
168
+ });
169
+ expect((_b = host.controller) === null || _b === void 0 ? void 0 : _b.getTemplate()).to.equal(nothing);
170
+ });
171
+ describe('Touch & long-press', () => {
172
+ const getTouchStartEvent = (host) => new TouchEvent('touchstart', {
173
+ touches: [new Touch({ identifier: 0, target: host })],
174
+ });
175
+ it('should produce a hover pane after long press', async () => {
176
+ var _a;
177
177
  const host = await fixture(html `<host-element
178
- .controllerOptions=${{
179
- showDelay: 0,
180
- longPressDelay: 0,
181
- enableLongPress: true,
178
+ .controllerOptions=${{
179
+ showDelay: 0,
180
+ longPressDelay: 0,
181
+ enableLongPress: true,
182
182
  }}
183
- ></host-element>`);
184
- // Touch the host element and wait for the long press handlers to run
185
- host.dispatchEvent(getTouchStartEvent(host));
186
- await new Promise(resolve => {
187
- setTimeout(resolve, 0);
188
- });
189
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
190
- });
191
- it('should cancel a long press by moving', async () => {
192
- var _a;
183
+ ></host-element>`);
184
+ // Touch the host element and wait for the long press handlers to run
185
+ host.dispatchEvent(getTouchStartEvent(host));
186
+ await new Promise(resolve => {
187
+ setTimeout(resolve, 0);
188
+ });
189
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing); // Is a TemplateResult
190
+ });
191
+ it('should cancel a long press by moving', async () => {
192
+ var _a;
193
193
  const host = await fixture(html `<host-element
194
- .controllerOptions=${{
195
- showDelay: 0,
196
- longPressDelay: 100,
197
- enableLongPress: true,
194
+ .controllerOptions=${{
195
+ showDelay: 0,
196
+ longPressDelay: 100,
197
+ enableLongPress: true,
198
198
  }}
199
- ></host-element>`);
200
- // Touch the host element
201
- host.dispatchEvent(getTouchStartEvent(host));
202
- await new Promise(resolve => {
203
- setTimeout(resolve, 0);
204
- });
205
- // Move the touch point, cancelling the long press
206
- host.dispatchEvent(new TouchEvent('touchmove'));
207
- await new Promise(resolve => {
208
- setTimeout(resolve, 150);
209
- });
210
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
211
- });
212
- it('should cancel a long press by ending touch', async () => {
213
- var _a;
199
+ ></host-element>`);
200
+ // Touch the host element
201
+ host.dispatchEvent(getTouchStartEvent(host));
202
+ await new Promise(resolve => {
203
+ setTimeout(resolve, 0);
204
+ });
205
+ // Move the touch point, cancelling the long press
206
+ host.dispatchEvent(new TouchEvent('touchmove'));
207
+ await new Promise(resolve => {
208
+ setTimeout(resolve, 150);
209
+ });
210
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
211
+ });
212
+ it('should cancel a long press by ending touch', async () => {
213
+ var _a;
214
214
  const host = await fixture(html `<host-element
215
- .controllerOptions=${{
216
- showDelay: 0,
217
- longPressDelay: 100,
218
- enableLongPress: true,
215
+ .controllerOptions=${{
216
+ showDelay: 0,
217
+ longPressDelay: 100,
218
+ enableLongPress: true,
219
219
  }}
220
- ></host-element>`);
221
- // Touch the host element
222
- host.dispatchEvent(getTouchStartEvent(host));
223
- await new Promise(resolve => {
224
- setTimeout(resolve, 0);
225
- });
226
- // Lift the touch point, cancelling the long press
227
- host.dispatchEvent(new TouchEvent('touchend'));
228
- await new Promise(resolve => {
229
- setTimeout(resolve, 150);
230
- });
231
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
232
- });
233
- it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {
234
- var _a;
220
+ ></host-element>`);
221
+ // Touch the host element
222
+ host.dispatchEvent(getTouchStartEvent(host));
223
+ await new Promise(resolve => {
224
+ setTimeout(resolve, 0);
225
+ });
226
+ // Lift the touch point, cancelling the long press
227
+ host.dispatchEvent(new TouchEvent('touchend'));
228
+ await new Promise(resolve => {
229
+ setTimeout(resolve, 150);
230
+ });
231
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
232
+ });
233
+ it('should cancel a long press by cancelling touch (e.g., too many touch points)', async () => {
234
+ var _a;
235
235
  const host = await fixture(html `<host-element
236
- .controllerOptions=${{
237
- showDelay: 0,
238
- longPressDelay: 100,
239
- enableLongPress: true,
236
+ .controllerOptions=${{
237
+ showDelay: 0,
238
+ longPressDelay: 100,
239
+ enableLongPress: true,
240
240
  }}
241
- ></host-element>`);
242
- // Touch the host element
243
- host.dispatchEvent(getTouchStartEvent(host));
244
- await new Promise(resolve => {
245
- setTimeout(resolve, 0);
246
- });
247
- // Cancel the touch point, also cancelling the long press
248
- host.dispatchEvent(new TouchEvent('touchcancel'));
249
- await new Promise(resolve => {
250
- setTimeout(resolve, 150);
251
- });
252
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
253
- });
254
- it('should close the hover pane on mobile when touching the backdrop', async () => {
255
- var _a, _b, _c, _d;
241
+ ></host-element>`);
242
+ // Touch the host element
243
+ host.dispatchEvent(getTouchStartEvent(host));
244
+ await new Promise(resolve => {
245
+ setTimeout(resolve, 0);
246
+ });
247
+ // Cancel the touch point, also cancelling the long press
248
+ host.dispatchEvent(new TouchEvent('touchcancel'));
249
+ await new Promise(resolve => {
250
+ setTimeout(resolve, 150);
251
+ });
252
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).to.equal(nothing);
253
+ });
254
+ it('should close the hover pane on mobile when touching the backdrop', async () => {
255
+ var _a, _b, _c, _d;
256
256
  const host = await fixture(html `<host-element
257
- .controllerOptions=${{
258
- showDelay: 0,
259
- hideDelay: 0,
260
- longPressDelay: 0,
261
- enableLongPress: true,
262
- mobileBreakpoint: 9999, // Ensure we get the mobile view
257
+ .controllerOptions=${{
258
+ showDelay: 0,
259
+ hideDelay: 0,
260
+ longPressDelay: 0,
261
+ enableLongPress: true,
262
+ mobileBreakpoint: 9999, // Ensure we get the mobile view
263
263
  }}
264
- ></host-element>`);
265
- // Touch the host element
266
- host.dispatchEvent(getTouchStartEvent(host));
267
- await new Promise(resolve => {
268
- setTimeout(resolve, 0);
269
- });
270
- expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
271
- await host.updateComplete;
272
- // Touch the backdrop
273
- (_c = (_b = host.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#touch-backdrop')) === null || _c === void 0 ? void 0 : _c.dispatchEvent(new TouchEvent('touchstart'));
274
- await new Promise(resolve => {
275
- setTimeout(resolve, 150);
276
- });
277
- expect((_d = host.controller) === null || _d === void 0 ? void 0 : _d.getTemplate()).to.equal(nothing);
278
- });
279
- });
280
- });
264
+ ></host-element>`);
265
+ // Touch the host element
266
+ host.dispatchEvent(getTouchStartEvent(host));
267
+ await new Promise(resolve => {
268
+ setTimeout(resolve, 0);
269
+ });
270
+ expect((_a = host.controller) === null || _a === void 0 ? void 0 : _a.getTemplate()).not.to.equal(nothing);
271
+ await host.updateComplete;
272
+ // Touch the backdrop
273
+ (_c = (_b = host.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('#touch-backdrop')) === null || _c === void 0 ? void 0 : _c.dispatchEvent(new TouchEvent('touchstart'));
274
+ await new Promise(resolve => {
275
+ setTimeout(resolve, 150);
276
+ });
277
+ expect((_d = host.controller) === null || _d === void 0 ? void 0 : _d.getTemplate()).to.equal(nothing);
278
+ });
279
+ });
280
+ });
281
281
  //# sourceMappingURL=hover-pane-controller.test.js.map
@@ -1 +1 @@
1
- import '../../../src/tiles/hover/tile-hover-pane';
1
+ import '../../../src/tiles/hover/tile-hover-pane';