@internetarchive/collection-browser 2.3.0 → 2.4.0

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 (299) 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 -357
  111. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  112. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  113. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  114. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  115. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  116. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  117. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  118. package/dist/src/sort-filter-bar/img/list.js +2 -2
  119. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  120. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  121. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  122. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  123. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  124. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  125. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  126. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  127. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  128. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  129. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +222 -222
  130. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -696
  131. package/dist/src/styles/ia-button.d.ts +2 -2
  132. package/dist/src/styles/ia-button.js +16 -16
  133. package/dist/src/styles/item-image-styles.d.ts +8 -8
  134. package/dist/src/styles/item-image-styles.js +9 -9
  135. package/dist/src/styles/sr-only.d.ts +1 -1
  136. package/dist/src/styles/sr-only.js +2 -2
  137. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  138. package/dist/src/tiles/base-tile-component.js +63 -63
  139. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  140. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  141. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  142. package/dist/src/tiles/grid/account-tile.js +72 -72
  143. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  144. package/dist/src/tiles/grid/collection-tile.js +80 -80
  145. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  146. package/dist/src/tiles/grid/item-tile.js +149 -149
  147. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  148. package/dist/src/tiles/grid/search-tile.js +51 -51
  149. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  150. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  151. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  152. package/dist/src/tiles/grid/tile-stats.js +53 -53
  153. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  154. package/dist/src/tiles/hover/hover-pane-controller.js +354 -352
  155. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  156. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -15
  157. package/dist/src/tiles/hover/tile-hover-pane.js +127 -47
  158. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  159. package/dist/src/tiles/image-block.d.ts +17 -17
  160. package/dist/src/tiles/image-block.js +74 -74
  161. package/dist/src/tiles/image-block.js.map +1 -1
  162. package/dist/src/tiles/item-image.d.ts +39 -39
  163. package/dist/src/tiles/item-image.js +154 -154
  164. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  165. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  166. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  167. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  168. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  169. package/dist/src/tiles/list/tile-list.js +315 -315
  170. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  171. package/dist/src/tiles/mediatype-icon.js +47 -47
  172. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  173. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  174. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  175. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  176. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  177. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  178. package/dist/src/tiles/review-block.d.ts +12 -12
  179. package/dist/src/tiles/review-block.js +56 -56
  180. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  181. package/dist/src/tiles/text-snippet-block.js +73 -73
  182. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  183. package/dist/src/tiles/tile-dispatcher.js +229 -229
  184. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  185. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  186. package/dist/src/utils/analytics-events.d.ts +28 -28
  187. package/dist/src/utils/analytics-events.js +30 -30
  188. package/dist/src/utils/array-equals.d.ts +4 -4
  189. package/dist/src/utils/array-equals.js +10 -10
  190. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  191. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  192. package/dist/src/utils/format-count.d.ts +7 -7
  193. package/dist/src/utils/format-count.js +76 -76
  194. package/dist/src/utils/format-date.d.ts +2 -2
  195. package/dist/src/utils/format-date.js +25 -25
  196. package/dist/src/utils/format-unit-size.d.ts +2 -2
  197. package/dist/src/utils/format-unit-size.js +33 -33
  198. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  199. package/dist/src/utils/local-date-from-utc.js +15 -15
  200. package/dist/src/utils/log.d.ts +7 -7
  201. package/dist/src/utils/log.js +15 -15
  202. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  203. package/dist/src/utils/resolve-mediatype.js +23 -23
  204. package/dist/src/utils/sha1.d.ts +2 -2
  205. package/dist/src/utils/sha1.js +8 -8
  206. package/dist/test/collection-browser.test.d.ts +1 -1
  207. package/dist/test/collection-browser.test.js +1293 -1293
  208. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  209. package/dist/test/collection-facets/facet-row.test.js +203 -203
  210. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  211. package/dist/test/collection-facets/facets-template.test.js +105 -105
  212. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  213. package/dist/test/collection-facets/more-facets-content.test.js +139 -139
  214. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  215. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  216. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  217. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  218. package/dist/test/collection-facets.test.d.ts +2 -2
  219. package/dist/test/collection-facets.test.js +652 -652
  220. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  221. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  222. package/dist/test/empty-placeholder.test.d.ts +1 -1
  223. package/dist/test/empty-placeholder.test.js +63 -63
  224. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  225. package/dist/test/expanded-date-picker.test.js +95 -95
  226. package/dist/test/icon-overlay.test.d.ts +1 -1
  227. package/dist/test/icon-overlay.test.js +24 -24
  228. package/dist/test/image-block.test.d.ts +1 -1
  229. package/dist/test/image-block.test.js +48 -48
  230. package/dist/test/item-image.test.d.ts +1 -1
  231. package/dist/test/item-image.test.js +85 -85
  232. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  233. package/dist/test/manage/manage-bar.test.js +81 -81
  234. package/dist/test/mediatype-config.test.d.ts +1 -1
  235. package/dist/test/mediatype-config.test.js +16 -16
  236. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  237. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  238. package/dist/test/mocks/mock-search-responses.d.ts +24 -24
  239. package/dist/test/mocks/mock-search-responses.js +860 -860
  240. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  241. package/dist/test/mocks/mock-search-service.js +53 -53
  242. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  243. package/dist/test/restoration-state-handler.test.js +270 -270
  244. package/dist/test/review-block.test.d.ts +1 -1
  245. package/dist/test/review-block.test.js +44 -44
  246. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  247. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  248. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  249. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  250. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  251. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  252. package/dist/test/text-overlay.test.d.ts +1 -1
  253. package/dist/test/text-overlay.test.js +48 -48
  254. package/dist/test/text-snippet-block.test.d.ts +1 -1
  255. package/dist/test/text-snippet-block.test.js +57 -57
  256. package/dist/test/tile-stats.test.d.ts +1 -1
  257. package/dist/test/tile-stats.test.js +81 -81
  258. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  259. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  260. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  261. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  262. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  263. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  264. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  265. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  266. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  267. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  268. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  269. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -13
  270. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  271. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  272. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  273. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  274. package/dist/test/tiles/list/tile-list.test.js +297 -297
  275. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  276. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  277. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  278. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  279. package/dist/test/utils/array-equals.test.d.ts +1 -1
  280. package/dist/test/utils/array-equals.test.js +26 -26
  281. package/dist/test/utils/format-count.test.d.ts +1 -1
  282. package/dist/test/utils/format-count.test.js +23 -23
  283. package/dist/test/utils/format-date.test.d.ts +1 -1
  284. package/dist/test/utils/format-date.test.js +17 -17
  285. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  286. package/dist/test/utils/format-unit-size.test.js +17 -17
  287. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  288. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  289. package/local.archive.org.cert +86 -86
  290. package/local.archive.org.key +27 -27
  291. package/package.json +1 -1
  292. package/renovate.json +6 -6
  293. package/src/tiles/hover/hover-pane-controller.ts +2 -0
  294. package/src/tiles/hover/tile-hover-pane.ts +100 -11
  295. package/src/tiles/image-block.ts +1 -1
  296. package/test/tiles/hover/tile-hover-pane.test.ts +61 -0
  297. package/tsconfig.json +21 -21
  298. package/web-dev-server.config.mjs +30 -30
  299. package/web-test-runner.config.mjs +41 -41
@@ -1 +1 @@
1
- import '../../src/tiles/tile-dispatcher';
1
+ import '../../src/tiles/tile-dispatcher';
@@ -1,80 +1,80 @@
1
- import { aTimeout, expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import sinon from 'sinon';
4
- import '../../src/tiles/tile-dispatcher';
5
- import { TileHoverPane } from '../../src/tiles/hover/tile-hover-pane';
6
- describe('Tile Dispatcher', () => {
7
- it('should render item-tile for grid mode by default', async () => {
8
- var _a;
1
+ import { aTimeout, expect, fixture } from '@open-wc/testing';
2
+ import { html } from 'lit';
3
+ import sinon from 'sinon';
4
+ import '../../src/tiles/tile-dispatcher';
5
+ import { TileHoverPane } from '../../src/tiles/hover/tile-hover-pane';
6
+ describe('Tile Dispatcher', () => {
7
+ it('should render item-tile for grid mode by default', async () => {
8
+ var _a;
9
9
  const el = await fixture(html `
10
10
  <tile-dispatcher
11
11
  .tileDisplayMode=${'grid'}
12
12
  .model=${{ mediatype: 'texts' }}
13
13
  >
14
14
  </tile-dispatcher>
15
- `);
16
- const itemTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('item-tile');
17
- expect(itemTile).to.exist;
18
- });
19
- it('should render collection-tile for grid mode and collection mediatype', async () => {
20
- var _a;
15
+ `);
16
+ const itemTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('item-tile');
17
+ expect(itemTile).to.exist;
18
+ });
19
+ it('should render collection-tile for grid mode and collection mediatype', async () => {
20
+ var _a;
21
21
  const el = await fixture(html `
22
22
  <tile-dispatcher
23
23
  .tileDisplayMode=${'grid'}
24
24
  .model=${{ mediatype: 'collection' }}
25
25
  >
26
26
  </tile-dispatcher>
27
- `);
28
- const collectionTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-tile');
29
- expect(collectionTile).to.exist;
30
- });
31
- it('should render account-tile for grid mode and account mediatype', async () => {
32
- var _a;
27
+ `);
28
+ const collectionTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('collection-tile');
29
+ expect(collectionTile).to.exist;
30
+ });
31
+ it('should render account-tile for grid mode and account mediatype', async () => {
32
+ var _a;
33
33
  const el = await fixture(html `
34
34
  <tile-dispatcher
35
35
  .tileDisplayMode=${'grid'}
36
36
  .model=${{ mediatype: 'account' }}
37
37
  >
38
38
  </tile-dispatcher>
39
- `);
40
- const accountTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('account-tile');
41
- expect(accountTile).to.exist;
42
- });
43
- it('should render search-tile for grid mode and search mediatype', async () => {
44
- var _a;
39
+ `);
40
+ const accountTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('account-tile');
41
+ expect(accountTile).to.exist;
42
+ });
43
+ it('should render search-tile for grid mode and search mediatype', async () => {
44
+ var _a;
45
45
  const el = await fixture(html `
46
46
  <tile-dispatcher
47
47
  .tileDisplayMode=${'grid'}
48
48
  .model=${{ mediatype: 'search' }}
49
49
  >
50
50
  </tile-dispatcher>
51
- `);
52
- const searchTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-tile');
53
- expect(searchTile).to.exist;
54
- });
55
- it('should render tile-list for extended list mode', async () => {
56
- var _a;
51
+ `);
52
+ const searchTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-tile');
53
+ expect(searchTile).to.exist;
54
+ });
55
+ it('should render tile-list for extended list mode', async () => {
56
+ var _a;
57
57
  const el = await fixture(html `
58
58
  <tile-dispatcher .tileDisplayMode=${'list-detail'} .model=${{}}>
59
59
  </tile-dispatcher>
60
- `);
61
- const listTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('tile-list');
62
- expect(listTile).to.exist;
63
- });
64
- it('should render tile-list-compact for compact list mode', async () => {
65
- var _a;
60
+ `);
61
+ const listTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('tile-list');
62
+ expect(listTile).to.exist;
63
+ });
64
+ it('should render tile-list-compact for compact list mode', async () => {
65
+ var _a;
66
66
  const el = await fixture(html `
67
67
  <tile-dispatcher .tileDisplayMode=${'list-compact'} .model=${{}}>
68
68
  </tile-dispatcher>
69
- `);
70
- const compactListTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('tile-list-compact');
71
- expect(compactListTile).to.exist;
72
- });
73
- it('should open item in new tab when right-clicked in manage mode', async () => {
74
- var _a;
75
- const oldWindowOpen = window.open;
76
- const spy = sinon.spy();
77
- window.open = spy;
69
+ `);
70
+ const compactListTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('tile-list-compact');
71
+ expect(compactListTile).to.exist;
72
+ });
73
+ it('should open item in new tab when right-clicked in manage mode', async () => {
74
+ var _a;
75
+ const oldWindowOpen = window.open;
76
+ const spy = sinon.spy();
77
+ window.open = spy;
78
78
  const el = await fixture(html `
79
79
  <tile-dispatcher
80
80
  isManageView
@@ -82,51 +82,51 @@ describe('Tile Dispatcher', () => {
82
82
  .baseNavigationUrl=${''}
83
83
  >
84
84
  </tile-dispatcher>
85
- `);
86
- const tileLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a[href]');
87
- expect(tileLink).to.exist;
88
- tileLink.dispatchEvent(new Event('contextmenu'));
89
- await el.updateComplete;
90
- expect(spy.callCount).to.equal(1);
91
- expect(spy.args[0][0]).to.equal('/foo');
92
- expect(spy.args[0][1]).to.equal('_blank');
93
- window.open = oldWindowOpen;
94
- });
95
- it('should toggle model checked state when manage check clicked', async () => {
96
- var _a, _b, _c;
85
+ `);
86
+ const tileLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a[href]');
87
+ expect(tileLink).to.exist;
88
+ tileLink.dispatchEvent(new Event('contextmenu'));
89
+ await el.updateComplete;
90
+ expect(spy.callCount).to.equal(1);
91
+ expect(spy.args[0][0]).to.equal('/foo');
92
+ expect(spy.args[0][1]).to.equal('_blank');
93
+ window.open = oldWindowOpen;
94
+ });
95
+ it('should toggle model checked state when manage check clicked', async () => {
96
+ var _a, _b, _c;
97
97
  const el = await fixture(html `
98
98
  <tile-dispatcher
99
99
  isManageView
100
100
  .model=${{ identifier: 'foo', href: '/foo' }}
101
101
  .tileDisplayMode=${'grid'}
102
102
  ></tile-dispatcher>
103
- `);
104
- const manageCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.manage-check > input[type="checkbox"]');
105
- manageCheck.click();
106
- await el.updateComplete;
107
- expect((_b = el.model) === null || _b === void 0 ? void 0 : _b.checked).to.be.true;
108
- manageCheck.click();
109
- await el.updateComplete;
110
- expect((_c = el.model) === null || _c === void 0 ? void 0 : _c.checked).to.be.false;
111
- });
112
- it('should return hover pane props', async () => {
103
+ `);
104
+ const manageCheck = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.manage-check > input[type="checkbox"]');
105
+ manageCheck.click();
106
+ await el.updateComplete;
107
+ expect((_b = el.model) === null || _b === void 0 ? void 0 : _b.checked).to.be.true;
108
+ manageCheck.click();
109
+ await el.updateComplete;
110
+ expect((_c = el.model) === null || _c === void 0 ? void 0 : _c.checked).to.be.false;
111
+ });
112
+ it('should return hover pane props', async () => {
113
113
  const el = await fixture(html `
114
114
  <tile-dispatcher .model=${{ identifier: 'foo' }}> </tile-dispatcher>
115
- `);
116
- expect(el.getHoverPaneProps()).to.satisfy((props) => { var _a; return ((_a = props === null || props === void 0 ? void 0 : props.model) === null || _a === void 0 ? void 0 : _a.identifier) === 'foo'; });
117
- });
118
- describe('Hover pane info button behavior', () => {
119
- let oldMatchMedia;
120
- before(() => {
121
- oldMatchMedia = window.matchMedia;
122
- // Pretend that there is no hover-capable input device
123
- window.matchMedia = () => ({ matches: false });
124
- });
125
- after(() => {
126
- window.matchMedia = oldMatchMedia;
127
- });
128
- it('should toggle hover pane when tile info button is pressed', async () => {
129
- var _a, _b;
115
+ `);
116
+ expect(el.getHoverPaneProps()).to.satisfy((props) => { var _a; return ((_a = props === null || props === void 0 ? void 0 : props.model) === null || _a === void 0 ? void 0 : _a.identifier) === 'foo'; });
117
+ });
118
+ describe('Hover pane info button behavior', () => {
119
+ let oldMatchMedia;
120
+ before(() => {
121
+ oldMatchMedia = window.matchMedia;
122
+ // Pretend that there is no hover-capable input device
123
+ window.matchMedia = () => ({ matches: false });
124
+ });
125
+ after(() => {
126
+ window.matchMedia = oldMatchMedia;
127
+ });
128
+ it('should toggle hover pane when tile info button is pressed', async () => {
129
+ var _a, _b;
130
130
  const el = await fixture(html `
131
131
  <tile-dispatcher
132
132
  .tileDisplayMode=${'grid'}
@@ -134,20 +134,20 @@ describe('Tile Dispatcher', () => {
134
134
  .enableHoverPane=${true}
135
135
  >
136
136
  </tile-dispatcher>
137
- `);
138
- const itemTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('item-tile');
139
- expect(itemTile).to.exist;
140
- const infoButton = (_b = itemTile.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.info-button');
141
- expect(infoButton).to.exist;
142
- infoButton.click();
143
- await aTimeout(500);
144
- await el.updateComplete;
145
- expect(el.getHoverPane()).to.be.instanceOf(TileHoverPane);
146
- infoButton.click();
147
- await aTimeout(500);
148
- await el.updateComplete;
149
- expect(el.getHoverPane()).not.to.exist;
150
- });
151
- });
152
- });
137
+ `);
138
+ const itemTile = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('item-tile');
139
+ expect(itemTile).to.exist;
140
+ const infoButton = (_b = itemTile.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.info-button');
141
+ expect(infoButton).to.exist;
142
+ infoButton.click();
143
+ await aTimeout(500);
144
+ await el.updateComplete;
145
+ expect(el.getHoverPane()).to.be.instanceOf(TileHoverPane);
146
+ infoButton.click();
147
+ await aTimeout(500);
148
+ await el.updateComplete;
149
+ expect(el.getHoverPane()).not.to.exist;
150
+ });
151
+ });
152
+ });
153
153
  //# sourceMappingURL=tile-dispatcher.test.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,142 +1,142 @@
1
- import { expect } from '@open-wc/testing';
2
- import { nothing } from 'lit';
3
- import { TileDisplayValueProvider } from '../../src/tiles/tile-display-value-provider';
4
- describe('Tile Display Value Provider', () => {
5
- describe('basic construction', () => {
6
- it('constructs w/ no options', () => {
7
- const provider = new TileDisplayValueProvider();
8
- expect(provider).to.exist;
9
- });
10
- it('constructs w/ options', () => {
11
- const provider = new TileDisplayValueProvider({
12
- model: {},
13
- baseNavigationUrl: 'foo',
14
- collectionPagePath: 'bar',
15
- sortParam: { field: 'baz', direction: 'asc' },
16
- creatorFilter: 'X',
17
- });
18
- expect(provider).to.exist;
19
- });
20
- });
21
- describe('firstCreatorMatchingFilter', () => {
22
- it('provides undefined creator when no model set', () => {
23
- const provider = new TileDisplayValueProvider();
24
- expect(provider.firstCreatorMatchingFilter).to.be.undefined;
25
- });
26
- it('provides creator from model with no filter', () => {
27
- const provider = new TileDisplayValueProvider({
28
- model: { creator: 'foo', creators: ['foo', 'bar', 'baz'] },
29
- });
30
- expect(provider.firstCreatorMatchingFilter).to.equal('foo');
31
- });
32
- it('provides first creator matching filter when present', () => {
33
- const provider = new TileDisplayValueProvider({
34
- model: { creator: 'foo', creators: ['foo', 'bar', 'baz'] },
35
- creatorFilter: 'B',
36
- });
37
- expect(provider.firstCreatorMatchingFilter).to.equal('bar');
38
- });
39
- it('matches letters with diacritics', () => {
40
- const provider = new TileDisplayValueProvider({
41
- model: {
42
- creator: 'foo',
43
- creators: ['foo', 'émile', 'ernest'],
44
- },
45
- creatorFilter: 'E',
46
- });
47
- expect(provider.firstCreatorMatchingFilter).to.equal('émile');
48
- });
49
- it('ignores non-alphabetical characters when matching', () => {
50
- const provider = new TileDisplayValueProvider({
51
- model: {
52
- creator: 'foo',
53
- creators: ['foo', '"(bar)"', 'baz'],
54
- },
55
- creatorFilter: 'B',
56
- });
57
- expect(provider.firstCreatorMatchingFilter).to.equal('"(bar)"');
58
- });
59
- });
60
- describe('accountLabel', () => {
61
- it('provides empty account label when no model', () => {
62
- const provider = new TileDisplayValueProvider();
63
- expect(provider.accountLabel).to.equal('');
64
- });
65
- it('provides empty account label when no date added', () => {
66
- const provider = new TileDisplayValueProvider({ model: {} });
67
- expect(provider.accountLabel).to.equal('');
68
- });
69
- it('provides Archivist label from date added', () => {
70
- const provider = new TileDisplayValueProvider({
71
- model: { dateAdded: new Date(2010, 1, 2) },
72
- });
73
- expect(provider.accountLabel).to.equal('Archivist since 2010');
74
- });
75
- });
76
- describe('dateLabel', () => {
77
- it('provides empty date label when no sort param', () => {
78
- const provider = new TileDisplayValueProvider();
79
- expect(provider.dateLabel).to.equal('');
80
- });
81
- it('provides empty date label when sorting by non-date', () => {
82
- const provider = new TileDisplayValueProvider({
83
- sortParam: { field: 'downloads', direction: 'desc' },
84
- });
85
- expect(provider.dateLabel).to.equal('');
86
- });
87
- it('provides correct date label for publicdate', () => {
88
- const provider = new TileDisplayValueProvider({
89
- sortParam: { field: 'publicdate', direction: 'asc' },
90
- });
91
- expect(provider.dateLabel).to.equal('Archived');
92
- });
93
- it('provides correct date label for reviewdate', () => {
94
- const provider = new TileDisplayValueProvider({
95
- sortParam: { field: 'reviewdate', direction: 'asc' },
96
- });
97
- expect(provider.dateLabel).to.equal('Reviewed');
98
- });
99
- it('provides correct date label for addeddate', () => {
100
- const provider = new TileDisplayValueProvider({
101
- sortParam: { field: 'addeddate', direction: 'asc' },
102
- });
103
- expect(provider.dateLabel).to.equal('Added');
104
- });
105
- it('provides correct date label for published date', () => {
106
- const provider = new TileDisplayValueProvider({
107
- sortParam: { field: 'date', direction: 'asc' },
108
- });
109
- expect(provider.dateLabel).to.equal('Published');
110
- });
111
- });
112
- describe('itemPageUrl', () => {
113
- it('provides nothing when no base url set', () => {
114
- const provider = new TileDisplayValueProvider();
115
- expect(provider.itemPageUrl('foo')).to.equal(nothing);
116
- });
117
- it('provides nothing when identifier is empty', () => {
118
- const provider = new TileDisplayValueProvider({
119
- baseNavigationUrl: 'foo',
120
- });
121
- expect(provider.itemPageUrl('')).to.equal(nothing);
122
- });
123
- it('builds correct url from base and identifier', () => {
124
- const provider = new TileDisplayValueProvider({
125
- baseNavigationUrl: 'base',
126
- });
127
- expect(provider.itemPageUrl('foo')).to.equal('base/details/foo');
128
- });
129
- it('allows base url to be empty', () => {
130
- const provider = new TileDisplayValueProvider({ baseNavigationUrl: '' });
131
- expect(provider.itemPageUrl('foo')).to.equal('/details/foo');
132
- });
133
- it('uses provided collection base path for collections', () => {
134
- const provider = new TileDisplayValueProvider({
135
- baseNavigationUrl: 'base',
136
- collectionPagePath: '/collection/',
137
- });
138
- expect(provider.itemPageUrl('foo', true)).to.equal('base/collection/foo');
139
- });
140
- });
141
- });
1
+ import { expect } from '@open-wc/testing';
2
+ import { nothing } from 'lit';
3
+ import { TileDisplayValueProvider } from '../../src/tiles/tile-display-value-provider';
4
+ describe('Tile Display Value Provider', () => {
5
+ describe('basic construction', () => {
6
+ it('constructs w/ no options', () => {
7
+ const provider = new TileDisplayValueProvider();
8
+ expect(provider).to.exist;
9
+ });
10
+ it('constructs w/ options', () => {
11
+ const provider = new TileDisplayValueProvider({
12
+ model: {},
13
+ baseNavigationUrl: 'foo',
14
+ collectionPagePath: 'bar',
15
+ sortParam: { field: 'baz', direction: 'asc' },
16
+ creatorFilter: 'X',
17
+ });
18
+ expect(provider).to.exist;
19
+ });
20
+ });
21
+ describe('firstCreatorMatchingFilter', () => {
22
+ it('provides undefined creator when no model set', () => {
23
+ const provider = new TileDisplayValueProvider();
24
+ expect(provider.firstCreatorMatchingFilter).to.be.undefined;
25
+ });
26
+ it('provides creator from model with no filter', () => {
27
+ const provider = new TileDisplayValueProvider({
28
+ model: { creator: 'foo', creators: ['foo', 'bar', 'baz'] },
29
+ });
30
+ expect(provider.firstCreatorMatchingFilter).to.equal('foo');
31
+ });
32
+ it('provides first creator matching filter when present', () => {
33
+ const provider = new TileDisplayValueProvider({
34
+ model: { creator: 'foo', creators: ['foo', 'bar', 'baz'] },
35
+ creatorFilter: 'B',
36
+ });
37
+ expect(provider.firstCreatorMatchingFilter).to.equal('bar');
38
+ });
39
+ it('matches letters with diacritics', () => {
40
+ const provider = new TileDisplayValueProvider({
41
+ model: {
42
+ creator: 'foo',
43
+ creators: ['foo', 'émile', 'ernest'],
44
+ },
45
+ creatorFilter: 'E',
46
+ });
47
+ expect(provider.firstCreatorMatchingFilter).to.equal('émile');
48
+ });
49
+ it('ignores non-alphabetical characters when matching', () => {
50
+ const provider = new TileDisplayValueProvider({
51
+ model: {
52
+ creator: 'foo',
53
+ creators: ['foo', '"(bar)"', 'baz'],
54
+ },
55
+ creatorFilter: 'B',
56
+ });
57
+ expect(provider.firstCreatorMatchingFilter).to.equal('"(bar)"');
58
+ });
59
+ });
60
+ describe('accountLabel', () => {
61
+ it('provides empty account label when no model', () => {
62
+ const provider = new TileDisplayValueProvider();
63
+ expect(provider.accountLabel).to.equal('');
64
+ });
65
+ it('provides empty account label when no date added', () => {
66
+ const provider = new TileDisplayValueProvider({ model: {} });
67
+ expect(provider.accountLabel).to.equal('');
68
+ });
69
+ it('provides Archivist label from date added', () => {
70
+ const provider = new TileDisplayValueProvider({
71
+ model: { dateAdded: new Date(2010, 1, 2) },
72
+ });
73
+ expect(provider.accountLabel).to.equal('Archivist since 2010');
74
+ });
75
+ });
76
+ describe('dateLabel', () => {
77
+ it('provides empty date label when no sort param', () => {
78
+ const provider = new TileDisplayValueProvider();
79
+ expect(provider.dateLabel).to.equal('');
80
+ });
81
+ it('provides empty date label when sorting by non-date', () => {
82
+ const provider = new TileDisplayValueProvider({
83
+ sortParam: { field: 'downloads', direction: 'desc' },
84
+ });
85
+ expect(provider.dateLabel).to.equal('');
86
+ });
87
+ it('provides correct date label for publicdate', () => {
88
+ const provider = new TileDisplayValueProvider({
89
+ sortParam: { field: 'publicdate', direction: 'asc' },
90
+ });
91
+ expect(provider.dateLabel).to.equal('Archived');
92
+ });
93
+ it('provides correct date label for reviewdate', () => {
94
+ const provider = new TileDisplayValueProvider({
95
+ sortParam: { field: 'reviewdate', direction: 'asc' },
96
+ });
97
+ expect(provider.dateLabel).to.equal('Reviewed');
98
+ });
99
+ it('provides correct date label for addeddate', () => {
100
+ const provider = new TileDisplayValueProvider({
101
+ sortParam: { field: 'addeddate', direction: 'asc' },
102
+ });
103
+ expect(provider.dateLabel).to.equal('Added');
104
+ });
105
+ it('provides correct date label for published date', () => {
106
+ const provider = new TileDisplayValueProvider({
107
+ sortParam: { field: 'date', direction: 'asc' },
108
+ });
109
+ expect(provider.dateLabel).to.equal('Published');
110
+ });
111
+ });
112
+ describe('itemPageUrl', () => {
113
+ it('provides nothing when no base url set', () => {
114
+ const provider = new TileDisplayValueProvider();
115
+ expect(provider.itemPageUrl('foo')).to.equal(nothing);
116
+ });
117
+ it('provides nothing when identifier is empty', () => {
118
+ const provider = new TileDisplayValueProvider({
119
+ baseNavigationUrl: 'foo',
120
+ });
121
+ expect(provider.itemPageUrl('')).to.equal(nothing);
122
+ });
123
+ it('builds correct url from base and identifier', () => {
124
+ const provider = new TileDisplayValueProvider({
125
+ baseNavigationUrl: 'base',
126
+ });
127
+ expect(provider.itemPageUrl('foo')).to.equal('base/details/foo');
128
+ });
129
+ it('allows base url to be empty', () => {
130
+ const provider = new TileDisplayValueProvider({ baseNavigationUrl: '' });
131
+ expect(provider.itemPageUrl('foo')).to.equal('/details/foo');
132
+ });
133
+ it('uses provided collection base path for collections', () => {
134
+ const provider = new TileDisplayValueProvider({
135
+ baseNavigationUrl: 'base',
136
+ collectionPagePath: '/collection/',
137
+ });
138
+ expect(provider.itemPageUrl('foo', true)).to.equal('base/collection/foo');
139
+ });
140
+ });
141
+ });
142
142
  //# sourceMappingURL=tile-display-value-provider.test.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,27 +1,27 @@
1
- import { expect } from '@open-wc/testing';
2
- import { arrayEquals } from '../../src/utils/array-equals';
3
- describe('arrayEquals', () => {
4
- it('returns true for empty args', () => {
5
- expect(arrayEquals([], [])).to.be.true;
6
- });
7
- it('returns true for identical array objects', () => {
8
- const arr = ['foo', 'bar'];
9
- expect(arrayEquals(arr, arr)).to.be.true;
10
- });
11
- it('returns true for arrays with identical contents', () => {
12
- const arr1 = ['foo', 'bar'];
13
- const arr2 = ['foo', 'bar'];
14
- expect(arrayEquals(arr1, arr2)).to.be.true;
15
- });
16
- it('returns false for arrays of unequal length', () => {
17
- const arr1 = [1, 2, 3];
18
- const arr2 = [1, 2, 3, 4];
19
- expect(arrayEquals(arr1, arr2)).to.be.false;
20
- });
21
- it('returns false for unequal arrays of same length', () => {
22
- const arr1 = ['foo', 'bar'];
23
- const arr2 = ['foo', 'qux'];
24
- expect(arrayEquals(arr1, arr2)).to.be.false;
25
- });
26
- });
1
+ import { expect } from '@open-wc/testing';
2
+ import { arrayEquals } from '../../src/utils/array-equals';
3
+ describe('arrayEquals', () => {
4
+ it('returns true for empty args', () => {
5
+ expect(arrayEquals([], [])).to.be.true;
6
+ });
7
+ it('returns true for identical array objects', () => {
8
+ const arr = ['foo', 'bar'];
9
+ expect(arrayEquals(arr, arr)).to.be.true;
10
+ });
11
+ it('returns true for arrays with identical contents', () => {
12
+ const arr1 = ['foo', 'bar'];
13
+ const arr2 = ['foo', 'bar'];
14
+ expect(arrayEquals(arr1, arr2)).to.be.true;
15
+ });
16
+ it('returns false for arrays of unequal length', () => {
17
+ const arr1 = [1, 2, 3];
18
+ const arr2 = [1, 2, 3, 4];
19
+ expect(arrayEquals(arr1, arr2)).to.be.false;
20
+ });
21
+ it('returns false for unequal arrays of same length', () => {
22
+ const arr1 = ['foo', 'bar'];
23
+ const arr2 = ['foo', 'qux'];
24
+ expect(arrayEquals(arr1, arr2)).to.be.false;
25
+ });
26
+ });
27
27
  //# sourceMappingURL=array-equals.test.js.map
@@ -1 +1 @@
1
- export {};
1
+ export {};