@internetarchive/collection-browser 2.4.1-alpha.1 → 2.4.1-alpha2

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 (293) 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 +12 -12
  6. package/dist/index.js +12 -12
  7. package/dist/src/app-root.d.ts +91 -91
  8. package/dist/src/app-root.js +487 -487
  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/login-required.d.ts +1 -1
  30. package/dist/src/assets/img/icons/login-required.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  59. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  60. package/dist/src/assets/img/icons/null-result.js +2 -2
  61. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  62. package/dist/src/assets/img/icons/restricted.js +2 -2
  63. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  64. package/dist/src/assets/img/icons/reviews.js +2 -2
  65. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  66. package/dist/src/assets/img/icons/upload.js +2 -2
  67. package/dist/src/assets/img/icons/views.d.ts +1 -1
  68. package/dist/src/assets/img/icons/views.js +2 -2
  69. package/dist/src/circular-activity-indicator.d.ts +5 -5
  70. package/dist/src/circular-activity-indicator.js +17 -17
  71. package/dist/src/collection-browser.d.ts +466 -466
  72. package/dist/src/collection-browser.js +1475 -1475
  73. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  74. package/dist/src/collection-facets/facet-row.js +114 -114
  75. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  76. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  77. package/dist/src/collection-facets/facets-template.d.ts +17 -17
  78. package/dist/src/collection-facets/facets-template.js +114 -114
  79. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  80. package/dist/src/collection-facets/more-facets-content.js +360 -360
  81. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  82. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  83. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  84. package/dist/src/collection-facets/toggle-switch.js +94 -94
  85. package/dist/src/collection-facets.d.ts +103 -103
  86. package/dist/src/collection-facets.js +510 -510
  87. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  88. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  89. package/dist/src/data-source/collection-browser-data-source.d.ts +378 -378
  90. package/dist/src/data-source/collection-browser-data-source.js +985 -985
  91. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  92. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  93. package/dist/src/data-source/models.d.ts +28 -28
  94. package/dist/src/data-source/models.js +8 -8
  95. package/dist/src/empty-placeholder.d.ts +23 -23
  96. package/dist/src/empty-placeholder.js +74 -74
  97. package/dist/src/expanded-date-picker.d.ts +43 -43
  98. package/dist/src/expanded-date-picker.js +109 -109
  99. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  100. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  101. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  102. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  103. package/dist/src/manage/manage-bar.d.ts +30 -30
  104. package/dist/src/manage/manage-bar.js +61 -61
  105. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  106. package/dist/src/mediatype/mediatype-config.js +91 -91
  107. package/dist/src/models.d.ts +209 -209
  108. package/dist/src/models.js +381 -381
  109. package/dist/src/restoration-state-handler.d.ts +70 -70
  110. package/dist/src/restoration-state-handler.js +357 -363
  111. package/dist/src/restoration-state-handler.js.map +1 -1
  112. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  113. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  114. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  115. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  116. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  117. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  118. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  119. package/dist/src/sort-filter-bar/img/list.js +2 -2
  120. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  121. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  122. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  123. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  124. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  126. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  128. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  130. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +222 -222
  131. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -696
  132. package/dist/src/styles/ia-button.d.ts +2 -2
  133. package/dist/src/styles/ia-button.js +16 -16
  134. package/dist/src/styles/item-image-styles.d.ts +8 -8
  135. package/dist/src/styles/item-image-styles.js +9 -9
  136. package/dist/src/styles/sr-only.d.ts +1 -1
  137. package/dist/src/styles/sr-only.js +2 -2
  138. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  139. package/dist/src/tiles/base-tile-component.js +63 -63
  140. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  141. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  142. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  143. package/dist/src/tiles/grid/account-tile.js +72 -72
  144. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  145. package/dist/src/tiles/grid/collection-tile.js +80 -80
  146. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  147. package/dist/src/tiles/grid/item-tile.js +149 -149
  148. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  149. package/dist/src/tiles/grid/search-tile.js +51 -51
  150. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  151. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  152. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  153. package/dist/src/tiles/grid/tile-stats.js +53 -53
  154. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  155. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  156. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  157. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  158. package/dist/src/tiles/image-block.d.ts +17 -17
  159. package/dist/src/tiles/image-block.js +73 -73
  160. package/dist/src/tiles/item-image.d.ts +39 -39
  161. package/dist/src/tiles/item-image.js +154 -154
  162. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  163. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  164. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  165. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  166. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  167. package/dist/src/tiles/list/tile-list.js +315 -315
  168. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  169. package/dist/src/tiles/mediatype-icon.js +47 -47
  170. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  171. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  172. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  173. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  174. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  175. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  176. package/dist/src/tiles/review-block.d.ts +12 -12
  177. package/dist/src/tiles/review-block.js +56 -56
  178. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  179. package/dist/src/tiles/text-snippet-block.js +73 -73
  180. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  181. package/dist/src/tiles/tile-dispatcher.js +229 -229
  182. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  183. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  184. package/dist/src/utils/analytics-events.d.ts +28 -28
  185. package/dist/src/utils/analytics-events.js +30 -30
  186. package/dist/src/utils/array-equals.d.ts +4 -4
  187. package/dist/src/utils/array-equals.js +10 -10
  188. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  189. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  190. package/dist/src/utils/format-count.d.ts +7 -7
  191. package/dist/src/utils/format-count.js +76 -76
  192. package/dist/src/utils/format-date.d.ts +2 -2
  193. package/dist/src/utils/format-date.js +25 -25
  194. package/dist/src/utils/format-unit-size.d.ts +2 -2
  195. package/dist/src/utils/format-unit-size.js +33 -33
  196. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  197. package/dist/src/utils/local-date-from-utc.js +15 -15
  198. package/dist/src/utils/log.d.ts +7 -7
  199. package/dist/src/utils/log.js +15 -15
  200. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  201. package/dist/src/utils/resolve-mediatype.js +23 -23
  202. package/dist/src/utils/sha1.d.ts +2 -2
  203. package/dist/src/utils/sha1.js +8 -8
  204. package/dist/test/collection-browser.test.d.ts +1 -1
  205. package/dist/test/collection-browser.test.js +1293 -1293
  206. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  207. package/dist/test/collection-facets/facet-row.test.js +203 -203
  208. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  209. package/dist/test/collection-facets/facets-template.test.js +105 -105
  210. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  211. package/dist/test/collection-facets/more-facets-content.test.js +139 -139
  212. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  213. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  214. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  215. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  216. package/dist/test/collection-facets.test.d.ts +2 -2
  217. package/dist/test/collection-facets.test.js +652 -652
  218. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  219. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  220. package/dist/test/empty-placeholder.test.d.ts +1 -1
  221. package/dist/test/empty-placeholder.test.js +63 -63
  222. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  223. package/dist/test/expanded-date-picker.test.js +95 -95
  224. package/dist/test/icon-overlay.test.d.ts +1 -1
  225. package/dist/test/icon-overlay.test.js +24 -24
  226. package/dist/test/image-block.test.d.ts +1 -1
  227. package/dist/test/image-block.test.js +48 -48
  228. package/dist/test/item-image.test.d.ts +1 -1
  229. package/dist/test/item-image.test.js +85 -85
  230. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  231. package/dist/test/manage/manage-bar.test.js +81 -81
  232. package/dist/test/mediatype-config.test.d.ts +1 -1
  233. package/dist/test/mediatype-config.test.js +16 -16
  234. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  235. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  236. package/dist/test/mocks/mock-search-responses.d.ts +24 -24
  237. package/dist/test/mocks/mock-search-responses.js +860 -860
  238. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  239. package/dist/test/mocks/mock-search-service.js +53 -53
  240. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  241. package/dist/test/restoration-state-handler.test.js +270 -270
  242. package/dist/test/review-block.test.d.ts +1 -1
  243. package/dist/test/review-block.test.js +44 -44
  244. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  245. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  246. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  247. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  248. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  249. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  250. package/dist/test/text-overlay.test.d.ts +1 -1
  251. package/dist/test/text-overlay.test.js +48 -48
  252. package/dist/test/text-snippet-block.test.d.ts +1 -1
  253. package/dist/test/text-snippet-block.test.js +57 -57
  254. package/dist/test/tile-stats.test.d.ts +1 -1
  255. package/dist/test/tile-stats.test.js +81 -81
  256. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  257. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  258. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  259. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  260. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  261. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  262. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  263. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  264. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  265. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  266. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  267. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  268. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  269. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  270. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  271. package/dist/test/tiles/list/tile-list.test.js +297 -297
  272. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  273. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  274. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  275. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  276. package/dist/test/utils/array-equals.test.d.ts +1 -1
  277. package/dist/test/utils/array-equals.test.js +26 -26
  278. package/dist/test/utils/format-count.test.d.ts +1 -1
  279. package/dist/test/utils/format-count.test.js +23 -23
  280. package/dist/test/utils/format-date.test.d.ts +1 -1
  281. package/dist/test/utils/format-date.test.js +17 -17
  282. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  283. package/dist/test/utils/format-unit-size.test.js +17 -17
  284. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  285. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  286. package/local.archive.org.cert +86 -86
  287. package/local.archive.org.key +27 -27
  288. package/package.json +2 -2
  289. package/renovate.json +6 -6
  290. package/src/restoration-state-handler.ts +0 -5
  291. package/tsconfig.json +21 -21
  292. package/web-dev-server.config.mjs +30 -30
  293. 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';