@internetarchive/ia-topnav 1.3.9 → 1.3.10-webdev-7394.1

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 (389) hide show
  1. package/.prettierignore +1 -0
  2. package/README.md +7 -7
  3. package/demo/app-root.ts +186 -0
  4. package/demo/index.html +27 -0
  5. package/dist/demo/app-root.d.ts +8 -0
  6. package/dist/demo/app-root.js +181 -0
  7. package/dist/demo/app-root.js.map +1 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.js +3 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/src/assets/img/hamburger.d.ts +7 -0
  12. package/dist/src/assets/img/hamburger.js +51 -0
  13. package/dist/src/assets/img/hamburger.js.map +1 -0
  14. package/dist/src/assets/img/ia-icon.d.ts +7 -0
  15. package/dist/src/assets/img/ia-icon.js +33 -0
  16. package/dist/src/assets/img/ia-icon.js.map +1 -0
  17. package/dist/src/assets/img/icon-audio.d.ts +2 -0
  18. package/dist/src/assets/img/icon-audio.js +28 -0
  19. package/dist/src/assets/img/icon-audio.js.map +1 -0
  20. package/dist/src/assets/img/icon-close.d.ts +2 -0
  21. package/dist/src/assets/img/icon-close.js +20 -0
  22. package/dist/src/assets/img/icon-close.js.map +1 -0
  23. package/dist/src/assets/img/icon-donate-unpadded.d.ts +2 -0
  24. package/dist/src/assets/img/icon-donate-unpadded.js +19 -0
  25. package/dist/src/assets/img/icon-donate-unpadded.js.map +1 -0
  26. package/dist/src/assets/img/icon-donate.d.ts +2 -0
  27. package/dist/src/assets/img/icon-donate.js +18 -0
  28. package/dist/src/assets/img/icon-donate.js.map +1 -0
  29. package/dist/src/assets/img/icon-ellipses.d.ts +2 -0
  30. package/dist/src/assets/img/icon-ellipses.js +19 -0
  31. package/dist/src/assets/img/icon-ellipses.js.map +1 -0
  32. package/dist/src/assets/img/icon-ia-logo.d.ts +2 -0
  33. package/dist/src/assets/img/icon-ia-logo.js +30 -0
  34. package/dist/src/assets/img/icon-ia-logo.js.map +1 -0
  35. package/dist/src/assets/img/icon-images.d.ts +2 -0
  36. package/dist/src/assets/img/icon-images.js +19 -0
  37. package/dist/src/assets/img/icon-images.js.map +1 -0
  38. package/dist/src/assets/img/icon-search.d.ts +2 -0
  39. package/dist/src/assets/img/icon-search.js +19 -0
  40. package/dist/src/assets/img/icon-search.js.map +1 -0
  41. package/dist/src/assets/img/icon-software.d.ts +2 -0
  42. package/dist/src/assets/img/icon-software.js +18 -0
  43. package/dist/src/assets/img/icon-software.js.map +1 -0
  44. package/dist/src/assets/img/icon-texts.d.ts +2 -0
  45. package/dist/src/assets/img/icon-texts.js +18 -0
  46. package/dist/src/assets/img/icon-texts.js.map +1 -0
  47. package/dist/src/assets/img/icon-upload-unpadded.d.ts +2 -0
  48. package/dist/src/assets/img/icon-upload-unpadded.js +18 -0
  49. package/dist/src/assets/img/icon-upload-unpadded.js.map +1 -0
  50. package/dist/src/assets/img/icon-upload.d.ts +2 -0
  51. package/dist/src/assets/img/icon-upload.js +21 -0
  52. package/dist/src/assets/img/icon-upload.js.map +1 -0
  53. package/dist/src/assets/img/icon-user.d.ts +2 -0
  54. package/dist/src/assets/img/icon-user.js +19 -0
  55. package/dist/src/assets/img/icon-user.js.map +1 -0
  56. package/dist/src/assets/img/icon-video.d.ts +2 -0
  57. package/dist/src/assets/img/icon-video.js +19 -0
  58. package/dist/src/assets/img/icon-video.js.map +1 -0
  59. package/dist/src/assets/img/icon-web.d.ts +2 -0
  60. package/dist/src/assets/img/icon-web.js +19 -0
  61. package/dist/src/assets/img/icon-web.js.map +1 -0
  62. package/dist/src/assets/img/icon.d.ts +5 -0
  63. package/dist/src/assets/img/icon.js +17 -0
  64. package/dist/src/assets/img/icon.js.map +1 -0
  65. package/dist/src/assets/img/icons.d.ts +18 -0
  66. package/dist/src/assets/img/icons.js +33 -0
  67. package/dist/src/assets/img/icons.js.map +1 -0
  68. package/dist/src/assets/img/wordmark-stacked.d.ts +2 -0
  69. package/dist/src/assets/img/wordmark-stacked.js +13 -0
  70. package/dist/src/assets/img/wordmark-stacked.js.map +1 -0
  71. package/dist/src/data/menus.d.ts +20 -0
  72. package/dist/src/data/menus.js +668 -0
  73. package/dist/src/data/menus.js.map +1 -0
  74. package/dist/src/desktop-subnav.d.ts +11 -0
  75. package/dist/src/desktop-subnav.js +55 -0
  76. package/dist/src/desktop-subnav.js.map +1 -0
  77. package/dist/src/dropdown-menu.d.ts +19 -0
  78. package/dist/src/dropdown-menu.js +116 -0
  79. package/dist/src/dropdown-menu.js.map +1 -0
  80. package/dist/src/ia-topnav.d.ts +68 -0
  81. package/dist/src/ia-topnav.js +315 -0
  82. package/dist/src/ia-topnav.js.map +1 -0
  83. package/dist/src/lib/formatUrl.d.ts +2 -0
  84. package/dist/src/lib/formatUrl.js +2 -0
  85. package/dist/src/lib/formatUrl.js.map +1 -0
  86. package/dist/src/lib/keyboard-navigation.d.ts +50 -0
  87. package/dist/src/lib/keyboard-navigation.js +136 -0
  88. package/dist/src/lib/keyboard-navigation.js.map +1 -0
  89. package/dist/src/lib/location-handler.d.ts +1 -0
  90. package/dist/src/lib/location-handler.js +5 -0
  91. package/dist/src/lib/location-handler.js.map +1 -0
  92. package/dist/src/lib/makeBooleanString.d.ts +2 -0
  93. package/dist/src/lib/makeBooleanString.js +12 -0
  94. package/dist/src/lib/makeBooleanString.js.map +1 -0
  95. package/dist/src/lib/query-handler.d.ts +4 -0
  96. package/dist/src/lib/query-handler.js +7 -0
  97. package/dist/src/lib/query-handler.js.map +1 -0
  98. package/dist/src/lib/toSentenceCase.d.ts +2 -0
  99. package/dist/src/lib/toSentenceCase.js +10 -0
  100. package/dist/src/lib/toSentenceCase.js.map +1 -0
  101. package/dist/src/login-button.d.ts +16 -0
  102. package/dist/src/login-button.js +83 -0
  103. package/dist/src/login-button.js.map +1 -0
  104. package/dist/src/media-button.d.ts +24 -0
  105. package/dist/src/media-button.js +119 -0
  106. package/dist/src/media-button.js.map +1 -0
  107. package/dist/src/media-menu.d.ts +20 -0
  108. package/dist/src/media-menu.js +148 -0
  109. package/dist/src/media-menu.js.map +1 -0
  110. package/dist/src/media-slider.d.ts +15 -0
  111. package/dist/src/media-slider.js +139 -0
  112. package/dist/src/media-slider.js.map +1 -0
  113. package/dist/src/media-subnav.d.ts +18 -0
  114. package/dist/src/media-subnav.js +126 -0
  115. package/dist/src/media-subnav.js.map +1 -0
  116. package/dist/src/models.d.ts +51 -0
  117. package/dist/src/models.js +25 -0
  118. package/dist/src/models.js.map +1 -0
  119. package/dist/src/more-slider.d.ts +10 -0
  120. package/dist/src/more-slider.js +50 -0
  121. package/dist/src/more-slider.js.map +1 -0
  122. package/dist/src/nav-search.d.ts +19 -0
  123. package/dist/src/nav-search.js +124 -0
  124. package/dist/src/nav-search.js.map +1 -0
  125. package/dist/src/primary-nav.d.ts +45 -0
  126. package/dist/src/primary-nav.js +280 -0
  127. package/dist/src/primary-nav.js.map +1 -0
  128. package/dist/src/save-page-form.d.ts +10 -0
  129. package/dist/src/save-page-form.js +63 -0
  130. package/dist/src/save-page-form.js.map +1 -0
  131. package/dist/src/search-menu.d.ts +20 -0
  132. package/dist/src/search-menu.js +162 -0
  133. package/dist/src/search-menu.js.map +1 -0
  134. package/dist/src/signed-out-dropdown.d.ts +4 -0
  135. package/dist/src/signed-out-dropdown.js +15 -0
  136. package/dist/src/signed-out-dropdown.js.map +1 -0
  137. package/dist/src/styles/base.d.ts +1 -0
  138. package/dist/src/styles/base.js +48 -0
  139. package/dist/src/styles/base.js.map +1 -0
  140. package/dist/src/styles/desktop-subnav.d.ts +2 -0
  141. package/dist/src/styles/desktop-subnav.js +37 -0
  142. package/dist/src/styles/desktop-subnav.js.map +1 -0
  143. package/dist/src/styles/dropdown-menu.d.ts +2 -0
  144. package/dist/src/styles/dropdown-menu.js +170 -0
  145. package/dist/src/styles/dropdown-menu.js.map +1 -0
  146. package/dist/src/styles/ia-topnav.d.ts +2 -0
  147. package/dist/src/styles/ia-topnav.js +87 -0
  148. package/dist/src/styles/ia-topnav.js.map +1 -0
  149. package/dist/src/styles/login-button.d.ts +2 -0
  150. package/dist/src/styles/login-button.js +82 -0
  151. package/dist/src/styles/login-button.js.map +1 -0
  152. package/dist/src/styles/media-button.d.ts +2 -0
  153. package/dist/src/styles/media-button.js +156 -0
  154. package/dist/src/styles/media-button.js.map +1 -0
  155. package/dist/src/styles/media-menu.d.ts +2 -0
  156. package/dist/src/styles/media-menu.js +66 -0
  157. package/dist/src/styles/media-menu.js.map +1 -0
  158. package/dist/src/styles/media-slider.d.ts +2 -0
  159. package/dist/src/styles/media-slider.js +81 -0
  160. package/dist/src/styles/media-slider.js.map +1 -0
  161. package/dist/src/styles/media-subnav.d.ts +2 -0
  162. package/dist/src/styles/media-subnav.js +159 -0
  163. package/dist/src/styles/media-subnav.js.map +1 -0
  164. package/dist/src/styles/more-slider.d.ts +2 -0
  165. package/dist/src/styles/more-slider.js +15 -0
  166. package/dist/src/styles/more-slider.js.map +1 -0
  167. package/dist/src/styles/nav-search.d.ts +2 -0
  168. package/dist/src/styles/nav-search.js +136 -0
  169. package/dist/src/styles/nav-search.js.map +1 -0
  170. package/dist/src/styles/primary-nav.d.ts +2 -0
  171. package/dist/src/styles/primary-nav.js +310 -0
  172. package/dist/src/styles/primary-nav.js.map +1 -0
  173. package/dist/src/styles/save-page-form.d.ts +2 -0
  174. package/dist/src/styles/save-page-form.js +54 -0
  175. package/dist/src/styles/save-page-form.js.map +1 -0
  176. package/dist/src/styles/search-menu.d.ts +2 -0
  177. package/dist/src/styles/search-menu.js +105 -0
  178. package/dist/src/styles/search-menu.js.map +1 -0
  179. package/dist/src/styles/signed-out-dropdown.d.ts +2 -0
  180. package/dist/src/styles/signed-out-dropdown.js +31 -0
  181. package/dist/src/styles/signed-out-dropdown.js.map +1 -0
  182. package/dist/src/styles/user-menu.d.ts +2 -0
  183. package/dist/src/styles/user-menu.js +31 -0
  184. package/dist/src/styles/user-menu.js.map +1 -0
  185. package/dist/src/styles/wayback-search.d.ts +2 -0
  186. package/dist/src/styles/wayback-search.js +48 -0
  187. package/dist/src/styles/wayback-search.js.map +1 -0
  188. package/dist/src/styles/wayback-slider.d.ts +2 -0
  189. package/dist/src/styles/wayback-slider.js +33 -0
  190. package/dist/src/styles/wayback-slider.js.map +1 -0
  191. package/dist/src/tracked-element.d.ts +5 -0
  192. package/dist/src/tracked-element.js +30 -0
  193. package/dist/src/tracked-element.js.map +1 -0
  194. package/dist/src/user-menu.d.ts +10 -0
  195. package/dist/src/user-menu.js +60 -0
  196. package/dist/src/user-menu.js.map +1 -0
  197. package/dist/src/wayback-search.d.ts +4 -0
  198. package/dist/src/wayback-search.js +14 -0
  199. package/dist/src/wayback-search.js.map +1 -0
  200. package/dist/src/wayback-slider.d.ts +18 -0
  201. package/dist/src/wayback-slider.js +99 -0
  202. package/dist/src/wayback-slider.js.map +1 -0
  203. package/dist/test/assets/img/hamburger.test.d.ts +1 -0
  204. package/dist/test/assets/img/hamburger.test.js +13 -0
  205. package/dist/test/assets/img/hamburger.test.js.map +1 -0
  206. package/dist/test/data/menus.test.d.ts +1 -0
  207. package/dist/test/data/menus.test.js +11 -0
  208. package/dist/test/data/menus.test.js.map +1 -0
  209. package/dist/test/dropdown-menu.test.d.ts +1 -0
  210. package/dist/test/dropdown-menu.test.js +20 -0
  211. package/dist/test/dropdown-menu.test.js.map +1 -0
  212. package/dist/test/ia-icon.test.d.ts +1 -0
  213. package/dist/test/ia-icon.test.js +11 -0
  214. package/dist/test/ia-icon.test.js.map +1 -0
  215. package/dist/test/ia-topnav.test.d.ts +1 -0
  216. package/dist/test/ia-topnav.test.js +232 -0
  217. package/dist/test/ia-topnav.test.js.map +1 -0
  218. package/dist/test/login-button.test.d.ts +1 -0
  219. package/dist/test/login-button.test.js +14 -0
  220. package/dist/test/login-button.test.js.map +1 -0
  221. package/dist/test/media-button.test.d.ts +1 -0
  222. package/dist/test/media-button.test.js +13 -0
  223. package/dist/test/media-button.test.js.map +1 -0
  224. package/dist/test/media-menu.test.d.ts +1 -0
  225. package/dist/test/media-menu.test.js +27 -0
  226. package/dist/test/media-menu.test.js.map +1 -0
  227. package/dist/test/media-slider.test.d.ts +1 -0
  228. package/dist/test/media-slider.test.js +47 -0
  229. package/dist/test/media-slider.test.js.map +1 -0
  230. package/dist/test/more-slider.test.d.ts +1 -0
  231. package/dist/test/more-slider.test.js +17 -0
  232. package/dist/test/more-slider.test.js.map +1 -0
  233. package/dist/test/nav-search.test.d.ts +1 -0
  234. package/dist/test/nav-search.test.js +47 -0
  235. package/dist/test/nav-search.test.js.map +1 -0
  236. package/dist/test/primary-nav.test.d.ts +1 -0
  237. package/dist/test/primary-nav.test.js +55 -0
  238. package/dist/test/primary-nav.test.js.map +1 -0
  239. package/dist/test/save-page-form.test.d.ts +1 -0
  240. package/dist/test/save-page-form.test.js +47 -0
  241. package/dist/test/save-page-form.test.js.map +1 -0
  242. package/dist/test/search-menu.test.d.ts +1 -0
  243. package/dist/test/search-menu.test.js +42 -0
  244. package/dist/test/search-menu.test.js.map +1 -0
  245. package/dist/test/user-menu.test.d.ts +1 -0
  246. package/dist/test/user-menu.test.js +28 -0
  247. package/dist/test/user-menu.test.js.map +1 -0
  248. package/dist/test/wayback-slider.test.d.ts +1 -0
  249. package/dist/test/wayback-slider.test.js +80 -0
  250. package/dist/test/wayback-slider.test.js.map +1 -0
  251. package/eslint.config.mjs +53 -0
  252. package/package.json +47 -37
  253. package/prettier.config.js +9 -0
  254. package/src/assets/img/hamburger.ts +49 -0
  255. package/src/assets/img/{ia-icon.js → ia-icon.ts} +7 -16
  256. package/src/assets/img/{icon-audio.js → icon-audio.ts} +7 -2
  257. package/src/assets/img/icon-close.ts +20 -0
  258. package/src/assets/img/icon-donate-unpadded.ts +19 -0
  259. package/src/assets/img/icon-donate.ts +18 -0
  260. package/src/assets/img/icon-ellipses.ts +19 -0
  261. package/src/assets/img/icon-ia-logo.ts +30 -0
  262. package/src/assets/img/icon-images.ts +19 -0
  263. package/src/assets/img/icon-search.ts +19 -0
  264. package/src/assets/img/icon-software.ts +18 -0
  265. package/src/assets/img/icon-texts.ts +18 -0
  266. package/src/assets/img/{icon-upload-unpadded.js → icon-upload-unpadded.ts} +6 -2
  267. package/src/assets/img/icon-upload.ts +21 -0
  268. package/src/assets/img/icon-user.ts +19 -0
  269. package/src/assets/img/icon-video.ts +19 -0
  270. package/src/assets/img/icon-web.ts +19 -0
  271. package/src/assets/img/icon.ts +8 -0
  272. package/src/assets/img/icons.ts +33 -0
  273. package/src/assets/img/{wordmark-stacked.js → wordmark-stacked.ts} +1 -1
  274. package/src/data/{menus.js → menus.ts} +172 -135
  275. package/src/desktop-subnav.ts +49 -0
  276. package/src/dropdown-menu.ts +106 -0
  277. package/src/{ia-topnav.js → ia-topnav.ts} +130 -127
  278. package/src/lib/formatUrl.ts +2 -0
  279. package/src/lib/{keyboard-navigation.js → keyboard-navigation.ts} +53 -23
  280. package/src/lib/location-handler.ts +5 -0
  281. package/src/lib/makeBooleanString.ts +12 -0
  282. package/src/lib/query-handler.ts +7 -0
  283. package/src/lib/toSentenceCase.ts +10 -0
  284. package/src/{login-button.js → login-button.ts} +27 -31
  285. package/src/{media-button.js → media-button.ts} +39 -49
  286. package/src/media-menu.ts +143 -0
  287. package/src/{media-slider.js → media-slider.ts} +53 -41
  288. package/src/media-subnav.ts +132 -0
  289. package/src/models.ts +114 -0
  290. package/src/more-slider.ts +42 -0
  291. package/src/nav-search.ts +114 -0
  292. package/src/primary-nav.ts +266 -0
  293. package/src/save-page-form.ts +59 -0
  294. package/src/search-menu.ts +156 -0
  295. package/src/signed-out-dropdown.ts +11 -0
  296. package/src/styles/{base.js → base.ts} +2 -2
  297. package/src/styles/{desktop-subnav.js → desktop-subnav.ts} +2 -2
  298. package/src/styles/{dropdown-menu.js → dropdown-menu.ts} +4 -2
  299. package/src/styles/{ia-topnav.js → ia-topnav.ts} +1 -1
  300. package/src/styles/{login-button.js → login-button.ts} +1 -1
  301. package/src/styles/{media-button.js → media-button.ts} +2 -2
  302. package/src/styles/{media-menu.js → media-menu.ts} +1 -1
  303. package/src/styles/{media-slider.js → media-slider.ts} +1 -1
  304. package/src/styles/media-subnav.ts +159 -0
  305. package/src/styles/{more-slider.js → more-slider.ts} +1 -1
  306. package/src/styles/{nav-search.js → nav-search.ts} +2 -2
  307. package/src/styles/{primary-nav.js → primary-nav.ts} +2 -3
  308. package/src/styles/{save-page-form.js → save-page-form.ts} +7 -7
  309. package/src/styles/{search-menu.js → search-menu.ts} +1 -1
  310. package/src/styles/{signed-out-dropdown.js → signed-out-dropdown.ts} +1 -1
  311. package/src/styles/{user-menu.js → user-menu.ts} +1 -1
  312. package/src/styles/{wayback-search.js → wayback-search.ts} +3 -3
  313. package/src/styles/wayback-slider.ts +33 -0
  314. package/src/tracked-element.ts +32 -0
  315. package/src/user-menu.ts +57 -0
  316. package/src/wayback-search.ts +10 -0
  317. package/src/wayback-slider.ts +88 -0
  318. package/ssl/server.crt +22 -0
  319. package/ssl/server.key +28 -0
  320. package/test/assets/img/hamburger.test.ts +18 -0
  321. package/test/data/menus.test.ts +15 -0
  322. package/test/{dropdown-menu.test.js → dropdown-menu.test.ts} +5 -7
  323. package/test/{ia-icon.test.js → ia-icon.test.ts} +6 -4
  324. package/test/ia-topnav.test.ts +344 -0
  325. package/test/login-button.test.ts +19 -0
  326. package/test/media-button.test.ts +19 -0
  327. package/test/{media-menu.test.js → media-menu.test.ts} +14 -12
  328. package/test/media-slider.test.ts +63 -0
  329. package/test/more-slider.test.ts +21 -0
  330. package/test/nav-search.test.ts +70 -0
  331. package/test/primary-nav.test.ts +94 -0
  332. package/test/save-page-form.test.ts +62 -0
  333. package/test/{search-menu.test.js → search-menu.test.ts} +19 -10
  334. package/test/{user-menu.test.js → user-menu.test.ts} +10 -9
  335. package/test/wayback-slider.test.ts +97 -0
  336. package/tsconfig.json +31 -0
  337. package/web-dev-server.config.mjs +32 -0
  338. package/web-test-runner.config.mjs +41 -0
  339. package/.eslintrc +0 -16
  340. package/index.d.ts +0 -109
  341. package/src/assets/img/hamburger.js +0 -38
  342. package/src/assets/img/icon-close.js +0 -16
  343. package/src/assets/img/icon-donate-unpadded.js +0 -16
  344. package/src/assets/img/icon-donate.js +0 -15
  345. package/src/assets/img/icon-ellipses.js +0 -15
  346. package/src/assets/img/icon-ia-logo.js +0 -22
  347. package/src/assets/img/icon-images.js +0 -15
  348. package/src/assets/img/icon-search.js +0 -15
  349. package/src/assets/img/icon-software.js +0 -15
  350. package/src/assets/img/icon-texts.js +0 -15
  351. package/src/assets/img/icon-upload.js +0 -15
  352. package/src/assets/img/icon-user.js +0 -15
  353. package/src/assets/img/icon-video.js +0 -15
  354. package/src/assets/img/icon-web.js +0 -15
  355. package/src/assets/img/icon.js +0 -18
  356. package/src/assets/img/icons.js +0 -33
  357. package/src/desktop-subnav.js +0 -45
  358. package/src/dropdown-menu.js +0 -110
  359. package/src/lib/formatUrl.js +0 -1
  360. package/src/lib/location-handler.js +0 -5
  361. package/src/lib/query-handler.js +0 -7
  362. package/src/lib/toSentenceCase.js +0 -8
  363. package/src/media-menu.js +0 -154
  364. package/src/media-subnav.js +0 -112
  365. package/src/more-slider.js +0 -33
  366. package/src/nav-search.js +0 -111
  367. package/src/primary-nav.js +0 -258
  368. package/src/save-page-form.js +0 -59
  369. package/src/search-menu.js +0 -145
  370. package/src/signed-out-dropdown.js +0 -10
  371. package/src/styles/media-subnav.js +0 -156
  372. package/src/styles/wayback-slider.js +0 -30
  373. package/src/tracked-element.js +0 -29
  374. package/src/user-menu.js +0 -56
  375. package/src/wayback-search.js +0 -18
  376. package/src/wayback-slider.js +0 -87
  377. package/test/assets/img/hamburger.test.js +0 -15
  378. package/test/assets/img/user.test.js +0 -15
  379. package/test/data/menus.test.js +0 -19
  380. package/test/ia-topnav.test.js +0 -273
  381. package/test/login-button.test.js +0 -15
  382. package/test/media-button.test.js +0 -19
  383. package/test/media-slider.test.js +0 -57
  384. package/test/more-slider.test.js +0 -13
  385. package/test/nav-search.test.js +0 -61
  386. package/test/primary-nav.test.js +0 -82
  387. package/test/save-page-form.test.js +0 -35
  388. package/test/wayback-slider.test.js +0 -80
  389. /package/{index.js → index.ts} +0 -0
@@ -0,0 +1,30 @@
1
+ import { LitElement } from 'lit';
2
+ export default class TrackedElement extends LitElement {
3
+ trackClick(e) {
4
+ var _a, _b;
5
+ const event = (_b = (_a = e.currentTarget) === null || _a === void 0 ? void 0 : _a.dataset) === null || _b === void 0 ? void 0 : _b.eventClickTracking;
6
+ if (event === undefined)
7
+ return;
8
+ this.dispatchEvent(new CustomEvent('trackClick', {
9
+ bubbles: true,
10
+ composed: true,
11
+ detail: {
12
+ event,
13
+ },
14
+ }));
15
+ }
16
+ trackSubmit(e) {
17
+ var _a, _b;
18
+ const event = (_b = (_a = e.currentTarget) === null || _a === void 0 ? void 0 : _a.dataset) === null || _b === void 0 ? void 0 : _b.eventSubmitTracking;
19
+ if (event === undefined)
20
+ return;
21
+ this.dispatchEvent(new CustomEvent('trackSubmit', {
22
+ bubbles: true,
23
+ composed: true,
24
+ detail: {
25
+ event,
26
+ },
27
+ }));
28
+ }
29
+ }
30
+ //# sourceMappingURL=tracked-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracked-element.js","sourceRoot":"","sources":["../../src/tracked-element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,UAAU;IACpD,UAAU,CAAC,CAAQ;;QACjB,MAAM,KAAK,GAAG,MAAA,MAAC,CAAC,CAAC,aAA6B,0CAAE,OAAO,0CAAE,kBAAkB,CAAC;QAC5E,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,YAAY,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,KAAK;aACN;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAQ;;QAClB,MAAM,KAAK,GAAG,MAAA,MAAC,CAAC,CAAC,aAA6B,0CAAE,OAAO,0CACnD,mBAAmB,CAAC;QACxB,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAChC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,aAAa,EAAE;YAC7B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE;gBACN,KAAK;aACN;SACF,CAAC,CACH,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { LitElement } from 'lit';\n\nexport default class TrackedElement extends LitElement {\n trackClick(e: Event) {\n const event = (e.currentTarget as HTMLElement)?.dataset?.eventClickTracking;\n if (event === undefined) return;\n this.dispatchEvent(\n new CustomEvent('trackClick', {\n bubbles: true,\n composed: true,\n detail: {\n event,\n },\n }),\n );\n }\n\n trackSubmit(e: Event) {\n const event = (e.currentTarget as HTMLElement)?.dataset\n ?.eventSubmitTracking;\n if (event === undefined) return;\n this.dispatchEvent(\n new CustomEvent('trackSubmit', {\n bubbles: true,\n composed: true,\n detail: {\n event,\n },\n }),\n );\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import { CSSResult, PropertyValues } from 'lit';
2
+ import DropdownMenu from './dropdown-menu';
3
+ export default class UserMenu extends DropdownMenu {
4
+ username: string;
5
+ screenName: string;
6
+ private previousKeydownListener?;
7
+ static get styles(): CSSResult[];
8
+ updated(props: PropertyValues): void;
9
+ render(): import("lit").TemplateResult<1>;
10
+ }
@@ -0,0 +1,60 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import DropdownMenu from './dropdown-menu';
4
+ import userMenuCSS from './styles/user-menu';
5
+ import dropdownStyles from './styles/dropdown-menu';
6
+ import KeyboardNavigation from './lib/keyboard-navigation';
7
+ import { customElement, property } from 'lit/decorators.js';
8
+ import { makeBooleanFromString } from './lib/makeBooleanString';
9
+ let UserMenu = class UserMenu extends DropdownMenu {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.username = '';
13
+ this.screenName = '';
14
+ }
15
+ static get styles() {
16
+ return [dropdownStyles, userMenuCSS];
17
+ }
18
+ updated(props) {
19
+ var _a;
20
+ if (props.has('open') && this.open) {
21
+ const container = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.nav-container');
22
+ if (container) {
23
+ const keyboardNavigation = new KeyboardNavigation(container, 'usermenu');
24
+ this.addEventListener('keydown', keyboardNavigation.handleKeyDown);
25
+ if (this.previousKeydownListener) {
26
+ this.removeEventListener('keydown', this.previousKeydownListener);
27
+ }
28
+ this.previousKeydownListener = keyboardNavigation.handleKeyDown;
29
+ }
30
+ }
31
+ }
32
+ render() {
33
+ var _a, _b;
34
+ return html `
35
+ <div class="nav-container">
36
+ <nav
37
+ class="${this.menuClass}"
38
+ aria-hidden="${makeBooleanFromString((_a = this.ariaHidden) !== null && _a !== void 0 ? _a : 'true')}"
39
+ aria-expanded="${makeBooleanFromString((_b = this.ariaExpanded) !== null && _b !== void 0 ? _b : 'false')}"
40
+ >
41
+ <h3>${this.screenName}</h3>
42
+ <ul>
43
+ ${this.dropdownItems}
44
+ </ul>
45
+ </nav>
46
+ </div>
47
+ `;
48
+ }
49
+ };
50
+ __decorate([
51
+ property({ type: String })
52
+ ], UserMenu.prototype, "username", void 0);
53
+ __decorate([
54
+ property({ type: String })
55
+ ], UserMenu.prototype, "screenName", void 0);
56
+ UserMenu = __decorate([
57
+ customElement('user-menu')
58
+ ], UserMenu);
59
+ export default UserMenu;
60
+ //# sourceMappingURL=user-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-menu.js","sourceRoot":"","sources":["../../src/user-menu.ts"],"names":[],"mappings":";AAAA,OAAO,EAAa,IAAI,EAAkB,MAAM,KAAK,CAAC;AACtD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,WAAW,MAAM,oBAAoB,CAAC;AAC7C,OAAO,cAAc,MAAM,wBAAwB,CAAC;AACpD,OAAO,kBAAkB,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGjD,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,YAAY;IAAnC;;QACe,aAAQ,GAAG,EAAE,CAAC;QACd,eAAU,GAAG,EAAE,CAAC;IA6C9C,CAAC;IAxCC,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,KAAqB;;QAC3B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAC9C,gBAAgB,CACF,CAAC;YAEjB,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC/C,SAAS,EACT,UAAU,CACX,CAAC;gBACF,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACjC,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACpE,CAAC;gBACD,IAAI,CAAC,uBAAuB,GAAG,kBAAkB,CAAC,aAAa,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;;QACJ,OAAO,IAAI,CAAA;;;mBAGI,IAAI,CAAC,SAAS;yBACR,qBAAqB,CAAC,MAAA,IAAI,CAAC,UAAU,mCAAI,MAAM,CAAC;2BAC9C,qBAAqB,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,OAAO,CAAC;;gBAE9D,IAAI,CAAC,UAAU;;cAEjB,IAAI,CAAC,aAAa;;;;KAI3B,CAAC;IACJ,CAAC;CACF,CAAA;AA9C6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAiB;AAFzB,QAAQ;IAD5B,aAAa,CAAC,WAAW,CAAC;GACN,QAAQ,CA+C5B;eA/CoB,QAAQ","sourcesContent":["import { CSSResult, html, PropertyValues } from 'lit';\nimport DropdownMenu from './dropdown-menu';\nimport userMenuCSS from './styles/user-menu';\nimport dropdownStyles from './styles/dropdown-menu';\nimport KeyboardNavigation from './lib/keyboard-navigation';\nimport { customElement, property } from 'lit/decorators.js';\nimport { makeBooleanFromString } from './lib/makeBooleanString';\n\n@customElement('user-menu')\nexport default class UserMenu extends DropdownMenu {\n @property({ type: String }) username = '';\n @property({ type: String }) screenName = '';\n\n private previousKeydownListener?: // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this: HTMLElement, ev: KeyboardEvent) => any;\n\n static get styles(): CSSResult[] {\n return [dropdownStyles, userMenuCSS];\n }\n\n updated(props: PropertyValues) {\n if (props.has('open') && this.open) {\n const container = this.shadowRoot?.querySelector(\n '.nav-container',\n ) as HTMLElement;\n\n if (container) {\n const keyboardNavigation = new KeyboardNavigation(\n container,\n 'usermenu',\n );\n this.addEventListener('keydown', keyboardNavigation.handleKeyDown);\n if (this.previousKeydownListener) {\n this.removeEventListener('keydown', this.previousKeydownListener);\n }\n this.previousKeydownListener = keyboardNavigation.handleKeyDown;\n }\n }\n }\n\n render() {\n return html`\n <div class=\"nav-container\">\n <nav\n class=\"${this.menuClass}\"\n aria-hidden=\"${makeBooleanFromString(this.ariaHidden ?? 'true')}\"\n aria-expanded=\"${makeBooleanFromString(this.ariaExpanded ?? 'false')}\"\n >\n <h3>${this.screenName}</h3>\n <ul>\n ${this.dropdownItems}\n </ul>\n </nav>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import WaybackSearch from '@internetarchive/ia-wayback-search';
2
+ export default class NavWaybackSearch extends WaybackSearch {
3
+ static get styles(): import("lit").CSSResultGroup[];
4
+ }
@@ -0,0 +1,14 @@
1
+ import { __decorate } from "tslib";
2
+ import WaybackSearch from '@internetarchive/ia-wayback-search';
3
+ import waybackSearchCSS from './styles/wayback-search';
4
+ import { customElement } from 'lit/decorators.js';
5
+ let NavWaybackSearch = class NavWaybackSearch extends WaybackSearch {
6
+ static get styles() {
7
+ return [WaybackSearch.styles, waybackSearchCSS];
8
+ }
9
+ };
10
+ NavWaybackSearch = __decorate([
11
+ customElement('wayback-search')
12
+ ], NavWaybackSearch);
13
+ export default NavWaybackSearch;
14
+ //# sourceMappingURL=wayback-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wayback-search.js","sourceRoot":"","sources":["../../src/wayback-search.ts"],"names":[],"mappings":";AAAA,OAAO,aAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGnC,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,aAAa;IACzD,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAClD,CAAC;CACF,CAAA;AAJoB,gBAAgB;IADpC,aAAa,CAAC,gBAAgB,CAAC;GACX,gBAAgB,CAIpC;eAJoB,gBAAgB","sourcesContent":["import WaybackSearch from '@internetarchive/ia-wayback-search';\nimport waybackSearchCSS from './styles/wayback-search';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('wayback-search')\nexport default class NavWaybackSearch extends WaybackSearch {\n static get styles() {\n return [WaybackSearch.styles, waybackSearchCSS];\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import './wayback-search';
2
+ import TrackedElement from './tracked-element';
3
+ import './save-page-form';
4
+ import { IATopNavConfig, IATopNavLink } from './models';
5
+ export declare class WaybackSlider extends TrackedElement {
6
+ archiveItLinks: IATopNavLink[];
7
+ baseHost: string;
8
+ browserExtensionsLinks: IATopNavLink[];
9
+ config: IATopNavConfig;
10
+ mobileAppsLinks: IATopNavLink[];
11
+ static get styles(): import("lit").CSSResult[];
12
+ get mobileAppsItems(): import("lit").TemplateResult<1>[];
13
+ get browserExtensionsItems(): import("lit").TemplateResult<1>[];
14
+ get archiveItItems(): import("lit").TemplateResult<1>[];
15
+ private linkList;
16
+ analyticsEvent(title: string): string;
17
+ render(): import("lit").TemplateResult<1>;
18
+ }
@@ -0,0 +1,99 @@
1
+ import { __decorate } from "tslib";
2
+ import { html } from 'lit';
3
+ import './wayback-search';
4
+ import TrackedElement from './tracked-element';
5
+ import './save-page-form';
6
+ import queryHandler from './lib/query-handler';
7
+ import waybackSliderCSS from './styles/wayback-slider';
8
+ import toSentenceCase from './lib/toSentenceCase';
9
+ import formatUrl from './lib/formatUrl';
10
+ import { customElement, property } from 'lit/decorators.js';
11
+ import { defaultTopNavConfig } from './data/menus';
12
+ let WaybackSlider = class WaybackSlider extends TrackedElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.archiveItLinks = [];
16
+ this.baseHost = '';
17
+ this.browserExtensionsLinks = [];
18
+ this.config = defaultTopNavConfig;
19
+ this.mobileAppsLinks = [];
20
+ }
21
+ static get styles() {
22
+ return waybackSliderCSS;
23
+ }
24
+ get mobileAppsItems() {
25
+ return this.linkList(this.mobileAppsLinks, 'Wayback');
26
+ }
27
+ get browserExtensionsItems() {
28
+ return this.linkList(this.browserExtensionsLinks, 'Wayback');
29
+ }
30
+ get archiveItItems() {
31
+ return this.linkList(this.archiveItLinks, 'ArchiveIt');
32
+ }
33
+ linkList(links, eventPrefix) {
34
+ return links.map((link) => html `<li>
35
+ <a
36
+ .href=${formatUrl(link.url, this.baseHost)}
37
+ @click=${this.trackClick}
38
+ data-event-click-tracking="${this.analyticsEvent(`${eventPrefix}${link.title}`)}"
39
+ target=${link.external ? '_blank' : ''}
40
+ rel=${link.external ? 'noreferrer noopener' : ''}
41
+ >${link.title}</a
42
+ >
43
+ </li>`);
44
+ }
45
+ analyticsEvent(title) {
46
+ var _a;
47
+ return `${(_a = this.config) === null || _a === void 0 ? void 0 : _a.eventCategory}|${toSentenceCase(title)}`;
48
+ }
49
+ render() {
50
+ var _a;
51
+ return html `
52
+ <div class="grid">
53
+ <wayback-search
54
+ .waybackPagesArchived=${(_a = this.config.waybackPagesArchived) !== null && _a !== void 0 ? _a : ''}
55
+ .queryHandler=${queryHandler}
56
+ ></wayback-search>
57
+ <div class="link-lists">
58
+ <div>
59
+ <h4>Mobile Apps</h4>
60
+ <ul class="mobile-apps">
61
+ ${this.mobileAppsItems}
62
+ </ul>
63
+ <h4>Browser Extensions</h4>
64
+ <ul class="browser-extensions">
65
+ ${this.browserExtensionsItems}
66
+ </ul>
67
+ </div>
68
+ <div>
69
+ <h4>Archive-It Subscription</h4>
70
+ <ul class="archive-it">
71
+ ${this.archiveItItems}
72
+ </ul>
73
+ </div>
74
+ </div>
75
+ <save-page-form .config=${this.config}></save-page-form>
76
+ </div>
77
+ `;
78
+ }
79
+ };
80
+ __decorate([
81
+ property({ type: Array })
82
+ ], WaybackSlider.prototype, "archiveItLinks", void 0);
83
+ __decorate([
84
+ property({ type: String })
85
+ ], WaybackSlider.prototype, "baseHost", void 0);
86
+ __decorate([
87
+ property({ type: Array })
88
+ ], WaybackSlider.prototype, "browserExtensionsLinks", void 0);
89
+ __decorate([
90
+ property({ type: Object })
91
+ ], WaybackSlider.prototype, "config", void 0);
92
+ __decorate([
93
+ property({ type: Array })
94
+ ], WaybackSlider.prototype, "mobileAppsLinks", void 0);
95
+ WaybackSlider = __decorate([
96
+ customElement('wayback-slider')
97
+ ], WaybackSlider);
98
+ export { WaybackSlider };
99
+ //# sourceMappingURL=wayback-slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wayback-slider.js","sourceRoot":"","sources":["../../src/wayback-slider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,kBAAkB,CAAC;AAC1B,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AACvD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG5C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,cAAc;IAA1C;;QACsB,mBAAc,GAAmB,EAAE,CAAC;QACnC,aAAQ,GAAG,EAAE,CAAC;QACf,2BAAsB,GAAmB,EAAE,CAAC;QAC3C,WAAM,GAAmB,mBAAmB,CAAC;QAC9C,oBAAe,GAAmB,EAAE,CAAC;IAqElE,CAAC;IAnEC,MAAM,KAAK,MAAM;QACf,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACzD,CAAC;IAEO,QAAQ,CAAC,KAAqB,EAAE,WAAmB;QACzD,OAAO,KAAK,CAAC,GAAG,CACd,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAA;;oBAEQ,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;qBACjC,IAAI,CAAC,UAAU;yCACK,IAAI,CAAC,cAAc,CAC9C,GAAG,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAC9B;qBACQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;kBAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE;eAC7C,IAAI,CAAC,KAAK;;cAEX,CACT,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAa;;QAC1B,OAAO,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,MAAM;;QACJ,OAAO,IAAI,CAAA;;;kCAGmB,MAAA,IAAI,CAAC,MAAM,CAAC,oBAAoB,mCAAI,EAAE;0BAC9C,YAAY;;;;;;gBAMtB,IAAI,CAAC,eAAe;;;;gBAIpB,IAAI,CAAC,sBAAsB;;;;;;gBAM3B,IAAI,CAAC,cAAc;;;;kCAID,IAAI,CAAC,MAAM;;KAExC,CAAC;IACJ,CAAC;CACF,CAAA;AAzE4B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;qDAAqC;AACnC;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CAAe;AACf;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;6DAA6C;AAC3C;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAA8C;AAC9C;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;sDAAsC;AALrD,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CA0EzB","sourcesContent":["import { html } from 'lit';\nimport './wayback-search';\nimport TrackedElement from './tracked-element';\nimport './save-page-form';\nimport queryHandler from './lib/query-handler';\nimport waybackSliderCSS from './styles/wayback-slider';\nimport toSentenceCase from './lib/toSentenceCase';\nimport formatUrl from './lib/formatUrl';\nimport { customElement, property } from 'lit/decorators.js';\nimport { IATopNavConfig, IATopNavLink } from './models';\nimport { defaultTopNavConfig } from './data/menus';\n\n@customElement('wayback-slider')\nexport class WaybackSlider extends TrackedElement {\n @property({ type: Array }) archiveItLinks: IATopNavLink[] = [];\n @property({ type: String }) baseHost = '';\n @property({ type: Array }) browserExtensionsLinks: IATopNavLink[] = [];\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: Array }) mobileAppsLinks: IATopNavLink[] = [];\n\n static get styles() {\n return waybackSliderCSS;\n }\n\n get mobileAppsItems() {\n return this.linkList(this.mobileAppsLinks, 'Wayback');\n }\n\n get browserExtensionsItems() {\n return this.linkList(this.browserExtensionsLinks, 'Wayback');\n }\n\n get archiveItItems() {\n return this.linkList(this.archiveItLinks, 'ArchiveIt');\n }\n\n private linkList(links: IATopNavLink[], eventPrefix: string) {\n return links.map(\n (link) =>\n html`<li>\n <a\n .href=${formatUrl(link.url, this.baseHost)}\n @click=${this.trackClick}\n data-event-click-tracking=\"${this.analyticsEvent(\n `${eventPrefix}${link.title}`,\n )}\"\n target=${link.external ? '_blank' : ''}\n rel=${link.external ? 'noreferrer noopener' : ''}\n >${link.title}</a\n >\n </li>`,\n );\n }\n\n analyticsEvent(title: string) {\n return `${this.config?.eventCategory}|${toSentenceCase(title)}`;\n }\n\n render() {\n return html`\n <div class=\"grid\">\n <wayback-search\n .waybackPagesArchived=${this.config.waybackPagesArchived ?? ''}\n .queryHandler=${queryHandler}\n ></wayback-search>\n <div class=\"link-lists\">\n <div>\n <h4>Mobile Apps</h4>\n <ul class=\"mobile-apps\">\n ${this.mobileAppsItems}\n </ul>\n <h4>Browser Extensions</h4>\n <ul class=\"browser-extensions\">\n ${this.browserExtensionsItems}\n </ul>\n </div>\n <div>\n <h4>Archive-It Subscription</h4>\n <ul class=\"archive-it\">\n ${this.archiveItItems}\n </ul>\n </div>\n </div>\n <save-page-form .config=${this.config}></save-page-form>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ import '../../../src/assets/img/hamburger';
@@ -0,0 +1,13 @@
1
+ import { html, fixture, expect } from '@open-wc/testing';
2
+ import '../../../src/assets/img/hamburger';
3
+ describe('<icon-hamburger>', () => {
4
+ it('toggles close icon when property toggled', async () => {
5
+ var _a;
6
+ const icon = await fixture(html `<icon-hamburger></icon-hamburger>`);
7
+ icon.active = true;
8
+ await icon.updateComplete;
9
+ const titleElement = (_a = icon.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('svg title');
10
+ expect(titleElement === null || titleElement === void 0 ? void 0 : titleElement.getAttribute('id')).to.match(/close/);
11
+ });
12
+ });
13
+ //# sourceMappingURL=hamburger.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hamburger.test.js","sourceRoot":"","sources":["../../../../test/assets/img/hamburger.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,mCAAmC,CAAC;AAG3C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,IAAI,GAAG,MAAM,OAAO,CACxB,IAAI,CAAA,mCAAmC,CACxC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,IAAI,CAAC,cAAc,CAAC;QAE1B,MAAM,YAAY,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,CAAC,WAAW,CAAC,CAAC;QAEjE,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport '../../../src/assets/img/hamburger';\nimport { HamBurger } from '../../../src/assets/img/hamburger';\n\ndescribe('<icon-hamburger>', () => {\n it('toggles close icon when property toggled', async () => {\n const icon = await fixture<HamBurger>(\n html`<icon-hamburger></icon-hamburger>`,\n );\n\n icon.active = true;\n await icon.updateComplete;\n\n const titleElement = icon.shadowRoot?.querySelector('svg title');\n\n expect(titleElement?.getAttribute('id')).to.match(/close/);\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import { buildTopNavMenus } from '../../src/data/menus';
2
+ describe('Menu data', () => {
3
+ it('returns a collection for each media category', () => {
4
+ const menus = buildTopNavMenus();
5
+ ['texts', 'video', 'audio', 'software', 'images', 'user', 'more'].forEach((category) => {
6
+ const menus = buildTopNavMenus();
7
+ // expect(menus[category]).to.not.be.undefined;
8
+ });
9
+ });
10
+ });
11
+ //# sourceMappingURL=menus.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menus.test.js","sourceRoot":"","sources":["../../../test/data/menus.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QAEjC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,CACvE,CAAC,QAAQ,EAAE,EAAE;YACX,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;YACjC,+CAA+C;QACjD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { buildTopNavMenus } from '../../src/data/menus';\n\ndescribe('Menu data', () => {\n it('returns a collection for each media category', () => {\n const menus = buildTopNavMenus();\n\n ['texts', 'video', 'audio', 'software', 'images', 'user', 'more'].forEach(\n (category) => {\n const menus = buildTopNavMenus();\n // expect(menus[category]).to.not.be.undefined;\n },\n );\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { html, fixture, expect } from '@open-wc/testing';
2
+ import DropdownMenu from '../src/dropdown-menu';
3
+ customElements.define('dropdown-menu', DropdownMenu);
4
+ const component = html `<dropdown-menu></dropdown-menu>`;
5
+ describe('<dropdown-menu>', () => {
6
+ it('sets default properties', async () => {
7
+ const el = await fixture(component);
8
+ expect(el.animated).to.be.false;
9
+ expect(el.open).to.be.false;
10
+ expect(el.menuItems.length).to.equal(0);
11
+ });
12
+ it('renders a closed class if component is animating', async () => {
13
+ var _a;
14
+ const el = await fixture(component);
15
+ el.animated = true;
16
+ await el.updateComplete;
17
+ expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.closed')).to.not.be.undefined;
18
+ });
19
+ });
20
+ //# sourceMappingURL=dropdown-menu.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.test.js","sourceRoot":"","sources":["../../test/dropdown-menu.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;AAErD,MAAM,SAAS,GAAG,IAAI,CAAA,iCAAiC,CAAC;AAExD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,SAAS,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;;QAChE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAe,SAAS,CAAC,CAAC;QAClD,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC;QACnB,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,MAAM,CAAC,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\n\nimport DropdownMenu from '../src/dropdown-menu';\n\ncustomElements.define('dropdown-menu', DropdownMenu);\n\nconst component = html`<dropdown-menu></dropdown-menu>`;\n\ndescribe('<dropdown-menu>', () => {\n it('sets default properties', async () => {\n const el = await fixture<DropdownMenu>(component);\n expect(el.animated).to.be.false;\n expect(el.open).to.be.false;\n expect(el.menuItems.length).to.equal(0);\n });\n\n it('renders a closed class if component is animating', async () => {\n const el = await fixture<DropdownMenu>(component);\n el.animated = true;\n await el.updateComplete;\n expect(el.shadowRoot?.querySelector('.closed')).to.not.be.undefined;\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ import { html, fixture, expect } from '@open-wc/testing';
2
+ describe('<ia-icon>', () => {
3
+ it('renders an icon with a fill color', async () => {
4
+ const iconType = 'web';
5
+ // const fill = '#999';
6
+ const iaIcon = await fixture(html `<ia-icon .icon=${iconType}></ia-icon>`);
7
+ expect(iaIcon.icon).to.equal(iconType);
8
+ // expect(iaIcon.fill).to.equal(fill);
9
+ });
10
+ });
11
+ //# sourceMappingURL=ia-icon.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-icon.test.js","sourceRoot":"","sources":["../../test/ia-icon.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGzD,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,uBAAuB;QACvB,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,IAAI,CAAA,kBAAkB,QAAQ,aAAa,CAC5C,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,sCAAsC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport { IAIcon } from '../src/assets/img/ia-icon';\n\ndescribe('<ia-icon>', () => {\n it('renders an icon with a fill color', async () => {\n const iconType = 'web';\n // const fill = '#999';\n const iaIcon = await fixture<IAIcon>(\n html`<ia-icon .icon=${iconType}></ia-icon>`,\n );\n\n expect(iaIcon.icon).to.equal(iconType);\n // expect(iaIcon.fill).to.equal(fill);\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ import '../src/ia-topnav';
@@ -0,0 +1,232 @@
1
+ import { html, fixture, expect, oneEvent, fixtureCleanup, elementUpdated, } from '@open-wc/testing';
2
+ import '../src/ia-topnav';
3
+ // const container = (
4
+ // {
5
+ // username = '',
6
+ // screenName = '',
7
+ // config = {},
8
+ // localLinks = true,
9
+ // secondIdentitySlotMode = '',
10
+ // }: {
11
+ // username?: string;
12
+ // screenName?: string;
13
+ // config?: IATopNavConfig;
14
+ // localLinks: boolean;
15
+ // secondIdentitySlotMode?: IATopNavSecondIdentitySlotMode;
16
+ // } = {
17
+ // localLinks: true,
18
+ // },
19
+ // ) =>
20
+ // html`<ia-topnav
21
+ // .screenName=${screenName}
22
+ // username=${username}
23
+ // ?localLinks=${localLinks}
24
+ // .config=${config}
25
+ // .secondIdentitySlotMode=${secondIdentitySlotMode}
26
+ // ></ia-topnav>`;
27
+ const verifyClosed = (instance) => {
28
+ expect(instance.mediaSliderOpen).to.be.false;
29
+ expect(instance.selectedMenuOption).to.equal('');
30
+ };
31
+ const verifyOpened = (instance, mediatype) => {
32
+ expect(instance.mediaSliderOpen).to.be.true;
33
+ expect(instance.selectedMenuOption).to.equal(mediatype);
34
+ };
35
+ afterEach(() => {
36
+ fixtureCleanup();
37
+ });
38
+ describe('<ia-topnav>', () => {
39
+ it('assigns a value to "search in" from outside event', async () => {
40
+ var _a;
41
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
42
+ const query = 'atari';
43
+ const searchMenu = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu');
44
+ const inputEvent = new InputEvent('input');
45
+ Object.defineProperty(inputEvent, 'target', {
46
+ value: { value: query },
47
+ writable: false,
48
+ });
49
+ searchMenu === null || searchMenu === void 0 ? void 0 : searchMenu.searchInChanged(inputEvent);
50
+ await el.updateComplete;
51
+ expect(el.searchIn).to.equal(query);
52
+ });
53
+ it('dispatches an analyticsClick event when trackClick event fired', async () => {
54
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
55
+ const clickEvent = new MouseEvent('click');
56
+ setTimeout(() => {
57
+ var _a, _b, _c, _d;
58
+ return (_d = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.hamburger')) === null || _d === void 0 ? void 0 : _d.dispatchEvent(clickEvent);
59
+ });
60
+ const response = await oneEvent(el, 'trackClick');
61
+ expect(response).to.exist;
62
+ });
63
+ it('dispatches an analyticsSubmit event when trackSubmit event fired', async () => {
64
+ var _a, _b, _c, _d, _e;
65
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
66
+ const submitEvent = new Event('submit');
67
+ const form = (_e = (_d = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('nav-search')) === null || _d === void 0 ? void 0 : _d.shadowRoot) === null || _e === void 0 ? void 0 : _e.querySelector('form');
68
+ form === null || form === void 0 ? void 0 : form.addEventListener('submit', (e) => e.preventDefault());
69
+ (form === null || form === void 0 ? void 0 : form.querySelector('[name=query]')).value = 'atari';
70
+ setTimeout(() => form === null || form === void 0 ? void 0 : form.dispatchEvent(submitEvent));
71
+ const response = await oneEvent(el, 'trackSubmit');
72
+ expect(response).to.exist;
73
+ });
74
+ it('closes all menus when close-layer clicked', async () => {
75
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
76
+ el.openMenu = 'media';
77
+ el.selectedMenuOption = 'texts';
78
+ el.mediaSliderOpen = true;
79
+ await el.updateComplete;
80
+ el.closeMenus();
81
+ await el.updateComplete;
82
+ expect(el.mediaSliderOpen).to.be.false;
83
+ expect(el.openMenu).to.equal('');
84
+ expect(el.selectedMenuOption).to.equal('');
85
+ });
86
+ it('sets media slider to closed', async () => {
87
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
88
+ el.mediaSliderOpen = true;
89
+ el.selectedMenuOption = 'foo';
90
+ el.closeMediaSlider();
91
+ verifyClosed(el);
92
+ });
93
+ it('toggles media slider visibility and starts animation', async () => {
94
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
95
+ const mediatype = 'foo';
96
+ el.selectedMenuOption = mediatype;
97
+ el.openMediaSlider();
98
+ verifyOpened(el, mediatype);
99
+ });
100
+ it('closes media slider if selected menu type is the open menu type', async () => {
101
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
102
+ const mediatype = 'foo';
103
+ el.selectedMenuOption = mediatype;
104
+ const event = new CustomEvent('mediaTypeSelected', {
105
+ detail: {
106
+ mediatype,
107
+ },
108
+ });
109
+ el.mediaTypeSelected(event);
110
+ verifyClosed(el);
111
+ });
112
+ it('opens media slider menu and starts animation', async () => {
113
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
114
+ const mediatype = 'foo';
115
+ const event = new CustomEvent('mediaTypeSelected', {
116
+ detail: {
117
+ mediatype,
118
+ },
119
+ });
120
+ el.mediaTypeSelected(event);
121
+ verifyOpened(el, mediatype);
122
+ });
123
+ it('closes slider when menu closed', async () => {
124
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
125
+ el.openMenu = 'media';
126
+ el.selectedMenuOption = 'foo';
127
+ el.mediaSliderOpen = true;
128
+ await el.updateComplete;
129
+ const event = new CustomEvent('menuToggled', {
130
+ detail: {
131
+ menuName: '',
132
+ },
133
+ });
134
+ el.menuToggled(event);
135
+ await el.updateComplete;
136
+ expect(el.selectedMenuOption).to.equal('');
137
+ });
138
+ it('toggles search menu tabindex when dropdown open', async () => {
139
+ var _a, _b;
140
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
141
+ el.openMenu = 'search';
142
+ await el.updateComplete;
143
+ expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('search-menu')) === null || _b === void 0 ? void 0 : _b.getAttribute('tabindex')).to.equal('');
144
+ });
145
+ it('toggles user menu tabindex when dropdown open', async () => {
146
+ var _a, _b;
147
+ const el = await fixture(html ` <ia-topnav username="shaneriley" ?localLinks=${false}></ia-topnav>`);
148
+ el.openMenu = 'user';
149
+ await el.updateComplete;
150
+ expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('user-menu')) === null || _b === void 0 ? void 0 : _b.getAttribute('tabindex')).to.equal('');
151
+ });
152
+ it('toggles signed out menu tabindex when dropdown open', async () => {
153
+ var _a, _b;
154
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
155
+ el.openMenu = 'login';
156
+ await el.updateComplete;
157
+ expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('signed-out-dropdown')) === null || _b === void 0 ? void 0 : _b.getAttribute('tabindex')).to.equal('');
158
+ });
159
+ it('toggles search menu when search toggle button clicked', async () => {
160
+ var _a, _b, _c;
161
+ const el = await fixture(html ` <ia-topnav></ia-topnav>`);
162
+ ((_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.search-trigger')).click();
163
+ await el.updateComplete;
164
+ expect(el.openMenu).to.equal('search');
165
+ });
166
+ it('toggles user menu when search user avatar clicked', async () => {
167
+ var _a, _b, _c;
168
+ const el = await fixture(html ` <ia-topnav
169
+ username="shaneriley"
170
+ screenName="shaneriley"
171
+ ?localLinks=${false}
172
+ ></ia-topnav>`);
173
+ ((_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.user-menu')).click();
174
+ await el.updateComplete;
175
+ expect(el.openMenu).to.equal('user');
176
+ });
177
+ it('uses localLinks for archive.org logo link', async () => {
178
+ var _a, _b, _c;
179
+ const el = await fixture(html ` <ia-topnav ?localLinks=${false}></ia-topnav>`);
180
+ const logoLink = (_c = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.link-home');
181
+ expect(logoLink === null || logoLink === void 0 ? void 0 : logoLink.getAttribute('href')).to.match(/\/\/archive\.org/);
182
+ });
183
+ describe('sets localLinks properly', async () => {
184
+ it('uses localLinks to archive.org links on common child components', async () => {
185
+ const el = await fixture(html ` <ia-topnav ?localLinks=${false}></ia-topnav>`);
186
+ const componentSelectors = [
187
+ 'primary-nav',
188
+ 'media-slider',
189
+ 'desktop-subnav',
190
+ 'search-menu',
191
+ ];
192
+ componentSelectors.forEach((selector) => {
193
+ var _a;
194
+ const component = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(selector);
195
+ expect(component === null || component === void 0 ? void 0 : component.baseHost).to.equal('https://archive.org');
196
+ });
197
+ });
198
+ it('uses localLinks to archive.org links on the signed out dropdown', async () => {
199
+ var _a;
200
+ const el = await fixture(html ` <ia-topnav ?localLinks=${false}></ia-topnav>`);
201
+ const signedOutDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('signed-out-dropdown');
202
+ expect(signedOutDropdown === null || signedOutDropdown === void 0 ? void 0 : signedOutDropdown.baseHost).to.equal('https://archive.org');
203
+ });
204
+ it('uses localLinks to archive.org links on the user dropdown', async () => {
205
+ var _a;
206
+ const el = await fixture(html ` <ia-topnav username="foopey" ?localLinks=${false}></ia-topnav>`);
207
+ const signedOutDropdown = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('user-menu');
208
+ expect(signedOutDropdown.baseHost).to.equal('https://archive.org');
209
+ });
210
+ });
211
+ describe('slot pass throughs', () => {
212
+ describe('slot for <primary-nav>', () => {
213
+ it('opens a slot with `secondIdentitySlotMode`', async () => {
214
+ var _a, _b, _c, _d;
215
+ const el = await fixture(html `<ia-topnav
216
+ ?localLinks=${false}
217
+ username="boop"
218
+ screenName="somesuperlongscreenname"
219
+ secondIdentitySlotMode="allow"
220
+ ></ia-topnav>`);
221
+ const slot = (_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('primary-nav')) === null || _b === void 0 ? void 0 : _b.querySelector('slot');
222
+ expect(slot).to.exist;
223
+ expect(slot === null || slot === void 0 ? void 0 : slot.getAttribute('name')).to.equal('opt-sec-logo');
224
+ el.secondIdentitySlotMode = '';
225
+ await elementUpdated(el);
226
+ const noSlot = (_d = (_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('primary-nav')) === null || _d === void 0 ? void 0 : _d.querySelector('slot');
227
+ expect(noSlot).to.not.exist;
228
+ });
229
+ });
230
+ });
231
+ });
232
+ //# sourceMappingURL=ia-topnav.test.js.map