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